Browse Source

Merge branch 'master' into crm/13.3

hsun 1 year ago
parent
commit
11c209ae74

+ 31 - 5
controllers/business_trip/business_apply.go

@@ -699,9 +699,16 @@ func (this *BusinessTrip) ApplyDetail() {
 		this.FailWithMessage("获取数据失败", "获取数据失败:"+err.Error())
 		return
 	}
+
 	if item.ApproveId == sysUserId {
 		item.IsApprove = true
 	}
+	// 审批已通过且在出差日期之前时, 审批人/申请人均可关闭
+	nowDate, _ := time.ParseInLocation(utils.FormatDate, time.Now().Format(utils.FormatDate), time.Local)
+	arriveDate, _ := time.ParseInLocation(utils.FormatDate, item.ArriveDate, time.Local)
+	if item.Status == "已通过" && arriveDate.After(nowDate) && (sysUserId == item.ApproveId || sysUserId == item.ApplyAdminId) {
+		item.IsClose = true
+	}
 	this.OkDetailed(item, "获取成功")
 }
 
@@ -734,9 +741,18 @@ func (this *BusinessTrip) Close() {
 		this.FailWithMessage("获取数据失败!", "获取数据失败!GetBusinessApplyById:"+err.Error())
 		return
 	}
+	if sysUser.AdminId != businessApplyItem.ApplyAdminId && sysUser.AdminId != businessApplyItem.ApproveId {
+		this.FailWithMessage("无权操作", "无权操作")
+		return
+	}
+	// 判断是申请人还是审批人操作的关闭
+	isApply := false
+	if sysUser.AdminId == businessApplyItem.ApplyAdminId {
+		isApply = true
+	}
 
-	fmt.Println(req.BusinessApplyId)
-	fmt.Println(req.CloseReason)
+	//fmt.Println(req.BusinessApplyId)
+	//fmt.Println(req.CloseReason)
 
 	whereParams := make(map[string]interface{})
 	updateParams := make(map[string]interface{})
@@ -767,23 +783,33 @@ func (this *BusinessTrip) Close() {
 		return
 	}
 
+	// 审批人关闭时, 发送消息给申请人
+	// 若为申请人自己关闭, 则消息发送给审批人
+	receiveUserId := businessApplyItem.ApplyAdminId
+	if isApply {
+		receiveUserId = businessApplyItem.ApproveId
+	}
 	{
 		//系统消息
 		sourceType := 10
 		content := businessApplyItem.ApplyRealName + " " + businessApplyItem.Province + businessApplyItem.City + businessApplyItem.Reason + "出差申请已关闭"
-		go services.AddCompanyApprovalMessage(sysUserId, businessApplyItem.ApplyAdminId, 0, businessApplyItem.BusinessApplyId, 1, sourceType, 1, "", content, content, "", "")
+		go services.AddCompanyApprovalMessage(sysUserId, receiveUserId, 0, businessApplyItem.BusinessApplyId, 1, sourceType, 1, "", content, content, "", "")
 	}
 
 	//模板消息
 	{
 		status := "已关闭"
-		applyItem, _ := admin.GetAdminById(businessApplyItem.ApplyAdminId)
+		receiver, _ := admin.GetAdminById(receiveUserId)
+		//applyItem, _ := admin.GetAdminById(businessApplyItem.ApplyAdminId)
 		wxAppPath := "pages-approve/businessTrip/detail?id=" + strconv.Itoa(req.BusinessApplyId)
 		first := "您的出差申请已被关闭"
+		if isApply {
+			first = fmt.Sprintf("%s的出差申请已关闭", businessApplyItem.ApplyRealName)
+		}
 		keyword1 := businessApplyItem.Reason + "出差申请" + status
 		keyword2 := status
 		var remark string
-		go services.SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppPath, applyItem.Mobile)
+		go services.SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppPath, receiver.Mobile)
 	}
 	this.OkWithMessage("关闭成功")
 }

+ 1 - 0
models/tables/business_trip/business_apply.go

@@ -74,6 +74,7 @@ type BusinessApplyView struct {
 	IsApprove       bool   `description:"是否审批人,true:是,false:否"`
 	CloseReason     string `description:"关闭理由"`
 	CloseTime       string `description:"关闭时间"`
+	IsClose         bool   `description:"true,可关闭,false,不可关闭"`
 }
 
 func GetBusinessApplyListCount(condition string, pars []interface{}) (count int, err error) {

+ 21 - 0
models/tables/cygx_config/config.go

@@ -0,0 +1,21 @@
+package cygx_config
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxConfig struct {
+	ConfigId    int    `json:"-" orm:"column(config_id);pk"`
+	ConfigCode  string `json:"-"`
+	ConfigValue string
+	Remark      string    `json:"-"`
+	CreateTime  time.Time `json:"-"`
+}
+
+
+func GetConfigByCode(configCode string) (item *CygxConfig, err error) {
+	sql := `SELECT * FROM cygx_config WHERE config_code=? `
+	err = orm.NewOrm().Raw(sql, configCode).QueryRow(&item)
+	return
+}

+ 3 - 0
services/company_approval/company_approval.go

@@ -410,6 +410,9 @@ func Approved(approvalRecord *contract_approval_record.ContractApprovalRecord, o
 
 				//权益销售客户申请转正后,消息群发给所有销售
 				services.AddCompanyApprovalMessageRai(recordInfo.CompanyId, recordInfo.CompanyContractId, recordInfo.ApplyRealName, companyInfo.CompanyName)
+
+				//客户研选行业转正时(王芳审批通过),模板消息提醒汪洋
+				services.AddCompanyApprovalMessageWangYang(recordInfo.CompanyId, recordInfo.CompanyContractId, recordInfo.ApplyRealName, companyInfo.CompanyName)
 			}
 		}()
 	} else {

+ 36 - 0
services/company_approval_message.go

@@ -7,10 +7,12 @@ import (
 	"hongze/hongze_mobile_admin/models/tables/company_approval_message"
 	"hongze/hongze_mobile_admin/models/tables/company_contract"
 	"hongze/hongze_mobile_admin/models/tables/company_product"
+	"hongze/hongze_mobile_admin/models/tables/cygx_config"
 	"hongze/hongze_mobile_admin/services/alarm_msg"
 	"hongze/hongze_mobile_admin/utils"
 	"strings"
 	"time"
+	"errors"
 )
 
 //消息来源类型,1:客户,2:合同,3:用印,4:指标替换,5:问答社区,6:问答评论,7:视频评论,8:线上路演评论
@@ -176,4 +178,38 @@ func AddCompanyApprovalMessageRai(companyId , companyContractId int, applyRealNa
 	}
 	go SendWxMsgWithRaiSell(first, keyword1, keyword2, keyword3, keyword4, openIdList)
 	return
+}
+
+// AddCompanyApprovalMessageWangYang 客户研选行业转正时(王芳审批通过),模板消息提醒汪洋
+func AddCompanyApprovalMessageWangYang(companyId , companyContractId int, applyRealName, companyName string) (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("客户研选行业转正时(王芳审批通过),模板消息提醒汪洋,Err:"+err.Error()+fmt.Sprint("companyId:",companyId,"companyContractId:",companyContractId,"applyRealName:",applyRealName,"companyName:",companyName), 3)
+		}
+	}()
+	//如果是研选的就推送给汪洋
+	count, e := company_contract.GetCompanyContractPermissionCheckByContractId(companyId, companyContractId, utils.CHART_PERMISSION_ID_YANXUAN)
+	if e != nil {
+		err = errors.New("GetCompanyContractPermissionCheckByContractId, Err: " + e.Error())
+		return
+	}
+	if count == 0 {
+		return
+	}
+	var  keyword1, keyword2, keyword3, keyword4 string
+	keyword1 = companyName  + "(" + applyRealName+")"
+	keyword2 = "买方研选转正"
+	var mobiles string
+	cnf, e := cygx_config.GetConfigByCode(utils.TPL_MSG_WANG_YANG)
+	if e != nil {
+		err = errors.New("GetConfigByCode, Err: " + e.Error())
+		return
+	}
+	mobiles = cnf.ConfigValue
+	openIdList, err := models.GetUserRecordListByMobile(4, mobiles)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+	go SendWxMsgWithRaiWangYang(keyword1, keyword2, keyword3, keyword4, openIdList)
+	return
 }

+ 30 - 0
services/wechat_send_msg.go

@@ -568,3 +568,33 @@ func SendWxMsgWithRaiSell(first, keyword1, keyword2, keyword3, keyword4 string,
 	err = SendTemplateMsg(sendInfo)
 	return
 }
+
+// SendWxMsgWithRaiWangYang 客户研选行业转正时(王芳审批通过),模板消息提醒汪洋
+func SendWxMsgWithRaiWangYang( keyword1, keyword2, keyword3, keyword4 string, openIdList []*models.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
+	}
+	sendInfo := new(SendWxTemplate)
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApply
+	sendInfo.RedirectUrl = ""
+	sendInfo.RedirectTarget = 3
+	sendInfo.SendType = utils.TEMPLATE_MSG_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	err = SendTemplateMsg(sendInfo)
+	return
+}

+ 3 - 0
utils/config.go

@@ -50,6 +50,7 @@ var (
 
 	//查研观向
 	WxMsgTemplateIdCompanyApprovalMessageRai string //权益销售签约成功通知查研观向小助手模版消息
+	WxMsgTemplateIdActivityChangeApply       string //查研观向活动变更通知-模板ID
 )
 
 var (
@@ -198,6 +199,7 @@ func wxConfig() {
 		//查研观向小助手原有的模板ID
 		{
 			WxMsgTemplateIdCompanyApprovalMessageRai = "JlGx2rKZKIsolvkQ1ZbGSBDNzIIJAaF1bbwcdLuJwQ8" //权益销售签约成功通知查研观向小助手模版消息-模板ID
+			WxMsgTemplateIdActivityChangeApply = "dYg6iHooRq74PyCXmw_Ns7qdJZmbtLoKS2p2FKeaXl0" //查研观向活动变更通知-模板ID
 		}
 
 		//内部员工公众号(弘则部门)
@@ -228,6 +230,7 @@ func wxConfig() {
 		//查研观向小助手原有的模板ID
 		{
 			WxMsgTemplateIdCompanyApprovalMessageRai = "RcV2uM5nFSiUtOHsq4SdYz2Fhk-OVfg5rutWz2IsSJQ" //权益销售签约成功通知查研观向小助手模版消息-模板ID
+			WxMsgTemplateIdActivityChangeApply = "CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM" //查研观向活动变更通知-模板ID
 		}
 
 		//内部员工公众号(弘则部门)

+ 5 - 4
utils/constants.go

@@ -164,8 +164,9 @@ const (
 	KE_JI_NAME                  string = "科技"
 	ZHI_ZAO_NAME                string = "智造"
 	ZHUAN_JIA_ID                int    = 29
-	CHART_PERMISSION_NAME_70W          = "70w大套餐" // 权益70w大套餐名称
-	CHART_PERMISSION_ID_70W            = 2001     // 权益70w大套餐表示的权限ID(自定义)
-	CHART_PERMISSION_NAME_45W          = "45w大套餐" // 权益45w大套餐名称
-	CHART_PERMISSION_ID_45W            = 2002     // 权益45w大套餐表示的权限ID(自定义)
+	CHART_PERMISSION_NAME_70W          = "70w大套餐"            // 权益70w大套餐名称
+	CHART_PERMISSION_ID_70W            = 2001                // 权益70w大套餐表示的权限ID(自定义)
+	CHART_PERMISSION_NAME_45W          = "45w大套餐"            // 权益45w大套餐名称
+	CHART_PERMISSION_ID_45W            = 2002                // 权益45w大套餐表示的权限ID(自定义)
+	TPL_MSG_WANG_YANG                  = "tpl_msg_wang_yang" //汪洋手机号地址参数
 )