card.go 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. package card
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "net/http"
  6. "spaceofcheng/services/controllers"
  7. cardModel "spaceofcheng/services/models/card"
  8. "spaceofcheng/services/models/model"
  9. "spaceofcheng/services/service/card"
  10. "spaceofcheng/services/utils"
  11. "strings"
  12. )
  13. // CardController 商品
  14. type CardController struct {
  15. serv *card.CardServ
  16. controllers.BaseController
  17. }
  18. // Constructor 初始化 Controller
  19. // @Title Constructor
  20. // @Description 初始化 Controller, 系统自动调用
  21. func (c *CardController) Constructor() {
  22. c.serv = card.NewCardServ(c.Context)
  23. }
  24. // ListByCase 获取卡列表
  25. func (c *CardController) ListByCase() {
  26. caseid := c.GetString("caseid")
  27. page, _ := c.GetInt("page")
  28. pagesize, _ := c.GetInt("pagesize")
  29. if page < 0 {
  30. page = 1
  31. }
  32. if pagesize <= 0 {
  33. pagesize = 10
  34. }
  35. sendtype := c.GetString("sendtype")
  36. usetype := c.GetString("usetype")
  37. usedid := c.GetString("usedid")
  38. list, total, err := c.serv.GetCardList(caseid, sendtype, usetype, usedid, page, pagesize)
  39. if err != nil {
  40. c.ResponseError(err)
  41. }
  42. c.ResponseJSON(map[string]interface{}{
  43. "list": list,
  44. "page": page,
  45. "pagesize": pagesize,
  46. "pagenum": total,
  47. })
  48. }
  49. // GetCardByIDForAdmin 获取卡
  50. // 管理端
  51. func (c *CardController) GetCardByIDForAdmin() {
  52. id := c.GetString(":id")
  53. if id == "" {
  54. c.ResponseError(errors.New("未指定卡"))
  55. }
  56. card, err := c.serv.GetCardByIDWithCheck(id)
  57. if err != nil {
  58. c.ResponseError(err)
  59. }
  60. c.ResponseJSON(map[string]interface{}{
  61. "Card": card,
  62. })
  63. }
  64. // GetCardByID 获取卡
  65. // 微信端
  66. func (c *CardController) GetCardByID() {
  67. id := c.GetString(":id")
  68. if id == "" {
  69. c.ResponseError(errors.New("未指定卡"))
  70. }
  71. card, err := c.serv.GetCardByID(id)
  72. if err != nil {
  73. c.ResponseError(err)
  74. }
  75. c.ResponseJSON(map[string]interface{}{
  76. "Card": card,
  77. })
  78. }
  79. // SaveCard 保存卡
  80. func (c *CardController) SaveCard() {
  81. jsnStr := c.GetString("info")
  82. if jsnStr == "" {
  83. c.ResponseError(errors.New("未接收到保存内容"))
  84. }
  85. card := cardModel.CardInfo{}
  86. if err := json.Unmarshal([]byte(jsnStr), &card); err != nil {
  87. utils.LogError("接收卡信息失败: " + err.Error())
  88. c.ResponseError(errors.New("接收参数失败"), http.StatusInternalServerError)
  89. }
  90. // TODO
  91. // 校验各字段不能为空
  92. // 入库
  93. card.CardId = ""
  94. if err := c.serv.SaveCard(&card); err != nil {
  95. c.ResponseError(err)
  96. }
  97. c.ResponseJSON(map[string]interface{}{
  98. "Card": card,
  99. })
  100. }
  101. // UpdateCard 更新卡
  102. func (c *CardController) UpdateCard() {
  103. jsnStr := c.GetString("info")
  104. if jsnStr == "" {
  105. c.ResponseError(errors.New("未接收到更新内容"))
  106. }
  107. id := c.GetString(":id")
  108. if id == "" {
  109. c.ResponseError(errors.New("未指定卡"))
  110. }
  111. card := cardModel.CardInfo{}
  112. if err := json.Unmarshal([]byte(jsnStr), &card); err != nil {
  113. utils.LogError("接收卡信息失败: " + err.Error())
  114. c.ResponseError(errors.New("接收参数失败"), http.StatusInternalServerError)
  115. }
  116. // TODO
  117. // 校验各字段不能为空
  118. // 入库
  119. card.CardId = id
  120. if err := c.serv.UpdateCard(&card); err != nil {
  121. c.ResponseError(err)
  122. }
  123. c.ResponseJSON(map[string]interface{}{
  124. "Card": card,
  125. })
  126. }
  127. // GiveCard 赠送卡
  128. func (c *CardController) GiveCard() {
  129. id := c.GetString(":id")
  130. if id == "" {
  131. c.ResponseError(errors.New("未指定卡"))
  132. }
  133. uids := c.GetString(":users")
  134. if uids == "" {
  135. c.ResponseError(errors.New("未指定赠送人"))
  136. }
  137. err := c.serv.GiveCard(id, strings.Split(uids, ","))
  138. if err != nil {
  139. c.ResponseError(err)
  140. }
  141. c.ResponseJSON("ok")
  142. }
  143. // GetCardWithCustomer 获取卡及领取信息
  144. func (c *CardController) GetCardWithCustomer() {
  145. cardid := c.GetString(":id")
  146. cardDetail, err := c.serv.GetCardWithCustomer(cardid)
  147. if err != nil {
  148. c.ResponseError(err)
  149. }
  150. c.ResponseJSON(cardDetail)
  151. }
  152. // GetCardByCustomer 获取我的卡信息
  153. func (c *CardController) GetCardByCustomer() {
  154. cards, err := c.serv.GetCardByCustomer()
  155. if err != nil {
  156. c.ResponseError(err)
  157. }
  158. c.ResponseJSON(cards)
  159. }
  160. // GetCustomerCardByID 获取我的卡详情
  161. func (c *CardController) GetCustomerCardByID() {
  162. id := c.GetString(":id")
  163. card, err := c.serv.GetCustomerCardByID(id)
  164. if err != nil {
  165. c.ResponseError(err)
  166. }
  167. c.ResponseJSON(card)
  168. }
  169. // GetCaseUsableCard 获取案场可用券
  170. func (c *CardController) GetCaseUsableCard() {
  171. page, _ := c.GetInt("page")
  172. pageSize, _ := c.GetInt("pagesize")
  173. cards, err := c.serv.GetCaseUsableCard(page, pageSize)
  174. if err != nil {
  175. c.ResponseError(err)
  176. }
  177. c.ResponseJSON(cards)
  178. }
  179. // ReceiveCard 卡领取
  180. func (c *CardController) ReceiveCard() {
  181. id := c.GetString(":id")
  182. saleid := c.GetString("saleid")
  183. serialcode := c.GetString("serialcode")
  184. cust := c.Context.Get("customer").(model.TaCustomer)
  185. if cust.Phone == "" {
  186. c.ResponseError(
  187. errors.New("用户未登录或绑定"),
  188. http.StatusNotAcceptable,
  189. )
  190. }
  191. err := c.serv.ReceiveCard(id, saleid, serialcode)
  192. if err != nil {
  193. c.ResponseError(err)
  194. }
  195. c.ResponseJSON("领取成功!")
  196. }
  197. // ChannelReceiveCard 渠道端卡领取
  198. func (c *CardController) ChannelReceiveCard() {
  199. id := c.GetString(":id")
  200. cust := c.Context.Get("customer").(model.TaCustomer)
  201. if cust.Phone == "" {
  202. c.ResponseError(
  203. errors.New("用户未登录或绑定"),
  204. http.StatusNotAcceptable,
  205. )
  206. }
  207. err := c.serv.ChannelReceiveCard(id)
  208. if err != nil {
  209. c.ResponseError(err)
  210. }
  211. c.ResponseJSON("领取成功!")
  212. }
  213. // GetCustomerCardByCustomerAndSale 获取我的卡信息
  214. func (c *CardController) GetCustomerCardByCustomerAndSale() {
  215. customerid := c.GetString(":id")
  216. page, _ := c.GetInt("page")
  217. pagesize, _ := c.GetInt("pagesize")
  218. cards, err := c.serv.GetCustomerCardByCustomerAndSale(customerid, page, pagesize)
  219. if err != nil {
  220. c.ResponseError(err)
  221. }
  222. c.ResponseJSON(cards)
  223. }
  224. func (c *CardController) GetSysCardList() {
  225. caseid := c.GetString(":caseId")
  226. cards, err := c.serv.GetSysCardList(caseid)
  227. if err != nil {
  228. c.ResponseError(err)
  229. }
  230. c.ResponseJSON(cards)
  231. }