|
@@ -150,6 +150,78 @@ func GetMerchantCard(c *gin.Context) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+func GetMerchantCancelInfo(c *gin.Context) {
|
|
|
+ var inData models.GetMerchantCancelInfoRequest
|
|
|
+ var outData models.GetMerchantCardInfoReply
|
|
|
+ var qrMessage models.QRData
|
|
|
+ var merchantCardData shanghu.MerchantCard
|
|
|
+ var clientPay shanghu.ClientPayTrans
|
|
|
+ var project []int64
|
|
|
+ var cancelNum shanghu.CancelLog
|
|
|
+
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+ outData.PayTime = clientInfo.PayTime.Format(time.DateTime)
|
|
|
+
|
|
|
+ merchantCardData.ID = qrMessage.MerchantId
|
|
|
+ merchantInfo, err := merchantCardData.GetMerchantCard()
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ cancelNum.ClientOpenID = qrMessage.ClientOpenId
|
|
|
+ cancelNum.MerchantID = qrMessage.MerchantId
|
|
|
+
|
|
|
+ outData.MerchantCardName = merchantInfo.MerchantCardName
|
|
|
+ outData.MerchantCardTime = tools.TimeToStr(merchantInfo.MerchantCardTime)
|
|
|
+ outData.TotalCancelNumber = merchantInfo.CancelNumber
|
|
|
+ outData.CancelNumber = merchantInfo.CancelNumber - cancelNum.GetNumber()
|
|
|
+
|
|
|
+ err = json.Unmarshal([]byte(merchantInfo.CardProjectData), &project)
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for i := 0; i < len(project); i++ {
|
|
|
+ var cardProject shanghu.MerchantCardProject
|
|
|
+ var cardProjectInfo models.CardProjectInfo
|
|
|
+ cardProject.ID = project[i]
|
|
|
+
|
|
|
+ projectInfo, err := cardProject.GetMerchantCardProject()
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ cardProjectInfo.ProjectUnit = projectInfo.ProjectUnit
|
|
|
+ cardProjectInfo.ProjectName = projectInfo.ProjectName
|
|
|
+ cardProjectInfo.ProjectUnitPrice = projectInfo.ProjectUnitPrice
|
|
|
+ outData.CardProjectData = append(outData.CardProjectData, cardProjectInfo)
|
|
|
+ }
|
|
|
+
|
|
|
+ app.OK(c, outData, app.Success)
|
|
|
+}
|
|
|
+
|
|
|
func GetMerchantCanvasCard(c *gin.Context) {
|
|
|
var inData models.GetMerchantCardRequest
|
|
|
var outData models.GetMerchantCanvasCardReply
|
|
@@ -634,3 +706,80 @@ func CancelNumber(c *gin.Context) {
|
|
|
app.OK(c, nil, "核销成功")
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+// 核销 v2
|
|
|
+func CancelNumberV2(c *gin.Context) {
|
|
|
+ var inData models.CancelCardV2Request
|
|
|
+ var sqlData shanghu.MerchantCard
|
|
|
+ var log shanghu.CancelLog
|
|
|
+ var cancelLog []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
|
|
|
+ }
|
|
|
+
|
|
|
+ if inData.Number <= 0 {
|
|
|
+ app.Error(c, 400, errors.New("核销次数不能为0"), "核销次数不能为0")
|
|
|
+ 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, 500, 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()+inData.Number >= merchantInfo.CancelNumber {
|
|
|
+ app.Error(c, 500, errors.New("剩余核销次数不够,请重新购买"), "剩余核销次数不够,请重新购买")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if merchantInfo.MerchantOpenID != inData.MerchantOpenId {
|
|
|
+ app.Error(c, 500, errors.New("核销商家与发卡商家不一致"), "核销商家与发卡商家不一致")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for i := 0; i < inData.Number; i++ {
|
|
|
+ log.MerchantID = qrMessage.MerchantId
|
|
|
+ log.ClientOpenID = qrMessage.ClientOpenId
|
|
|
+ log.MerchantOpenID = inData.MerchantOpenId
|
|
|
+ log.CreatedAt = time.Now()
|
|
|
+ log.UpdatedAt = time.Now()
|
|
|
+ cancelLog = append(cancelLog, log)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = log.CreateBatches(cancelLog)
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ app.OK(c, nil, "核销成功")
|
|
|
+
|
|
|
+}
|