1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package timedTask
- import (
- "context"
- "fmt"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/util/gconv"
- "jyOrderManager/internal/jyutil"
- "time"
- )
- // OrderProtocolNotice
- // 订单审核通过后7天后(支持配置),协议状态为签协议,且协议归档状态为“未归档”,则发送邮件提醒该笔订单的销售人员、所属及上级部门的管理员、销管,
- func OrderProtocolNotice() {
- type NoticeRow struct {
- EntUserId int `json:"salesperson_entUserId"` //销售人员
- SalerName string `json:"salerName"` //销售人员名字
- OrderCode string `json:"order_code"` //订单号
- CreateTime string `json:"create_time"` //审核通过时间
- ContractMoney string `json:"contract_money"` //合同金额
- CompanyName string `json:"company_name"` //公司名称
- PersonName string `json:"personName"` //联系人
- }
- var (
- ctx = context.Background()
- dayLimit = g.Cfg().MustGet(ctx, "protocolNotice.dayLimit", 7).Int()
- salerManagerId = g.Cfg().MustGet(ctx, "protocolNotice.salerManager").Int()
- dataStr = time.Now().AddDate(0, 0, -dayLimit).Format(time.DateOnly)
- mapping = map[int][]*NoticeRow{} //销售人员待通知列表
- leaderMapping = map[int][]*NoticeRow{} //领导及销管
- mailMapping = map[int]string{} //邮箱
- execSql = fmt.Sprintf("SELECT do.salesperson_entUserId,do.order_code,ar.create_time,c.contract_money,do.company_name,do.personName,do.create_person FROM jianyu.audit_records ar inner join jianyu.dataexport_order do on ar.order_code=do.order_code INNER JOIN jianyu.contract c on ar.order_code=c.order_code WHERE ar.operator_type =5 AND c.contract_archive_status=0 and c.contract_status=1 and do.salesperson_entUserId!='' AND ar.create_time > '%s 00:00:00'AND ar.create_time < '%s 23:59:59'", dataStr, dataStr)
- )
- res, err := g.DB().Query(ctx, execSql)
- if err != nil {
- g.Log().Error(ctx, err)
- }
- for _, m := range res.List() {
- var noticeRow NoticeRow
- if err := gconv.Struct(m, ¬iceRow); err != nil {
- g.Log().Errorf(ctx, "OrderProtocolNotice range Struct err:%v", err)
- continue
- }
- saler := jyutil.JyDepartmentManager.GetSalerByEntUserId(ctx, noticeRow.EntUserId)
- if saler == nil {
- continue
- }
- if saler.UserMail != "" {
- mailMapping[noticeRow.EntUserId] = saler.UserMail
- }
- noticeRow.SalerName = saler.Name
- mapping[noticeRow.EntUserId] = append(mapping[noticeRow.EntUserId], ¬iceRow)
- leaderMapping[-1] = append(leaderMapping[-1], ¬iceRow)
- for _, s := range jyutil.JyDepartmentManager.GetLeaderId(ctx, saler.DeptId) {
- leaderMapping[s.Id] = append(leaderMapping[s.Id], ¬iceRow)
- }
- }
- for sid, datas := range mapping {
- if mail := mailMapping[sid]; mail != "" {
- tableHtml := ""
- for i, data := range datas {
- tableHtml += fmt.Sprintf("<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
- i+1, data.SalerName, data.OrderCode, data.CompanyName, data.PersonName, data.ContractMoney, data.CreateTime)
- }
- jyutil.SentMail(ctx, "协议归档提醒", fmt.Sprintf("<p>%s</p><table border><tr><th>序号</th><th>销售人员</th><th>订单编号</th><th>公司名称</th><th>联系人姓名</th><th>合同金额合计</th><th>订单审核通过时间</th></tr>%s</table>",
- fmt.Sprintf("以下订单协议签订状态为签协议,已超过%d天仍未归 ,请及时将签订好的协议交由销管进行上传归档:", dayLimit), tableHtml), mail)
- }
- }
- for sid, datas := range leaderMapping {
- if sid == salerManagerId {
- continue
- }
- if sid == -1 {
- sid = salerManagerId
- if mailMapping[sid] == "" { //获取销管
- if t := jyutil.JyDepartmentManager.GetSalerByEntUserId(ctx, sid); t != nil {
- mailMapping[sid] = t.UserMail
- }
- }
- }
- if mail := mailMapping[sid]; mail != "" {
- tableHtml := ""
- for i, data := range datas {
- tableHtml += fmt.Sprintf("<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
- i+1, data.SalerName, data.OrderCode, data.CompanyName, data.PersonName, data.ContractMoney, data.CreateTime)
- }
- jyutil.SentMail(ctx, "协议归档提醒", fmt.Sprintf("<p>%s</p><table border><tr><th>序号</th><th>销售人员</th><th>订单编号</th><th>公司名称</th><th>联系人姓名</th><th>合同金额合计</th><th>订单审核通过时间</th></tr>%s</table>",
- fmt.Sprintf("以下订单协议签订状态为签协议,已超过%d天仍未归档,请及时提醒相关人员将签订好的协议交由销管进行上传归档::", dayLimit), tableHtml), mail)
- }
- }
- }
|