123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 |
- package services
- import (
- "context"
- "errors"
- "fmt"
- "hongze/hongze_cygx/models"
- "hongze/hongze_cygx/utils"
- "strconv"
- "strings"
- "time"
- )
- //func init() {
- // UpdateCygxActivitySpecialSignupNum()
- //}
- //修改专项调研,用户与公司的参与数量
- func UpdateCygxActivitySpecialSignupNum(cont context.Context) (err error) {
- defer func() {
- if err != nil {
- fmt.Println(err)
- go utils.SendAlarmMsg("修改活动状态至进行中失败"+err.Error(), 2)
- go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改活动状态至进行中失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
- }
- }()
- //根据手机号分组获取列表以及数量
- var condition string
- var pars []interface{}
- condition += ` AND s.create_time < ? `
- pars = append(pars, time.Now().Format(utils.FormatDate))
- listSpecial, err := models.GetActivityListSpecialGroupByMobile(condition, pars)
- if err != nil {
- return err
- }
- var mapMobile []string
- for _, v := range listSpecial {
- mapMobile = append(mapMobile, v.Mobile)
- }
- //根据手机号获取这些用户的信息
- userList, err := models.GetWxUserByMobiles(mapMobile)
- if err != nil {
- return err
- }
- //更改这些手机对应的关注关注数量
- err = models.UpdateActivitySpecialSignupNumMulti(listSpecial)
- if err != nil {
- return err
- }
- //更改这些手机对应的公司ID
- err = models.UpdateActivitySpecialSignupCompanyIdMulti(userList)
- if err != nil {
- return err
- }
- //根据CompanyId分组获取列表以及数量
- listSpecialByCompanyId, err := models.GetActivityListSpecialGroupByCompanyId(condition, pars)
- if err != nil {
- return err
- }
- //更改这些公司对应的关注关注数量
- err = models.UpdateActivitySpecialSignupCompanyNumMulti(listSpecialByCompanyId)
- if err != nil {
- return err
- }
- fmt.Println("UpdateCygxActivitySpecialSignupNum end")
- return
- }
- //处理专项调研的展示
- func GetActivityLabelSpecialList(userType, isPower int, chartPermissionIds, scale, permissionNameStr string) (item *models.ActivityTypeHome, err error) {
- var condition string
- var pars []interface{}
- condition = ` AND art.publish_status = 1 AND art.label != '' `
- //行业名称
- if isPower == 1 {
- condition += ` AND art.chart_permission_name IN (` + permissionNameStr + `) `
- }
- if chartPermissionIds != "" {
- condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `) `
- }
- var conditionOr string
- if scale != "" {
- conditionOr += ` OR ( art.scale LIKE '%` + scale + `%' ` + condition + `) `
- }
- condition += ` AND art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%'` + conditionOr
- specialList, err := models.GetActivityLabelSpecialListAll(condition, pars, 0, 8)
- if err != nil {
- return
- }
- for k2, v2 := range specialList {
- specialList[k2].KeyWord = LabelStrV5(v2.KeyWord, v2.IsShowSubjectName, v2.TemporaryLabel)
- specialList[k2].ImgUrlBg = "https://hzstatic.hzinsights.com/static/temp/20220426202204/20220426/XDLLsjC9XAAy8LIzQr7GsjrBbtX6.png"
- specialList[k2].ImgUrlBg = utils.ACTIVITY_ZXDY_ImgUrl3
- }
- itemList := new(models.ActivityTypeHome)
- itemList.ActivityTypeName = "专项产业调研"
- itemList.Resource = 2
- itemList.List = specialList
- itemList.ActivityTypeId = 7
- itemList.ImgUrl = utils.ACTIVITY_ZXDY_ImgUrl1
- itemList.ImgUrlBg = utils.ACTIVITY_ZXDY_ImgUrl2
- item = itemList
- return
- }
- //HandleActivityLabelSpecialPermission 处理专项产业调研的查询权限sql
- func HandleActivityLabelSpecialPermission(user *models.WxUserItem) (condition string, err error) {
- userType, permissionStr, err := GetUserType(user.CompanyId)
- if err != nil {
- return
- }
- slicePer := strings.Split(permissionStr, ",")
- var permissionSqlStr string
- for _, v := range slicePer {
- if userType == 1 {
- if !strings.Contains(v, "研选") {
- permissionSqlStr += "'" + v + "',"
- }
- } else {
- permissionSqlStr += "'" + v + "',"
- }
- }
- permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
- permissionSqlStr = strings.Replace(permissionSqlStr, "(主观)", "", -1)
- permissionSqlStr = strings.Replace(permissionSqlStr, "(客观)", "", -1)
- condition = ` AND art.publish_status = 1 AND art.label != '' AND art.is_offline = 0 `
- condition += ` AND art.chart_permission_name IN (` + permissionSqlStr + `) `
- condition += ` AND art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
- return
- }
- //获取预报名列表
- func GetActivitySpecialPrepareList(user *models.WxUserItem, startSize, pageSize int, keywords string) (list []*models.CygxActivitySpecialDetail, totalPrepare int, err error) {
- condition, e := HandleActivityLabelSpecialPermission(user)
- if e != nil {
- err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
- return
- }
- var pars []interface{}
- condition += ` AND art.days = 0 AND art.publish_status = 1 AND art.is_offline = 0 `
- if keywords != "" {
- keywords = "%" + keywords + "%"
- condition += ` AND art.research_theme LIKE ? `
- pars = append(pars, keywords)
- }
- totalPrepare, e = models.GetActivitySpecialCount(condition, pars)
- if e != nil {
- err = errors.New("GetActivitySpecialCount, Err: " + e.Error())
- return
- }
- condition += ` ORDER BY art.last_updated_time DESC `
- list, e = models.GetCygxActivitySpecialDetailList(condition, pars, user.UserId, startSize, pageSize)
- if e != nil {
- err = errors.New("GetCygxActivitySpecialDetailList, Err: " + e.Error())
- return
- }
- return
- }
- /*
- 确定行程的查询 GetActivityLabelSpecialConfirmList
- state 进行状态 1:未开始,2:进行中,3:已结束 不传默认查询全部items []*CygxActivitySpecialDetail
- */
- func GetActivityLabelSpecialConfirmList(user *models.WxUserItem, startSize, pageSize, state int, keywords string) (list []*models.CygxActivitySpecialDetail, totalConfirm int, err error) {
- //var condition string
- condition, e := HandleActivityLabelSpecialPermission(user)
- if e != nil {
- err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
- return
- }
- var pars []interface{}
- condition += ` AND art.days >0 `
- if state == 1 {
- condition += ` AND art.activity_time > ? `
- pars = append(pars, time.Now())
- }
- if state == 2 {
- condition += ` AND art.activity_time < ? `
- pars = append(pars, time.Now())
- condition += ` AND art.activity_time_end > ? `
- pars = append(pars, time.Now())
- }
- if state == 3 {
- condition += ` AND art.activity_time_end < ? `
- pars = append(pars, time.Now())
- }
- if keywords != "" {
- keywords = "%" + keywords + "%"
- condition += ` AND art.research_theme LIKE ? `
- pars = append(pars, keywords)
- }
- totalConfirm, e = models.GetActivitySpecialCount(condition, pars)
- if e != nil {
- err = errors.New("GetActivitySpecialCount, Err: " + e.Error())
- return
- }
- condition += ` ORDER BY art.activity_time DESC `
- list, e = models.GetCygxActivitySpecialDetailList(condition, pars, user.UserId, startSize, pageSize)
- if e != nil {
- err = errors.New("GetCygxActivitySpecialDetailList, Err: " + e.Error())
- return
- }
- var activityIds []int
- for k, v := range list {
- resultTimeStart := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
- resultTimeEnd := utils.StrTimeToTime(v.ActivityTimeEnd) //时间字符串格式转时间格式
- if resultTimeStart.After(time.Now()) {
- list[k].ActiveState = 1
- } else if time.Now().After(resultTimeEnd) {
- list[k].ActiveState = 3
- } else {
- list[k].ActiveState = 2
- }
- if list[k].Days == 0 {
- list[k].TripStatus = 1
- } else {
- list[k].TripStatus = 2
- }
- activityIds = append(activityIds, v.ActivityId)
- }
- //处理用户已经报名了的行程
- UserMap, e := GetSpecialTripUserMap(activityIds, user.UserId)
- if e != nil {
- err = errors.New("GetSpecialTripUserMap, Err: " + e.Error())
- return
- }
- for k, v := range list {
- if _, ok := UserMap[v.ActivityId]; ok {
- list[k].IsTrip = 1
- }
- }
- return
- }
- //获取用户已经报名的活动
- func GetSpecialTripUserMap(activityIds []int, userId int) (mapUserId map[int]int, err error) {
- var condition string
- var pars []interface{}
- activityIdsLen := len(activityIds)
- if activityIdsLen > 0 {
- condition += ` AND activity_id IN (` + utils.GetOrmInReplace(activityIdsLen) + `)`
- pars = append(pars, activityIds)
- }
- condition += ` AND user_id = ? AND is_cancel = 0 `
- pars = append(pars, userId)
- list, e := models.GetCygxActivitySpecialTripList(condition, pars)
- if e != nil {
- err = errors.New("GetCygxActivitySpecialTripList, Err: " + e.Error())
- return
- }
- mapUid := make(map[int]int)
- for _, v := range list {
- mapUid[v.UserId] = v.UserId
- }
- mapUserId = mapUid
- return
- }
- //GetActivitySpecialList 获取专项调研列表
- func GetActivitySpecialList(user *models.WxUserItem, currentIndex, pageSize int, keywords string) (list []*models.CygxActivitySpecialDetail, total int, err error) {
- listConfirm, totalConfirm, e := GetActivityLabelSpecialConfirmList(user, (currentIndex-1)*pageSize, pageSize, 1, keywords)
- if e != nil {
- err = errors.New("GetActivityLabelSpecialConfirmList, Err: " + e.Error())
- return
- }
- if currentIndex == 1 && len(listConfirm) > 0 {
- listConfirm[0].Explain = "此类调研时间安排已经确定,点击报名后按人次扣除对应机构的服务点数。由于每场活动人数有限,如果不能参加请提前48小时取消,未及时取消导致影响其他客户报名将会维持扣点。"
- }
- list = listConfirm
- total = totalConfirm
- var startSizePrepare, pageSizePrepare int
- //全是确定行程的查询数据
- if totalConfirm >= currentIndex*pageSize {
- total = totalConfirm
- startSizePrepare = 0
- pageSizePrepare = 0
- return
- } else if totalConfirm > (currentIndex-1)*pageSize && totalConfirm < currentIndex*pageSize {
- //一半确认行程一半预报名
- startSizePrepare = 0
- pageSizePrepare = pageSize - len(listConfirm)
- } else {
- //全是预报名
- startSizePrepare = (currentIndex-1)*pageSize - totalConfirm
- pageSizePrepare = pageSize - len(listConfirm)
- }
- listPrepare, totalPrepare, e := GetActivitySpecialPrepareList(user, startSizePrepare, pageSizePrepare, keywords)
- if e != nil {
- err = errors.New("GetActivityLabelSpecialConfirmList, Err: " + e.Error())
- return
- }
- if len(listPrepare) > 0 {
- for _, v := range listPrepare {
- list = append(list, v)
- }
- if startSizePrepare == 0 {
- listPrepare[0].Explain = "此类调研具体行程尚未确认,待预报名人数满10人后弘则会确定行程并推送给您活动日期,只有在确认行程中再次报名才完成占位。"
- }
- }
- total = totalConfirm + totalPrepare
- //处理封面图片
- detail, e := models.GetConfigByCode("city_img_url")
- if e != nil {
- err = errors.New("GetConfigByCode, Err: " + e.Error())
- return
- }
- detailChart, e := models.GetConfigByCode("chart_img_url")
- if e != nil {
- err = errors.New("GetConfigByCode, Err: " + e.Error())
- return
- }
- addressList := strings.Split(detail.ConfigValue, "{|}")
- mapAddress := make(map[string]string)
- chartList := strings.Split(detailChart.ConfigValue, "{|}")
- mapChart := make(map[string]string)
- var cityName string
- var chartName string
- var imgUrl string
- var imgUrlChart string
- for _, v := range addressList {
- vslice := strings.Split(v, "_")
- cityName = vslice[0]
- imgUrl = vslice[len(vslice)-1]
- mapAddress[cityName] = imgUrl
- }
- for _, v := range chartList {
- vslice := strings.Split(v, "_")
- chartName = vslice[0]
- imgUrlChart = vslice[len(vslice)-1]
- mapChart[chartName] = imgUrlChart
- }
- for k, v := range list {
- list[k].ImgUrlText = "https://hongze.oss-cn-shanghai.aliyuncs.com/static/images/202112/20211221/bIdfv8t86xrFRpDOeGGHXOmKEuKl.png"
- if mapChart[v.ChartPermissionName] != "" {
- list[k].ImgUrl = mapChart[v.ChartPermissionName]
- }
- list[k].ActivityTypeName = "专项调研"
- }
- return
- }
- //HandleActivitySpecialShow 处理活动的状态
- func HandleActivitySpecialShow(activityDetail *models.CygxActivitySpecialDetail, user *models.WxUserItem) (item *models.CygxActivitySpecialDetail, err error) {
- var activityIds []int
- resultTimeStart := utils.StrTimeToTime(activityDetail.ActivityTime) //时间字符串格式转时间格式
- resultTimeEnd := utils.StrTimeToTime(activityDetail.ActivityTimeEnd) //时间字符串格式转时间格式
- if resultTimeStart.After(time.Now()) {
- activityDetail.ActiveState = 1
- } else if time.Now().After(resultTimeEnd) {
- activityDetail.ActiveState = 3
- } else {
- activityDetail.ActiveState = 2
- }
- activityIds = append(activityIds, activityDetail.ActivityId)
- //处理用户已经报名了的行程
- UserMap, e := GetSpecialTripUserMap(activityIds, user.UserId)
- if e != nil {
- err = errors.New("GetSpecialTripUserMap, Err: " + e.Error())
- return
- }
- if activityDetail.Days == 0 {
- activityDetail.TripStatus = 1
- } else {
- activityDetail.TripStatus = 2
- }
- if _, ok := UserMap[activityDetail.ActivityId]; ok {
- activityDetail.IsTrip = 1
- }
- item = activityDetail
- return
- }
|