|
@@ -20,7 +20,7 @@ func SpecialTripPopupMsg(activityInfo *models.CygxActivitySpecialDetail, user *m
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- errMsg, _, e := GetTripRemainingtimesBycompany(user, activityInfo)
|
|
|
+ errMsg, e := CheckTripRemainingtimesBycompany(user, activityInfo)
|
|
|
if e != nil {
|
|
|
err = errors.New("获取客户剩余报名次数失败 GetActivitySpecialUserType, Err: " + e.Error())
|
|
|
return
|
|
@@ -159,6 +159,197 @@ func GetTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *model
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// 校验是否还有剩余次数
|
|
|
+func CheckTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (errMsg string, err error) {
|
|
|
+ msgTemplate := "您的专项调研次数已用完,如仍想参加,请与您的对口销售商议"
|
|
|
+ companyId := user.CompanyId
|
|
|
+ chartPermissionName := activityInfo.ChartPermissionName
|
|
|
+
|
|
|
+ companyDetail, e := models.GetCompanyDetailByIdGroup(companyId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCompanyDetailByIdGroup, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //永续客户不限制次数
|
|
|
+ if companyDetail.Status == utils.COMPANY_STATUS_FOREVER {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = " AND company_id = ? AND points > 0 ORDER BY chart_permission_id DESC "
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ //如果没有剩余的点数,就返回
|
|
|
+ if len(activitySpecialPermissionPointsList) == 0 {
|
|
|
+ errMsg = msgTemplate
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断是不是策略行业的活动,策略的任何一个行业有剩余点数都能参加
|
|
|
+ if chartPermissionName == utils.CE_LUE_NAME {
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ for _, v := range activitySpecialPermissionPointsList {
|
|
|
+ if v.ChartPermissionName == chartPermissionName || v.ChartPermissionId == 0 {
|
|
|
+ return
|
|
|
+ } // 如果对应行业有剩余次数,或者是属于大套餐且有次数,那么校验也通过
|
|
|
+ }
|
|
|
+ }
|
|
|
+ errMsg = msgTemplate
|
|
|
+ return
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+// GetSpecialBillMaxChartPermissionId 获取专项调研剩余点数最多的行业
|
|
|
+func GetSpecialBillMaxChartPermissionId(user *models.WxUserItem) (maxChartPermissionId int, maxChartPermissionName string, err error) {
|
|
|
+ companyId := user.CompanyId
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = " AND company_id = ? AND points > 0 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
|
|
|
+ }
|
|
|
+ for _, v := range activitySpecialPermissionPointsList {
|
|
|
+ maxChartPermissionId = v.ChartPermissionId
|
|
|
+ maxChartPermissionName = v.ChartPermissionName
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// DeductTripRemainingtimesByUser 扣除用户专项调研剩余次数
|
|
|
+func DeductTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (err error) {
|
|
|
+ msgTemplate := "您的专项调研次数已用完,如仍想参加,请与您的对口销售商议"
|
|
|
+ companyId := user.CompanyId
|
|
|
+ chartPermissionName := activityInfo.ChartPermissionName
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ 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 = ? 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
|
|
|
+ }
|
|
|
+ //更新对应行业剩余点数
|
|
|
+ e = models.UpdateCygxActivitySpecialPermissionPoints(points, companyId, maxChartPermissionId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("UpdateCygxActivitySpecialPermissionPoints, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// RebateTripRemainingtimesByUser 返点用户专项调研剩余次数
|
|
|
+func RebateTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (err error) {
|
|
|
+ companyId := user.CompanyId
|
|
|
+ chartPermissionName := activityInfo.ChartPermissionName
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = " AND company_id = ? 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 = ? LIMIT 1 "
|
|
|
+ pars = append(pars, companyId, activityInfo.ChartPermissionId)
|
|
|
+ } else {
|
|
|
+ lastTripBill, e := models.GetCygxActivitySpecialTripBillLastDetialByActivityId(activityInfo.ActivityId, user.UserId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ pars = make([]interface{}, 0)
|
|
|
+ condition = " AND company_id = ? AND chart_permission_id = ? LIMIT 1 "
|
|
|
+ pars = append(pars, companyId, lastTripBill.ChartPermissionId)
|
|
|
+ }
|
|
|
+ activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var maxChartPermissionId int // 剩余点数最多的行业(返点行业)
|
|
|
+ var points int // 剩余点数
|
|
|
+ for _, v := range activitySpecialPermissionPointsList {
|
|
|
+ maxChartPermissionId = v.ChartPermissionId
|
|
|
+ points = v.Points + 1
|
|
|
+ }
|
|
|
+ //更新对应行业剩余点数
|
|
|
+ e = models.UpdateCygxActivitySpecialPermissionPoints(points, companyId, maxChartPermissionId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("UpdateCygxActivitySpecialPermissionPoints, Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 预处理专项调研流水明细表描述内容
|
|
|
+func HandleActivitySpecialTripBillTotalText(user *models.WxUserItem) (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)
|
|
|
+ condition = " AND company_id = ? AND points != 0 ORDER BY chart_permission_id DESC "
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+ var itemBillTotal []string
|
|
|
+ for _, v := range activitySpecialPermissionPointsList {
|
|
|
+ if v.ChartPermissionId > 0 {
|
|
|
+ itemBillTotal = append(itemBillTotal, fmt.Sprint(v.ChartPermissionName, v.Points, "次")) // 行业套餐客户展示规则
|
|
|
+ }
|
|
|
+ if v.ChartPermissionId == 0 {
|
|
|
+ totalText = fmt.Sprint(v.Points, "次") // 大套餐客户展示规则
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(itemBillTotal) > 0 {
|
|
|
+ totalText = strings.Join(itemBillTotal, "+")
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// 用户搜专项调研操作操作行为,模板消息推送
|
|
|
func ActivitySpecialUserRmind(user *models.WxUserItem, activityId, TripStatus int) (err error) {
|
|
|
defer func() {
|