merchant.active.config.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package shanghu
  2. import (
  3. "duoduo/apis/shanghu/models"
  4. "duoduo/models/shanghu"
  5. "duoduo/tools"
  6. "duoduo/tools/app"
  7. "errors"
  8. "github.com/gin-gonic/gin"
  9. "time"
  10. )
  11. // 一个活动对应一个抽奖,一个抽奖对应多个奖品
  12. // 一个活动对应多个拼团,一个拼团对应一个张主图,一个拼团对应多个商品(多个商品是为了核销)
  13. func ActiveConfigCreate(c *gin.Context) {
  14. var inData models.CreateActiveConfigRequest
  15. var sqlData shanghu.MerchantActiveConfig
  16. var drawProduct shanghu.MerchantActiveDrawProduct
  17. err := c.ShouldBindJSON(&inData)
  18. if err != nil {
  19. app.Error(c, 400, err, err.Error())
  20. return
  21. }
  22. if inData.DrawMode != 0 {
  23. if len(inData.DrawId) <= 0 {
  24. app.Error(c, 500, errors.New("奖品未配置"), "奖品未配置")
  25. return
  26. }
  27. //校验总概率 总概率相加不能大于100
  28. drawList, _, err := drawProduct.GetDrawProductListById(inData.DrawId)
  29. if err != nil {
  30. app.Error(c, 500, err, err.Error())
  31. return
  32. }
  33. sumOdds := 0
  34. for _, v := range drawList {
  35. sumOdds = sumOdds + v.DrawOdds
  36. }
  37. if sumOdds != 100 {
  38. app.Error(c, 500, errors.New("配置的总中奖率不满100%"), "配置的总中奖率不满100%")
  39. return
  40. }
  41. }
  42. if inData.GroupBuyMode == 0 && inData.DrawMode == 0 {
  43. app.Error(c, 500, errors.New("请选择抽奖与开团"), "请选择抽奖与开团")
  44. return
  45. }
  46. sqlData.ActivityEndTime, err = tools.TimeToInt64(inData.ActivityEndTime, "2006-01-02")
  47. if err != nil {
  48. app.Error(c, 400, err, err.Error())
  49. return
  50. }
  51. sqlData.ActivityStartTime, err = tools.TimeToInt64(inData.ActivityStartTime, "2006-01-02")
  52. if err != nil {
  53. app.Error(c, 400, err, err.Error())
  54. return
  55. }
  56. sqlData.ActiveName = inData.ActiveName
  57. sqlData.MerchantOpenID = inData.MerchantOpenID
  58. sqlData.CreatedAt = time.Now()
  59. sqlData.UpdatedAt = time.Now()
  60. sqlData.ConfigMode = 1
  61. sqlData.DrawOneBiZhong = inData.DrawOneBiZhong
  62. sqlData.DrawMode = inData.DrawMode
  63. sqlData.GroupBuyMode = inData.GroupBuyMode
  64. sqlData.GroupBuyUrl = inData.GroupBuyUrl
  65. sqlData.GroupBuy = `{}`
  66. sqlData.DrawProduct = `{}`
  67. configData, err := sqlData.Create()
  68. if err != nil {
  69. app.Error(c, 500, err, err.Error())
  70. return
  71. }
  72. for _, v := range inData.DrawId {
  73. var drawData shanghu.MerchantActiveDrawProduct
  74. drawData.ActiveConfigID = configData.ID
  75. err = drawData.UpdateConfigId(v)
  76. if err != nil {
  77. app.Error(c, 500, err, err.Error())
  78. return
  79. }
  80. }
  81. for _, v := range inData.GroupBuyId {
  82. var groupBuy shanghu.MerchantActiveGroupBuy
  83. groupBuy.ActiveConfigID = configData.ID
  84. err = groupBuy.UpdateConfigId(v)
  85. if err != nil {
  86. app.Error(c, 500, err, err.Error())
  87. return
  88. }
  89. }
  90. app.OK(c, nil, app.Success)
  91. }
  92. // 活动配置信息
  93. func ActiveConfigInfo(c *gin.Context) {
  94. var inData models.ActiveConfigRequest
  95. var sqlData shanghu.MerchantActiveConfig
  96. var outData models.ActiveConfigReply
  97. var drawInfoSql shanghu.MerchantActiveDrawProduct
  98. var groupBuy shanghu.MerchantActiveGroupBuy
  99. err := c.ShouldBindJSON(&inData)
  100. if err != nil {
  101. app.Error(c, 400, err, err.Error())
  102. return
  103. }
  104. sqlData.MerchantOpenID = inData.MerchantOpenID
  105. sqlData.ID = inData.ActiveConfigId
  106. configInfo, err := sqlData.GetConfigInfoById()
  107. if err != nil {
  108. app.Error(c, 500, err, err.Error())
  109. return
  110. }
  111. outData.GroupBuyMode = configInfo.GroupBuyMode
  112. outData.DrawMode = configInfo.DrawMode
  113. outData.GroupBuyUrl = configInfo.GroupBuyUrl
  114. outData.DrawOneBiZhong = configInfo.DrawOneBiZhong
  115. outData.ActivityEndTime = tools.TimeToStr(configInfo.ActivityEndTime)
  116. outData.ActivityStartTime = tools.TimeToStr(configInfo.ActivityStartTime)
  117. outData.ActiveName = configInfo.ActiveName
  118. //中奖商品
  119. drawInfoSql.ActiveConfigID = configInfo.ID
  120. drawInfo, _, err := drawInfoSql.GetDrawProductList()
  121. if err != nil {
  122. app.Error(c, 500, err, err.Error())
  123. return
  124. }
  125. for _, v := range drawInfo {
  126. var drawProduct models.DrawProduct
  127. drawProduct.DrawProductName = v.DrawProductName
  128. drawProduct.DrawUrl = v.DrawUrl
  129. drawProduct.DrawOdds = v.DrawOdds
  130. drawProduct.IsPrize = v.IsPrize
  131. drawProduct.TotalStock = v.TotalStock
  132. drawProduct.Stock = v.Stock
  133. outData.DrawProduct = append(outData.DrawProduct, drawProduct)
  134. }
  135. // 查询拼团列表
  136. groupBuy.ActiveConfigID = configInfo.ID
  137. groupBuyInfoList, _, err := groupBuy.GetGroupBuyList()
  138. if err != nil {
  139. app.Error(c, 500, err, err.Error())
  140. return
  141. }
  142. for _, v := range groupBuyInfoList {
  143. var groupBuyInfo models.DrawGroupBuy
  144. var groupBuyProject shanghu.MerchantActiveGroupByProject
  145. groupBuyInfo.GroupBuyName = v.GroupBuyName
  146. groupBuyInfo.GroupBuyMode = v.GroupBuyMode
  147. groupBuyInfo.GroupBuyUrl = v.GroupBuyUrl
  148. groupBuyInfo.GroupBuyThreeNum = v.GroupBuyThreeNum
  149. groupBuyInfo.GroupBuyThreePrice = v.GroupBuyThreePrice
  150. groupBuyInfo.GroupBuyFourNum = v.GroupBuyFourNum
  151. groupBuyInfo.GroupBuyFourPrice = v.GroupBuyFourPrice
  152. groupBuyInfo.GroupBuyTwoNum = v.GroupBuyTwoNum
  153. groupBuyInfo.GroupBuyTwoPrice = v.GroupBuyTwoPrice
  154. groupBuyInfo.GroupBuyOneNum = v.GroupBuyOneNum
  155. groupBuyInfo.GroupBuyOnePrice = v.GroupBuyOnePrice
  156. groupBuyInfo.MerchantOpenID = v.MerchantOpenID
  157. groupBuyInfo.OriginalPrice = v.OriginalPrice
  158. groupBuyInfo.RebateRate = v.RebateRate
  159. groupBuyProject.GroupBuyID = v.ID
  160. projectList, _, err := groupBuyProject.GetGroupBuyProjectList()
  161. if err != nil {
  162. app.Error(c, 500, err, err.Error())
  163. return
  164. }
  165. for _, v := range projectList {
  166. var groupBuyProjectInfo models.GroupBuyProject
  167. groupBuyProjectInfo.ProjectName = v.ProjectName
  168. groupBuyProjectInfo.CancelNum = v.CancelNum
  169. groupBuyInfo.GroupBuyProject = append(groupBuyInfo.GroupBuyProject, groupBuyProjectInfo)
  170. }
  171. outData.DrawGroupBuy = append(outData.DrawGroupBuy, groupBuyInfo)
  172. }
  173. app.OK(c, outData, app.Success)
  174. }
  175. // 活动列表
  176. func ActiveConfigList(c *gin.Context) {
  177. var inData models.ActiveConfigListRequest
  178. var sqlData shanghu.MerchantActiveConfig
  179. var outData []models.ActiveConfigListReply
  180. err := c.ShouldBindJSON(&inData)
  181. if err != nil {
  182. app.Error(c, 400, err, err.Error())
  183. return
  184. }
  185. sqlData.MerchantOpenID = inData.OpenId
  186. var pageSize = 10
  187. var pageIndex = 1
  188. if inData.PageSize != 0 {
  189. pageSize = inData.PageSize
  190. }
  191. if inData.PageIndex != 0 {
  192. pageIndex = inData.PageIndex
  193. }
  194. activeConfigList, count, err := sqlData.GetActiveConfigList(pageSize, pageIndex)
  195. if err != nil {
  196. app.Error(c, 500, err, err.Error())
  197. return
  198. }
  199. for _, v := range activeConfigList {
  200. var activeConfig models.ActiveConfigListReply
  201. activeConfig.ActivityStart = tools.TimeToStr(v.ActivityStartTime)
  202. activeConfig.ActivityEnd = tools.TimeToStr(v.ActivityEndTime)
  203. activeConfig.ActiveName = v.ActiveName
  204. activeConfig.CreatedAt = v.CreatedAt.Format(time.DateTime)
  205. outData = append(outData, activeConfig)
  206. }
  207. app.PageOK(c, outData, count, pageIndex, pageSize, app.Success)
  208. }