|
@@ -1,10 +1,12 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
"hongze/hongze_cygx/models"
|
|
|
"hongze/hongze_cygx/utils"
|
|
|
+ "time"
|
|
|
)
|
|
|
|
|
|
//func init() {
|
|
@@ -12,38 +14,265 @@ import (
|
|
|
//}
|
|
|
|
|
|
// GetActivityPointsAll 获取所有带有扣点的活动
|
|
|
-func GetActivityPointsAll() (listxActivity []*models.CygxActivity, err error) {
|
|
|
+//func GetActivityPointsAll() (listxActivity []*models.CygxActivity, err error) {
|
|
|
+// defer func() {
|
|
|
+// if err != nil {
|
|
|
+// fmt.Println(err)
|
|
|
+// go utils.SendAlarmMsg("获取所有带有扣点的活动失败"+err.Error(), 2)
|
|
|
+// }
|
|
|
+// }()
|
|
|
+// var condition string
|
|
|
+// var pars []interface{}
|
|
|
+// listxActivity = make([]*models.CygxActivity, 0)
|
|
|
+// list, e := models.GetCygxActivityPointsSetList(condition, pars, 0, 0)
|
|
|
+// if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+// err = errors.New("GetCygxActivityPointsSetList,Err: " + e.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// var activityIds []int
|
|
|
+// for _, v := range list {
|
|
|
+// activityIds = append(activityIds, v.ActivityId)
|
|
|
+// }
|
|
|
+// lenArr := len(activityIds)
|
|
|
+// if lenArr == 0 {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// condition = ` AND art.activity_id IN (` + utils.GetOrmInReplace(lenArr) + `)`
|
|
|
+// pars = append(pars, activityIds)
|
|
|
+// listxActivity, e = models.GetCygxActivityList(condition, pars, 0, lenArr)
|
|
|
+// if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+// err = errors.New("GetCygxActivityList,Err: " + e.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// for _, v := range listxActivity {
|
|
|
+// fmt.Println(v)
|
|
|
+// }
|
|
|
+// return
|
|
|
+//}
|
|
|
+
|
|
|
+// 用户报名添加到处理研选扣点
|
|
|
+func YanXuanActivityPointsBillSignupAdd(activityId, uid int) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
|
|
|
+ go utils.SendAlarmMsg("用户报名添加到处理研选扣点,写入Redis队列消息失败:"+err.Error()+msg, 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
|
|
|
+ log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 1, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
|
|
|
+ if utils.Re == nil {
|
|
|
+ err := utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 用户取消报名添加到处理研选扣点
|
|
|
+func YanXuanActivityPointsBillSignupCancel(activityId, uid int) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
|
|
|
+ go utils.SendAlarmMsg("用户取消报名添加到处理研选扣点,写入Redis队列消息失败:"+err.Error()+msg, 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
|
|
|
+ log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 2, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
|
|
|
+ if utils.Re == nil {
|
|
|
+ err := utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// YanXuanActivityPointsBillReduce 处理研选活动扣点
|
|
|
+func YanXuanActivityPointsBillReduce() (err error) {
|
|
|
+ for {
|
|
|
+ //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
|
|
|
+ utils.Rc.Brpop(utils.CYGX_YANXUAN_POINTS_KEY, func(b []byte) {
|
|
|
+ var log models.YanXuanActivityPointsRedis
|
|
|
+ if err := json.Unmarshal(b, &log); err != nil {
|
|
|
+ fmt.Println("json unmarshal wrong!")
|
|
|
+ go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+err.Error()+string(b), 2)
|
|
|
+ }
|
|
|
+ switch log.SourceType {
|
|
|
+ case 1:
|
|
|
+ go YanXuanActivityPointsBillSignupAddReduce(log)
|
|
|
+ fmt.Println("1:报名")
|
|
|
+ break
|
|
|
+ case 2:
|
|
|
+ go YanXuanActivityPointsBillSignupCancelReduce(log)
|
|
|
+ fmt.Println(" 2:取消报名")
|
|
|
+ break
|
|
|
+ case 3:
|
|
|
+ //go ActivityUserLabelLogReduce(log)
|
|
|
+ fmt.Println("3:活动编辑")
|
|
|
+ break
|
|
|
+ case 4:
|
|
|
+ //go CategoryFllowUserLabelLogReduce(log)
|
|
|
+ fmt.Println("4:活动发布,取消发布")
|
|
|
+ break
|
|
|
+ case 5:
|
|
|
+ //go ActivitySpecialUserLabelLogReduce(log)
|
|
|
+ fmt.Println("5:活动到会。")
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ fmt.Println(string(b))
|
|
|
+ go utils.SendAlarmMsg("用户更新相关标签处理Redis队列消息失败:"+string(b), 2)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 1:用户报名
|
|
|
+func YanXuanActivityPointsBillSignupAddReduce(log models.YanXuanActivityPointsRedis) (err error) {
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
|
- go utils.SendAlarmMsg("获取所有带有扣点的活动失败"+err.Error(), 2)
|
|
|
+ go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
|
|
|
}
|
|
|
}()
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
- listxActivity = make([]*models.CygxActivity, 0)
|
|
|
- list, e := models.GetCygxActivityPointsSetList(condition, pars, 0, 0)
|
|
|
+
|
|
|
+ activityId := log.ActivityId
|
|
|
+ userId := log.UserId
|
|
|
+
|
|
|
+ //获取活动是否扣点以及扣点规则明细
|
|
|
+ activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
|
|
|
if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
- err = errors.New("GetCygxActivityPointsSetList,Err: " + e.Error())
|
|
|
+ err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if activityPointsSetDetail == nil {
|
|
|
return
|
|
|
}
|
|
|
- var activityIds []int
|
|
|
- for _, v := range list {
|
|
|
- activityIds = append(activityIds, v.ActivityId)
|
|
|
+ if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
|
|
|
+ return // 如果不是报名即扣点的这种形式,那么就不做任何处理
|
|
|
}
|
|
|
- lenArr := len(activityIds)
|
|
|
- if lenArr == 0 {
|
|
|
+
|
|
|
+ activityInfo, e := models.GetAddActivityInfoById(activityId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetAddActivityInfoById" + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- condition = ` AND art.activity_id IN (` + utils.GetOrmInReplace(lenArr) + `)`
|
|
|
- pars = append(pars, activityIds)
|
|
|
- listxActivity, e = models.GetCygxActivityList(condition, pars, 0, lenArr)
|
|
|
+ user, e := models.GetWxUserItemByUserId(userId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetWxUserItemByUserId" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取用户所在公司剩余的点
|
|
|
+ companyPointsNum, e := models.GetCompanyPoints(user.CompanyId)
|
|
|
if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
- err = errors.New("GetCygxActivityList,Err: " + e.Error())
|
|
|
+ err = errors.New("GetCompanyPoints, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- for _, v := range listxActivity {
|
|
|
- fmt.Println(v)
|
|
|
+ //获取需要添加的流水信息
|
|
|
+ var items []*models.CygxActivityPointsBill
|
|
|
+ item := new(models.CygxActivityPointsBill)
|
|
|
+ item.UserId = user.UserId
|
|
|
+ item.ActivityId = activityId
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.Mobile = user.Mobile
|
|
|
+ item.Email = user.Email
|
|
|
+ item.CompanyId = user.CompanyId
|
|
|
+ item.CompanyName = user.CompanyName
|
|
|
+ item.RealName = user.RealName
|
|
|
+ item.BillDetailed = -activityPointsSetDetail.UserPointsNum
|
|
|
+ item.RegisterPlatform = log.RegisterPlatform
|
|
|
+ item.AdminId = log.AdminId
|
|
|
+ item.ChartPermissionId = activityInfo.ChartPermissionId
|
|
|
+ item.DoType = 1
|
|
|
+ item.Content = activityInfo.ActivityName + "--报名"
|
|
|
+ item.Points = companyPointsNum - activityPointsSetDetail.UserPointsNum
|
|
|
+ items = append(items, item)
|
|
|
+
|
|
|
+ //更新对应机构的剩余点数
|
|
|
+ var itemCompanys []*models.CygxActivityPointsCompany
|
|
|
+ itemCompany := new(models.CygxActivityPointsCompany)
|
|
|
+ itemCompany.CompanyId = user.CompanyId
|
|
|
+ itemCompany.Points = item.Points
|
|
|
+ itemCompany.ModifyTime = time.Now()
|
|
|
+ itemCompanys = append(itemCompanys, itemCompany)
|
|
|
+
|
|
|
+ err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 2:用户取消报名
|
|
|
+func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPointsRedis) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ go utils.SendAlarmMsg("用户取消报名扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ activityId := log.ActivityId
|
|
|
+ userId := log.UserId
|
|
|
+
|
|
|
+ //获取活动是否扣点以及扣点规则明细
|
|
|
+ activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if activityPointsSetDetail == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
|
|
|
+ return // 如果不是报名即扣点的这种形式,那么就不做任何处理
|
|
|
}
|
|
|
+
|
|
|
+ activityInfo, e := models.GetAddActivityInfoById(activityId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetAddActivityInfoById" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ user, e := models.GetWxUserItemByUserId(userId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetWxUserItemByUserId" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取用户所在公司剩余的点
|
|
|
+ companyPointsNum, e := models.GetCompanyPoints(user.CompanyId)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCompanyPoints, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //获取需要添加的流水信息
|
|
|
+ var items []*models.CygxActivityPointsBill
|
|
|
+ item := new(models.CygxActivityPointsBill)
|
|
|
+ item.UserId = user.UserId
|
|
|
+ item.ActivityId = activityId
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.Mobile = user.Mobile
|
|
|
+ item.Email = user.Email
|
|
|
+ item.CompanyId = user.CompanyId
|
|
|
+ item.CompanyName = user.CompanyName
|
|
|
+ item.RealName = user.RealName
|
|
|
+ item.BillDetailed = activityPointsSetDetail.UserPointsNum
|
|
|
+ item.RegisterPlatform = log.RegisterPlatform
|
|
|
+ item.AdminId = log.AdminId
|
|
|
+ item.ChartPermissionId = activityInfo.ChartPermissionId
|
|
|
+ item.DoType = 2
|
|
|
+ item.Content = activityInfo.ActivityName + "--取消报名"
|
|
|
+ item.Points = companyPointsNum + activityPointsSetDetail.UserPointsNum
|
|
|
+ items = append(items, item)
|
|
|
+
|
|
|
+ //更新对应机构的剩余点数
|
|
|
+ var itemCompanys []*models.CygxActivityPointsCompany
|
|
|
+ itemCompany := new(models.CygxActivityPointsCompany)
|
|
|
+ itemCompany.CompanyId = user.CompanyId
|
|
|
+ itemCompany.Points = item.Points
|
|
|
+ itemCompany.ModifyTime = time.Now()
|
|
|
+ itemCompanys = append(itemCompanys, itemCompany)
|
|
|
+
|
|
|
+ err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
|
|
|
return
|
|
|
}
|