package models import ( "github.com/beego/beego/v2/client/orm" "time" ) type CygxXzsChooseSend struct { Id int `orm:"column(id);pk"` UserId int `description:"用户ID"` Mobile string `description:"手机号"` Email string `description:"邮箱"` CompanyId int `description:"公司id"` CompanyName string `description:"公司名称"` RealName string `description:"用户实际名称"` IsRefuse int `description:"是否拒绝推送,0否、1是 如果为1 则不做任何推送"` IsSubjective int `description:"是否选择主观推送, 1 是 、 0否"` IsObjective int `description:"是否选择客观推送, 1 是 、 0否"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"更新时间"` AllInYiYao int `description:"是否选择医药全部赛道"` AllInXiaoFei int `description:"是否选择消费全部赛道"` AllInKeJi int `description:"是否选择科技全部赛道"` AllInZhiZao int `description:"是否选择智造全部赛道"` AllInCeLue int `description:"是否选择策略全部赛道"` AllInYanXuan int `description:"是否选择研选全部赛道"` } type CygxXzsChooseSendResp struct { IsRefuse int `description:"是否拒绝推送,0否、1是 如果为1 则不做任何推送"` IsSubjective int `description:"是否选择主观推送, 1 是 、 0否"` IsObjective int `description:"是否选择客观推送, 1 是 、 0否"` List []*ChartPermissionResp } type SubmitChooseSendResp struct { IsRefuse int `description:"是否拒绝推送,0否、1是 如果为1 则不做任何推送"` IsSubjective int `description:"是否选择主观推送, 1 是 、 0否"` IsObjective int `description:"是否选择客观推送, 1 是 、 0否"` IndustrialManagementIds []*IndustrialManagementIdResp } type IndustrialManagementIdResp struct { IndustrialManagementIds string `description:"产业ID 多个用 ,隔开"` ChartPermissionId int `description:"权限id"` } // 添加 func AddCygxXzsChooseSend(item *CygxXzsChooseSend, itemsFllow []*CygxIndustryFllow, itemsCategory []*CygxXzsChooseCategory) (err error) { o, err := orm.NewOrmUsingDB("hz_cygx").Begin() if err != nil { return } defer func() { if err == nil { o.Commit() } else { o.Rollback() } }() //如果用户选择不做任何推送,则之前的关注信息不做任何改动 if item.IsRefuse == 0 { //删除原有的关注记录 sql := `DELETE FROM cygx_industry_fllow WHERE mobile = ?` _, err = o.Raw(sql, item.Mobile).Exec() if err != nil { return err } if len(itemsFllow) > 0 { //批量添加新的关注记录 _, err = o.InsertMulti(len(itemsFllow), itemsFllow) if err != nil { return err } } //删除原有策略报告的关注记录 sql = `DELETE FROM cygx_xzs_choose_category WHERE mobile = ?` _, err = o.Raw(sql, item.Mobile).Exec() if err != nil { return err } if len(itemsCategory) > 0 { //批量添加新的关注记录 _, err = o.InsertMulti(len(itemsCategory), itemsCategory) if err != nil { return err } } } //添加所勾选的消息类型 _, err = o.Insert(item) return } // 获取数量 func GetXzsChooseSendCountByMobile(mobile string) (count int, err error) { sql := ` SELECT COUNT(1) AS count FROM cygx_xzs_choose_send WHERE mobile = ? ` o := orm.NewOrmUsingDB("hz_cygx") err = o.Raw(sql, mobile).QueryRow(&count) return } // 添加 func UpdateCygxXzsChooseSend(item *CygxXzsChooseSend, itemsFllow []*CygxIndustryFllow, itemsCategory []*CygxXzsChooseCategory) (err error) { o, err := orm.NewOrmUsingDB("hz_cygx").Begin() if err != nil { return } defer func() { if err == nil { o.Commit() } else { o.Rollback() } }() //如果用户选择不做任何推送,则之前的关注信息不做任何改动 if item.IsRefuse == 0 { //删除原有的关注记录 sql := `DELETE FROM cygx_industry_fllow WHERE mobile = ?` _, err = o.Raw(sql, item.Mobile).Exec() if err != nil { return err } if len(itemsFllow) > 0 { //批量添加新的关注记录 _, err = o.InsertMulti(len(itemsFllow), itemsFllow) if err != nil { return err } } //删除原有策略报告的关注记录 sql = `DELETE FROM cygx_xzs_choose_category WHERE mobile = ?` _, err = o.Raw(sql, item.Mobile).Exec() if err != nil { return err } if len(itemsCategory) > 0 { //批量添加新的关注记录 _, err = o.InsertMulti(len(itemsCategory), itemsCategory) if err != nil { return err } } } //修改现有的类型 updateParams := make(map[string]interface{}) updateParams["UserId"] = item.UserId updateParams["Mobile"] = item.Mobile updateParams["Email"] = item.Email updateParams["CompanyId"] = item.CompanyId updateParams["CompanyName"] = item.CompanyName updateParams["RealName"] = item.RealName updateParams["ModifyTime"] = time.Now() updateParams["IsRefuse"] = item.IsRefuse updateParams["IsSubjective"] = item.IsSubjective updateParams["IsObjective"] = item.IsObjective updateParams["AllInYiYao"] = item.AllInYiYao updateParams["AllInXiaoFei"] = item.AllInXiaoFei updateParams["AllInKeJi"] = item.AllInKeJi updateParams["AllInZhiZao"] = item.AllInZhiZao updateParams["AllInCeLue"] = item.AllInCeLue updateParams["AllInYanXuan"] = item.AllInYanXuan whereParam := map[string]interface{}{"mobile": item.Mobile} err = UpdateByExpr(CygxXzsChooseSend{}, whereParam, updateParams) return } // 根据用户openid获取token func GetCygxXzsChooseSendByMobile(mobile string) (item *CygxXzsChooseSend, err error) { sql := `SELECT * FROM cygx_xzs_choose_send WHERE mobile=? LIMIT 1 ` o := orm.NewOrmUsingDB("hz_cygx") err = o.Raw(sql, mobile).QueryRow(&item) return } type XzsChooseMapResp struct { Id int `description:"id"` CategoryId int `description:"权益文章对应分类,cygx_article"` CharPpermissionName string `description:"权限名称"` MatchTypeName string `description:"分类名称"` } // 根据手机号获取用户关注的产业 func GetCygxXzsChooseCategoryMapList() (items []*XzsChooseMapResp, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT r.id, r.chart_permission_name, r.match_type_name, c.category_id FROM cygx_report_mapping_cygx AS r INNER JOIN cygx_report_mapping_group AS p ON p.id_cygx = r.id INNER JOIN cygx_report_mapping_celue AS c ON c.category_id = p.category_id_celue WHERE r.chart_permission_id IN (23,100000)` _, err = o.Raw(sql).QueryRows(&items) return }