소스 검색

no message

xingzai 5 달 전
부모
커밋
e76b74e4d6
8개의 변경된 파일208개의 추가작업 그리고 0개의 파일을 삭제
  1. 60 0
      controllers/company_user.go
  2. 9 0
      controllers/cygx/user.go
  3. 1 0
      models/company/company_user.go
  4. 65 0
      models/company/wx_user_move_log.go
  5. 1 0
      models/cygx/cygx_user.go
  6. 1 0
      models/db.go
  7. 9 0
      routers/commentsRouter.go
  8. 62 0
      services/company.go

+ 60 - 0
controllers/company_user.go

@@ -1317,6 +1317,8 @@ func (this *CompanyUserController) List() {
 					}
 				}
 			}
+			userHaveMoveMap := services.GetWxUserHaveMoveMap(mobilesSlice) // 处理用户是否移动过按钮回显
+
 			for i := 0; i < lenList; i++ {
 				item := list[i]
 				// 分产品阅读统计
@@ -1335,6 +1337,9 @@ func (this *CompanyUserController) List() {
 					list[i].MfyxIsBinding = true
 					list[i].MfyxBindingTime = mfyxuserRecordRegisterMap[int(item.UserId)]
 				}
+				if item.Mobile != "" {
+					list[i].HaveMoveButton = userHaveMoveMap[item.Mobile]
+				}
 				//list[i].LastViewTimeStr = list[i].RaiLastViewTime.Format(utils.FormatDateTime)
 			}
 		}
@@ -2740,6 +2745,7 @@ func (this *CompanyController) PotentialUserMove() {
 		OpUserName:             sysUser.RealName,
 		CreateTime:             time.Now(),
 	})
+	go services.AddWxUserMoveLog(wxUser, sysUser, req.CompanyId) // 添加用户移动日志记录
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "移动成功"
@@ -2852,6 +2858,8 @@ func (this *CompanyController) UserMove() {
 		CreateTime:             time.Now(),
 	})
 
+	go services.AddWxUserMoveLog(wxUser, sysUser, req.CompanyId) // 添加用户移动日志记录
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "移动成功"
@@ -6418,3 +6426,55 @@ func (this *CompanyUserController) ListByReport() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// listMoveLog
+// @Title 联系人移动记录列表
+// @Description 联系人移动记录列表接口
+// @Param   Mobile   query   string  true       "手机号"
+// @Success 200 {object} company.CompanyUserListResp
+// @router /user/listMoveLog [get]
+func (this *CompanyUserController) ListMoveLog() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	mobile := this.GetString("Mobile")
+	if mobile == "" {
+		br.Msg = "手机号不能为空"
+		return
+	}
+	list, err := company.GetWxUserMoveLogListmByMobile(mobile)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	respList := make([]*company.WxUserMoveLogResp, 0)
+	for _, v := range list {
+		item := new(company.WxUserMoveLogResp)
+		item.UserName = v.RealName
+		item.Mobile = v.Mobile
+		item.Email = v.Email
+		item.CompanyId = v.CompanyId
+		item.CompanyName = v.CompanyName
+		item.CompanyIdMove = v.CompanyIdMove
+		item.CompanyNameMove = v.CompanyNameMove
+		item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
+		respList = append(respList, item)
+	}
+	resp := &company.WxUserMoveLogListResp{
+		List: respList,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 9 - 0
controllers/cygx/user.go

@@ -248,6 +248,7 @@ func (this *UserController) List() {
 	var userIds string
 	var userIdArr []int
 	var companyIds []int
+	var mobilesSlice []string
 	if list != nil {
 		for k, v := range list {
 			if v.RegisterTime != "" {
@@ -286,6 +287,10 @@ func (this *UserController) List() {
 				list[k].CompanyInteractionNum = v.CompanyInteractionNumSeller
 			}
 			companyIds = append(companyIds, v.CompanyId)
+
+			if v.Mobile != "" {
+				mobilesSlice = append(mobilesSlice, v.Mobile)
+			}
 		}
 		userIds = strings.TrimRight(userIds, ",")
 		splitList, err := cygx.GetCygxCompanyUserListSplit(userIds)
@@ -310,6 +315,7 @@ func (this *UserController) List() {
 
 		UserRemindListMap := cygxService.GetCygxUserRemindListMap(userIdArr)
 		mapIsUserMaker := cygxService.GetCompanyProductIsUserMakerByCompanyIds(companyIds) //根据公司ID获取近四周之内有决策人互动的客户
+		userHaveMoveMap := services.GetWxUserHaveMoveMap(mobilesSlice)                     // 处理用户是否移动过按钮回显
 		for k, v := range list {
 			for _, vsplit := range splitList {
 				if vsplit.UserId == v.UserId {
@@ -333,6 +339,9 @@ func (this *UserController) List() {
 			}
 			list[k].IsRemind = UserRemindListMap[int(v.UserId)]
 			list[k].IsUserMaker = mapIsUserMaker[v.CompanyId]
+			if v.Mobile != "" {
+				v.HaveMoveButton = userHaveMoveMap[v.Mobile]
+			}
 		}
 		for k := range list {
 			list[k].InteractionNum = list[k].HistoryNum + list[k].CountNum + list[k].IndustryFllowNum + list[k].DepartmentFollowNum + list[k].KeyWordNum + list[k].OnLineNum + list[k].OfficeNum + list[k].ChartNum + list[k].TripNum + list[k].RoadshowVideoNum + list[k].ActivityVideoNum + list[k].ActivityVoiceNum + list[k].YanxuanspecialNum

+ 1 - 0
models/company/company_user.go

@@ -75,6 +75,7 @@ type CompanyUser struct {
 	MfyxInteractionNum       int       `description:"互动量"`
 	MfyxIsBinding            bool      `description:"买方研选是否绑定"`
 	MfyxBindingTime          string    `description:"买方研选绑定时间"`
+	HaveMoveButton           bool      `description:"是否移动过"`
 }
 
 type CompanyUserListResp struct {

+ 65 - 0
models/company/wx_user_move_log.go

@@ -0,0 +1,65 @@
+package company
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+// WxUserOpLog 联系人操作日志表
+type WxUserMoveLog struct {
+	Id              int       `orm:"column(id);pk"`
+	UserId          int       `description:"联系人id"`
+	RealName        string    `description:"联系人姓名"`
+	Mobile          string    `description:"当前手机号"`
+	Email           string    `description:"当前邮箱"`
+	CompanyId       int       `description:"当前客户id"`
+	CompanyName     string    `description:"当前客户名称"`
+	SysUserId       int       `description:"操作人ID"`
+	SysUserRealName string    `description:"操作人姓名"`
+	CompanyIdMove   int       `description:"移动后客户id"`
+	CompanyNameMove string    `description:"移动后客户名称"`
+	CreateTime      time.Time `description:"日志创建时间"`
+}
+
+// AddWxUserOpLog 联系人移动日志记录
+func AddWxUserMoveLog(item *WxUserMoveLog) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}
+
+// 列表
+func GetWxUserMoveLogListmByMobiles(mobiles []string) (items []*WxUserMoveLog, err error) {
+	lenarr := len(mobiles)
+	if lenarr == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT mobile FROM wx_user_move_log   WHERE  mobile	 IN (` + utils.GetOrmInReplace(lenarr) + `)  GROUP BY mobile   `
+	_, err = o.Raw(sql, mobiles).QueryRows(&items)
+	return
+}
+
+// 列表
+func GetWxUserMoveLogListmByMobile(mobile string) (items []*WxUserMoveLog, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM wx_user_move_log   WHERE  mobile	 = ?  ORDER BY   id  ASC    `
+	_, err = o.Raw(sql, mobile).QueryRows(&items)
+	return
+}
+
+type WxUserMoveLogResp struct {
+	UserName        string `description:"联系人姓名"`
+	Mobile          string `description:"手机号"`
+	Email           string `description:"邮箱地址"`
+	CompanyId       int    `description:"当前客户id"`
+	CompanyName     string `description:"当前客户名称"`
+	CompanyIdMove   int    `description:"移动后客户id"`
+	CompanyNameMove string `description:"移动后客户名称"`
+	CreateTime      string `description:"日志创建时间"`
+}
+
+type WxUserMoveLogListResp struct {
+	List []*WxUserMoveLogResp
+}

+ 1 - 0
models/cygx/cygx_user.go

@@ -52,6 +52,7 @@ type CygxCompanyUser struct {
 	IsRemind                    bool   `description:"是否添加互动提醒"`
 	IsSubscribeCygx             int    `description:"是否关注了查研观向微信公众号: 0-未关注; 1-已关注"`
 	IsUserMaker                 int    `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
+	HaveMoveButton              bool   `description:"是否移动过"`
 }
 
 type CompanyUserListResp struct {

+ 1 - 0
models/db.go

@@ -269,6 +269,7 @@ func initCompany() {
 		new(company.CrmConfig),                               // 管理后台基本配置表
 		new(company.CompanyRenewalRecord),                    // 客户续约状态记录表
 		new(company.CompanyHistoryRemark),                    // 客户记录历史记录表
+		new(company.WxUserMoveLog),                           // 客户联系人移动记录日志表
 	)
 }
 

+ 9 - 0
routers/commentsRouter.go

@@ -10348,6 +10348,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyUserController"],
+        beego.ControllerComments{
+            Method: "ListMoveLog",
+            Router: `/user/listMoveLog`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyUserController"],
         beego.ControllerComments{
             Method: "GetOtherProduct",

+ 62 - 0
services/company.go

@@ -2518,3 +2518,65 @@ func GetShareCompanyPermissionButton(roleTypeCode, statuses string, productId in
 	}
 	return
 }
+
+// AddWxUserMoveLog 添加用户移动日志记录
+func AddWxUserMoveLog(wxUser *models.WxUser, adminUser *system.Admin, newCompanyId int) (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("添加用户移动日志记录失败,AddWxUserMoveLog "+fmt.Sprint("UserId:", wxUser.UserId, ";err:", err), 3)
+		}
+	}()
+	//获取老的客户信息
+	companyInfoOld, e := company.GetCompanyById(wxUser.CompanyId)
+	if e != nil {
+		err = errors.New("GetCompanyById, Old Err: " + e.Error())
+		return
+	}
+
+	//获取老的客户信息
+	companyInfoNew, e := company.GetCompanyById(newCompanyId)
+	if e != nil {
+		err = errors.New("GetCompanyById, New Err: " + e.Error())
+		return
+	}
+
+	item := new(company.WxUserMoveLog)
+	item.UserId = int(wxUser.UserId)
+	item.RealName = wxUser.RealName
+	item.Mobile = wxUser.Mobile
+	item.Email = wxUser.Email
+	item.CompanyId = wxUser.CompanyId
+	item.CompanyName = companyInfoOld.CompanyName
+	item.CompanyIdMove = companyInfoNew.CompanyId
+	item.CompanyNameMove = companyInfoNew.CompanyName
+	item.SysUserId = adminUser.AdminId
+	item.SysUserRealName = adminUser.RealName
+	item.CreateTime = time.Now()
+	e = company.AddWxUserMoveLog(item)
+	return
+}
+
+// GetWxUserHaveMoveMap 根据手机号,获取用户是否有过移动的记录
+func GetWxUserHaveMoveMap(mobiles []string) (moveMap map[string]bool) {
+	lenArr := len(mobiles)
+	if lenArr == 0 {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("添加用户移动日志记录失败,GetWxUserHaveMoveMap "+fmt.Sprint("mobiles:", mobiles, ";err:", err), 3)
+		}
+	}()
+
+	listMobileMove, e := company.GetWxUserMoveLogListmByMobiles(mobiles)
+	if e != nil {
+		err = errors.New("GetWxUserMoveLogListmByMobiles Err: " + e.Error())
+		return
+	}
+	moveMap = make(map[string]bool)
+	for _, v := range listMobileMove {
+		moveMap[v.Mobile] = true
+	}
+	return
+}