Browse Source

修改专项调研,用户与公司的参与数量

xingzai 2 years ago
parent
commit
0362b05d5d
4 changed files with 137 additions and 18 deletions
  1. 81 2
      models/activity_special_signup.go
  2. 13 0
      models/wx_user.go
  3. 40 16
      services/activity_special.go
  4. 3 0
      services/task.go

+ 81 - 2
models/activity_special_signup.go

@@ -58,10 +58,89 @@ func GetActivityListSpecialAll(activityId int) (items []*CygxActivitySpecialSign
 	return
 }
 
+type CygxActivitySpecialSignupResp struct {
+	Id          int       `orm:"column(id);pk"`
+	ActivityId  int       `description:"活动ID"`
+	UserId      int       `description:"用户ID"`
+	CreateTime  time.Time `description:"创建时间"`
+	Mobile      string    `description:"手机号"`
+	Email       string    `description:"邮箱"`
+	CompanyId   int       `description:"公司id"`
+	CompanyName string    `description:"公司名称"`
+	RealName    string    `description:"用户实际名称"`
+	SellerName  string    `description:"所属销售"`
+	Count       string    `description:"所属销售"`
+}
+
+//列表
+func GetActivityListSpecialGroupByMobile() (items []*CygxActivitySpecialSignupResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *,	COUNT( 1 ) AS count   FROM cygx_activity_special_signup   GROUP BY mobile`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 //列表
-func GetActivityListSpecialGroupyMobile() (items []*CygxActivitySpecialSignup, err error) {
+func GetActivityListSpecialGroupByCompanyId() (items []*CygxActivitySpecialSignupResp, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT *  FROM cygx_activity_special_signup   GROUP BY mobile`
+	sql := `SELECT *,	COUNT( 1 ) AS count   FROM cygx_activity_special_signup   GROUP BY company_id`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// UpdateActivitySpecialSignupNumMulti 批量修改专项调研感兴趣的人数排名
+func UpdateActivitySpecialSignupNumMulti(items []*CygxActivitySpecialSignupResp) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw("UPDATE cygx_activity_special_signup SET user_num = ? WHERE mobile = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.Count, v.Mobile)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// UpdateActivitySpecialSignupCompanyIdMulti 批量修改专项调研感兴趣的用户的对应公司ID
+func UpdateActivitySpecialSignupCompanyIdMulti(items []*WxUser) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw("UPDATE cygx_activity_special_signup SET company_id = ? WHERE mobile = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.CompanyId, v.Mobile)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// UpdateActivitySpecialSignupCompanyNumMulti 批量修改专项调研感兴趣的公司对应的数量
+func UpdateActivitySpecialSignupCompanyNumMulti(items []*CygxActivitySpecialSignupResp) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw("UPDATE cygx_activity_special_signup SET company_num = ? WHERE company_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.Count, v.CompanyId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 13 - 0
models/wx_user.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
 	"time"
 )
 
@@ -544,3 +545,15 @@ func GetCygxCompanyUserUserInteraction(userIds string) (items []*CygxUserInterac
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// GetWxUserByMobiles 根据用户手机号获取用户详情
+func GetWxUserByMobiles(mobiles []string) (items []*WxUser, err error) {
+	lenmobiles := len(mobiles)
+	if lenmobiles == 0 {
+		return
+	}
+	sql := `SELECT* FROM wx_user  WHERE mobile in (` + utils.GetOrmInReplace(lenmobiles) + `)  `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, mobiles).QueryRows(&items)
+	return
+}

+ 40 - 16
services/activity_special.go

@@ -1,40 +1,64 @@
 package services
 
 import (
+	"context"
 	"fmt"
 	"hongze/hongze_cygx/models"
-	"strconv"
-
 	"hongze/hongze_cygx/utils"
 )
 
-func init() {
-	UpdateCygxActivitySpecialSignupNum()
-}
+//func init() {
+//	UpdateCygxActivitySpecialSignupNum()
+//}
 
-//修改活动状态至进行中
-func UpdateCygxActivitySpecialSignupNum() (err error) {
+//修改专项调研,用户与公司的参与数量
+func UpdateCygxActivitySpecialSignupNum(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
-			fmt.Println()
 			fmt.Println(err)
 			go utils.SendAlarmMsg("修改活动状态至进行中失败"+err.Error(), 2)
 			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改活动状态至进行中失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
+	//根据手机号分组获取列表以及数量
+	listSpecial, err := models.GetActivityListSpecialGroupByMobile()
+	if err != nil {
+		return err
+	}
+	var mapMobile []string
+	for _, v := range listSpecial {
+		mapMobile = append(mapMobile, v.Mobile)
+	}
 
-	listSpecial, err := models.GetActivityListSpecialGroupyMobile()
+	//根据手机号获取这些用户的信息
+	userList, err := models.GetWxUserByMobiles(mapMobile)
 	if err != nil {
 		return err
 	}
-	var mobiles string
-	var companyIds string
 
-	for _, v := range listSpecial {
-		mobiles += "'" + v.Mobile + "'" + ","
-		companyIds += strconv.Itoa(v.CompanyId) + ","
+	//更改这些手机对应的关注关注数量
+	err = models.UpdateActivitySpecialSignupNumMulti(listSpecial)
+	if err != nil {
+		return err
+	}
+
+	//更改这些手机对应的公司ID
+	err = models.UpdateActivitySpecialSignupCompanyIdMulti(userList)
+	if err != nil {
+		return err
+	}
+
+	//根据CompanyId分组获取列表以及数量
+	listSpecialByCompanyId, err := models.GetActivityListSpecialGroupByCompanyId()
+	if err != nil {
+		return err
+	}
+
+	//更改这些公司对应的关注关注数量
+	err = models.UpdateActivitySpecialSignupCompanyNumMulti(listSpecialByCompanyId)
+	if err != nil {
+		return err
 	}
-	fmt.Println(mobiles)
-	fmt.Println(companyIds)
+	fmt.Println("UpdateCygxActivitySpecialSignupNum end")
 	return
 }

+ 3 - 0
services/task.go

@@ -81,6 +81,9 @@ func Task() {
 		doActivityOnenIdWxTemplateMsg := task.NewTask("doActivityOnenIdWxTemplateMsg", "0 30 16 * * 0", DoActivityOnenIdWxTemplateMsg) //周日下午四点半推送全部活动
 		task.AddTask("doActivityOnenIdWxTemplateMsg", doActivityOnenIdWxTemplateMsg)
 
+		updateCygxActivitySpecialSignupNum := task.NewTask("updateCygxActivitySpecialSignupNum", "0 25 0 * * *", UpdateCygxActivitySpecialSignupNum) //修改专项调研,用户与公司的参与数量
+		task.AddTask("updateCygxActivitySpecialSignupNum", updateCygxActivitySpecialSignupNum)
+
 	}
 	if utils.RunMode != "release" {
 		getArticleListByApi := task.NewTask("getArticleListByApi", "0 */60 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章