|
@@ -9,6 +9,7 @@ import (
|
|
|
"duoduo/tools/app"
|
|
|
"encoding/base64"
|
|
|
"encoding/json"
|
|
|
+ "errors"
|
|
|
"fmt"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"github.com/shopspring/decimal"
|
|
@@ -445,3 +446,71 @@ func UpdateMerchantCard(c *gin.Context) {
|
|
|
|
|
|
app.OK(c, nil, app.Success)
|
|
|
}
|
|
|
+
|
|
|
+// 核销次数
|
|
|
+func CancelNumber(c *gin.Context) {
|
|
|
+ var inData models.CancelCardRequest
|
|
|
+ var sqlData shanghu.MerchantCard
|
|
|
+ var log shanghu.CancelLog
|
|
|
+ var qrMessage models.QRData
|
|
|
+ var clientPay shanghu.ClientPayTrans
|
|
|
+
|
|
|
+ err := c.ShouldBindJSON(&inData)
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 400, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err = json.Unmarshal([]byte(inData.QRMessage), &qrMessage)
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 400, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ clientPay.MerchantCardID = qrMessage.MerchantId
|
|
|
+ clientPay.ClientOpenID = qrMessage.ClientOpenId
|
|
|
+ clientInfo, err := clientPay.GetPayTransByOpenid()
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 400, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if clientInfo.ID == 0 {
|
|
|
+ app.Error(c, 200, errors.New("用户未购买此卡"), "用户未购买此卡")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ sqlData.ID = qrMessage.MerchantId
|
|
|
+ merchantInfo, err := sqlData.GetMerchantCard()
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ log.MerchantID = qrMessage.MerchantId
|
|
|
+ log.ClientOpenID = qrMessage.ClientOpenId
|
|
|
+ if log.GetNumber() >= merchantInfo.CancelNumber {
|
|
|
+ app.Error(c, 200, errors.New("卡已使用完,请重新购买"), "卡已使用完,请重新购买")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if merchantInfo.MerchantOpenID != inData.MerchantOpenId {
|
|
|
+ app.Error(c, 200, errors.New("核销商家与发卡商家不一致"), "核销商家与发卡商家不一致")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ log.MerchantID = qrMessage.MerchantId
|
|
|
+ log.ClientOpenID = qrMessage.ClientOpenId
|
|
|
+ log.MerchantOpenID = inData.MerchantOpenId
|
|
|
+ log.CreatedAt = time.Now()
|
|
|
+ log.UpdatedAt = time.Now()
|
|
|
+
|
|
|
+ _, err = log.Create()
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ app.OK(c, nil, "核销成功")
|
|
|
+
|
|
|
+}
|