Browse Source

发送上海策略品台同步结果名单的邮件附件

xingzai 2 years ago
parent
commit
3c63da802c
4 changed files with 117 additions and 1 deletions
  1. 4 0
      models/send_company_user.go
  2. 8 0
      models/shanghai_company_log.go
  3. 101 0
      services/send_company_user.go
  4. 4 1
      services/task.go

+ 4 - 0
models/send_company_user.go

@@ -46,6 +46,10 @@ type CompanyJsonList struct {
 	SyncData *[]CompanyJson `json:"sync_data"`
 }
 
+type CompanyUnJsonList struct {
+	SyncData []CompanyJson `json:"sync_data"`
+}
+
 //获取公司
 func GetSendCompanyList(condition string) (items []*CompanyJson, err error) {
 	o := orm.NewOrm()

+ 8 - 0
models/shanghai_company_log.go

@@ -34,3 +34,11 @@ func AddCygxShanghaiErrLog(item *CygxShanghaiErrLog) (lastId int64, err error) {
 	lastId, err = o.Insert(item)
 	return
 }
+
+//列表
+func GetCygxShanghaiCompanyLog() (items []*CygxShanghaiCompanyLog, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM cygx_shanghai_company_log WHERE create_time > date_format(now(),'%Y-%m-%d') AND url LIKE '%Customer/batchSyncFiccCustomer%'`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 101 - 0
services/send_company_user.go

@@ -4,10 +4,13 @@ import (
 	"context"
 	"encoding/json"
 	"fmt"
+	"github.com/tealeg/xlsx"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
 	"io/ioutil"
 	"net/http"
+	"os"
+	"path/filepath"
 	"strconv"
 	"strings"
 	"time"
@@ -289,3 +292,101 @@ func DotongbuShangHai(cont context.Context) (err error) {
 	}
 	return
 }
+
+func DotongbuShangHaiSendEmail(cont context.Context) (err error) {
+	var msg string
+	defer func() {
+		if err != nil {
+			go utils.SendEmail("发送邮件同步策略平台获取数据信息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToExpert)
+		}
+	}()
+	list, err := models.GetCygxShanghaiCompanyLog()
+	if err != nil {
+		msg = "GetCygxShanghaiCompanyLog Err:" + err.Error()
+		return err
+	}
+	mapErrMsg := make(map[string]string)
+	for _, v := range list {
+		data := new(GetShangHaiTokenResultApiComPany)
+		err := json.Unmarshal([]byte(v.Result), &data)
+		if err != nil {
+			msg = "GetShangHaiTokenResultApiComPany Err:" + err.Error()
+			return err
+		}
+		if len(data.Data.FailInfo) > 0 {
+			for _, vCompany := range data.Data.FailInfo {
+				mapErrMsg[vCompany.ErrVal] = vCompany.ErrMsg
+			}
+		}
+	}
+	//创建excel
+	dir, err := os.Executable()
+	exPath := filepath.Dir(dir)
+	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
+	xlsxFile := xlsx.NewFile()
+	if err != nil {
+		return
+	}
+	style := xlsx.NewStyle()
+	alignment := xlsx.Alignment{
+		Horizontal: "center",
+		Vertical:   "center",
+		WrapText:   true,
+	}
+	style.Alignment = alignment
+	style.ApplyAlignment = true
+	sheet, err := xlsxFile.AddSheet("上海策略品台同步名单")
+	if err != nil {
+		return
+	}
+	//设置宽度
+	_ = sheet.SetColWidth(0, 1, 30)
+	_ = sheet.SetColWidth(2, 2, 10)
+	_ = sheet.SetColWidth(3, 3, 30)
+
+	//标头
+	rowTitle := sheet.AddRow()
+	cellA := rowTitle.AddCell()
+	cellA.Value = "客户名称"
+	cellB := rowTitle.AddCell()
+	cellB.Value = "社会信用码"
+	cellC := rowTitle.AddCell()
+	cellC.Value = "客户类型"
+	cellD := rowTitle.AddCell()
+	cellD.Value = "错误消息"
+	for _, v := range list {
+		data := new(models.CompanyUnJsonList)
+		err := json.Unmarshal([]byte(v.Body), &data)
+		if err != nil {
+			msg = "CompanyUnJsonList Err:" + err.Error()
+			return err
+		}
+		if len(data.SyncData) > 0 {
+			for _, item := range data.SyncData {
+				row := sheet.AddRow()
+				cellA := row.AddCell()
+				cellA.Value = item.CompanyName
+				cellB := row.AddCell()
+				cellB.Value = item.CreditCode
+				cellC := row.AddCell()
+				cellC.Value = item.Fe
+				if mapErrMsg[item.CreditCode] != "" {
+					cellD := row.AddCell()
+					cellD.Value = mapErrMsg[item.CreditCode]
+				}
+			}
+		}
+	}
+	title := time.Now().Format(utils.FormatDate) + "上海策略品台同步名单"
+	content := time.Now().Format(utils.FormatDate) + "上海策略品台同步名单"
+	fileName := downLoadnFilePath
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		return
+	}
+	if len(list) > 0 {
+		utils.SendEmailByHongze(title, content, "cxzhang@hzinsights.com;tshen@hzinsights.com", fileName, title+".xlsx")
+	}
+	os.Remove(downLoadnFilePath)
+	return
+}

+ 4 - 1
services/task.go

@@ -36,6 +36,9 @@ func Task() {
 
 		dotongbuShangHai := task.NewTask("dotongbuShangHai", "0 30 3 * * *", DotongbuShangHai) //把信息同步到上海策略品台
 		task.AddTask("同步用户到上海", dotongbuShangHai)
+
+		dotongbuShangHaiSendEmail := task.NewTask("dotongbuShangHaiSendEmail", "0 00 4 * * *", DotongbuShangHaiSendEmail) //发送上海策略品台同步结果名单的邮件附件
+		task.AddTask("发送上海策略品台同步结果名单的邮件附件", dotongbuShangHaiSendEmail)
 	}
 
 	if utils.IsTask {
@@ -65,7 +68,7 @@ func Task() {
 	//GetAddpArticle() //同步日度点评数据
 	//SendEmailAllUserWithRAI()     //发送当前所有权益用户到沈大爷的邮箱
 	//SendEmailAllUserWithCompany() //发送这些公司下的用户到沈大爷的邮箱
-	task.StartTask()
+	//task.StartTask()
 	//StatisticalReport()//导出报表
 	fmt.Println("end")
 }