Bladeren bron

no message

zhangchuanxing 1 week geleden
bovenliggende
commit
cf49cd0659

+ 61 - 2
controllers/roadshow/calendar.go

@@ -13,6 +13,7 @@ import (
 	"hongze/hongze_mobile_admin/models/tables/english_company"
 	"hongze/hongze_mobile_admin/models/tables/english_company"
 	"hongze/hongze_mobile_admin/models/tables/system"
 	"hongze/hongze_mobile_admin/models/tables/system"
 	"hongze/hongze_mobile_admin/services"
 	"hongze/hongze_mobile_admin/services"
+	cygxService "hongze/hongze_mobile_admin/services/cygx"
 	"hongze/hongze_mobile_admin/services/rs"
 	"hongze/hongze_mobile_admin/services/rs"
 	"hongze/hongze_mobile_admin/utils"
 	"hongze/hongze_mobile_admin/utils"
 	"strconv"
 	"strconv"
@@ -51,6 +52,7 @@ func (this *CalendarController) Add() {
 		return
 		return
 	}
 	}
 	var req roadshow.AddActivityReq
 	var req roadshow.AddActivityReq
+	var resp roadshow.AddActivityResp
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 	if err != nil {
 		this.FailWithMessage("参数解析异常", "参数解析失败,Err:"+err.Error())
 		this.FailWithMessage("参数解析异常", "参数解析失败,Err:"+err.Error())
@@ -195,6 +197,7 @@ func (this *CalendarController) Add() {
 	var productItemRai *company_product.CompanyProduct
 	var productItemRai *company_product.CompanyProduct
 	roleTypeCode := sysUser.RoleTypeCode
 	roleTypeCode := sysUser.RoleTypeCode
 	//如果是权益销售、权益销售组长、权益管理员 添加的路演信息,做销售与共享销售信息关联查看
 	//如果是权益销售、权益销售组长、权益管理员 添加的路演信息,做销售与共享销售信息关联查看
+	var isRaiRoadShow bool //是否属于权益的路演
 	if req.CompanyId > 0 && req.ActivityType == "路演" && (roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER ||
 	if req.CompanyId > 0 && req.ActivityType == "路演" && (roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER ||
 		roleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN) {
 		roleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN) {
 		productItemRai, err = company_product.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, utils.COMPANY_PRODUCT_RAI_ID)
 		productItemRai, err = company_product.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, utils.COMPANY_PRODUCT_RAI_ID)
@@ -202,6 +205,19 @@ func (this *CalendarController) Add() {
 			this.FailWithMessage("客户信息有误!", "获取客户信息失败!Err:"+err.Error())
 			this.FailWithMessage("客户信息有误!", "获取客户信息失败!Err:"+err.Error())
 			return
 			return
 		}
 		}
+		points, addType, err := rs.CheckAddRoadShowCompanyPoint(req.CompanyId, req.ResearcherList)
+		if err != nil {
+			this.FailWithMessage("添加失败", "获取客户信息失败,Err:"+err.Error())
+			return
+		}
+		isRaiRoadShow = true
+		resp.Points = points
+		resp.AddType = addType
+
+		if addType == 3 {
+			this.OkDetailed(resp, "保存成功")
+			return
+		}
 	}
 	}
 
 
 	rsCalendar := new(roadshow.RsCalendar)
 	rsCalendar := new(roadshow.RsCalendar)
@@ -308,7 +324,12 @@ func (this *CalendarController) Add() {
 			}(v.ResearcherId, int(rsCalendarId), int(rsCalendarResearcherId))
 			}(v.ResearcherId, int(rsCalendarId), int(rsCalendarResearcherId))
 		}
 		}
 	}
 	}
-	this.OkDetailed(nil, "保存成功")
+	//13  给公司添加路演,对应专项调研扣点处理
+	if isRaiRoadShow {
+		go cygxService.SpecialActivityPointsBillRoadShow(int(rsCalendarId), sysUser.AdminId)
+	}
+
+	this.OkDetailed(resp, "保存成功")
 }
 }
 
 
 // CalendarList
 // CalendarList
@@ -1276,6 +1297,7 @@ func (this *CalendarController) Edit() {
 	}
 	}
 
 
 	var req roadshow.EditActivityReq
 	var req roadshow.EditActivityReq
+	var resp roadshow.AddActivityResp
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 	if err != nil {
 		this.FailWithMessage("参数解析异常", "参数解析失败,Err:"+err.Error())
 		this.FailWithMessage("参数解析异常", "参数解析失败,Err:"+err.Error())
@@ -1492,6 +1514,39 @@ func (this *CalendarController) Edit() {
 
 
 	calendarUpdateParams["modify_time"] = time.Now()
 	calendarUpdateParams["modify_time"] = time.Now()
 	calendarUpdateParams["title"] = getTitle(req.ActivityType, req.RoadshowType, req.ActivityCategory, req.RoadshowPlatform, req.Province, req.City)
 	calendarUpdateParams["title"] = getTitle(req.ActivityType, req.RoadshowType, req.ActivityCategory, req.RoadshowPlatform, req.Province, req.City)
+
+	//如果是权益客户,添加销售跟共享销售的信息
+
+	roleTypeCode := sysUser.RoleTypeCode
+	//如果是权益销售、权益销售组长、权益管理员 添加的路演信息,做销售与共享销售信息关联查看
+	var isRaiRoadShow bool //是否属于权益的路演
+	if req.CompanyId > 0 && req.ActivityType == "路演" && (roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER ||
+		roleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN) {
+		var productItemRai *company_product.CompanyProduct
+		productItemRai, err = company_product.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, utils.COMPANY_PRODUCT_RAI_ID)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			this.FailWithMessage("客户信息有误!", "获取客户信息失败!Err:"+err.Error())
+			return
+		}
+		points, addType, err := rs.CheckAddRoadShowCompanyPoint(req.CompanyId, req.ResearcherList)
+		if err != nil {
+			this.FailWithMessage("添加失败", "获取客户信息失败,Err:"+err.Error())
+			return
+		}
+		if productItemRai != nil {
+			calendarUpdateParams["seller_id"] = productItemRai.SellerId
+			calendarUpdateParams["share_seller_id"] = productItemRai.ShareSellerId
+		}
+		isRaiRoadShow = true
+		resp.Points = points
+		resp.AddType = addType
+
+		if addType == 3 {
+			this.OkDetailed(resp, "保存成功")
+			return
+		}
+	}
+
 	err = roadshow.UpdateRsCalendar(calendarWhereParams, calendarUpdateParams)
 	err = roadshow.UpdateRsCalendar(calendarWhereParams, calendarUpdateParams)
 	if err != nil {
 	if err != nil {
 		this.FailWithMessage("保存失败!", "保存失败!UpdateRsCalendar:"+err.Error())
 		this.FailWithMessage("保存失败!", "保存失败!UpdateRsCalendar:"+err.Error())
@@ -1689,7 +1744,11 @@ func (this *CalendarController) Edit() {
 			}(v.ResearcherId, req.RsCalendarId, int(rsCalendarResearcherId))
 			}(v.ResearcherId, req.RsCalendarId, int(rsCalendarResearcherId))
 		}
 		}
 	}
 	}
-	this.OkDetailed(nil, "保存成功")
+	//13  给公司添加路演,对应专项调研扣点处理
+	if isRaiRoadShow {
+		go cygxService.SpecialActivityPointsBillRoadShow(req.RsCalendarId, sysUser.AdminId)
+	}
+	this.OkDetailed(resp, "保存成功")
 }
 }
 
 
 // ResearcherList
 // ResearcherList

+ 9 - 2
models/cygx/activity_ask_email.go

@@ -29,6 +29,13 @@ func GetAskEmailList() (item []*AskEmailRep, err error) {
 func UpdateAskEmail(item *AskEmailRep) (err error) {
 func UpdateAskEmail(item *AskEmailRep) (err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")
 	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_activity_ask_email SET admin_id=? where mobile=?`
 	sql := `UPDATE cygx_activity_ask_email SET admin_id=? where mobile=?`
-	_, err = o.Raw(sql,item.AdminId,item.Mobile).Exec()
+	_, err = o.Raw(sql, item.AdminId, item.Mobile).Exec()
 	return
 	return
-}
+}
+
+func GetAskEmailListByAdminIds(adminId string) (item []*AskEmailRep, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_activity_ask_email WHERE    chart_permission_name != ''  AND admin_id IN (` + adminId + `)  `
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}

+ 8 - 0
models/cygx/activity_special_permission_points.go

@@ -88,3 +88,11 @@ func UpdateCygxActivitySpecialPermissionPoints(points, companyId, chartPermissio
 	_, err = o.Raw(sql, points, companyId, chartPermissionId).Exec()
 	_, err = o.Raw(sql, points, companyId, chartPermissionId).Exec()
 	return
 	return
 }
 }
+
+// 获取客户是否有研选扣点点数
+func GetCygxActivitySpecialPermissionPointsCount(companyId int) (points float64, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sqlCount := `SELECT points FROM cygx_activity_special_permission_points  WHERE company_id=?  LIMIT 	  1 `
+	err = o.Raw(sqlCount, companyId).QueryRow(&points)
+	return
+}

+ 4 - 0
models/roadshow/calendar.go

@@ -24,6 +24,10 @@ type AddActivityReq struct {
 	ResearcherList   []*CalendarResearcher
 	ResearcherList   []*CalendarResearcher
 	EnglishCompany   int `description:"是否为英文客户"`
 	EnglishCompany   int `description:"是否为英文客户"`
 }
 }
+type AddActivityResp struct {
+	Points  int `description:"点数"`
+	AddType int `description:"添加类型,1成功(扣点数),2成功(不扣点数),3失败"`
+}
 
 
 type CalendarResearcher struct {
 type CalendarResearcher struct {
 	ResearcherId   int    `description:"研究员id"`
 	ResearcherId   int    `description:"研究员id"`

+ 19 - 0
services/cygx/activity_points_set.go

@@ -59,3 +59,22 @@ func ActivitySpecialCompanyApprovalRedis(comapnyId, companyContractId int) (err
 	}
 	}
 	return
 	return
 }
 }
+
+// 13  给公司添加路演,对应专项调研扣点处理
+func SpecialActivityPointsBillRoadShow(activityId, adminId int) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			msg := fmt.Sprint("activityId:", activityId)
+			go alarm_msg.SendAlarmMsg("专项调研活动到会研选扣点处理,写入Redis队列消息失败:"+err.Error()+msg, 2)
+		}
+	}()
+	log := &YanXuanActivityPointsRedis{ActivityId: activityId, SourceType: 13, AdminId: adminId, Source: 2, CreateTime: time.Now()}
+	if utils.Re == nil {
+		err := utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
+		if err != nil {
+			fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
+		}
+	}
+	return
+}

+ 59 - 0
services/rs/calendar.go

@@ -5,8 +5,11 @@ import (
 	"errors"
 	"errors"
 	"fmt"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/http"
 	"github.com/rdlucklib/rdluck_tools/http"
+	"hongze/hongze_mobile_admin/models"
+	"hongze/hongze_mobile_admin/models/cygx"
 	"hongze/hongze_mobile_admin/models/roadshow"
 	"hongze/hongze_mobile_admin/models/roadshow"
 	"hongze/hongze_mobile_admin/models/tables/admin"
 	"hongze/hongze_mobile_admin/models/tables/admin"
+	"hongze/hongze_mobile_admin/models/tables/company_product"
 	"hongze/hongze_mobile_admin/services/alarm_msg"
 	"hongze/hongze_mobile_admin/services/alarm_msg"
 	"hongze/hongze_mobile_admin/utils"
 	"hongze/hongze_mobile_admin/utils"
 	"io/ioutil"
 	"io/ioutil"
@@ -1091,3 +1094,59 @@ func GetCalendarFrom(userPhone, startDate, endDate string) (list []roadshow.User
 	list, err = getCalendarFrom(userPhone, startDate, endDate)
 	list, err = getCalendarFrom(userPhone, startDate, endDate)
 	return
 	return
 }
 }
+
+// 公司添加路演的时候,校验公司对应点数,以及研究员关联行业的权限
+func CheckAddRoadShowCompanyPoint(companyId int, researcherList []*roadshow.CalendarResearcher) (points int, addType int, err error) {
+	addType = 1
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("获取公司剩余点数失败:"+err.Error(), 2)
+		}
+	}()
+	productItemRai, e := company_product.GetCompanyProductByCompanyIdAndProductId(companyId, utils.COMPANY_PRODUCT_RAI_ID)
+	if e != nil {
+		err = errors.New("GetCompanyProductByCompanyIdAndProductId, Err: " + e.Error())
+		return
+	}
+
+	permissionStr, e := models.GetCompanyPermission(companyId)
+	if e != nil {
+		err = errors.New("GetCompanyPermission, Err: " + e.Error())
+		return
+	}
+
+	//用户没有路演服务,以及研究员所关联行业的权限,就进行报错提示
+	if !strings.Contains(permissionStr, utils.LU_YAN_FU_WU) {
+		var adminIds []string
+		for _, v := range researcherList {
+			adminIds = append(adminIds, strconv.Itoa(v.ResearcherId))
+		}
+		askEmailList, e := cygx.GetAskEmailListByAdminIds(strings.Join(adminIds, ","))
+		if e != nil {
+			err = errors.New("GetAskEmailListByAdminIds, Err: " + e.Error())
+			return
+		}
+		for _, v := range askEmailList {
+			if v.Name == "王芳" { // 王芳,不需要判断权限和点数
+				continue
+			}
+			if !strings.Contains(permissionStr, v.ChartPermissionName) {
+				addType = 3
+				return
+			}
+		}
+	}
+
+	pointsCompany, e := cygx.GetCygxActivitySpecialPermissionPointsCount(companyId)
+	if e != nil {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsCount, Err: " + e.Error())
+		return
+	}
+
+	if pointsCompany > 0 || productItemRai.Status == utils.COMPANY_STATUS_FORMAL {
+		points = len(researcherList)
+	} else {
+		addType = 2
+	}
+	return
+}