浏览代码

Merge branch 'wechat/template'

# Conflicts:
#	services/wx_template_msg.go
Roc 1 年之前
父节点
当前提交
294ca3f2f9
共有 5 个文件被更改,包括 153 次插入20 次删除
  1. 1 1
      models/company_product.go
  2. 30 0
      models/company_remind_record.go
  3. 1 0
      models/db.go
  4. 115 18
      services/company_product.go
  5. 6 1
      services/wx_template_msg.go

+ 1 - 1
models/company_product.go

@@ -246,7 +246,7 @@ func GetSellersOpenId() (items []*Sellers, err error) {
 
 func GetRemindCompany(sellerId int, endDate string) (items []*CompanyProduct, err error) {
 	o := orm.NewOrm()
-	sql := ` SELECT b.end_date,b.contract_end_date,a.company_name,b.status,b.seller_id,b.seller_name FROM
+	sql := ` SELECT b.end_date,b.contract_end_date,a.company_id,a.company_name,b.status,b.seller_id,b.seller_name FROM
 	company a
 	INNER JOIN company_product AS b ON a.company_id = b.company_id 
 WHERE

+ 30 - 0
models/company_remind_record.go

@@ -0,0 +1,30 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// CompanyRemindRecord 客户提醒记录
+type CompanyRemindRecord struct {
+	CompanyRemindRecordId int `orm:"column(company_remind_record_id);pk"`
+	Type             int `description:"过期类型,1:1天,2:7天,3:15天;4:30天"`
+	SellerId             int `description:"销售id"`
+	SellerName            string `description:"销售名称"`
+	CompanyId             int `description:"客户id"`
+	CompanyName            string `description:"客户名称"`
+	Status                string `description:"客户状态"`
+	EndDate               string `description:"到期日期"`
+	UniqueCode            string `description:"唯一code"`
+	CreateTime            time.Time
+}
+
+// AddMultiCompanyRemindRecord 批量添加客户提醒记录
+func AddMultiCompanyRemindRecord(list []*CompanyRemindRecord) (err error) {
+	if len(list) <= 0 {
+		return
+	}
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(len(list), list)
+	return
+}

+ 1 - 0
models/db.go

@@ -109,6 +109,7 @@ func initCompany() {
 		new(CompanyEndDate),
 		new(CompanyProductUpdateLog), //客户产品状态变更表
 		new(CompanyViewStatistics),
+		new(CompanyRemindRecord),	// 客户提醒记录
 	)
 }
 

+ 115 - 18
services/company_product.go

@@ -10,7 +10,7 @@ import (
 	"time"
 )
 
-//客户自动冻结->试用两个月结束后,进入冻结
+// 客户自动冻结->试用两个月结束后,进入冻结
 func CompanyFreeze(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
@@ -56,7 +56,7 @@ func CompanyFreeze(cont context.Context) (err error) {
 	return
 }
 
-//客户自动流失->冻结超3个月未处理
+// 客户自动流失->冻结超3个月未处理
 func CompanyLoss(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
@@ -96,7 +96,7 @@ func CompanyLoss(cont context.Context) (err error) {
 	return
 }
 
-//正式客户自动试用->合同到期未续约转试用
+// 正式客户自动试用->合同到期未续约转试用
 func CompanyTryOut(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
@@ -168,7 +168,7 @@ func AddCompanyOperationRecord(companyId, sysUserId, productId, approveAdminId i
 	return
 }
 
-//客户老数据同步
+// 客户老数据同步
 func CompanyOldDataSync() {
 	companyItems, err := models.GetCompanyOldDataSync()
 	if err != nil {
@@ -250,7 +250,7 @@ func CompanyOldDataSync() {
 	}
 }
 
-//正式/试用客户--到期提醒
+// CompanyRemind 正式/试用客户--到期提醒
 func CompanyRemind(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
@@ -273,7 +273,7 @@ func CompanyRemind(cont context.Context) (err error) {
 	return
 }
 
-//30天后到期客户
+// CompanyRemind30Day 30天后到期客户
 func CompanyRemind30Day(seller *models.Sellers) {
 	var err error
 	defer func() {
@@ -281,9 +281,13 @@ func CompanyRemind30Day(seller *models.Sellers) {
 			go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "到期提醒失败:CompanyRemind;Err"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-	remindEndDate := time.Now().AddDate(0, 0, 30).Format(utils.FormatDate)
+
+	companyRemindRecordList := make([]*models.CompanyRemindRecord, 0)
+	remindType := 4
+	uniqueCode := fmt.Sprint(seller.AdminId, time.Now().Format(utils.FormatDateUnSpace), remindType, utils.GetRandString(5))
 
 	//remindEndDate := "2020-12-31" //time.Now().AddDate(0, 0, 30).Format(utils.FormatDate)
+	remindEndDate := time.Now().AddDate(0, 0, 30).Format(utils.FormatDate)
 	companyItems, err := models.GetRemindCompany(seller.AdminId, remindEndDate)
 	if err != nil {
 		return
@@ -300,6 +304,20 @@ func CompanyRemind30Day(seller *models.Sellers) {
 		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
+
+		// 数据入库
+		companyRemindRecordList = append(companyRemindRecordList, &models.CompanyRemindRecord{
+			//CompanyRemindRecordId: 0,
+			Type:        remindType,
+			SellerId:    seller.AdminId,
+			SellerName:  seller.RealName,
+			CompanyId:   v.CompanyId,
+			CompanyName: v.CompanyName,
+			Status:      v.Status,
+			EndDate:     endTime,
+			UniqueCode:  uniqueCode,
+			CreateTime:  time.Now(),
+		})
 	}
 	emailContents += "</table></br>"
 
@@ -310,7 +328,8 @@ func CompanyRemind30Day(seller *models.Sellers) {
 
 		if seller.OpenId != "" {
 			first := "您有【" + strconv.Itoa(len(companyItems)) + "】 客户将于30天后到期,请注意查看"
-			keyword1 := "到期前30天提醒"
+			//keyword1 := "到期前30天提醒"
+			keyword1 := fmt.Sprintf(`【%d】客户到期前30天提醒,点击查看`, len(companyItems))
 			keyword2 := remindEndDate
 			remark := msgContent
 
@@ -318,12 +337,17 @@ func CompanyRemind30Day(seller *models.Sellers) {
 			openIdItem := new(models.OpenIdList)
 			openIdItem.OpenId = seller.OpenId
 			openIdList = append(openIdList, openIdItem)
-			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, openIdList)
+			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, uniqueCode, openIdList)
 		}
 	}
+
+	// 数据入库
+	if len(companyRemindRecordList) > 0 {
+		models.AddMultiCompanyRemindRecord(companyRemindRecordList)
+	}
 }
 
-//15天后到期客户
+// CompanyRemind15Day 15天后到期客户
 func CompanyRemind15Day(seller *models.Sellers) {
 	var err error
 	defer func() {
@@ -331,6 +355,10 @@ func CompanyRemind15Day(seller *models.Sellers) {
 			go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "到期提醒失败:CompanyRemind;Err"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
+	companyRemindRecordList := make([]*models.CompanyRemindRecord, 0)
+	remindType := 3
+	uniqueCode := fmt.Sprint(seller.AdminId, time.Now().Format(utils.FormatDateUnSpace), remindType, utils.GetRandString(5))
+
 	remindEndDate := time.Now().AddDate(0, 0, 15).Format(utils.FormatDate)
 	companyItems, err := models.GetRemindCompany(seller.AdminId, remindEndDate)
 	if err != nil {
@@ -348,6 +376,20 @@ func CompanyRemind15Day(seller *models.Sellers) {
 		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
+
+		// 数据入库
+		companyRemindRecordList = append(companyRemindRecordList, &models.CompanyRemindRecord{
+			//CompanyRemindRecordId: 0,
+			Type:        remindType,
+			SellerId:    seller.AdminId,
+			SellerName:  seller.RealName,
+			CompanyId:   v.CompanyId,
+			CompanyName: v.CompanyName,
+			Status:      v.Status,
+			EndDate:     endTime,
+			UniqueCode:  uniqueCode,
+			CreateTime:  time.Now(),
+		})
 	}
 	emailContents += "</table></br>"
 
@@ -358,7 +400,8 @@ func CompanyRemind15Day(seller *models.Sellers) {
 
 		if seller.OpenId != "" {
 			first := "您有【" + strconv.Itoa(len(companyItems)) + "】 客户将于15天后到期,请注意查看"
-			keyword1 := "到期前15天提醒"
+			//keyword1 := "到期前15天提醒"
+			keyword1 := fmt.Sprintf(`【%d】客户到期前15天提醒,点击查看`, len(companyItems))
 			keyword2 := remindEndDate
 			remark := msgContent
 
@@ -366,12 +409,17 @@ func CompanyRemind15Day(seller *models.Sellers) {
 			openIdItem := new(models.OpenIdList)
 			openIdItem.OpenId = seller.OpenId
 			openIdList = append(openIdList, openIdItem)
-			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, openIdList)
+			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, uniqueCode, openIdList)
 		}
 	}
+
+	// 数据入库
+	if len(companyRemindRecordList) > 0 {
+		models.AddMultiCompanyRemindRecord(companyRemindRecordList)
+	}
 }
 
-//7天后到期客户名称
+// CompanyRemind7Day 7天后到期客户名称
 func CompanyRemind7Day(seller *models.Sellers) {
 	var err error
 	defer func() {
@@ -379,6 +427,10 @@ func CompanyRemind7Day(seller *models.Sellers) {
 			go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "到期提醒失败:CompanyRemind;Err"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
+	companyRemindRecordList := make([]*models.CompanyRemindRecord, 0)
+	remindType := 2
+	uniqueCode := fmt.Sprint(seller.AdminId, time.Now().Format(utils.FormatDateUnSpace), remindType, utils.GetRandString(5))
+
 	remindEndDate := time.Now().AddDate(0, 0, 7).Format(utils.FormatDate)
 	companyItems, err := models.GetRemindCompany(seller.AdminId, remindEndDate)
 	if err != nil {
@@ -396,6 +448,20 @@ func CompanyRemind7Day(seller *models.Sellers) {
 		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
+
+		// 数据入库
+		companyRemindRecordList = append(companyRemindRecordList, &models.CompanyRemindRecord{
+			//CompanyRemindRecordId: 0,
+			Type:        remindType,
+			SellerId:    seller.AdminId,
+			SellerName:  seller.RealName,
+			CompanyId:   v.CompanyId,
+			CompanyName: v.CompanyName,
+			Status:      v.Status,
+			EndDate:     endTime,
+			UniqueCode:  uniqueCode,
+			CreateTime:  time.Now(),
+		})
 	}
 	emailContents += "</table></br>"
 
@@ -406,7 +472,8 @@ func CompanyRemind7Day(seller *models.Sellers) {
 
 		if seller.OpenId != "" {
 			first := "您有【" + strconv.Itoa(len(companyItems)) + "】 客户将于7天后到期,请注意查看"
-			keyword1 := "到期前7天提醒"
+			//keyword1 := "到期前7天提醒"
+			keyword1 := fmt.Sprintf(`【%d】客户到期前7天提醒,点击查看`, len(companyItems))
 			keyword2 := remindEndDate
 			remark := msgContent
 
@@ -414,12 +481,17 @@ func CompanyRemind7Day(seller *models.Sellers) {
 			openIdItem := new(models.OpenIdList)
 			openIdItem.OpenId = seller.OpenId
 			openIdList = append(openIdList, openIdItem)
-			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, openIdList)
+			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, uniqueCode, openIdList)
 		}
 	}
+
+	// 数据入库
+	if len(companyRemindRecordList) > 0 {
+		models.AddMultiCompanyRemindRecord(companyRemindRecordList)
+	}
 }
 
-//到期当天提醒
+// CompanyRemind1Day到期当天提醒
 func CompanyRemind1Day(seller *models.Sellers) {
 	var err error
 	defer func() {
@@ -427,6 +499,10 @@ func CompanyRemind1Day(seller *models.Sellers) {
 			go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "到期提醒失败:CompanyRemind;Err"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
+	companyRemindRecordList := make([]*models.CompanyRemindRecord, 0)
+	remindType := 1
+	uniqueCode := fmt.Sprint(seller.AdminId, time.Now().Format(utils.FormatDateUnSpace), remindType, utils.GetRandString(5))
+
 	remindEndDate := time.Now().AddDate(0, 0, 0).Format(utils.FormatDate)
 	companyItems, err := models.GetRemindCompany(seller.AdminId, remindEndDate)
 	if err != nil {
@@ -444,6 +520,20 @@ func CompanyRemind1Day(seller *models.Sellers) {
 		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
+
+		// 数据入库
+		companyRemindRecordList = append(companyRemindRecordList, &models.CompanyRemindRecord{
+			//CompanyRemindRecordId: 0,
+			Type:        remindType,
+			SellerId:    seller.AdminId,
+			SellerName:  seller.RealName,
+			CompanyId:   v.CompanyId,
+			CompanyName: v.CompanyName,
+			Status:      v.Status,
+			EndDate:     endTime,
+			UniqueCode:  uniqueCode,
+			CreateTime:  time.Now(),
+		})
 	}
 	emailContents += "</table></br>"
 
@@ -454,7 +544,8 @@ func CompanyRemind1Day(seller *models.Sellers) {
 
 		if seller.OpenId != "" {
 			first := "您有【" + strconv.Itoa(len(companyItems)) + "】 客户将于1天后到期,请注意查看"
-			keyword1 := "到期前1天提醒"
+			//keyword1 := "到期前1天提醒"
+			keyword1 := fmt.Sprintf(`【%d】客户到期前1天提醒,点击查看`, len(companyItems))
 			keyword2 := remindEndDate
 			remark := msgContent
 
@@ -462,9 +553,15 @@ func CompanyRemind1Day(seller *models.Sellers) {
 			openIdItem := new(models.OpenIdList)
 			openIdItem.OpenId = seller.OpenId
 			openIdList = append(openIdList, openIdItem)
-			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, openIdList)
+
+			SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark, uniqueCode, openIdList)
 		}
 	}
+
+	// 数据入库
+	if len(companyRemindRecordList) > 0 {
+		models.AddMultiCompanyRemindRecord(companyRemindRecordList)
+	}
 }
 
 // StaticCompanyTryDay 定时任务每天更新客户试用总天数

+ 6 - 1
services/wx_template_msg.go

@@ -138,7 +138,12 @@ func SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark string, openId
 	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
 	sendMap["data"] = sendData
 	WxSendTemplateMsg(sendUrl, sendMap, openIdList)*/
-	wxAppPath := ""
+	var wxAppPath string
+	if utils.RunMode == `debug` {
+		wxAppPath = `http://msgsendtest.hzinsights.com/productExpirationHint.html?code=` + code
+	} else {
+		wxAppPath = `https://msgsend.hzinsights.com//productExpirationHint.html?code=` + code
+	}
 	openIdArr := make([]string, len(openIdList))
 	for i, v := range openIdList {
 		openIdArr[i] = v.OpenId