services.go 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. package bidderPlan
  2. import (
  3. . "app.yhyue.com/moapp/jybase/api"
  4. "app.yhyue.com/moapp/jybase/go-xweb/xweb"
  5. "app.yhyue.com/moapp/message/handler/activity"
  6. "encoding/json"
  7. "fmt"
  8. "github.com/gogf/gf/v2/util/gconv"
  9. "log"
  10. "time"
  11. )
  12. // Activity BidderPlan 投标人专属免费计划
  13. type Activity struct {
  14. *xweb.Action
  15. period xweb.Mapper `xweb:"/membershipDay/period"` //活动周期
  16. schedule xweb.Mapper `xweb:"/membershipDay/schedule"` //活动进度
  17. receive xweb.Mapper `xweb:"/membershipDay/receive"` //领取奖励
  18. //其他
  19. doShare xweb.Mapper `xweb:"/membershipDay/doShare"` //分享
  20. //预热-每日福利
  21. getDailyBoonDetail xweb.Mapper `xweb:"/membershipDay/getDailyBoonDetail"` //查询每日福利余额
  22. getDailyBoonSVip xweb.Mapper `xweb:"/membershipDay/getDailyBoonSVip"` //获取限量vip
  23. //活动领券
  24. lotteryList xweb.Mapper `xweb:"/membershipDay/lotteryList"` //活动券列表
  25. getLottery xweb.Mapper `xweb:"/membershipDay/getLottery"` //领取优惠券
  26. //22双十一活动
  27. questionnaire xweb.Mapper `xweb:"/membershipDay/questionnaire"` //预热活动问卷
  28. winnerInfo xweb.Mapper `xweb:"/membershipDay/winnerInfo"` //当日中奖人信息
  29. }
  30. // WinnerInfo 当日中奖信息
  31. func (act *Activity) WinnerInfo() {
  32. userId := gconv.String(act.GetSession("userId"))
  33. rData, errMsg := func() (map[string]interface{}, error) {
  34. return activity.MembershipDay.WinnerInfo(), nil
  35. }()
  36. if errMsg != nil {
  37. log.Printf("Activity WinnerInfo %s error:%s\n", userId, errMsg.Error())
  38. }
  39. act.ServeJson(NewResult(rData, errMsg))
  40. }
  41. // 预热活动 问卷提交
  42. // url:/jyActivity/membershipDay/questionnaire
  43. func (act *Activity) Questionnaire() {
  44. userId := gconv.String(act.GetSession("userId"))
  45. phone := gconv.String(act.Session().Get("s_phone"))
  46. rData, errMsg := func() (bool, error) {
  47. reqParam := map[string]interface{}{}
  48. err := json.Unmarshal(act.Body(), &reqParam)
  49. log.Println(err, "------", reqParam)
  50. if err != nil || len(reqParam) == 0 {
  51. return false, fmt.Errorf("请求参数异常")
  52. }
  53. //提交答案
  54. answers := gconv.String(reqParam["answers"])
  55. return activity.MembershipDay.Questionnaire(userId, phone, answers) == nil, nil
  56. }()
  57. if errMsg != nil {
  58. log.Printf("Activity Questionnaire %s error:%s\n", userId, errMsg.Error())
  59. }
  60. act.ServeJson(NewResult(rData, errMsg))
  61. }
  62. // Period 活动周期
  63. // url:/jyActivity/bidderPlan/period
  64. func (act *Activity) Period() {
  65. userId := gconv.String(act.GetSession("userId"))
  66. rData, errMsg := func() (map[string]interface{}, error) {
  67. reqParam := map[string]interface{}{}
  68. json.Unmarshal(act.Body(), &reqParam)
  69. //先满足双十一活动
  70. if from := gconv.String(reqParam["from"]); from == "doubleEleven" && activity.MembershipDay.DoubleEleven {
  71. return map[string]interface{}{
  72. "before": activity.MembershipDay.T1.Unix(), //预热开始时间
  73. "clock": activity.MembershipDay.DailyClock, //预热活动每天开抢时间
  74. "start": activity.MembershipDay.T2.Unix(), //活动开始
  75. "end": activity.MembershipDay.Ed.Unix(), //活动结束
  76. "now": time.Now().Unix(), //服务器当前时间戳
  77. }, nil
  78. }
  79. return map[string]interface{}{
  80. "before": 1651420799, //预热开始时间
  81. "clock": activity.MembershipDay.DailyClock, //预热活动每天开抢时间
  82. "start": 1651420799, //活动开始
  83. "end": 1651420799, //活动结束
  84. "now": time.Now().Unix(), //服务器当前时间戳
  85. }, nil
  86. }()
  87. if errMsg != nil {
  88. log.Printf("Activity BidderPlan Schedule %s error:%s\n", userId, errMsg.Error())
  89. }
  90. act.ServeJson(NewResult(rData, errMsg))
  91. }
  92. // Schedule 活动进度
  93. // url /jyActivity/bidderPlan/schedule
  94. func (act *Activity) Schedule() {
  95. userId := gconv.String(act.GetSession("userId"))
  96. rData, errMsg := func() (map[string]interface{}, error) {
  97. //校验是否达标
  98. return map[string]interface{}{
  99. "nowNum": activity.MembershipDay.GetSchedule(userId), //当前活动进度
  100. "schedule": map[int]int{
  101. 1000: activity.MembershipDay.GetScheduleQuery(userId, 1000),
  102. 1500: activity.MembershipDay.GetScheduleQuery(userId, 1500),
  103. },
  104. "missions": map[string]int{
  105. "buyvip": activity.MembershipDay.MissionsSVipBuyQuery(userId),
  106. "invite": activity.MembershipDay.MissionsInviteQuery(userId),
  107. "share": activity.MembershipDay.MissionsShareQuery(userId),
  108. },
  109. }, nil
  110. }()
  111. if errMsg != nil {
  112. log.Printf("Activity BidderPlan Schedule %s error:%s\n", userId, errMsg.Error())
  113. }
  114. act.ServeJson(NewResult(rData, errMsg))
  115. }
  116. // Receive 领取奖励
  117. // url: /jyActivity/bidderPlan/receive
  118. func (act *Activity) Receive() {
  119. userId := gconv.String(act.GetSession("userId"))
  120. rData, errMsg := func() (bool, error) {
  121. //连点处理
  122. if !activity.MembershipDay.FastClickCheck(userId) {
  123. return false, fmt.Errorf("操作频繁")
  124. }
  125. reqParam := map[string]interface{}{}
  126. if err := json.Unmarshal(act.Body(), &reqParam); err != nil || len(reqParam) == 0 {
  127. return false, fmt.Errorf("请求参数异常")
  128. }
  129. //校验是否达标
  130. t := gconv.String(reqParam["type"])
  131. var err error
  132. if t == "mission" { //任务奖励
  133. switch gconv.String(reqParam["value"]) {
  134. case "buyvip":
  135. err = activity.MembershipDay.MissionsSVipBuyGiven(userId)
  136. case "invite":
  137. err = activity.MembershipDay.MissionsInviteGiven(userId)
  138. case "share":
  139. err = activity.MembershipDay.MissionsShareGiven(userId)
  140. default:
  141. return false, fmt.Errorf("未知请求")
  142. }
  143. } else { //活动进度额外奖励
  144. err = activity.MembershipDay.ScheduleGiven(userId, gconv.Int(reqParam["value"]))
  145. }
  146. if err != nil {
  147. return false, err
  148. }
  149. return true, nil
  150. }()
  151. if errMsg != nil {
  152. log.Printf("Activity BidderPlan Receive %s error:%s\n", userId, errMsg.Error())
  153. }
  154. act.ServeJson(NewResult(rData, errMsg))
  155. }
  156. // DoShare 分享完成接口
  157. func (act *Activity) DoShare() {
  158. userId := gconv.String(act.GetSession("userId"))
  159. rData, errMsg := func() (bool, error) {
  160. err := activity.MembershipDay.ShareFinish(userId)
  161. if err != nil {
  162. return false, err
  163. }
  164. return true, nil
  165. }()
  166. if errMsg != nil {
  167. log.Printf("Activity BidderPlan DoShare %s error:%s\n", userId, errMsg.Error())
  168. }
  169. act.ServeJson(NewResult(rData, errMsg))
  170. }
  171. // GetDailyBoonDetail 预热福利-查询每日余额
  172. func (act *Activity) GetDailyBoonDetail() {
  173. userId := gconv.String(act.GetSession("userId"))
  174. rData, errMsg := func() (map[string]interface{}, error) {
  175. has, todayBalance, registerBool, _, err := activity.MembershipDay.GetDailyBoonDetail(userId)
  176. if err != nil {
  177. return nil, err
  178. }
  179. return map[string]interface{}{
  180. "got": has,
  181. "total": todayBalance,
  182. "registerBool": registerBool, //是否是活动允许内的注册用户
  183. }, nil
  184. }()
  185. if errMsg != nil {
  186. log.Printf("Activity BidderPlan GetDailyBoonDetail %s error:%s\n", userId, errMsg.Error())
  187. }
  188. act.ServeJson(NewResult(rData, errMsg))
  189. }
  190. // GetDailyBoonSVip 预热福利-领取超级订阅
  191. func (act *Activity) GetDailyBoonSVip() {
  192. userId := gconv.String(act.GetSession("userId"))
  193. rData, errMsg := func() (bool, error) {
  194. if !activity.MembershipDay.FastClickCheck(userId) {
  195. return false, fmt.Errorf("操作频繁")
  196. }
  197. if err := activity.MembershipDay.GetDailyBoonSVip(userId); err != nil {
  198. return false, err
  199. }
  200. return true, nil
  201. }()
  202. if errMsg != nil {
  203. log.Printf("Activity BidderPlan GetDailyBoonSVip %s error:%s\n", userId, errMsg.Error())
  204. }
  205. act.ServeJson(NewResult(rData, errMsg))
  206. }
  207. // LotteryList 活动券列表
  208. func (act *Activity) LotteryList() {
  209. userId := gconv.String(act.GetSession("userId"))
  210. rData, errMsg := func() ([]activity.LotteryDetail, error) {
  211. return activity.MembershipDay.GetActivityLotteryList(userId)
  212. }()
  213. if errMsg != nil {
  214. log.Printf("Activity BidderPlan LotteryDetail %s error:%s\n", userId, errMsg.Error())
  215. }
  216. act.ServeJson(NewResult(rData, errMsg))
  217. }
  218. // GetLottery 领取活动券
  219. func (act *Activity) GetLottery() {
  220. userId := gconv.String(act.GetSession("userId"))
  221. rData, errMsg := func() (bool, error) {
  222. name := gconv.String(act.Session().Get("s_nickname"))
  223. reqParam := map[string]interface{}{}
  224. if err := json.Unmarshal(act.Body(), &reqParam); err != nil || len(reqParam) == 0 {
  225. return false, fmt.Errorf("请求参数异常")
  226. }
  227. lotteryIds := gconv.String(reqParam["lotteryIds"])
  228. if lotteryIds == "" {
  229. return false, fmt.Errorf("无选择卡券")
  230. }
  231. err := activity.MembershipDay.GetLottery(userId, name, lotteryIds)
  232. if err != nil {
  233. return false, err
  234. }
  235. return true, nil
  236. }()
  237. if errMsg != nil {
  238. log.Printf("Activity BidderPlan GetLottery %s error:%s\n", userId, errMsg.Error())
  239. }
  240. act.ServeJson(NewResult(rData, errMsg))
  241. }