task.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hz_eta_api/models"
  5. "hongze/hz_eta_api/models/data_manage"
  6. "hongze/hz_eta_api/services/alarm_msg"
  7. "hongze/hz_eta_api/services/data"
  8. "hongze/hz_eta_api/utils"
  9. "strings"
  10. "time"
  11. )
  12. func Task() {
  13. fmt.Println("task start")
  14. {
  15. // 修复客户试用数据
  16. //FixCompanyUpdateData()
  17. //FixCompanyTryDay()
  18. //FixCompanyTryDay()
  19. //StaticCompanyTryDay()
  20. //return
  21. }
  22. //FixPermissionStatus()
  23. //GetCompanyInfo()
  24. //ReportCount()
  25. //windSourceUrl:=`http://47.100.166.55:7002/edbInfo/wind/?EdbCode=M0001427&StartDate=2020-11-01&EndDate=2021-03-01`
  26. //data.AddAllArticle()
  27. //data.GetSmmIndex()
  28. //data.GetSmmIndexData()
  29. go AutoInsertLogToDB()
  30. // TODO:确定晨报在新后台撰写之后打开, 防止误写之后被自动推送
  31. //go AutoPublishDayReport()
  32. go AutoSyncOldReport()
  33. //手工数据表格导入后的指标库刷新
  34. go ImportManualDataRefresh()
  35. //ImportManualDataRefresh()
  36. //修复用户关注标识
  37. //GetWxUsersSubscribe()
  38. //go UpdateOldTrialUsersManualAuth()
  39. go AutoInsertAdminOperateRecordToDB()
  40. // TODO:修复权限
  41. //FixEnCompanyPermission()
  42. fmt.Println("task end")
  43. }
  44. // 每日发布晨报
  45. func AutoPublishDayReport() {
  46. defer func() {
  47. if err := recover(); err != nil {
  48. fmt.Println("[AutoPublishDayReport]", err)
  49. }
  50. }()
  51. // 每日8:42发布晨报
  52. ticker := time.Tick(50 * time.Second)
  53. for range ticker {
  54. nowTime := time.Now()
  55. clock := nowTime.Format("1504")
  56. if clock == "0842" {
  57. if err := PublishTodayDayReport(); err != nil {
  58. go alarm_msg.SendAlarmMsg(fmt.Sprint("每日晨报自动发送 AutoPublishDayReport ERR:", err), 3)
  59. //utils.SendEmail(utils.APPNAME+" "+utils.RunMode+" 失败提醒", fmt.Sprint("AutoPublishDayReport ERR:", err), utils.EmailSendToUsers)
  60. }
  61. }
  62. }
  63. }
  64. // ImportManualDataRefresh 导入手工数据后的刷新
  65. func ImportManualDataRefresh() {
  66. defer func() {
  67. if err := recover(); err != nil {
  68. fmt.Println("[ImportManualDataRefresh]", err)
  69. }
  70. }()
  71. for {
  72. utils.Rc.Brpop(utils.CACHE_IMPORT_MANUAL_DATA, func(b []byte) {
  73. edbCode := string(b)
  74. edbCode = strings.TrimPrefix(edbCode, `"`)
  75. edbCode = strings.TrimSuffix(edbCode, `"`)
  76. data.RefreshManualData(edbCode)
  77. })
  78. }
  79. }
  80. //func init() {
  81. // fmt.Println("start task init")
  82. // UpdateEnglishEmailLogErrMsg()
  83. // fmt.Println("end task init")
  84. //}
  85. //
  86. //// UpdateEnglishEmailLogErrMsg 更新英文邮件日志的ErrMsg(研报后台4.2上线后执行, 仅一次)
  87. //func UpdateEnglishEmailLogErrMsg() {
  88. // var cond string
  89. // var pars []interface{}
  90. // list, e := models.GetEnglishReportEmailLogList(cond, pars)
  91. // if e != nil {
  92. // fmt.Println("获取日志列表失败")
  93. // return
  94. // }
  95. // for _, v := range list {
  96. // if v.SendStatus != 0 || v.Source != 1 || v.Result == "" || v.ErrMsg != "" {
  97. // continue
  98. // }
  99. // // 取出错误信息
  100. // fmt.Printf("正在更新%d\n", v.Id)
  101. // r := new(AliyunEmailResult)
  102. // if e = json.Unmarshal([]byte(v.Result), &r); e != nil {
  103. // fmt.Println("JSON解析报错了1" + e.Error())
  104. // continue
  105. // }
  106. // rd := new(AliyunEmailResultData)
  107. // res := strings.Replace(r.Data, `\`, ``, -1)
  108. // if e = json.Unmarshal([]byte(res), &rd); e != nil {
  109. // fmt.Println("JSON解析报错了2" + e.Error())
  110. // continue
  111. // }
  112. // v.ErrMsg = rd.Message
  113. // if e = v.Update([]string{"ErrMsg"}); e != nil {
  114. // fmt.Println("更新失败了" + e.Error())
  115. // continue
  116. // }
  117. // }
  118. // fmt.Println("更新成功")
  119. //}
  120. //func FixCompanyUpdateData1() {
  121. // list, err := company.GetCompanyProductUpdateLogList()
  122. // if err != nil {
  123. // fmt.Println("获取客户变更数据失败:", err)
  124. // return
  125. // }
  126. //
  127. // nowTime := time.Now()
  128. // for _, v := range list {
  129. // //item, tmpErr := company.GetCompanyProductLogItem(v.CompanyId, v.ProductId, v.CreateTime)
  130. // //if tmpErr != nil {
  131. // // fmt.Println(v.Id, "找数据,", tmpErr)
  132. // // continue
  133. // //}
  134. //
  135. // //permissionList := make([]*company.CompanyReportPermission, 0)
  136. // //switch v.Source {
  137. // //case "add", "receive", "thaw", "delay", "apply_receive":
  138. // //
  139. // //}
  140. // permissionList, err := company.GetCompanyReportPermission(v.CompanyId, v.ProductId)
  141. // if err != nil {
  142. // fmt.Println("err:", err)
  143. // continue
  144. // }
  145. //
  146. // startDate := v.CreateTime
  147. // endDate := v.CreateTime.AddDate(0, 2, 0)
  148. // isStop := 1
  149. // realEndDate := endDate
  150. // if realEndDate.After(nowTime) {
  151. // realEndDate = nowTime
  152. // isStop = 0
  153. // }
  154. // for _, permission := range permissionList {
  155. // permission.StartDate = startDate.Format(utils.FormatDate)
  156. // permission.EndDate = v.CreateTime.Format(utils.FormatDate)
  157. // }
  158. // companyProductTryOutUpdateLogItem := &company.CompanyProductTryOutUpdateLog{
  159. // Id: 0,
  160. // CompanyId: v.CompanyId,
  161. // ProductId: v.ProductId,
  162. // SellerId: v.SellerId,
  163. // SellerName: v.SellerName,
  164. // Source: v.Source,
  165. // StartDate: startDate,
  166. // EndDate: endDate,
  167. // RealEndDate: realEndDate,
  168. // IsStop: isStop,
  169. // CreateTime: v.CreateTime,
  170. // }
  171. // err = company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLogItem, permissionList)
  172. // }
  173. // //fmt.Println("结束")
  174. //}
  175. //func FixCompanyUpdateData2() {
  176. // list, err := company.GetTryOutCompanyOperationRecordList()
  177. // if err != nil {
  178. // fmt.Println("获取客户变更数据失败:", err)
  179. // return
  180. // }
  181. //
  182. // nowTime := time.Now()
  183. // for _, v := range list {
  184. // //item, tmpErr := company.GetCompanyProductLogItem(v.CompanyId, v.ProductId, v.CreateTime)
  185. // //if tmpErr != nil {
  186. // // fmt.Println(v.Id, "找数据,", tmpErr)
  187. // // continue
  188. // //}
  189. //
  190. // //permissionList := make([]*company.CompanyReportPermission, 0)
  191. // //switch v.Source {
  192. // //case "add", "receive", "thaw", "delay", "apply_receive":
  193. // //
  194. // //}
  195. // permissionList, err := company.GetCompanyReportPermission(v.CompanyId, v.ProductId)
  196. // if err != nil {
  197. // fmt.Println("err:", err)
  198. // continue
  199. // }
  200. //
  201. // startDate := v.CreateTime
  202. // endDate := v.CreateTime.AddDate(0, 2, 0)
  203. // isStop := 1
  204. // realEndDate := endDate
  205. // if realEndDate.After(nowTime) {
  206. // realEndDate = nowTime
  207. // isStop = 0
  208. // }
  209. // for _, permission := range permissionList {
  210. // permission.StartDate = startDate.Format(utils.FormatDate)
  211. // permission.EndDate = v.CreateTime.Format(utils.FormatDate)
  212. // }
  213. // sellerName := ``
  214. // {
  215. // sysUser, _ := system.GetSysAdminById(v.SellerId)
  216. // if sysUser != nil {
  217. // sellerName = sysUser.RealName
  218. // }
  219. // }
  220. // companyProductTryOutUpdateLogItem := &company.CompanyProductTryOutUpdateLog{
  221. // Id: 0,
  222. // CompanyId: v.CompanyId,
  223. // ProductId: v.ProductId,
  224. // SellerId: v.SellerId,
  225. // SellerName: sellerName,
  226. // Source: "formal_to_try_out",
  227. // StartDate: startDate,
  228. // EndDate: endDate,
  229. // RealEndDate: realEndDate,
  230. // IsStop: isStop,
  231. // CreateTime: v.CreateTime,
  232. // }
  233. // err = company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLogItem, permissionList)
  234. // }
  235. // fmt.Println("结束")
  236. //}
  237. // FixCompanyTryDay 修复试用天数
  238. //func FixCompanyTryDay() {
  239. // list, err := company.GetCompanyProductTryOutUpdateGroup()
  240. // if err != nil {
  241. // fmt.Println("获取客户变更数据失败:", err)
  242. // return
  243. // }
  244. //
  245. // lenList := len(list)
  246. // for k, v := range list {
  247. // fmt.Println("剩余", lenList-k-1, "条数据修复")
  248. // companyProduct, tmpErr := company.GetCompanyProductByCompanyIdAndProductId(v.CompanyId, v.ProductId)
  249. // if tmpErr != nil {
  250. // fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";找不到对应的客户,Err:", tmpErr)
  251. // continue
  252. // }
  253. //
  254. // logList, err := company.GetCompanyProductTryOutUpdateList(v.CompanyId, v.ProductId)
  255. // if err != nil {
  256. // fmt.Println("查找客户日志失败,err:", err)
  257. // continue
  258. // }
  259. //
  260. // //lenLog := len(logList)
  261. // var day int //实际试用天数
  262. // var endDate time.Time
  263. // for _, log := range logList {
  264. // startDate := log.StartDate
  265. // if endDate.IsZero() {
  266. // endDate = log.RealEndDate
  267. // day = utils.GetTimeSubDay(startDate, log.RealEndDate) + 1
  268. // } else {
  269. // if log.RealEndDate.After(endDate) {
  270. // if endDate.After(startDate) {
  271. // startDate = endDate
  272. // }
  273. // if startDate.Equal(log.EndDate) {
  274. // day += utils.GetTimeSubDay(startDate, log.RealEndDate)
  275. // } else {
  276. // day += utils.GetTimeSubDay(startDate, log.RealEndDate) + 1
  277. // }
  278. // endDate = log.RealEndDate
  279. // }
  280. // }
  281. // }
  282. // companyProduct.TryOutDayTotal = day
  283. // companyProduct.Update([]string{"TryOutDayTotal"})
  284. // }
  285. // fmt.Println("结束")
  286. //}
  287. // StaticCompanyTryDay 定时任务每天更新试用天数
  288. //func StaticCompanyTryDay() {
  289. // list, err := company.GetCompanyProductTryOutUpdateNoStopGroup()
  290. // if err != nil {
  291. // fmt.Println("获取客户变更数据失败:", err)
  292. // return
  293. // }
  294. //
  295. // lenList := len(list)
  296. // for k, v := range list {
  297. // isAdd := false //是否要增加一天,默认不加
  298. // fmt.Println("剩余", lenList-k-1, "条数据修复")
  299. // permissionList, tmpErr := company.GetCompanyReportPermissionByStatus(v.CompanyId, v.ProductId, "试用")
  300. // if tmpErr == nil {
  301. // fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";寻找对应的试用品种失败,Err:", tmpErr)
  302. // continue
  303. // }
  304. // currPermissionIdList := make([]int, 0) //当前试用的品种
  305. // for _, permission := range permissionList {
  306. // currPermissionIdList = append(currPermissionIdList, permission.ChartPermissionId)
  307. // }
  308. //
  309. // //获取所有未停止的记录列表
  310. // logList, err := company.GetCompanyProductTryOutUpdateNoStopListByEndDate(v.CompanyId, v.ProductId)
  311. // if err != nil {
  312. // fmt.Println("查找客户日志失败,err:", err)
  313. // continue
  314. // }
  315. //
  316. // logPermissionIdList := make([]int, 0) //当前日志中的试用的品种
  317. // for _, log := range logList {
  318. // //获取所有未停止的品种试用记录列表
  319. // logPermissionList, tmpErr := company.GetCompanyProductTryOutPermissionUpdateNoStopListByEndDate(log.Id)
  320. // if tmpErr != nil {
  321. // fmt.Println("查找客户品种变更日志失败,err:", tmpErr)
  322. // continue
  323. // }
  324. // lenLogPermissionList := len(logPermissionList) //当前日志存在试用的品种数量
  325. // stopPermission := 0 //当前日志需要停止的品种数量
  326. //
  327. // currTime := time.Now() //当前时间
  328. // for _, logPermission := range logPermissionList {
  329. // if utils.InArrayByInt(logPermissionIdList, logPermission.ChartPermissionId) {
  330. // // 如果已经被其他记录使用了,那么就将当前记录给标记停止
  331. // logPermission.IsStop = 1
  332. //
  333. // // 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
  334. // if currTime.After(logPermission.EndDate) {
  335. // logPermission.RealEndDate = currTime.AddDate(0, 0, -1)
  336. // } else {
  337. // logPermission.RealEndDate = time.Now()
  338. // }
  339. // logPermission.Update([]string{"IsStop", "RealEndDate"})
  340. // stopPermission++
  341. // continue
  342. // } else if !utils.InArrayByInt(currPermissionIdList, logPermission.ChartPermissionId) {
  343. // // 如果该品种不在当前客户的品种里面,那么也要将当前记录给标记停止
  344. // logPermission.IsStop = 1
  345. // // 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
  346. // if currTime.After(logPermission.EndDate) {
  347. // logPermission.RealEndDate = currTime.AddDate(0, 0, -1)
  348. // } else {
  349. // logPermission.RealEndDate = time.Now()
  350. // }
  351. // logPermission.Update([]string{"IsStop", "RealEndDate"})
  352. // stopPermission++
  353. // continue
  354. // }
  355. //
  356. // // 剩下的说明还处于试用状态,需要添加1天试用期,且需要把该品种加入到当前日志中的试用的品种列表
  357. // isAdd = true
  358. // logPermissionIdList = append(logPermissionIdList, logPermission.ChartPermissionId)
  359. // }
  360. //
  361. // //如果当前日志存在试用的品种数量 == 当前日志需要停止的品种数量
  362. // // 那么当前日志也是处于停用状态
  363. // if lenLogPermissionList == stopPermission {
  364. // log.IsStop = 1
  365. // // 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
  366. // if currTime.After(log.EndDate) {
  367. // log.RealEndDate = currTime.AddDate(0, 0, -1)
  368. // } else {
  369. // log.RealEndDate = time.Now()
  370. // }
  371. // log.Update([]string{"IsStop", "RealEndDate"})
  372. // }
  373. //
  374. // }
  375. //
  376. // // 如果需要添加,那么将该客户品种添加1天
  377. // if isAdd {
  378. //
  379. // }
  380. // // 更新客户产品的试用天数
  381. // tmpErr = company.AddCompanyProductTryOutDayTotal(v.CompanyId, v.ProductId)
  382. // if tmpErr != nil {
  383. // fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";更新客户产品的试用天数,Err:", tmpErr)
  384. // continue
  385. // }
  386. // }
  387. // fmt.Println("结束")
  388. //}
  389. //func Task2() {
  390. // fmt.Println("task start")
  391. //
  392. // //_, _ = maycur.GetPublicOfferingSaleLeader()
  393. // //_ = maycur.TestSyncCompanyProfile()
  394. // //_ = maycur.SyncCompanyProfile()
  395. // //_ = maycur.ImportExcelEmployeeId()
  396. // //_ = maycur.ApiTest()
  397. // //_ = maycur.ApiTest2()
  398. // fmt.Println("task end")
  399. //}
  400. // FixEnCompanyPermission 英文权限上线时修复英文客户拥有所有权限(一次性)
  401. func FixEnCompanyPermission() {
  402. var err error
  403. defer func() {
  404. if err != nil {
  405. fmt.Println("FixEnCompanyPermission Err: ", err.Error())
  406. }
  407. }()
  408. // 获取正式客户
  409. companies := make([]*models.EnglishCompany, 0)
  410. {
  411. cond := ` AND status = ?`
  412. pars := make([]interface{}, 0)
  413. pars = append(pars, 1)
  414. list, e := models.GetEnglishCompanyList(cond, pars, "")
  415. if e != nil {
  416. err = fmt.Errorf("GetEnglishCompanyList err: %s", e.Error())
  417. return
  418. }
  419. companies = list
  420. }
  421. // 获取所有权限
  422. permissions := make([]*models.EnPermission, 0)
  423. {
  424. cond := ` AND parent_id > ?`
  425. pars := make([]interface{}, 0)
  426. pars = append(pars, 0)
  427. ob := new(models.EnPermission)
  428. list, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
  429. if e != nil {
  430. err = fmt.Errorf("GetPermissionItemsByCondition err: %s", e.Error())
  431. return
  432. }
  433. permissions = list
  434. }
  435. for _, c := range companies {
  436. ps := make([]*models.EnCompanyPermission, 0)
  437. for _, p := range permissions {
  438. ps = append(ps, &models.EnCompanyPermission{
  439. EnCompanyId: c.CompanyId,
  440. EnPermissionId: p.EnPermissionId,
  441. CreateTime: time.Now().Local(),
  442. })
  443. }
  444. if e := models.ClearAndCreateEnCompanyPermissions(c.CompanyId, ps); e != nil {
  445. err = fmt.Errorf("ClearAndCreateEnCompanyPermissions err: %s", e.Error())
  446. return
  447. }
  448. }
  449. fmt.Println("修复完成")
  450. }