| 
					
				 | 
			
			
				@@ -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, "核销成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |