Browse Source

Merge branch 'crm/crm_17.0_ficc' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

zhangchuanxing 1 day ago
parent
commit
0cdbf9213c

+ 74 - 24
controllers/roadshow/activity.go

@@ -7,6 +7,8 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/roadshow"
 	"hongze/hz_crm_api/models/system"
+	"hongze/hz_crm_api/services"
+	roadshowService "hongze/hz_crm_api/services/roadshow"
 	"hongze/hz_crm_api/utils"
 	"strconv"
 	"strings"
@@ -65,7 +67,7 @@ func (this *ActivityController) Add() {
 	}
 
 	//researcherMap := make(map[int]string)
-	//var checkIsAdd []string
+	var checkIsAdd []string
 
 	//if req.EnglishCompany == 1 {
 	//	englishCompany, err := models.GetEnglishCompanyById(req.CompanyId)
@@ -112,8 +114,8 @@ func (this *ActivityController) Add() {
 		return
 	}
 
-	//startDateTime := req.StartDate + " " + req.StartTime
-	//endDateTime := req.EndDate + " " + req.EndTime
+	startDateTime := req.StartDate + " " + req.StartTime
+	endDateTime := req.EndDate + " " + req.EndTime
 
 	//startP, _ := time.ParseInLocation(utils.FormatDateTime, startDateTime, time.Local)
 	//endP, _ := time.ParseInLocation(utils.FormatDateTime, endDateTime, time.Local)
@@ -138,27 +140,33 @@ func (this *ActivityController) Add() {
 	//	return
 	//}
 	//researcherMap[v.SellerId] = v.SellerName
+	sellerList, err := system.GetSysAdminByIds(req.SellerId)
+	if err != nil {
+		br.Msg = "保存失败!"
+		br.ErrMsg = "获取销售信息失败!Err:" + err.Error()
+		return
+	}
+	for _, v := range sellerList {
+		//校验活动时间冲突
+		{
+			calendarCount, err := roadshowService.CheckActivity(startDateTime, endDateTime, "1,2", v.AdminId)
+			if err != nil {
+				br.Msg = "时间冲突检测失败!"
+				br.ErrMsg = "时间冲突检测失败-CheckCalendar!Err:" + err.Error()
+				return
+			}
+			if calendarCount > 0 {
+				checkIsAdd = append(checkIsAdd, v.AdminName)
+			}
+		}
+	}
 
-	//校验活动时间冲突
-	//{
-	//	calendarCount, err := roadshowService.CheckCalendar(startDateTime, endDateTime, "1,2", v.ResearcherId, 0)
-	//	if err != nil {
-	//		br.Msg = "时间冲突检测失败!"
-	//		br.ErrMsg = "时间冲突检测失败-CheckCalendar!Err:" + err.Error()
-	//		return
-	//	}
-	//	if calendarCount > 0 {
-	//		checkIsAdd = append(checkIsAdd, v.ResearcherName)
-	//	}
-	//}
-	//}
-
-	//if len(checkIsAdd) > 0 {
-	//	br.Msg = strings.Join(checkIsAdd, ",") + " 时间已被占用!"
-	//	br.ErrMsg = "时间冲突检测失败-CheckMattersCount!"
-	//	br.IsSendEmail = false
-	//	return
-	//}
+	if len(checkIsAdd) > 0 {
+		br.Msg = strings.Join(checkIsAdd, ",") + " 时间已被占用!"
+		br.ErrMsg = "时间冲突检测失败-CheckMattersCount!"
+		br.IsSendEmail = false
+		return
+	}
 
 	rsActivity := new(roadshow.RsActivity)
 	rsActivity.SysUserId = sysUser.AdminId
@@ -177,7 +185,7 @@ func (this *ActivityController) Add() {
 		br.ErrMsg = "保存日历活动信息失败!Err:" + err.Error()
 		return
 	}
-	sellerList, err := system.GetSysAdminByIds(req.SellerId)
+	openIdList := make([]*system.OpenIdList, 0)
 	//if researcherId != 99 {
 	for _, v := range sellerList {
 		researcher := new(roadshow.RsActivitySeller)
@@ -199,7 +207,26 @@ func (this *ActivityController) Add() {
 			br.ErrMsg = "保存日历活动-销售路演信息失败!Err:" + err.Error()
 			return
 		}
+
+		if v.OpenId != "" {
+			openIdObj := &system.OpenIdList{
+				OpenId:  v.OpenId,
+				AdminId: v.AdminId,
+			}
+			openIdList = append(openIdList, openIdObj)
+		}
+	}
+
+	sysAdmin, _ := system.GetSysAdminById(sysUser.AdminId)
+	if sysAdmin != nil && sysAdmin.OpenId != "" {
+		openIdObj := &system.OpenIdList{
+			OpenId:  sysAdmin.OpenId,
+			AdminId: sysAdmin.AdminId,
+		}
+		openIdList = append(openIdList, openIdObj)
 	}
+	go services.SendWxMsgWithRoadshowSellerActivity(req.CompanyName, "参会", "已添加", time.Now().Format(utils.FormatDateTime), openIdList)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "保存成功"
@@ -335,6 +362,29 @@ func (this *ActivityController) Delete() {
 		br.ErrMsg = "删除失败,DeleteRsActivitySeller,Err:" + err.Error()
 		return
 	}
+
+	//获取对应的多个销售信息
+	listSeller, err := roadshow.GetRsActivitySellerListByActivityIds([]int{rsActivityId})
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,GetRsActivitySellerList,Err:" + err.Error()
+		return
+	}
+	for range listSeller {
+
+	}
+
+	openIdList := make([]*system.OpenIdList, 0)
+
+	sysAdmin, _ := system.GetSysAdminById(sysUser.AdminId)
+	if sysAdmin != nil && sysAdmin.OpenId != "" {
+		openIdObj := &system.OpenIdList{
+			OpenId:  sysAdmin.OpenId,
+			AdminId: sysAdmin.AdminId,
+		}
+		openIdList = append(openIdList, openIdObj)
+	}
+	go services.SendWxMsgWithRoadshowSellerActivity(detail.CompanyName, "参会", "已添加", time.Now().Format(utils.FormatDateTime), openIdList)
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "删除成功"

+ 12 - 0
models/roadshow/activity.go

@@ -104,6 +104,7 @@ type RsActivitySellerResp struct {
 	Theme              string `description:"会议主题"`
 	CreateTime         string `description:"创建时间"`
 	SysUserRealName    string `description:"创建人名称"`
+	RoadshowType       string `description:"路演形式"`
 }
 
 type RsActivitySellerListResp struct {
@@ -203,3 +204,14 @@ func GetRsActivityByRsActivityId(rsActivityId int) (item *RsActivity, err error)
 	err = o.Raw(sql, rsActivityId).QueryRow(&item)
 	return
 }
+
+func CheckCalendarActivitySellerrCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM  rs_activity_seller AS a
+		WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}

+ 13 - 0
models/roadshow/calendar.go

@@ -687,6 +687,19 @@ func CheckCalendarResearcherCount(condition string, pars []interface{}) (count i
 	err = o.Raw(sql, pars).QueryRow(&count)
 	return
 }
+
+func CheckCalendarSellerCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM  rs_calendar_researcher AS a
+            INNER JOIN rs_calendar as  b  ON a.rs_calendar_id = b.rs_calendar_id             
+		WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
 func GetResearcherFromAdmin(condition string, pars []interface{}) (lists []*system.Admin, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM admin WHERE 1=1 `

+ 36 - 1
services/roadshow/calendar_check.go

@@ -1,6 +1,8 @@
 package roadshow
 
-import "hongze/hz_crm_api/models/roadshow"
+import (
+	"hongze/hz_crm_api/models/roadshow"
+)
 
 func CheckMatters(startDateTime, endDateTime string, researcherId, rsMattersId int) (matterCount int, err error) {
 	var matterCondition string
@@ -81,3 +83,36 @@ func CheckCalendar(startDateTime, endDateTime, status string, researcherId, rsCa
 	}
 	return
 }
+
+func CheckActivity(startDateTime, endDateTime, status string, sellerId int) (calendarCount int, err error) {
+	var activityCondition string
+	var activityPars []interface{}
+
+	activityCondition += " AND seller_id = ? "
+	activityPars = append(activityPars, sellerId)
+
+	activityCondition += " AND status IN (" + status + ") "
+
+	activityCondition += ` AND (((? >=DATE_FORMAT(CONCAT(start_date," ",start_time),'%Y-%m-%d %H:%i:%S') AND ? <= DATE_FORMAT(CONCAT(end_date," ",end_time),'%Y-%m-%d %H:%i:%S')) OR (? >= DATE_FORMAT(CONCAT(start_date," ",start_time),'%Y-%m-%d %H:%i:%S') AND ? <= DATE_FORMAT(CONCAT(end_date," ",end_time),'%Y-%m-%d %H:%i:%S') )))`
+	activityPars = append(activityPars, startDateTime)
+	activityPars = append(activityPars, startDateTime)
+	activityPars = append(activityPars, endDateTime)
+	activityPars = append(activityPars, endDateTime)
+	calendarCount, err = roadshow.CheckCalendarActivitySellerrCount(activityCondition, activityPars)
+	if calendarCount <= 0 {
+		var researcherCondition string
+		var researcherMatterPars []interface{}
+
+		researcherCondition += " AND b.sys_user_id = ? "
+		researcherMatterPars = append(researcherMatterPars, sellerId)
+
+		researcherCondition += " AND a.status IN (" + status + ") "
+
+		researcherCondition += ` AND ? <=DATE_FORMAT(CONCAT(a.start_date," ",a.start_time),'%Y-%m-%d %H:%i:%S')
+								 AND ? >= DATE_FORMAT(CONCAT(a.end_date," ",a.end_time),'%Y-%m-%d %H:%i:%S') `
+		researcherMatterPars = append(researcherMatterPars, startDateTime)
+		researcherMatterPars = append(researcherMatterPars, endDateTime)
+		calendarCount, err = roadshow.CheckCalendarSellerCount(researcherCondition, researcherMatterPars)
+	}
+	return
+}

+ 36 - 0
services/wechat_send_msg.go

@@ -1884,3 +1884,39 @@ func SendWxMsgWithRaiWangYang(keyword1, keyword2, keyword3, keyword4 string, ope
 	err = SendTemplateMsg(sendInfo)
 	return
 }
+
+// SendWxMsgWithRaiWangYang 客户研选行业转正时(王芳审批通过),模板消息提醒汪洋
+func SendWxMsgWithRoadshowSellerActivity(keyword1, keyword2, keyword3, keyword4 string, openIdList []*system.OpenIdList) (err error) {
+	var msg string
+	defer func() {
+		if err != nil {
+			fmt.Println("err:", err)
+			go alarm_msg.SendAlarmMsg("客户研选行业转正时(王芳审批通过),模板消息提醒汪洋,Err:"+err.Error()+";msg:"+msg, 3)
+		}
+		if msg != "" {
+			utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
+		}
+	}()
+	openIdArr := make([]string, len(openIdList))
+	for i, v := range openIdList {
+		openIdArr[i] = v.OpenId
+	}
+	var wxAppPath string
+	sendInfo := new(SendWxTemplate)
+	sendInfo.WxAppId = utils.AdminWxAppId
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.TemplateId = utils.WxMsgTemplateIdWithRoadshowPending
+	if wxAppPath != "" && utils.RunMode == "release" {
+		sendInfo.RedirectUrl = wxAppPath
+	}
+	sendInfo.RedirectTarget = 2
+	sendInfo.Resource = wxAppPath
+	sendInfo.SendType = utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT
+	sendInfo.OpenIdArr = openIdArr
+
+	err = SendTemplateMsg(sendInfo)
+	return
+}