task.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hz_crm_api/models/company"
  5. "hongze/hz_crm_api/models/eta_business"
  6. "hongze/hz_crm_api/utils"
  7. "time"
  8. )
  9. func Task() {
  10. fmt.Println("task start")
  11. go AutoInsertLogToDB()
  12. go AutoInsertAdminOperateRecordToDB()
  13. //go FixEtaBusinessCodeEncrypt()
  14. //InitContractUnusual()
  15. fmt.Println("task end")
  16. }
  17. // FixEtaBusinessCodeEncrypt 修复商家编码
  18. func FixEtaBusinessCodeEncrypt() {
  19. ob := new(eta_business.EtaBusiness)
  20. list, e := ob.GetItemsByCondition("", make([]interface{}, 0), []string{}, "")
  21. if e != nil {
  22. fmt.Println(e.Error())
  23. return
  24. }
  25. for _, v := range list {
  26. v.CodeEncrypt = utils.MD5(fmt.Sprintf("%s%s", v.BusinessCode, utils.BusinessCodeSalt))
  27. if e = v.Update([]string{"CodeEncrypt"}); e != nil {
  28. fmt.Println(e.Error())
  29. return
  30. }
  31. }
  32. }
  33. // InitContractUnusual 补全续约统计异常的客户
  34. func InitContractUnusual() (err error) {
  35. defer func() {
  36. if err != nil {
  37. fmt.Println("initYearContractUnusual 补全未续约合同记录,Err:" + err.Error())
  38. utils.FileLog.Info("initYearContractUnusual 补全未续约合同记录,Err:" + err.Error())
  39. }
  40. }()
  41. addList := make([]*company.CompanyRenewalRecord, 0)
  42. // 整理时间表
  43. startDate, _ := time.ParseInLocation(utils.FormatDate, "2023-01-01", time.Local)
  44. endDate, _ := time.ParseInLocation(utils.FormatDate, "2023-12-07", time.Local)
  45. for startDate.Before(endDate) || startDate == endDate {
  46. tmpC := ` AND end_date = ? AND status = 1 AND contract_type IN ( "新签合同", "续约合同" ) AND product_id = 1`
  47. var tmpP []interface{}
  48. before61 := startDate.AddDate(0, 0, -61)
  49. tmpP = append(tmpP, before61)
  50. contractList, e := company.GetCompanyContractList(tmpC, tmpP)
  51. if e != nil {
  52. err = fmt.Errorf("查询合同列表失败, ERR:%s", e)
  53. return
  54. }
  55. if len(contractList) > 0 {
  56. contractMap := make(map[int]*company.CompanyContractResp)
  57. for _, v := range contractList {
  58. //查询这个合同是否存在续约合同,起始日大于今日,或者截止日
  59. contractMap[v.CompanyId] = v
  60. }
  61. ficcNormalMap := make(map[int]struct{})
  62. tmpC = ` AND start_date >= ? AND start_date <= ? AND status = 1 AND contract_type="续约合同" AND product_id = 1`
  63. tmpP = make([]interface{}, 0)
  64. tmpP = append(tmpP, before61, startDate)
  65. contractNormalList, e := company.GetCompanyContractList(tmpC, tmpP)
  66. if e != nil {
  67. err = fmt.Errorf("查询合同列表失败, ERR:%s", e)
  68. return
  69. }
  70. for _, v := range contractNormalList {
  71. ficcNormalMap[v.CompanyId] = struct{}{}
  72. }
  73. for _, v := range contractList {
  74. sellers, tErr := company.GetCompanyProductByCompanyIdAndProductId(v.CompanyId, v.ProductId)
  75. if tErr != nil {
  76. err = tErr
  77. return
  78. }
  79. //查询这个合同是否存在续约合同,起始日大于今日,或者截止日
  80. if _, ok := ficcNormalMap[v.CompanyId]; !ok {
  81. tmp := &company.CompanyRenewalRecord{
  82. CompanyId: v.CompanyId,
  83. ProductId: v.ProductId,
  84. Source: 1,
  85. SellerId: sellers.SellerId,
  86. SellerName: sellers.SellerName,
  87. CreateTime: startDate,
  88. ModifyTime: startDate,
  89. }
  90. addList = append(addList, tmp)
  91. }
  92. }
  93. }
  94. startDate = startDate.AddDate(0, 0, 1)
  95. }
  96. if len(addList) > 0 {
  97. item := new(company.CompanyRenewalRecord)
  98. err = item.InsertMulti(addList)
  99. }
  100. return
  101. }