merchant.active.config.go 6.1 KB

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