Browse Source

no message

xingzai 1 year ago
parent
commit
b2e9dbc431

+ 117 - 6
controllers/company_user.go

@@ -16,6 +16,7 @@ import (
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/models/yb"
 	"hongze/hz_crm_api/services"
+	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/services/elastic"
 	"hongze/hz_crm_api/utils"
 	"os"
@@ -824,7 +825,6 @@ func (this *CompanyUserController) List() {
 		br.Ret = 408
 		return
 	}
-
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
 	companyId, _ := this.GetInt("CompanyId")
@@ -1210,7 +1210,7 @@ func (this *CompanyUserController) List() {
 				list[i].LastViewTimeStr = tmpLastViewTime.Format(utils.FormatDateTime)
 			}
 
-			if list[i].LastViewTime.Before(time.Now().AddDate(0,0,-7)) && list[i].IsFollow  == 1 {
+			if list[i].LastViewTime.Before(time.Now().AddDate(0, 0, -7)) && list[i].IsFollow == 1 {
 				list[i].NotRead = true
 			}
 
@@ -1236,9 +1236,26 @@ func (this *CompanyUserController) List() {
 					list[i].IsChartPermissionSetting = 1
 				}
 			}
+		}
 
-			// 分产品阅读统计
-			list[i].YbProductViewTotal = userYbViewsMap[int(list[i].UserId)]
+		if sysUser.DepartmentId == utils.RAI_DEPARTMENT_ID {
+			userYanxuanPermissionMap := cygxService.GetCygxUserYanxuanPermissionMapItem(userIds) // 如果是权益部门下的人,则展示研选相关的信息
+			userInteractionNumMap := cygxService.GetUserInteractionNumMap(userIds)               // 如果是权益部门下的人,展示互动量相关的信息
+			for i := 0; i < lenList; i++ {
+				item := list[i]
+				// 分产品阅读统计
+				list[i].YbProductViewTotal = userYbViewsMap[int(item.UserId)]
+				list[i].MfyxInteractionNum = userInteractionNumMap[int(item.UserId)]
+				//权益销售查看用户研选的信息
+				if userYanxuanPermissionMap[int(item.UserId)] != nil {
+					mfyxItem := userYanxuanPermissionMap[int(item.UserId)]
+					list[i].MfyxStatus = mfyxItem.Status
+					list[i].MfyxStartDate = mfyxItem.StartDate
+					list[i].MfyxEndDate = mfyxItem.EndDate
+				} else {
+					list[i].MfyxStatus = "未开通"
+				}
+			}
 		}
 	}
 
@@ -5959,7 +5976,7 @@ func (this *CompanyUserController) Follow() {
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-	if req.UserId <= 0  {
+	if req.UserId <= 0 {
 		br.Msg = "用户ID异常"
 		br.ErrMsg = "用户ID异常"
 		return
@@ -5989,4 +6006,98 @@ func (this *CompanyUserController) Follow() {
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"
-}
+}
+
+// @Title 开通或者关闭用户研选权限
+// @Description 开通或者关闭用户研选权限
+// @Param	request	body request.ApplyMarkReq true "type json string"
+// @Success 200 {object} 操作成功
+// @router /update/user/yananxuan/permission [post]
+func (this *CompanyUserController) UpadteUserYanxuanPermission() {
+	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
+	}
+	var req cygx.UpdateUserYanxuanPermissionReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	userId := req.UserId
+	if userId <= 0 {
+		br.Msg = "用户ID异常"
+		br.ErrMsg = "用户ID异常"
+		return
+	}
+
+	//获取联系人详情
+	userInfo, err := models.GetWxUserByUserId(req.UserId)
+	if err != nil {
+		br.Msg = "获取联系人异常!"
+		br.ErrMsg = "获取联系人异常,Err:" + err.Error()
+		return
+	}
+
+	companyInfo, err := company.GetCompanyById(userInfo.CompanyId)
+	if err != nil {
+		br.Msg = "查找客户失败"
+		br.ErrMsg = "查找客户失败,err:" + err.Error()
+		return
+	}
+
+	// 查询用户是否开通过
+	count, err := cygx.GetCygxUserYanxuanPermissionCountByUserId(userId)
+	if err != nil {
+		br.Msg = "操作失败! "
+		br.ErrMsg = "操作失败,Err:" + err.Error()
+		return
+	}
+
+	item := new(cygx.CygxUserYanxuanPermission)
+	if req.Type == 0 {
+		item.Status = "未开通"
+	} else {
+		item.Status = "试用"
+	}
+	item.UserId = userId
+	item.CompanyId = companyInfo.CompanyId
+	item.CompanyName = companyInfo.CompanyName
+	item.StartDate = time.Now().Format(utils.FormatDate)
+	item.EndDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate) // 试用期两个月
+	item.Mobile = userInfo.Mobile
+	item.Email = userInfo.Email
+	item.RealName = userInfo.RealName
+	item.AdminId = sysUser.AdminId
+	item.AdminRealName = sysUser.RealName
+	item.CreatedTime = time.Now()
+	item.LastUpdatedTime = time.Now()
+	item.ModifyTime = time.Now()
+	if count == 0 {
+		_, err = cygx.AddCygxUserYanxuanPermission(item) // 添加
+	} else {
+		if req.Type == 0 {
+			err = cygx.UpdateCygxUserYanxuanPermissionClose(userId) // 关闭
+		} else {
+			err = cygx.UpdateCygxUserYanxuanPermissionOpen(item) // 开通
+		}
+	}
+	if err != nil {
+		br.Msg = "操作失败! "
+		br.ErrMsg = "操作失败,Err:" + err.Error()
+		return
+	}
+	go cygxService.AddCygxUserYanxuanPermissionLog(item)
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 4 - 0
models/company/company_user.go

@@ -69,6 +69,10 @@ type CompanyUser struct {
 	RaiViewTotal             int       `description:"权益报告的阅读次数" json:"-"`
 	RaiLastViewTime          time.Time `description:"权益报告的最近一次阅读时间" json:"-"`
 	NotRead                  bool      `description:"是否七天内未阅读"`
+	MfyxStartDate            string    `description:"买方研选权限开始日期"`
+	MfyxEndDate              string    `description:"买方研选权限结束日期"`
+	MfyxStatus               string    `description:"买方研选状态'试用','未开通'"`
+	MfyxInteractionNum       int       `description:"互动量"`
 }
 
 type CompanyUserListResp struct {

+ 84 - 6
models/cygx/user_yanxuan_permission.go

@@ -1,10 +1,7 @@
 package cygx
 
 import (
-	//"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	//"hongze/hz_crm_api/utils"
-	//"strings"
 	"time"
 )
 
@@ -24,16 +21,97 @@ type CygxUserYanxuanPermission struct {
 	Email                   string    `description:"邮箱"`
 	RealName                string    `description:"用户实际名称"`
 	CompanyName             string    `description:"公司名称"`
-	AdminId                 string    `description:"后台添加人员ID"`
+	AdminId                 int       `description:"后台添加人员ID"`
 	AdminRealName           string    `description:"后台添加人员姓名"`
 	CreatedTime             time.Time `description:"创建时间"`
 	LastUpdatedTime         time.Time `description:"修改时间根据时间戳自动更新"`
 	ModifyTime              time.Time `description:"修改时间"`
 }
 
+type CygxUserYanxuanPermissionLog struct {
+	UserYanxuanPermissionId int64     `orm:"column(user_yanxuan_permission_log_id);pk"`
+	UserId                  int       `description:"用户ID"`
+	CompanyId               int       `description:"权限开始日期"`
+	StartDate               string    `description:"权限开始日期"`
+	EndDate                 string    `description:"权限结束日期"`
+	Status                  string    `description:"'试用','未开通'"`
+	Mobile                  string    `description:"手机号"`
+	Email                   string    `description:"邮箱"`
+	RealName                string    `description:"用户实际名称"`
+	CompanyName             string    `description:"公司名称"`
+	AdminId                 int       `description:"后台添加人员ID"`
+	AdminRealName           string    `description:"后台添加人员姓名"`
+	CreatedTime             time.Time `description:"创建时间"`
+	LastUpdatedTime         time.Time `description:"修改时间根据时间戳自动更新"`
+	ModifyTime              time.Time `description:"修改时间"`
+}
+
+// 添加
+func AddCygxUserYanxuanPermission(item *CygxUserYanxuanPermission) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	lastId, err = o.Insert(item)
+	return
+}
+
+// 添加日志记录
+func AddCygxUserYanxuanPermissionLog(item *CygxUserYanxuanPermissionLog) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	lastId, err = o.Insert(item)
+	return
+}
+
+// 根据用户ID获取是否开通过研选权限
 func GetCygxUserYanxuanPermissionCountByUserId(userId int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT COUNT(1) FROM cygx_user_yanxuan_permission WHERE user_id = ?  `
-	err = o.Raw(sql, companyId).QueryRow(&count)
+	err = o.Raw(sql, userId).QueryRow(&count)
+	return
+}
+
+// 将研选权限状态改为未开通
+func UpdateCygxUserYanxuanPermissionClose(userId int) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` UPDATE cygx_user_yanxuan_permission
+			SET
+			  status ='未开通',
+			  modify_time = ?
+			WHERE user_id = ? `
+	_, err = o.Raw(sql, time.Now(), userId).Exec()
+	return
+}
+
+// 将研选权限状态改为未开通
+func UpdateCygxUserYanxuanPermissionOpen(item *CygxUserYanxuanPermission) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	updateParams := make(map[string]interface{})
+	updateParams["CompanyId"] = item.CompanyId
+	updateParams["StartDate"] = item.StartDate
+	updateParams["EndDate"] = item.EndDate
+	updateParams["Status"] = item.Status
+	updateParams["Mobile"] = item.Mobile
+	updateParams["Email"] = item.Email
+	updateParams["RealName"] = item.RealName
+	updateParams["CompanyName"] = item.CompanyName
+	updateParams["AdminId"] = item.AdminId
+	updateParams["AdminRealName"] = item.AdminRealName
+	ptrStructOrTableName := "cygx_user_yanxuan_permission"
+	whereParam := map[string]interface{}{"user_id": item.UserId}
+	qs := o.QueryTable(ptrStructOrTableName)
+	for expr, exprV := range whereParam {
+		qs = qs.Filter(expr, exprV)
+	}
+	_, err = qs.Update(updateParams)
+	return
+}
+
+// 列表
+func GetCygxUserYanxuanPermissionList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxUserYanxuanPermission, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_user_yanxuan_permission WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` LIMIT ?,?  `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }

+ 2 - 0
models/db.go

@@ -465,6 +465,8 @@ func initCygx() {
 		new(cygx.CygxQuestionnaireTheme),
 		new(cygx.CygxAskserieVideo),
 		new(cygx.CygxIndustrialAskserieVideoGroupManagement),
+		new(cygx.CygxUserYanxuanPermission),
+		new(cygx.CygxUserYanxuanPermissionLog),
 	)
 }
 

+ 9 - 0
routers/commentsRouter.go

@@ -9772,6 +9772,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: "UpadteUserYanxuanPermission",
+            Router: `/update/user/yananxuan/permission`,
+            AllowHTTPMethods: []string{"post"},
+            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: "AddUser",

+ 32 - 0
services/cygx/user_label.go

@@ -7,6 +7,8 @@ import (
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/services/alarm_msg"
 	"hongze/hz_crm_api/utils"
+	"strconv"
+	"strings"
 	"time"
 )
 
@@ -238,3 +240,33 @@ func IndustryFllowUserLabelLogAdd(industrialManagementId, count, uid int) (err e
 	}
 	return
 }
+
+// GetUserInteractionNumMap 根据用户ID 获取对应的用户互动量
+func GetUserInteractionNumMap(userIds []int) (mapResp map[int]int) {
+	lenArr := len(userIds)
+	if lenArr == 0 {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("GetUserInteractionNumMap 根据用户ID 获取对应的用户互动量 失败 userIds", userIds, err.Error()), 2)
+		}
+	}()
+	var userIdsArr []string
+	for _, v := range userIds {
+		userIdsArr = append(userIdsArr, strconv.Itoa(v))
+	}
+	userIdstr := strings.Join(userIdsArr, ",")
+	list, e := cygx.GetCygxCompanyUserListSplit(userIdstr)
+	if e != nil {
+		err = errors.New("GetCygxCompanyUserListSplit, Err: " + e.Error())
+		return
+	}
+	mapResp = make(map[int]int, 0)
+	for k, v := range list {
+		mapResp[int(v.UserId)] = 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
+	}
+	return
+}

+ 71 - 0
services/cygx/user_yanxuan_permission.go

@@ -1 +1,72 @@
 package cygx
+
+import (
+	"errors"
+	"fmt"
+	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/services/alarm_msg"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+// 添加更新日志记录
+func AddCygxUserYanxuanPermissionLog(item *cygx.CygxUserYanxuanPermission) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint(item, err.Error()), 2)
+		}
+	}()
+
+	itemLog := new(cygx.CygxUserYanxuanPermissionLog)
+	itemLog.Status = item.Status
+	itemLog.UserId = item.UserId
+	itemLog.CompanyId = item.CompanyId
+	itemLog.CompanyName = item.CompanyName
+	itemLog.StartDate = item.StartDate
+	itemLog.EndDate = item.EndDate
+	itemLog.Mobile = item.Mobile
+	itemLog.Email = item.Email
+	itemLog.RealName = item.RealName
+	itemLog.AdminId = item.AdminId
+	itemLog.AdminRealName = item.AdminRealName
+	itemLog.CreatedTime = time.Now()
+	itemLog.LastUpdatedTime = time.Now()
+	itemLog.ModifyTime = time.Now()
+	_, e := cygx.AddCygxUserYanxuanPermissionLog(itemLog)
+	if e != nil {
+		err = errors.New("AddCygxUserYanxuanPermissionLog, Err: " + e.Error())
+		return
+	}
+	return
+}
+
+// GetCygxUserYanxuanPermissionItem 根据用户ID 获取对应的研选权限信息
+func GetCygxUserYanxuanPermissionMapItem(userIds []int) (mapResp map[int]*cygx.CygxUserYanxuanPermission) {
+	lenArr := len(userIds)
+	if lenArr == 0 {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("userIds", userIds, err.Error()), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	condition += "  AND	status = '试用' AND user_id IN(" + utils.GetOrmInReplace(lenArr) + ") "
+	pars = append(pars, userIds)
+	list, e := cygx.GetCygxUserYanxuanPermissionList(condition, pars, 0, lenArr)
+	if e != nil {
+		err = errors.New("GetCygxUserYanxuanPermissionList, Err: " + e.Error())
+		return
+	}
+	mapResp = make(map[int]*cygx.CygxUserYanxuanPermission, 0)
+	for _, v := range list {
+		mapResp[v.UserId] = v
+	}
+	return
+}

+ 1 - 0
utils/constants.go

@@ -156,6 +156,7 @@ const (
 	COMPANY_PRODUCT_FICC_NAME = "ficc"
 	COMPANY_PRODUCT_RAI_ID    = 2
 	COMPANY_PRODUCT_RAI_NAME  = "权益"
+	RAI_DEPARTMENT_ID         = 5 // 权益部门ID
 )
 
 var PermissionFiccClassifyArr = [...]string{"宏观经济", "化工产业", "建材产业", "有色产业", "新能源", "市场策略"}