|
@@ -0,0 +1,251 @@
|
|
|
+package cygx
|
|
|
+
|
|
|
+import (
|
|
|
+ "errors"
|
|
|
+ "hongze/hz_crm_api/models/cygx"
|
|
|
+ "hongze/hz_crm_api/utils"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+//处理OCR识别图片建会的逻辑
|
|
|
+
|
|
|
+//星期日 Sunday=Sun. 读音:英[ˈsʌndeɪ]美[ˈsʌnˌdeɪ]
|
|
|
+//
|
|
|
+//星期一 Monday=Mon. 读音:英[ˈmʌndeɪ]美[ˈmʌndeɪ]
|
|
|
+//
|
|
|
+//星期二 Tuesday=Tues. 读音:英[ˈtju:zdeɪ]美[ˈtu:zdeɪ]
|
|
|
+//
|
|
|
+//星期三 Wednesday=Wed. 读音:英[ˈwenzdeɪ]美[ˈwɛnzdi, -ˌde]
|
|
|
+//
|
|
|
+//星期四 Thursday=Thur./Thurs. 读音:英[ˈθɜ:zdeɪ]美[ˈθɜ:rzdeɪ]
|
|
|
+//
|
|
|
+//星期五 Friday=Fri. 读音:英[ˈfraɪdeɪ]美[ˈfraɪˌdeɪ]
|
|
|
+//
|
|
|
+//星期六 Saturday=Sat. 读音: 英[ˈsætədeɪ]美[ˈsætərdeɪ]
|
|
|
+
|
|
|
+// 处理年月日格式
|
|
|
+func ConvertActivityTitmeYMD(TitmeYMD string) (titmeYMDNew string) {
|
|
|
+ titmeYMDNew = TitmeYMD
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "/", "月", -1)
|
|
|
+ //titmeYMDNew = strings.Replace(titmeYMDNew, "SUN", "日(周日)", -1)
|
|
|
+ //titmeYMDNew = strings.Replace(titmeYMDNew, "MON", "日(周一)", -1)
|
|
|
+ //titmeYMDNew = strings.Replace(titmeYMDNew, "TUE", "日(周二)", -1)
|
|
|
+ //titmeYMDNew = strings.Replace(titmeYMDNew, "WED", "日(周三)", -1)
|
|
|
+ //titmeYMDNew = strings.Replace(titmeYMDNew, "THU", "日(周四)", -1)
|
|
|
+ //titmeYMDNew = strings.Replace(titmeYMDNew, "FRI", "日(周五)", -1)
|
|
|
+ //titmeYMDNew = strings.Replace(titmeYMDNew, "SAT", "日(周六)", -1)
|
|
|
+
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "SUN", "日", -1)
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "MON", "日", -1)
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "TUE", "日", -1)
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "WED", "日", -1)
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "THU", "日", -1)
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "FRI", "日", -1)
|
|
|
+ titmeYMDNew = strings.Replace(titmeYMDNew, "SAT", "日", -1)
|
|
|
+ titmeYMDNew = strconv.Itoa(time.Now().Year()) + "年" + titmeYMDNew
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 处理时分PM格式
|
|
|
+func ConvertActivityTitmeHM(titmeHM string) (titmeHMNew string) {
|
|
|
+ titmeHMNew = titmeHM
|
|
|
+ //var hNum int
|
|
|
+ var amOrPm string
|
|
|
+ if strings.Contains(titmeHM, "PM") {
|
|
|
+ //hNum = 12
|
|
|
+ amOrPm = "PM"
|
|
|
+ } else {
|
|
|
+ amOrPm = "AM"
|
|
|
+ }
|
|
|
+ titmeHM = strings.Replace(titmeHM, "AM", "", -1)
|
|
|
+ titmeHM = strings.Replace(titmeHM, "PM", "", -1)
|
|
|
+ sliceHm := strings.Split(titmeHM, ":")
|
|
|
+ if len(sliceHm) != 2 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ hourNum, _ := strconv.Atoi(sliceHm[0])
|
|
|
+ minute := sliceHm[1]
|
|
|
+ titmeHMNew = strconv.Itoa(hourNum) + ":" + minute + " " + amOrPm
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 活动内容模版
|
|
|
+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>"
|
|
|
+
|
|
|
+func MakeActivityReqText(list []*cygx.AliyunOcrTextActivityResp) (req cygx.ActivityRep, err error, errMsg string) {
|
|
|
+ for _, v := range list {
|
|
|
+ ActivityOcrTmp := ActivityOcrTemplate
|
|
|
+ sliceCompany := strings.Split(v.Company, "(")
|
|
|
+ company := sliceCompany[0]
|
|
|
+ ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{COMPANY}}", company, -1)
|
|
|
+ v.TitmeYMD = strings.Replace(v.TitmeYMD, "年", "-", -1)
|
|
|
+ v.TitmeYMD = strings.Replace(v.TitmeYMD, "月", "-", -1)
|
|
|
+ v.TitmeYMD = strings.Replace(v.TitmeYMD, "日", "", -1)
|
|
|
+ weeknum := utils.StrDateTimeToWeek(v.TitmeYMD + " 00:00:00")
|
|
|
+
|
|
|
+ havePm := strings.Contains(v.TitmeHM, "PM")
|
|
|
+ var activityTime string
|
|
|
+ activityTime = strings.Replace(v.TitmeHM, " ", "", -1)
|
|
|
+ activityTime = strings.Replace(activityTime, "AM", "", -1)
|
|
|
+ activityTime = strings.Replace(activityTime, "PM", "", -1)
|
|
|
+
|
|
|
+ activityTime = v.TitmeYMD + " " + activityTime + ":00"
|
|
|
+ resultTime := utils.StrTimeToTime(activityTime)
|
|
|
+ var amOrPm string
|
|
|
+ if havePm {
|
|
|
+ //前端传过来的是 2:00PM 这里转成 14:00 PM
|
|
|
+ slicePm := strings.Split(v.TitmeHM, ":")
|
|
|
+ for sk, sv := range slicePm {
|
|
|
+ // 如果是中午 12:30 PM 就不做任何处理
|
|
|
+ if sk == 0 && sv != "12" {
|
|
|
+ resultTime = resultTime.Add(12 * time.Hour)
|
|
|
+ activityTime = resultTime.Format(utils.FormatDateTime)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ amOrPm = "PM"
|
|
|
+ } else {
|
|
|
+ amOrPm = "AM"
|
|
|
+ }
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = " AND activity_type_id = 3 AND activity_time = ? AND temporary_label = ? "
|
|
|
+ pars = append(pars, activityTime, company)
|
|
|
+ total, e := cygx.GetActivityCount(condition, pars)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetActivityCount,Err" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if total > 0 {
|
|
|
+ errMsg = "相同时段已存在对应活动"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{TIME}}", v.TitmeYMD+"("+weeknum+")"+resultTime.Format(utils.FormatTimeHm)+amOrPm, -1)
|
|
|
+ if !utils.CheckStrHaveLetter(company) {
|
|
|
+ ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{LANGUAGE}}", "中文", -1)
|
|
|
+ } else {
|
|
|
+ ActivityOcrTmp = strings.Replace(ActivityOcrTmp, "{{LANGUAGE}}", "英文", -1)
|
|
|
+ }
|
|
|
+ req.Body += ActivityOcrTmp + "<hr>" //分隔符标签
|
|
|
+ label := new(cygx.ActivityGroupIndustrialRep)
|
|
|
+ label.TemporaryLabel = company
|
|
|
+ req.List = append(req.List, label)
|
|
|
+ }
|
|
|
+ //初始化相关活动参数信息
|
|
|
+ req.Body = strings.TrimRight(req.Body, "<hr>")
|
|
|
+ req.DoType = 1
|
|
|
+ req.ActivityTypeId = 3
|
|
|
+ req.PermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN
|
|
|
+ req.CustomerTypeIds = "1,2,8,10,3,9,5,6,7"
|
|
|
+ req.IsAllCustomerType = 1
|
|
|
+ req.LimitPeopleNum = 10
|
|
|
+ req.LabelType = 1
|
|
|
+ req.VisibleRange = 2
|
|
|
+ req.IsResearchPoints = 1
|
|
|
+ req.IsNeedEmail = 1
|
|
|
+ // 研选点数
|
|
|
+ pointsSet := new(cygx.CygxActivityPointsSetRsq)
|
|
|
+ pointsSet.PointsObject = "1"
|
|
|
+ pointsSet.UserPointsNum = "0.5"
|
|
|
+ pointsSet.PointsType = "1"
|
|
|
+ pointsSet.CompanyPointsNum = "0"
|
|
|
+ pointsSet.CancelDeadlineType = "1"
|
|
|
+ req.PointsSet = pointsSet
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 代码冲突了先放这里
|
|
|
+func UpdateActivityVideoAndVoice(activityInfo *cygx.ActivityDetail, itemVoice *cygx.CygxActivityVoice, itemVideo *cygx.CygxActivityVideo) (err error) {
|
|
|
+ if activityInfo.ActiveState != 3 {
|
|
|
+ return // 没有结束的活动不会上传音视频
|
|
|
+ }
|
|
|
+ activityId := activityInfo.ActivityId
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ //处理音频
|
|
|
+ if itemVoice.ActivityId > 0 {
|
|
|
+ condition = " AND activity_id = ? "
|
|
|
+ pars = append(pars, activityId)
|
|
|
+ total, e := cygx.GetCygxActivityVoiceCount(condition, pars)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxActivityVoiceCount" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //如果等于0就新增,反之就修改
|
|
|
+ if total == 0 {
|
|
|
+ newId, e := cygx.AddCygxActivityVoice(itemVoice)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxActivityVoiceCount" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ go UpdateResourceData(int(newId), utils.CYGX_OBJ_ACTIVITYVOICE, "add", activityInfo.ActivityTime) // 把活动音频的数据添加到 cygx_resource_data 表
|
|
|
+ } else {
|
|
|
+ e = cygx.UpdateCygxActivityVoice(itemVoice)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("UpdateCygxActivityVoice" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理视频
|
|
|
+ if itemVideo.ActivityId > 0 {
|
|
|
+ condition = " AND art.activity_id = ? "
|
|
|
+ pars = append(pars, activityId)
|
|
|
+ total, e := cygx.GetActivityVideoCount(condition, pars)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetActivityVideoCount" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //如果等于0就新增,反之就修改
|
|
|
+ if total == 0 {
|
|
|
+ newId, e := cygx.AddCygxActivityVideo(itemVideo)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("AddCygxActivityVideo" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ go UpdateResourceData(int(newId), utils.CYGX_OBJ_ACTIVITYVIDEO, "add", activityInfo.ActivityTime) // 把活动视频的数据添加到 cygx_resource_data 表
|
|
|
+ } else {
|
|
|
+ e = cygx.UpdateCygxActivityVideo(itemVideo)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("UpdateCygxActivityVideo" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果两个都为空,就判断之前是否上传过
|
|
|
+ if itemVoice.ActivityId == 0 && itemVideo.ActivityId == 0 {
|
|
|
+ voiceDetail, e := cygx.GetCygxActivityVoiceReqDetail(activityId)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCygxActivityVoiceReqDetail" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if voiceDetail != nil {
|
|
|
+ e = cygx.DeleteCygxActivityVoice(activityId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("DeleteCygxActivityVoice" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ go UpdateResourceData(voiceDetail.ActivityVoiceId, utils.CYGX_OBJ_ACTIVITYVOICE, "delete", time.Now().Format(utils.FormatDateTime)) // 把活动音频在 cygx_resource_data 表中删除
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除原有的视频数据
|
|
|
+ videoDetail, e := cygx.GetCygxActivityVideoReqDetail(activityId)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCygxActivityVideoReqDetail" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if videoDetail != nil {
|
|
|
+ e = cygx.DeleteCygxActivityVideo(activityId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("DeleteCygxActivityVideo" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ go UpdateResourceData(videoDetail.VideoId, utils.CYGX_OBJ_ACTIVITYVIDEO, "delete", time.Now().Format(utils.FormatDateTime)) // 把活动视频在 cygx_resource_data 表中删除
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|