浏览代码

处理活动本组们是否决策人权限

xingzai 2 年之前
父节点
当前提交
d43f2cf211
共有 4 个文件被更改,包括 44 次插入3 次删除
  1. 2 2
      controllers/activity.go
  2. 3 0
      models/activity.go
  3. 38 1
      services/activity.go
  4. 1 0
      utils/constants.go

+ 2 - 2
controllers/activity.go

@@ -732,7 +732,7 @@ func (this *ActivityCoAntroller) Detail() {
 		return
 	}
 	if activityInfo.IsLimitPeople > 0 {
-		noPower, err := services.GetShareNoPowe(activityInfo, permissionStr, userType)
+		noPower, err := services.GetShareNoPowe(activityInfo, permissionStr, userType, user)
 		if err != nil {
 			br.Msg = "获取信息失败"
 			br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
@@ -3872,7 +3872,7 @@ func (this *ActivityCoAntroller) SpecialDetail() {
 	}
 	itemAct := new(models.ActivityDetail)
 	itemAct.CustomerTypeIds = activityInfo.CustomerTypeIds
-	noPower, err := services.GetShareNoPowe(itemAct, permissionStr, userType)
+	noPower, err := services.GetShareNoPowe(itemAct, permissionStr, userType, user)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取客户信息失败,Err:" + err.Error()

+ 3 - 0
models/activity.go

@@ -185,6 +185,9 @@ type ActivityDetail struct {
 	YidongActivityUrl       string                     `description:"易董活动跳转地址"`
 	AudioLink               bool                       `description:"是否展示回放按钮"`
 	VoiceList               *CygxActivityVoiceReq      `description:"音频数据"`
+	AdminId                 int                        `description:"管理员、销售ID "`
+	IsMakerShow             int                        `description:"是否仅决策人可见 0,否 、1,是"`
+	VisibleRange            int                        `description:"可见范围 1,仅本组可见 、2,全部客户可见"`
 }
 
 type CygxActivityResp struct {

+ 38 - 1
services/activity.go

@@ -369,7 +369,11 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 }
 
 // 校验被分享的用户是否有查看详情的权限
-func GetShareNoPowe(activityInfo *models.ActivityDetail, permissionStr string, userType int) (noPower bool, err error) {
+func GetShareNoPowe(activityInfo *models.ActivityDetail, permissionStr string, userType int, user *models.WxUserItem) (noPower bool, err error) {
+	//如果是弘则的就不进行可见权限校验
+	if user.CompanyId == utils.HZ_COMPANY_ID {
+		return
+	}
 	//var noPower bool
 	if (userType == 1 || userType == 4 || userType == 5) && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
 		noPower = true
@@ -387,6 +391,39 @@ func GetShareNoPowe(activityInfo *models.ActivityDetail, permissionStr string, u
 	if userType == 3 && !strings.Contains(permissionStr, "专家") && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(3)) {
 		noPower = true
 	}
+	if !noPower {
+		noPower, err = CheckUserPowerByActivityChoose(user, activityInfo)
+	}
+	return
+}
+
+//处理活动本组们是否决策人权限
+func CheckUserPowerByActivityChoose(user *models.WxUserItem, activityInfo *models.ActivityDetail) (noPower bool, err error) {
+	//处理 见范围 1,仅本组可见 、2,全部客户可见
+	if activityInfo.VisibleRange == 1 {
+		adminIds, errAdmin := models.GetSelleridWhichGroup(user.CompanyId, 2)
+		if errAdmin != nil {
+			err = errAdmin
+			return
+		}
+		sliceAdminIds := strings.Split(adminIds, ",")
+		var haveAdminId bool
+		for _, v := range sliceAdminIds {
+			if v == strconv.Itoa(activityInfo.AdminId) {
+				haveAdminId = true
+			}
+		}
+		if !haveAdminId {
+			noPower = true
+		}
+	}
+	//处理 是否仅决策人可见 0,否 、1,是
+	if activityInfo.IsMakerShow == 1 {
+		if user.IsMaker == 0 {
+			noPower = true
+		}
+	}
+	fmt.Println(noPower)
 	return
 }
 

+ 1 - 0
utils/constants.go

@@ -89,6 +89,7 @@ const (
 	ZHI_ZAO_NAME                     string = "智造"
 	ZHI_ZAO_ID                       int    = 19
 	LINK_WX_EXPLAIN                         = "https://mp.weixin.qq.com/s?__biz=Mzg2OTYzODk0Nw==&mid=2247483662&idx=1&sn=3752df99025189b9d77fe658bfc0edbd&chksm=ce98b742f9ef3e54b49986e647dd951a3aad74f323174b252174e0938c264c0562c8ec455106#rd" //用户阅读数据
+	HZ_COMPANY_ID                    int    = 16                                                                                                                                                                                                 // 弘则公司的ID
 )
 
 const (