Explorar o código

Merge branch 'crm/crm_17.1_rai' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

zhangchuanxing hai 1 semana
pai
achega
243fc6ea24

+ 112 - 0
controllers/company_user.go

@@ -1305,6 +1305,8 @@ func (this *CompanyUserController) List() {
 			return
 		}
 
+		mapRaiUserStatus := services.GetRaiUserStatus(userIds)
+
 		if isUserYanXuanButtonShow {
 			userYanxuanPermissionMap := cygxService.GetCygxUserYanxuanPermissionMapItem(userIds) // 如果是权益部门下的人,则展示研选相关的信息
 			userInteractionNumMap := cygxService.GetUserInteractionNumMap(userIds)               // 如果是权益部门下的人,展示互动量相关的信息
@@ -1358,6 +1360,7 @@ func (this *CompanyUserController) List() {
 				// 分产品阅读统计
 				//list[i].YbProductViewTotal = userYbViewsMap[int(item.UserId)]
 				list[i].MfyxInteractionNum = userInteractionNumMap[int(item.UserId)]
+				list[i].RaiUserStatus = mapRaiUserStatus[int(item.UserId)]
 				//权益销售查看用户研选的信息
 				if userYanxuanPermissionMap[int(item.UserId)] != nil {
 					mfyxItem := userYanxuanPermissionMap[int(item.UserId)]
@@ -6630,3 +6633,112 @@ func (this *CompanyController) EditUserOutboundMobile() {
 	br.Success = true
 	br.Msg = "标记成功"
 }
+
+// UserPermissionList
+// @Title 联系人权限列表
+// @Description 联系人权限列表接口
+// @Param   UserId   query   int  true       "用户ID"
+// @Success 200 {object} company.CompanyUserListResp
+// @router /user/PermissionList [get]
+func (this *CompanyUserController) UserPermissionList() {
+	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
+	}
+	userId, _ := this.GetInt("UserId")
+	if userId < 1 {
+		br.Msg = "用户ID不能为空"
+		return
+	}
+	permissionItems, err := company.GetPermissionLookItemsRaiByTypeByUser(utils.COMPANY_PRODUCT_RAI_ID)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
+		return
+	}
+	// 获取客户权益报告权限
+	reportPermissions, e := company.GetUserReportPermissionListByUserId(utils.COMPANY_PRODUCT_RAI_ID, userId)
+	if e != nil {
+		err = errors.New("获取客户权益报告权限列表失败, Err: " + e.Error())
+		return
+	}
+	reportPermissionMap := make(map[int]*company.PermissionLookItem, 0)
+	for i := range reportPermissions {
+		reportPermissionMap[reportPermissions[i].ChartPermissionId] = reportPermissions[i]
+	}
+	resp := new(company.UserPermissionLookList)
+	respList := make([]*company.UserPermissionLookItem, 0)
+	checkList := make([]int, 0) // 客户拥有的权限, 用于前端匹配权限列表回显
+
+	for _, v := range permissionItems {
+		item := new(company.UserPermissionLookItem)
+		p := reportPermissionMap[v.ChartPermissionId]
+		if p != nil {
+
+			checkList = append(checkList, v.ChartPermissionId)
+			item.StartDate = p.StartDate
+			item.EndDate = p.EndDate
+			item.Status = p.Status
+
+			// 计算到期天数
+			endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
+			endDateTime = endDateTime.AddDate(0, 0, 1)
+			sub := endDateTime.Sub(time.Now())
+			if sub < 0 {
+				sub = 0
+			}
+			expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
+			item.ExpireDay = expireDay
+		} else {
+			item.Status = "关闭"
+			item.ExpireDay = "0"
+		}
+
+		item.ChartPermissionId = v.ChartPermissionId
+		item.PermissionName = v.PermissionName
+		item.ClassifyName = v.ClassifyName
+		respList = append(respList, item)
+	}
+
+	// 拼接研选部分数据
+	userYanxuanPermissionMap := cygxService.GetCygxUserYanxuanPermissionMapItem([]int{userId}) // 如果是权益部门下的人,则展示研选相关的信息
+	item := new(company.UserPermissionLookItem)
+	item.ChartPermissionId = utils.CHART_PERMISSION_ID_YANXUAN
+	item.PermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN
+	p := userYanxuanPermissionMap[userId]
+	if p != nil {
+		checkList = append(checkList, item.ChartPermissionId)
+		item.StartDate = p.StartDate
+		item.EndDate = p.EndDate
+		item.Status = p.Status
+
+		// 计算到期天数
+		endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
+		endDateTime = endDateTime.AddDate(0, 0, 1)
+		sub := endDateTime.Sub(time.Now())
+		if sub < 0 {
+			sub = 0
+		}
+		expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
+		item.ExpireDay = expireDay
+	} else {
+		item.Status = "关闭"
+		item.ExpireDay = "0"
+	}
+	respList = append(respList, item)
+	resp.Items = respList
+	resp.CheckList = checkList
+	resp.ClassifyName = utils.COMPANY_CLASSIFY_RAI
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 2 - 1
models/company/company_approval.go

@@ -309,11 +309,12 @@ func TryOutToFormalByWxUser(companyId, productId, sellerId, companyApprovalId, c
 		return
 	}
 	items := make([]*UserReportPermission, 0)
-	sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	sql = `SELECT * FROM user_report_permission WHERE company_id=? AND product_id=? `
 	_, err = to.Raw(sql, companyId, productId).QueryRows(&items)
 	for _, pv := range items {
 		cpLog := new(UserPermissionLog)
 		cpLog.CompanyId = companyId
+		cpLog.UserId = userId
 		cpLog.ChartPermissionId = pv.ChartPermissionId
 		cpLog.CreateTime = time.Now()
 		cpLog.SysUserId = sellerId

+ 7 - 0
models/company/company_permission.go

@@ -97,6 +97,13 @@ func GetPermissionSetItemsByTypeByUser(productId int) (items []*PermissionSetIte
 	return
 }
 
+func GetPermissionLookItemsRaiByTypeByUser(productId int) (items []*PermissionLookItem, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=?  AND parent_id>0 AND is_user_choose = 1   ORDER BY sort ASC `
+	_, err = o.Raw(sql, productId).QueryRows(&items)
+	return
+}
+
 func GetPermissionSetMenuItemsByType(productId int) (items []*PermissionSetItem, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=?  AND parent_id>0 AND set_menu > 0  ORDER BY sort ASC `

+ 1 - 0
models/company/company_user.go

@@ -73,6 +73,7 @@ type CompanyUser struct {
 	MfyxStartDate            string    `description:"买方研选权限开始日期"`
 	MfyxEndDate              string    `description:"买方研选权限结束日期"`
 	MfyxStatus               string    `description:"买方研选状态'试用','未开通'"`
+	RaiUserStatus            string    `description:"用户权限状态"`
 	MfyxInteractionNum       int       `description:"互动量"`
 	MfyxIsBinding            bool      `description:"买方研选是否绑定"`
 	MfyxBindingTime          string    `description:"买方研选绑定时间"`

+ 1 - 0
models/company/user_permission_log.go

@@ -8,6 +8,7 @@ import (
 type UserPermissionLog struct {
 	Id                int `orm:"column(id);pk"`
 	CompanyId         int
+	UserId            int `description:"用户ID"`
 	ChartPermissionId int
 	CreateTime        time.Time
 	SysUserId         int

+ 49 - 0
models/company/user_product.go

@@ -0,0 +1,49 @@
+package company
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+type UserProduct struct {
+	UserProductId   int       `orm:"column(user_product_id);pk" description:"用户产品id"`
+	CompanyId       int       `description:"客户id"`
+	ProductId       int       `description:"产品id"`
+	ProductName     string    `description:"产品名称"`
+	CompanyName     string    `description:"客户名称"`
+	Status          string    `description:"客户状态"`
+	IsSuspend       int       `description:"1:暂停,0:启用"`
+	SuspendTime     time.Time `description:"暂停启用时间"`
+	TryOutTime      time.Time `description:"正式转试用时间"`
+	CreateTime      time.Time `description:"创建时间"`
+	ModifyTime      time.Time `description:"修改时间"`
+	StartDate       string    `description:"开始日期"`
+	EndDate         string    `description:"结束日期"`
+	ContractEndDate time.Time `description:"合同结束日期"`
+	CloseReason     string    `description:"关闭原因"`
+	CloseTime       time.Time `description:"关闭时间"`
+	RealName        string    `description:"用户姓名"`
+	Mobile          string    `description:"手机号"`
+	Email           string    `description:"邮箱"`
+	UserId          int       `description:"用户ID"`
+}
+
+// 新增客户产品
+func AddUserProduct(item *UserProduct) (newId int64, err error) {
+	o := orm.NewOrm()
+	newId, err = o.Insert(item)
+	return
+}
+
+// 根据用户ID获取列表信息
+func GetUserProductByUserIds(userIds []int) (items []*UserProduct, err error) {
+	lenArr := len(userIds)
+	if lenArr == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM user_product WHERE user_id IN (` + utils.GetOrmInReplace(lenArr) + `) `
+	_, err = o.Raw(sql, userIds).QueryRows(&items)
+	return
+}

+ 24 - 0
models/company/user_report_permission.go

@@ -22,9 +22,33 @@ type UserReportPermission struct {
 	ModifyTime             time.Time `description:"修改时间"`
 }
 
+type UserPermissionLookList struct {
+	ClassifyName string `description:"分类"`
+	Items        []*UserPermissionLookItem
+	CheckList    []int
+}
+
+type UserPermissionLookItem struct {
+	ChartPermissionId int    `description:"权限id"`
+	PermissionName    string `description:"权限名称"`
+	StartDate         string `description:"权限开始日期"`
+	EndDate           string `description:"权限结束日期"`
+	Status            string `description:"'正式','试用','关闭'"`
+	ExpireDay         string `description:"到期天数"`
+	ClassifyName      string `description:"分类"`
+}
+
 // 新增用户权限
 func AddUserReportPermission(item *UserReportPermission) (err error) {
 	o := orm.NewOrm()
 	_, err = o.Insert(item)
 	return
 }
+
+// 根据用户ID获取对应的用户权限信息
+func GetUserReportPermissionListByUserId(productId, userId int) (items []*PermissionLookItem, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM user_report_permission WHERE  product_id=?  AND user_id = ?  `
+	_, err = o.Raw(sql, productId, userId).QueryRows(&items)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -10582,6 +10582,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: "UserPermissionList",
+            Router: `/user/PermissionList`,
+            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: "AddUser",

+ 30 - 0
services/user.go

@@ -473,3 +473,33 @@ func AddHzCompanyUser(mobile, realName string, adminId int, adminName string) {
 	})
 	return
 }
+
+// GetRaiUserStatus 新增弘则联系人
+func GetRaiUserStatus(userIds []int) (mapUserStatus map[int]string) {
+	var err error
+	mapUserStatus = make(map[int]string, 0)
+
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("自动添加弘则联系人失败, Err: "+err.Error(), 3)
+		}
+	}()
+	lenArr := len(userIds)
+	if lenArr == 0 {
+		return
+	}
+
+	for _, v := range userIds {
+		mapUserStatus[v] = "关闭"
+	}
+
+	listUserProduct, e := company.GetUserProductByUserIds(userIds)
+	if e != nil {
+		err = errors.New("GetUserProductByUserIds" + e.Error())
+		return
+	}
+	for _, v := range listUserProduct {
+		mapUserStatus[v.UserId] = v.Status
+	}
+	return
+}