activity_ocr.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package cygx
  2. import (
  3. "errors"
  4. "hongze/hz_crm_api/models/cygx"
  5. "hongze/hz_crm_api/utils"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. //处理OCR识别图片建会的逻辑
  11. //星期日 Sunday=Sun. 读音:英[ˈsʌndeɪ]美[ˈsʌnˌdeɪ]
  12. //
  13. //星期一 Monday=Mon. 读音:英[ˈmʌndeɪ]美[ˈmʌndeɪ]
  14. //
  15. //星期二 Tuesday=Tues. 读音:英[ˈtju:zdeɪ]美[ˈtu:zdeɪ]
  16. //
  17. //星期三 Wednesday=Wed. 读音:英[ˈwenzdeɪ]美[ˈwɛnzdi, -ˌde]
  18. //
  19. //星期四 Thursday=Thur./Thurs. 读音:英[ˈθɜ:zdeɪ]美[ˈθɜ:rzdeɪ]
  20. //
  21. //星期五 Friday=Fri. 读音:英[ˈfraɪdeɪ]美[ˈfraɪˌdeɪ]
  22. //
  23. //星期六 Saturday=Sat. 读音: 英[ˈsætədeɪ]美[ˈsætərdeɪ]
  24. // 处理年月日格式
  25. func ConvertActivityTitmeYMD(TitmeYMD string) (titmeYMDNew string) {
  26. titmeYMDNew = TitmeYMD
  27. titmeYMDNew = strings.Replace(titmeYMDNew, "/", "月", -1)
  28. //titmeYMDNew = strings.Replace(titmeYMDNew, "SUN", "日(周日)", -1)
  29. //titmeYMDNew = strings.Replace(titmeYMDNew, "MON", "日(周一)", -1)
  30. //titmeYMDNew = strings.Replace(titmeYMDNew, "TUE", "日(周二)", -1)
  31. //titmeYMDNew = strings.Replace(titmeYMDNew, "WED", "日(周三)", -1)
  32. //titmeYMDNew = strings.Replace(titmeYMDNew, "THU", "日(周四)", -1)
  33. //titmeYMDNew = strings.Replace(titmeYMDNew, "FRI", "日(周五)", -1)
  34. //titmeYMDNew = strings.Replace(titmeYMDNew, "SAT", "日(周六)", -1)
  35. titmeYMDNew = strings.Replace(titmeYMDNew, "SUN", "日", -1)
  36. titmeYMDNew = strings.Replace(titmeYMDNew, "MON", "日", -1)
  37. titmeYMDNew = strings.Replace(titmeYMDNew, "TUE", "日", -1)
  38. titmeYMDNew = strings.Replace(titmeYMDNew, "WED", "日", -1)
  39. titmeYMDNew = strings.Replace(titmeYMDNew, "THU", "日", -1)
  40. titmeYMDNew = strings.Replace(titmeYMDNew, "FRI", "日", -1)
  41. titmeYMDNew = strings.Replace(titmeYMDNew, "SAT", "日", -1)
  42. titmeYMDNew = strconv.Itoa(time.Now().Year()) + "年" + titmeYMDNew
  43. return
  44. }
  45. // 处理时分PM格式
  46. func ConvertActivityTitmeHM(titmeHM string) (titmeHMNew string) {
  47. titmeHMNew = titmeHM
  48. var hNum int
  49. var amOrPm string
  50. if strings.Contains(titmeHM, "PM") {
  51. hNum = 12
  52. amOrPm = "PM"
  53. } else {
  54. amOrPm = "AM"
  55. }
  56. titmeHM = strings.Replace(titmeHM, "AM", "", -1)
  57. titmeHM = strings.Replace(titmeHM, "PM", "", -1)
  58. sliceHm := strings.Split(titmeHM, ":")
  59. if len(sliceHm) != 2 {
  60. return
  61. }
  62. hourNum, _ := strconv.Atoi(sliceHm[0])
  63. minute := sliceHm[1]
  64. titmeHMNew = strconv.Itoa(hNum+hourNum) + ":" + minute + amOrPm
  65. return
  66. }
  67. // 活动内容模版
  68. var ActivityOcrTemplate = "<p>【买方研选-小范围公司线上交流】{{COMPANY}}</p><p>时间:{{TIME}}</p><p>嘉宾:IR</p><p>主持人:IR</p><p>链接参会:(会前一天下午更新)</p><p>备注:</p><p>1、请先报名,我们将于会议前一天提供【Webex】入会链接(可电话拨入or网络端参会);</p><p>2、会议语言:{{LANGUAGE}};</p><p>3、本场会议报名截止时间为会议开始前一天下午3点半;</p><p>4、本次会议扣0.5次研选服务点。</p>"
  69. func MakeActivityReqText(list []*cygx.AliyunOcrTextActivityResp) (req cygx.ActivityRep, err error, errMsg string) {
  70. for _, v := range list {
  71. ActivityOcrTmp := ActivityOcrTemplate
  72. sliceCompany := strings.Split(v.Company, "(")
  73. company := sliceCompany[0]
  74. ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{COMPANY}}", company, -1)
  75. v.TitmeYMD = strings.Replace(v.TitmeYMD, "年", "-", -1)
  76. v.TitmeYMD = strings.Replace(v.TitmeYMD, "月", "-", -1)
  77. v.TitmeYMD = strings.Replace(v.TitmeYMD, "日", "", -1)
  78. weeknum := utils.StrDateTimeToWeek(v.TitmeYMD + " 00:00:00")
  79. var condition string
  80. var pars []interface{}
  81. condition = " AND activity_type_id = 3 AND activity_time = ? AND temporary_label = ? "
  82. var activityTime string
  83. activityTime = strings.Replace(v.TitmeHM, " ", "", -1)
  84. activityTime = strings.Replace(activityTime, "AM", "", -1)
  85. activityTime = strings.Replace(activityTime, "PM", "", -1)
  86. activityTime = v.TitmeYMD + " " + activityTime + ":00"
  87. //fmt.Println(activityTime)
  88. pars = append(pars, activityTime, company)
  89. total, e := cygx.GetActivityCount(condition, pars)
  90. if e != nil {
  91. err = errors.New("GetActivityCount,Err" + e.Error())
  92. return
  93. }
  94. //fmt.Println(total)
  95. //return
  96. if total > 0 {
  97. errMsg = "相同时段已存在对应活动"
  98. return
  99. }
  100. ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{TIME}}", v.TitmeYMD+"("+weeknum+")"+v.TitmeHM, -1)
  101. if utils.CheckStrHaveLetter(company) {
  102. ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{LANGUAGE}}", "中文", -1)
  103. } else {
  104. ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{LANGUAGE}}", "英文", -1)
  105. }
  106. req.Body += ActivityOcrTmp + "<hr>" //分隔符标签
  107. label := new(cygx.ActivityGroupIndustrialRep)
  108. label.TemporaryLabel = company
  109. req.List = append(req.List, label)
  110. }
  111. //初始化相关活动参数信息
  112. req.Body = strings.TrimRight(req.Body, "<hr>")
  113. req.DoType = 1
  114. req.ActivityTypeId = 3
  115. req.PermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN
  116. req.CustomerTypeIds = "1,2,8,10,3,9,5,6,7"
  117. req.IsAllCustomerType = 1
  118. req.LimitPeopleNum = 10
  119. req.LabelType = 1
  120. req.VisibleRange = 2
  121. req.IsResearchPoints = 1
  122. req.IsNeedEmail = 1
  123. // 研选点数
  124. pointsSet := new(cygx.CygxActivityPointsSetRsq)
  125. pointsSet.PointsObject = "1"
  126. pointsSet.UserPointsNum = "0.5"
  127. pointsSet.PointsType = "1"
  128. pointsSet.CompanyPointsNum = "0"
  129. pointsSet.CancelDeadlineType = "1"
  130. req.PointsSet = pointsSet
  131. return
  132. }