|
@@ -4,6 +4,7 @@ import (
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
"hongze/hongze_cygx/models"
|
|
|
+ "hongze/hongze_cygx/models/company"
|
|
|
"hongze/hongze_cygx/utils"
|
|
|
"strconv"
|
|
|
"strings"
|
|
@@ -226,29 +227,65 @@ func DeductTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *model
|
|
|
msgTemplate := "您的专项调研次数已用完,如仍想参加,请与您的对口销售商议"
|
|
|
companyId := user.CompanyId
|
|
|
chartPermissionName := activityInfo.ChartPermissionName
|
|
|
+
|
|
|
+ companyProduct, e := company.GetCompanyProductByCompanyIdAndProductId(companyId, utils.COMPANY_PRODUCT_RAI_ID)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCompanyProductByCompanyIdAndProductId, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
var condition string
|
|
|
var pars []interface{}
|
|
|
- condition = " AND company_id = ? AND points > 0 ORDER BY points DESC LIMIT 1 "
|
|
|
- pars = append(pars, companyId)
|
|
|
+ var maxChartPermissionId int // 剩余点数最多的行业
|
|
|
+ var points int // 剩余点数
|
|
|
+ var activitySpecialPermissionPointsList []*models.CygxActivitySpecialPermissionPoints
|
|
|
+ //永续客户不限次数需要单独处理
|
|
|
+ if companyProduct.Status == utils.COMPANY_STATUS_FOREVER {
|
|
|
+ condition = " AND company_id = ? ORDER BY points DESC LIMIT 1 "
|
|
|
+ pars = append(pars, companyId)
|
|
|
+ activitySpecialPermissionPointsList, e = models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //如果永续客户不存在单独的行业剩余点数记录,那么就添加一条 -1 的记录作为初始化数据
|
|
|
+ if len(activitySpecialPermissionPointsList) == 0 {
|
|
|
+ item := new(models.CygxActivitySpecialPermissionPoints)
|
|
|
+ item.CompanyId = companyProduct.CompanyId
|
|
|
+ item.Points = -1
|
|
|
+ item.CompanyName = companyProduct.CompanyName
|
|
|
+ //item.ChartPermissionId = activityInfo.ChartPermissionId
|
|
|
+ //item.ChartPermissionName = activityInfo.ChartPermissionName
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ e = models.AddCygxActivitySpecialPermissionPoints(item)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("AddCygxActivitySpecialPermissionPoints, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ condition = " AND company_id = ? AND points > 0 ORDER BY points DESC LIMIT 1 "
|
|
|
+ pars = append(pars, companyId)
|
|
|
|
|
|
- //判断是不是策略行业的活动,如果不是策略就获取对应行业的点数 ,策略的任何一个行业有剩余点数都能参加
|
|
|
- if chartPermissionName != utils.CE_LUE_NAME {
|
|
|
- pars = make([]interface{}, 0)
|
|
|
- condition = " AND company_id = ? AND (chart_permission_id = ? OR chart_permission_id = 0 ) AND points > 0 ORDER BY points DESC LIMIT 1 "
|
|
|
- pars = append(pars, companyId, activityInfo.ChartPermissionId)
|
|
|
- }
|
|
|
- activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
|
|
|
- if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
- err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
|
|
|
- return
|
|
|
+ //判断是不是策略行业的活动,如果不是策略就获取对应行业的点数 ,策略的任何一个行业有剩余点数都能参加
|
|
|
+ if chartPermissionName != utils.CE_LUE_NAME {
|
|
|
+ pars = make([]interface{}, 0)
|
|
|
+ condition = " AND company_id = ? AND ( chart_permission_id = ? OR chart_permission_id =0 ) AND points > 0 ORDER BY points DESC LIMIT 1 "
|
|
|
+ pars = append(pars, companyId, activityInfo.ChartPermissionId)
|
|
|
+ }
|
|
|
+ activitySpecialPermissionPointsList, e = models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
//如果没有剩余的点数,就返回
|
|
|
if len(activitySpecialPermissionPointsList) == 0 {
|
|
|
err = errors.New(msgTemplate)
|
|
|
return
|
|
|
}
|
|
|
- var maxChartPermissionId int // 剩余点数最多的行业
|
|
|
- var points int // 剩余点数
|
|
|
for _, v := range activitySpecialPermissionPointsList {
|
|
|
maxChartPermissionId = v.ChartPermissionId
|
|
|
points = v.Points - 1
|
|
@@ -309,18 +346,14 @@ func RebateTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *model
|
|
|
}
|
|
|
|
|
|
// 预处理专项调研流水明细表描述内容
|
|
|
-func HandleActivitySpecialTripBillTotalText(user *models.WxUserItem) (totalText string, err error) {
|
|
|
- companyId := user.CompanyId
|
|
|
+func HandleActivitySpecialTripBillTotalText(companyId int) (totalText string, err error) {
|
|
|
+ //companyId := user.CompanyId
|
|
|
companyDetail, e := models.GetCompanyDetailByIdGroup(companyId)
|
|
|
if e != nil {
|
|
|
err = errors.New("GetCompanyDetailByIdGroup, Err:" + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- //永续客户不限制次数
|
|
|
- if companyDetail.Status == utils.COMPANY_STATUS_FOREVER {
|
|
|
- totalText = "0次"
|
|
|
- return
|
|
|
- }
|
|
|
+
|
|
|
var condition string
|
|
|
var pars []interface{}
|
|
|
pars = make([]interface{}, 0)
|
|
@@ -331,18 +364,39 @@ func HandleActivitySpecialTripBillTotalText(user *models.WxUserItem) (totalText
|
|
|
err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
|
|
|
return
|
|
|
}
|
|
|
+ //永续客户次数累加
|
|
|
+ if companyDetail.Status == utils.COMPANY_STATUS_FOREVER {
|
|
|
+ var points int
|
|
|
+ for _, v := range activitySpecialPermissionPointsList {
|
|
|
+ points += v.Points
|
|
|
+ }
|
|
|
+ totalText = fmt.Sprint(points, "次") //追加永续客户展示规则(2024-02-23)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
var itemBillTotal []string
|
|
|
+ itemBillTotalMap := make(map[string]string)
|
|
|
for _, v := range activitySpecialPermissionPointsList {
|
|
|
if v.ChartPermissionId > 0 {
|
|
|
itemBillTotal = append(itemBillTotal, fmt.Sprint(v.ChartPermissionName, v.Points, "次")) // 行业套餐客户展示规则
|
|
|
+ itemBillTotalMap[v.ChartPermissionName] = fmt.Sprint(v.ChartPermissionName, v.Points, "次")
|
|
|
}
|
|
|
if v.ChartPermissionId == 0 {
|
|
|
- totalText = fmt.Sprint(v.Points, "次") // 大套餐客户展示规则
|
|
|
+ totalText = fmt.Sprint(v.Points, "次") // 大套餐客户展示规则,
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if len(itemBillTotal) > 0 {
|
|
|
- totalText = strings.Join(itemBillTotal, "+")
|
|
|
+ permissionNameSlice := []string{"医药", "消费", "科技", "智造"}
|
|
|
+ var itemBillTotalNew []string
|
|
|
+ for _, v := range permissionNameSlice {
|
|
|
+ if itemBillTotalMap[v] == "" {
|
|
|
+ itemBillTotalNew = append(itemBillTotalNew, fmt.Sprint(v, "0次"))
|
|
|
+ } else {
|
|
|
+ itemBillTotalNew = append(itemBillTotalNew, itemBillTotalMap[v])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ totalText = strings.Join(itemBillTotalNew, "+")
|
|
|
}
|
|
|
return
|
|
|
}
|