merchant.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package shanghu
  2. import (
  3. "duoduo/apis/shanghu/models"
  4. "duoduo/models/shanghu"
  5. "duoduo/tools/app"
  6. "github.com/gin-gonic/gin"
  7. "time"
  8. )
  9. const rechargeUrl = "http://lingyang.shisanmiao.com/shanghuka/WechatIMG5489.jpeg"
  10. func CreateMerchant(c *gin.Context) {
  11. var inData models.CreateMerchantRequest
  12. var sqlData shanghu.Merchant
  13. err := c.ShouldBindJSON(&inData)
  14. if err != nil {
  15. app.Error(c, 400, err, err.Error())
  16. return
  17. }
  18. sqlData.OpenId = inData.OpenId
  19. merchant, err := sqlData.GetMerchant()
  20. if err != nil && err.Error() != "record not found" {
  21. app.Error(c, 500, err, err.Error())
  22. return
  23. }
  24. if merchant.ID > 0 {
  25. app.OK(c, nil, app.Success)
  26. return
  27. }
  28. sqlData.CreatedAt = time.Now()
  29. sqlData.UpdatedAt = time.Now()
  30. sqlData.MerchantName = inData.MerchantName
  31. sqlData.Area = inData.Area
  32. sqlData.Address = inData.Address
  33. sqlData.BusinessHours = inData.BusinessHours
  34. sqlData.BusinessLicenseUrl = inData.BusinessLicenseUrl
  35. sqlData.Consumption = inData.Consumption
  36. sqlData.Contacts = inData.Contacts
  37. sqlData.DoorHeaderUrl = inData.DoorHeaderUrl
  38. sqlData.Industry = inData.Industry
  39. sqlData.IndustryCategory = inData.IndustryCategory
  40. sqlData.Iphone = inData.Iphone
  41. sqlData.NumberPlate = inData.NumberPlate
  42. sqlData.OpenId = inData.OpenId
  43. sqlData.RechargeUrl = inData.RechargeUrl
  44. _, err = sqlData.Create()
  45. if err != nil {
  46. app.Error(c, 500, err, err.Error())
  47. return
  48. }
  49. app.OK(c, nil, app.Success)
  50. }
  51. func GetMerchant(c *gin.Context) {
  52. var inData models.GetMerchantRequest
  53. var sqlData shanghu.Merchant
  54. err := c.ShouldBindJSON(&inData)
  55. if err != nil {
  56. app.Error(c, 400, err, err.Error())
  57. return
  58. }
  59. sqlData.OpenId = inData.OpenId
  60. merchant, err := sqlData.GetMerchant()
  61. if err != nil {
  62. app.Error(c, 500, err, err.Error())
  63. return
  64. }
  65. app.OK(c, merchant, app.Success)
  66. }
  67. func MerchantList(c *gin.Context) {
  68. var inData models.MerchantListRequest
  69. var sqlData shanghu.Merchant
  70. err := c.ShouldBindJSON(&inData)
  71. if err != nil {
  72. app.Error(c, 400, err, err.Error())
  73. return
  74. }
  75. var pageSize = 10
  76. var pageIndex = 1
  77. if inData.PageSize != 0 {
  78. pageSize = inData.PageSize
  79. }
  80. if inData.PageIndex != 0 {
  81. pageIndex = inData.PageIndex
  82. }
  83. sqlData.NumberPlate = inData.OpenId
  84. merchant, count, err := sqlData.GetOpenIdList(pageSize, pageIndex)
  85. if err != nil {
  86. app.Error(c, 500, err, err.Error())
  87. return
  88. }
  89. app.PageOK(c, merchant, count, pageIndex, pageSize, app.Success)
  90. }
  91. func UpdateMerchant(c *gin.Context) {
  92. var inData models.UpdateMerchantRequest
  93. var sqlData shanghu.Merchant
  94. err := c.ShouldBindJSON(&inData)
  95. if err != nil {
  96. app.Error(c, 400, err, err.Error())
  97. return
  98. }
  99. sqlData.ID = inData.ID
  100. sqlData.MerchantName = inData.MerchantName
  101. sqlData.Area = inData.Area
  102. sqlData.Address = inData.Address
  103. sqlData.BusinessHours = inData.BusinessHours
  104. sqlData.BusinessLicenseUrl = inData.BusinessLicenseUrl
  105. sqlData.Consumption = inData.Consumption
  106. sqlData.Contacts = inData.Contacts
  107. sqlData.DoorHeaderUrl = inData.DoorHeaderUrl
  108. sqlData.Industry = inData.Industry
  109. sqlData.IndustryCategory = inData.IndustryCategory
  110. sqlData.Iphone = inData.Iphone
  111. sqlData.NumberPlate = inData.NumberPlate
  112. sqlData.RechargeUrl = inData.RechargeUrl
  113. err = sqlData.UpdateMerchant()
  114. if err != nil {
  115. app.Error(c, 400, err, err.Error())
  116. return
  117. }
  118. app.OK(c, nil, app.Success)
  119. }
  120. func GetRechargeUrl(c *gin.Context) {
  121. var inData models.GetRechargeRequest
  122. var outData models.GetRechargeReply
  123. var sqlData shanghu.Merchant
  124. var paySql shanghu.ClientPayTrans
  125. var card shanghu.MerchantCard
  126. err := c.ShouldBindJSON(&inData)
  127. if err != nil {
  128. app.Error(c, 400, err, err.Error())
  129. return
  130. }
  131. //查询c端用户最近的交易记录 未查到直接展示默认url
  132. paySql.ClientOpenID = inData.OpenId
  133. payInfo, err := paySql.GetPayTransByOpenId()
  134. if err != nil {
  135. outData.RechargeUrl = rechargeUrl
  136. app.OK(c, outData, app.Success)
  137. return
  138. }
  139. //根据 card-id 查询商家id
  140. card.ID = payInfo.MerchantCardID
  141. cardInfo, err := card.GetMerchantCard()
  142. if err != nil {
  143. outData.RechargeUrl = rechargeUrl
  144. app.OK(c, outData, app.Success)
  145. return
  146. }
  147. //根据商家id查询配置
  148. sqlData.OpenId = cardInfo.MerchantOpenID
  149. merchant, err := sqlData.GetMerchant()
  150. if err != nil {
  151. outData.RechargeUrl = rechargeUrl
  152. app.OK(c, outData, app.Success)
  153. return
  154. }
  155. if merchant.RechargeUrl == "" {
  156. outData.RechargeUrl = rechargeUrl
  157. } else {
  158. outData.RechargeUrl = merchant.RechargeUrl
  159. }
  160. app.OK(c, outData, app.Success)
  161. }