Procházet zdrojové kódy

活动主客观限制

xingzai před 3 roky
rodič
revize
0d85bea35e

+ 9 - 1
controllers/activity.go

@@ -657,7 +657,8 @@ func (this *ActivityCoAntroller) Detail() {
 	//判断是否已经申请过
 
 	if user.CompanyId > 1 {
-		permissionStr, err := models.GetCompanyPermission(user.CompanyId)
+		permissionStr, err := models.GetCompanyPermissionByUser(user.CompanyId)
+		fmt.Println(permissionStr)
 		if err != nil {
 			br.Msg = "获取信息失败"
 			br.ErrMsg = "获取客户权限信息失败,Err:" + err.Error()
@@ -690,6 +691,13 @@ func (this *ActivityCoAntroller) Detail() {
 				resp.PopupMsg = "您暂无权限参加【" + activityInfo.ActivityTypeName + "】类型活动"
 				resp.MsgType = "Type"
 			} else {
+				if strings.Contains("医药,消费,科技,智造", activityInfo.ChartPermissionName) {
+					if activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3 || activityInfo.ActivityTypeId == 5 || activityInfo.ActivityTypeId == 6 {
+						activityInfo.ChartPermissionName += "(主观)"
+					} else {
+						activityInfo.ChartPermissionName += "(客观)"
+					}
+				}
 				resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动"
 				resp.MsgType = "Industry"
 			}

+ 60 - 2
controllers/user.go

@@ -614,6 +614,28 @@ func (this *UserController) ApplyTryOut() {
 	}
 	uid := user.UserId
 
+	var title string
+	tryType := req.TryType
+	detailId := req.DetailId
+	if tryType == "Article" {
+		detail, err := models.GetArticleDetailById(detailId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+			return
+		}
+		title = detail.Title
+	} else if tryType == "Activity" {
+		detail, err := models.GetAddActivityInfoById(detailId)
+		if err != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(detailId)
+			return
+		}
+		title = detail.ActivityName
+	}
+
+	fmt.Println(title)
 	//缓存校验
 	cacheKey := fmt.Sprint("xygx:apply_record:add:", uid)
 	ttlTime := utils.Rc.GetRedisTTL(cacheKey)
@@ -706,7 +728,7 @@ func (this *UserController) ApplyTryOut() {
 	}
 
 	//获取销售信息
-	sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId)
+	sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "申请失败"
 		br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
@@ -720,7 +742,6 @@ func (this *UserController) ApplyTryOut() {
 			mobile = user.Email
 		}
 	}
-
 	applyMethod := ""
 	cnf, _ := models.GetConfigByCode("tpl_msg")
 	if cnf != nil {
@@ -734,12 +755,49 @@ func (this *UserController) ApplyTryOut() {
 			}
 			if companyItem != nil && companyItem.CompanyId > 0 {
 				applyMethod = companyItem.Status + "客户申请"
+				if detailId > 0 {
+					companyProduct, err := models.GetCompanyProductDetail(user.CompanyId, 2)
+					if err != nil && err.Error() != utils.ErrNoRow() {
+						br.Msg = "获取信息失败"
+						br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+						return
+					}
+					if companyProduct != nil && companyProduct.IsSuspend == 1 {
+						applyMethod = "试用暂停客户"
+					} else {
+						if companyItem.Status == "正式" || companyItem.Status == "试用" {
+							applyMethod = companyItem.Status + "客户申请,无对应权限"
+						} else if companyItem.Status == "冻结" || companyItem.Status == "流失" {
+							applyMethod = companyItem.Status + "客户"
+						}
+					}
+					applyMethod = applyMethod + "," + title
+				}
 			}
 		} else {
+			if detailId > 0 {
+				//获取销售信息
+				sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 1)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					br.Msg = "申请失败"
+					br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
+					return
+				}
+				if sellerItem != nil {
+					applyMethod = "FICC客户"
+				} else {
+					applyMethod = "潜在客户"
+				}
+				applyMethod = applyMethod + "," + title
+			}
 			applyMethod = "潜在客户申请"
 		}
 		openIpItem, _ := models.GetUserRecordByMobile(4, cnf.ConfigValue)
 		if openIpItem != nil && openIpItem.OpenId != "" {
+			if applyMethod != "2" {
+				req.RealName = user.RealName
+				req.CompanyName = user.CompanyName
+			}
 			fmt.Println("推送消息", req.RealName, req.CompanyName, mobile, openIpItem.OpenId, applyMethod)
 			utils.FileLog.Info("推送消息 %s %s,%s,%s,%s", req.RealName, req.CompanyName, mobile, openIpItem.OpenId, applyMethod)
 			go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, openIpItem.OpenId, applyMethod)

+ 2 - 2
models/chart_permission.go

@@ -20,7 +20,7 @@ type ChartPermissionResp struct {
 
 func GetChartPermissionAll(condition string) (items []*ChartPermission, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND show_type=1 ` + condition + ` ORDER BY sort ASC `
+	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND show_type=1  AND permission_type!=2  ` + condition + ` ORDER BY sort ASC `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -37,7 +37,7 @@ func GetCategoryId(chartPermissionId int) (category_id string, err error) {
 
 func GetChartPermissionReportAll(condition string) (items []*ChartPermission, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND is_report=1 ` + condition + ` ORDER BY sort ASC `
+	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND is_report=1 AND permission_type!=2 ` + condition + ` ORDER BY sort ASC `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }

+ 13 - 1
models/company.go

@@ -53,7 +53,7 @@ func GetCountCompanyDetailByIdGroup(companyId int) (count int, err error) {
 			INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
 			INNER JOIN chart_permission AS cp ON cp.chart_permission_id = p.chart_permission_id
 			LEFT JOIN admin AS c ON b.seller_id=c.admin_id
-			WHERE a.company_id=? AND b.product_id = 2   OR (a.company_id = ? AND  cp.permission_name = '策略' )   `
+			WHERE a.company_id=? AND b.product_id = 2  AND b.permission_type != 2  OR (a.company_id = ? AND  cp.permission_name = '策略' )   `
 	o := orm.NewOrm()
 	err = o.Raw(sql, companyId, companyId).QueryRow(&count)
 	return
@@ -158,3 +158,15 @@ func GetCompanySellerName(companyId int) (sellerName string, err error) {
 	err = o.Raw(sql, companyId).QueryRow(&sellerName)
 	return
 }
+
+type CompanyProduct struct {
+	IsSuspend int `description:"1:暂停,0:启用"`
+}
+
+//获取对应销售以及销售的手机号
+func GetCompanyProductDetail(companyId, productId int) (item *CompanyProduct, err error) {
+	sql := ` SELECT * FROM company_product WHERE company_id = ? AND product_id = ?; `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId, productId).QueryRow(&item)
+	return
+}

+ 3 - 3
models/seller.go

@@ -30,13 +30,13 @@ func GetSellerByCompanyId(companyId int) (item *AdminItem, err error) {
 	return
 }
 
-func GetSellerByCompanyIdCheckFicc(companyId int) (item *AdminItem, err error) {
+func GetSellerByCompanyIdCheckFicc(companyId, productId int) (item *AdminItem, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT b.*,c.open_id,c.user_id,a.company_name FROM company_product AS a
 			INNER JOIN admin AS b ON a.seller_id=b.admin_id
 			LEFT JOIN wx_user AS c ON b.mobile=c.mobile
-			WHERE a.company_id=? AND a.product_id=2 `
-	err = o.Raw(sql, companyId).QueryRow(&item)
+			WHERE a.company_id=? AND a.product_id=?`
+	err = o.Raw(sql, companyId, productId).QueryRow(&item)
 	return
 }
 

+ 2 - 0
models/user.go

@@ -199,6 +199,8 @@ type ApplyTryReq struct {
 	RealName        string `description:"姓名"`
 	CompanyName     string `description:"公司名称"`
 	ApplyMethod     int    `description:"1:已付费客户申请试用,2:非客户申请试用,3:非客户申请试用(ficc下,不需要进行数据校验)"`
+	TryType         string `description:"提交类型,Article:文章、Activity:活动"`
+	DetailId        int    `description:"详情ID"`
 }
 
 type CountryCode struct {

+ 9 - 1
models/user_record.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
 	"time"
 )
 
@@ -102,9 +103,16 @@ func ModifyUserRecordSessionKey(openId, sessionKey string) (err error) {
 
 //根据用户id和平台id获取用户关系
 func GetUserRecordByMobile(platform int, bindAccount string) (item *UserRecord, err error) {
-	sql := `SELECT cr.open_id FROM user_record  as u 
+
+	var sql string
+	if utils.RunMode == "release" {
+		sql = `SELECT cr.open_id FROM user_record  as u 
 			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id 
 			WHERE create_platform=? AND bind_account = ?`
+	} else {
+		platform = 1
+		sql = `SELECT open_id FROM	user_record  WHERE create_platform =? AND bind_account = ?`
+	}
 	err = orm.NewOrm().Raw(sql, platform, bindAccount).QueryRow(&item)
 	return
 }

+ 1 - 0
models/wechat.go

@@ -45,6 +45,7 @@ func GetWxAccessToken() (accessTokenStr string, err error) {
 	} else {
 		//判断token是否过期
 		if time.Now().Unix() > wxToken.ExpiresIn {
+
 			accessToken, err := GetWxToken()
 			fmt.Println(accessToken)
 			if err != nil {

+ 17 - 5
services/activity.go

@@ -322,7 +322,7 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				err = errs
 				return
 			}
-			permissionStr, errs = models.GetCompanyPermission(companyId)
+			permissionStr, errs = models.GetCompanyPermissionByUser(companyId)
 			if errs != nil {
 				err = errs
 				return
@@ -382,11 +382,23 @@ func GetHavePower(activityInfo *models.ActivityDetail, permissionStr, companyDet
 		havePower = true
 	} else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "试用" && strings.Contains(activityInfo.CustomerTypeIds, "5") {
 		havePower = true
-	} else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
+		//} else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
+		//	havePower = true
+		//} else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
+		//	havePower = true
+	} else if (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3 || activityInfo.ActivityTypeId == 4 || activityInfo.ActivityTypeId == 5) && strings.Contains(permissionStr, "专家") {
 		havePower = true
-	} else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
-		havePower = true
-	} else if activityInfo.ActivityTypeId == 5 && strings.Contains(permissionStr, "专家") {
+	}
+	if activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 6 {
+		if strings.Contains(permissionStr, activityInfo.ChartPermissionName+"(主观)") {
+			havePower = true
+		}
+	} else {
+		if strings.Contains(permissionStr, activityInfo.ChartPermissionName+"(客观)") {
+			havePower = true
+		}
+	}
+	if (activityInfo.ChartPermissionName == "研选" || activityInfo.ChartPermissionName == "策略") && strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
 		havePower = true
 	}
 	return

+ 27 - 10
services/wechat_send_msg.go

@@ -109,14 +109,28 @@ func SendPermissionApplyTemplateMsg(realName, companyName, mobile, openId, apply
 			utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
 		}
 	}()
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
+
+	var accessToken string
+	if utils.RunMode == "release" {
+		accessToken, err = models.GetWxAccessTokenByXzs()
+		if err != nil {
+			msg = "GetWxAccessToken Err:" + err.Error()
+			return
+		}
+		if accessToken == "" {
+			msg = "accessToken is empty"
+			return
+		}
+	} else {
+		accessToken, err = models.GetWxAccessToken()
+		if err != nil {
+			msg = "GetWxAccessToken Err:" + err.Error()
+			return
+		}
+		if accessToken == "" {
+			msg = "accessToken is empty"
+			return
+		}
 	}
 
 	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
@@ -135,8 +149,11 @@ func SendPermissionApplyTemplateMsg(realName, companyName, mobile, openId, apply
 	sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": fontColor}
 	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": fontColor}
 	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": fontColor}
-
-	sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
+	if utils.RunMode == "release" {
+		sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
+	} else {
+		sendMap["template_id"] = utils.WxMsgTemplateIdApply
+	}
 	sendMap["data"] = sendData
 	sendTemplateMsg(sendUrl, openId, sendMap)
 	fmt.Println("send end")