merchant.card.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package shanghu
  2. import (
  3. "duoduo/apis/shanghu/models"
  4. "duoduo/models/shanghu"
  5. "duoduo/tools"
  6. "duoduo/tools/app"
  7. "encoding/json"
  8. "fmt"
  9. "github.com/gin-gonic/gin"
  10. "github.com/shopspring/decimal"
  11. "strconv"
  12. "time"
  13. )
  14. func CreateMerchantCard(c *gin.Context) {
  15. var inData models.CreateMerchantCardRequest
  16. var sqlData shanghu.MerchantCard
  17. err := c.ShouldBindJSON(&inData)
  18. if err != nil {
  19. app.Error(c, 400, err, err.Error())
  20. return
  21. }
  22. sqlData.CreatedAt = time.Now()
  23. sqlData.UpdatedAt = time.Now()
  24. jsStr, err := json.Marshal(inData.CardProjectData)
  25. if err != nil {
  26. app.Error(c, 400, err, "包含项目不能为空")
  27. return
  28. }
  29. //"json: cannot unmarshal string into Go struct field CreateMerchantCardRequest.inventory of type int64"
  30. //"json: cannot unmarshal bool into Go struct field CreateMerchantCardRequest.merchant_card_time of type string"
  31. //"json: cannot unmarshal string into Go struct field CreateMerchantCardRequest.inventory of type int64"
  32. sqlData.CardProjectData = string(jsStr)
  33. sqlData.CardPrice = inData.CardPrice
  34. sqlData.ActivityEndTime, err = tools.TimeToInt64(inData.ActivityEndTime, "2006-01-02")
  35. if err != nil {
  36. app.Error(c, 400, err, err.Error())
  37. return
  38. }
  39. sqlData.ActivityStartTime, err = tools.TimeToInt64(inData.ActivityStartTime, "2006-01-02")
  40. if err != nil {
  41. app.Error(c, 400, err, err.Error())
  42. return
  43. }
  44. sqlData.Inventory, err = strconv.ParseInt(inData.Inventory, 10, 64)
  45. if err != nil {
  46. app.Error(c, 400, err, err.Error())
  47. return
  48. }
  49. sqlData.MerchantCardTime, err = tools.TimeToInt64(inData.MerchantCardTime, "2006-01-02")
  50. if err != nil {
  51. app.Error(c, 400, err, err.Error())
  52. return
  53. }
  54. sqlData.MerchantOpenID = inData.MerchantOpenID
  55. sqlData.Picture = inData.Picture
  56. sqlData.QuotaNum, err = strconv.ParseInt(inData.QuotaNum, 10, 64)
  57. if err != nil {
  58. app.Error(c, 400, err, err.Error())
  59. return
  60. }
  61. sqlData.RebateRate, err = strconv.ParseInt(inData.RebateRate, 10, 64)
  62. if err != nil {
  63. app.Error(c, 400, err, err.Error())
  64. return
  65. }
  66. sqlData.UseRule = inData.UseRule
  67. sqlData.MerchantCardName = inData.MerchantCardName
  68. _, err = sqlData.Create()
  69. if err != nil {
  70. app.Error(c, 500, err, err.Error())
  71. return
  72. }
  73. app.OK(c, nil, app.Success)
  74. }
  75. func GetMerchantCard(c *gin.Context) {
  76. var inData models.GetMerchantCardRequest
  77. var outData models.GetMerchantCardReply
  78. var sqlData shanghu.MerchantCard
  79. var project []int64
  80. err := c.ShouldBindJSON(&inData)
  81. if err != nil {
  82. app.Error(c, 400, err, err.Error())
  83. return
  84. }
  85. sqlData.ID = inData.MerchantId
  86. merchantCard, err := sqlData.GetMerchantCard()
  87. if err != nil {
  88. app.Error(c, 500, err, err.Error())
  89. return
  90. }
  91. err = json.Unmarshal([]byte(merchantCard.CardProjectData), &project)
  92. if err != nil {
  93. app.Error(c, 500, err, err.Error())
  94. return
  95. }
  96. merchantCard.CardProjectData = ""
  97. for i := 0; i < len(project); i++ {
  98. var cardProject shanghu.MerchantCardProject
  99. cardProject.ID = project[i]
  100. projectInfo, err := cardProject.GetMerchantCardProject()
  101. if err != nil {
  102. app.Error(c, 500, err, err.Error())
  103. return
  104. }
  105. merchantCard.CardProjectData = merchantCard.CardProjectData + projectInfo.ProjectName + "x1 "
  106. }
  107. outData.CardProjectData = merchantCard.CardProjectData
  108. outData.MerchantCardName = merchantCard.MerchantCardName
  109. outData.MerchantCardTime = time.Unix(merchantCard.MerchantCardTime, 0).Format("2006-01-02")
  110. outData.ActivityEndTime = time.Unix(merchantCard.ActivityEndTime, 0).Format("2006-01-02")
  111. outData.ActivityStartTime = time.Unix(merchantCard.ActivityStartTime, 0).Format("2006-01-02")
  112. outData.Picture = merchantCard.Picture
  113. outData.UseRule = merchantCard.UseRule
  114. outData.QuotaNum = merchantCard.QuotaNum
  115. outData.Inventory = merchantCard.Inventory
  116. outData.RebateRate = merchantCard.RebateRate
  117. outData.CardPrice = merchantCard.CardPrice
  118. app.OK(c, outData, app.Success)
  119. }
  120. func MerchantCardList(c *gin.Context) {
  121. var inData models.MerchantCardListRequest
  122. var sqlData shanghu.MerchantCard
  123. err := c.ShouldBindJSON(&inData)
  124. if err != nil {
  125. app.Error(c, 400, err, err.Error())
  126. return
  127. }
  128. var pageSize = 10
  129. var pageIndex = 1
  130. if inData.PageSize != 0 {
  131. pageSize = inData.PageSize
  132. }
  133. if inData.PageIndex != 0 {
  134. pageIndex = inData.PageIndex
  135. }
  136. fmt.Println(inData.OpenId)
  137. sqlData.MerchantOpenID = inData.OpenId
  138. merchantCard, count, err := sqlData.GetOpenIdList(pageSize, pageIndex, inData.TypeList)
  139. if err != nil {
  140. app.Error(c, 500, err, err.Error())
  141. return
  142. }
  143. app.PageOK(c, merchantCard, count, pageIndex, pageSize, app.Success)
  144. }
  145. // c端获取卡信息
  146. func MerchantClientCardList(c *gin.Context) {
  147. var inData models.MerchantCardListRequest
  148. var sqlData shanghu.MerchantCard
  149. var outData []models.MerchantCardListReply
  150. err := c.ShouldBindJSON(&inData)
  151. if err != nil {
  152. app.Error(c, 400, err, err.Error())
  153. return
  154. }
  155. var pageSize = 10
  156. var pageIndex = 1
  157. if inData.PageSize != 0 {
  158. pageSize = inData.PageSize
  159. }
  160. if inData.PageIndex != 0 {
  161. pageIndex = inData.PageIndex
  162. }
  163. merchantCard, count, err := sqlData.ClientGetOpenIdList(pageSize, pageIndex, inData.TypeList)
  164. if err != nil {
  165. app.Error(c, 500, err, err.Error())
  166. return
  167. }
  168. for i := 0; i < len(merchantCard); i++ {
  169. var reply models.MerchantCardListReply
  170. reply.RebateRate = merchantCard[i].RebateRate
  171. reply.ID = merchantCard[i].ID
  172. reply.QuotaNum = merchantCard[i].QuotaNum
  173. reply.MerchantCardName = merchantCard[i].MerchantCardName
  174. reply.CardPrice = merchantCard[i].CardPrice
  175. priceDec, err := decimal.NewFromString(merchantCard[i].CardPrice)
  176. if err != nil {
  177. app.Error(c, 500, err, err.Error())
  178. return
  179. }
  180. reply.RebateAmount = priceDec.Mul(decimal.NewFromInt(merchantCard[i].RebateRate).Div(decimal.NewFromInt(100))).String()
  181. outData = append(outData, reply)
  182. }
  183. app.PageOK(c, outData, count, pageIndex, pageSize, app.Success)
  184. }
  185. func UpdateMerchantCard(c *gin.Context) {
  186. var inData models.UpdateMerchantCardRequest
  187. var sqlData shanghu.MerchantCard
  188. err := c.ShouldBindJSON(&inData)
  189. if err != nil {
  190. app.Error(c, 400, err, err.Error())
  191. return
  192. }
  193. sqlData.ID = inData.ID
  194. sqlData.QuotaNum = inData.QuotaNum
  195. sqlData.UseRule = inData.UseRule
  196. sqlData.Picture = inData.Picture
  197. sqlData.Inventory = inData.Inventory
  198. sqlData.ActivityStartTime = inData.ActivityStartTime
  199. sqlData.ActivityEndTime = inData.ActivityEndTime
  200. err = sqlData.UpdateMerchantCard()
  201. if err != nil {
  202. app.Error(c, 400, err, err.Error())
  203. return
  204. }
  205. app.OK(c, nil, app.Success)
  206. }