123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- package models
- import (
- "fmt"
- "github.com/beego/beego/v2/client/orm"
- "hongze/hongze_cygx/utils"
- "time"
- )
- type CygxIndustryFllow struct {
- Id int `orm:"column(id);pk"`
- IndustrialManagementId int `description:"产业D"`
- UserId int `description:"用户ID"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- CompanyId int `description:"公司id"`
- CompanyName string `description:"公司名称"`
- Type int `description:"操作方式,1报名,2取消报名"`
- CreateTime time.Time `description:"创建时间"`
- ModifyTime time.Time `description:"更新时间"`
- RealName string `description:"用户实际名称"`
- Source int `description:"来源1查研观向,2查研观向小助手,3勾选全部赛道的用户进行自动关注"`
- FollowType int `description:"1,重点关注,3不感兴趣,0默认接受推送"`
- FollowTypeOrder int `description:"排序方式,重点关注在最前面,不感兴趣在最后面。1,重点关注,-1不感兴趣,0默认接受推送"`
- }
- type CygxIndustryFllowRep struct {
- IndustrialManagementId int `description:"产业D"`
- FollowType int `description:"1,重点关注,3不感兴趣,0默认接受推送"`
- }
- type IndustryFllowArryReq struct {
- SourceId int `description:"资源ID"`
- Source string `description:"资源类型 报告 :article 、活动 :activity"`
- DoType string `description:"操作方式 关注 :add 、取消关注 :cancel"`
- }
- // 添加
- func AddCygxIndustryFllow(item *CygxIndustryFllow) (lastId int64, err error) {
- o, err := orm.NewOrm().Begin()
- if err != nil {
- return
- }
- defer func() {
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- sql := `DELETE FROM cygx_industry_fllow WHERE user_id=? AND industrial_management_id=? `
- _, err = o.Raw(sql, item.UserId, item.IndustrialManagementId).Exec()
- if err != nil {
- return
- }
- lastId, err = o.Insert(item)
- return
- }
- // 批量添加
- func AddCygxIndustryFllowMulti(items []*CygxIndustryFllow) (err error) {
- o := orm.NewOrm()
- if len(items) > 0 {
- //批量添加新的关注记录
- _, err = o.InsertMulti(len(items), items)
- }
- return
- }
- type CygxIndustryFllowResp struct {
- Status int `description:"1:关注,2:取消关注"`
- GoFollow bool `description:"是否去关注"`
- }
- func RemoveCygxIndustryFllow(userId, industrialManagementId int) (err error) {
- o := orm.NewOrm()
- sql := `DELETE FROM cygx_industry_fllow WHERE user_id=? AND industrial_management_id=? `
- _, err = o.Raw(sql, userId, industrialManagementId).Exec()
- return
- }
- // RemoveCygxIndustryFllowArry 多个产业同时取消关注
- func RemoveCygxIndustryFllowArry(userId int, condition string, pars []interface{}) (err error) {
- o := orm.NewOrm()
- if condition == "" {
- return
- }
- sql := `DELETE FROM cygx_industry_fllow WHERE user_id=? ` + condition
- _, err = o.Raw(sql, userId, pars).Exec()
- return
- }
- // 获取数量
- func GetCountCygxIndustryFllow(userId, industrialManagementId int, condition string) (count int, err error) {
- sql := `SELECT COUNT(1) AS count FROM cygx_industry_fllow WHERE user_id=? AND industrial_management_id=? ` + condition
- err = orm.NewOrm().Raw(sql, userId, industrialManagementId).QueryRow(&count)
- return
- }
- // 获取关注数量
- func GetCountCygxIndustryFllowByType(userId, industrialManagementId int) (count int, err error) {
- sql := `SELECT COUNT(1) AS count FROM cygx_industry_fllow WHERE user_id=? AND industrial_management_id=? AND follow_type = 1 `
- err = orm.NewOrm().Raw(sql, userId, industrialManagementId).QueryRow(&count)
- return
- }
- // 获取数量
- func GetCountCygxIndustryFllowByUid(userId int) (count int, err error) {
- sql := `SELECT COUNT(1) AS count FROM cygx_industry_fllow WHERE user_id=? `
- err = orm.NewOrm().Raw(sql, userId).QueryRow(&count)
- return
- }
- // 获取列表信息根据手机号分组
- func GetCygxIndustryFllowList(condition string) (items []*CygxIndustryFllow, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_industry_fllow WHERE 1 =1 ` + condition + ` GROUP BY user_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 根据手机号获取用户关注的产业
- func GetCygxIndustryFllowListByMobile(mobile string) (items []*CygxIndustryFllow, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_industry_fllow WHERE mobile = ?`
- _, err = o.Raw(sql, mobile).QueryRows(&items)
- return
- }
- // 获取列表信息根据手机号分组
- func GetCygxIndustryFllowListByUserId(condition string) (items []*CygxIndustryFllow, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_industry_fllow WHERE 1 =1 ` + condition
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 修改用户关注的相关信息
- func UpdateCygxIndustryFllow(wxUser *WxUserItem) (err error) {
- o := orm.NewOrm()
- var sql string
- if wxUser.Mobile != "" {
- sql = `UPDATE cygx_industry_fllow SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
- _, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
- } else if wxUser.Email != "" {
- sql = `UPDATE cygx_industry_fllow SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
- _, err = o.Raw(sql, wxUser.Mobile, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Email).Exec()
- }
- return
- }
- // 获取用户关注的产业列表
- func GetUserFllowIndustrialList(userId int) (items []*CygxIndustryFllow, err error) {
- o := orm.NewOrm()
- sql := `SELECT
- f.user_id,
- m.industry_name,
- m.industrial_management_id
- FROM
- cygx_industry_fllow AS f
- INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id
- WHERE
- 1 = 1
- AND f.user_id = ? `
- _, err = o.Raw(sql, userId).QueryRows(&items)
- return
- }
- type CygxIndustryFllowCountRep struct {
- IndustrialManagementId int `description:"产业D"`
- Num int `description:"数量"`
- }
- // 获取产业被关注的数量
- func GetUserFllowIndustrialCountList() (items []*CygxIndustryFllowCountRep, err error) {
- o := orm.NewOrm()
- sql := `SELECT
- COUNT( 1 ) AS num,
- f.industrial_management_id
- FROM
- cygx_industry_fllow AS f
- INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id
- WHERE
- 1 = 1
- GROUP BY
- f.industrial_management_id
- ORDER BY
- num DESC
- LIMIT 30 `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // GetUserFllowIndustrialListByUserIdAndIndustrial 通过用户ID 跟产业ID获取用户关注的产业列表
- func GetUserFllowIndustrialListByUserIdAndIndustrial(userIds, industrials string) (items []*CygxIndustryFllow, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_industry_fllow
- WHERE 1 = 1
- AND user_id IN ( ` + userIds + ` )
- AND industrial_management_id IN ( ` + industrials + `) `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取某个用户关注某个行业下的产业数量
- func GetCountCygxIndustryFllowByUidAndChartPermissionId(userId, ChartPermissionId int) (count int, err error) {
- sql := `SELECT
- COUNT( 1 ) AS count
- FROM
- cygx_industry_fllow AS f
- INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id
- WHERE
- user_id = ?
- AND m.chart_permission_id = ? `
- err = orm.NewOrm().Raw(sql, userId, ChartPermissionId).QueryRow(&count)
- return
- }
- // GetTopIndustryFollowData 获取关注度最高的产业关注数据
- func GetTopIndustryFollowData(startSize, pageSize int, condition string, pars []interface{}) (list []*IndustrialManagement, err error) {
- sql := `SELECT
- man.*
- FROM
- cygx_industrial_management AS man
- WHERE 1 = 1 `
- if condition != "" {
- sql += condition
- }
- sql += ` ORDER BY
- one_month_follow_num DESC , man.industrial_management_id DESC
- LIMIT ?,?`
- _, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // 列表
- func GetCygxIndustryFllowListByCon(condition string, pars []interface{}) (items []*CygxIndustryFllow, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_industry_fllow as art WHERE 1= 1 `
- if condition != "" {
- sql += condition
- }
- //sql += ` LIMIT ?,? `
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- type CygxIndustryFllowNumResp struct {
- IndustrialManagementId int `description:"产业D"`
- Total int `description:"关注数量"`
- }
- // 获取用户关注的产业列表
- func GetIndustrialManagementOneMonthFollowNum() (items []*CygxIndustryFllowNumResp, err error) {
- o := orm.NewOrm()
- sql := `SELECT
- COUNT( 1 ) AS total,
- industrial_management_id
- FROM
- cygx_industry_fllow AS idf
- WHERE
- 1 = 1
- AND create_time > '%s'
- AND create_time < '%s'
- AND source != 3
- GROUP BY
- industrial_management_id `
- sql = fmt.Sprintf(sql, time.Now().AddDate(0, -1, 0).Format(utils.FormatDate), time.Now().Format(utils.FormatDate))
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
|