|
@@ -326,6 +326,11 @@ func GroupBuyCancel(c *gin.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if transInfo.AccountStatus == shanghu.ClientActivePayTransAccountStatusSettlePending {
|
|
|
+ app.Error(c, 500, errors.New("正在分账中"), "正在分账中")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
//查看核销次数
|
|
|
//是否可以核销,默认不可以核销,只要有一个可以核销就为true
|
|
|
isCancel := false
|
|
@@ -345,8 +350,8 @@ func GroupBuyCancel(c *gin.Context) {
|
|
|
isCancel = true
|
|
|
for i := 0; i < projectInfo.CancelNum; i++ {
|
|
|
var activeCancelLogInfo shanghu.ActiveCancelLog
|
|
|
- activeCancelLogInfo.ActiveConfigID = payTrans.ActiveConfigID
|
|
|
- activeCancelLogInfo.ClientOpenID = payTrans.ClientOpenID
|
|
|
+ activeCancelLogInfo.ActiveConfigID = transInfo.ActiveConfigID
|
|
|
+ activeCancelLogInfo.ClientOpenID = transInfo.ClientOpenID
|
|
|
activeCancelLogInfo.MerchantOpenID = inData.OpenId
|
|
|
activeCancelLogInfo.GroupByProjectID = v.ID
|
|
|
activeCancelLogInfo.CreatedAt = time.Now()
|
|
@@ -364,7 +369,7 @@ func GroupBuyCancel(c *gin.Context) {
|
|
|
}
|
|
|
|
|
|
// 分账
|
|
|
- if transInfo.AccountStatus != shanghu.ClientActivePayTransAccountStatusUnSettle && transInfo.AccountStatus != shanghu.ClientActivePayTransAccountStatusSettleFail {
|
|
|
+ if transInfo.AccountStatus == shanghu.ClientActivePayTransAccountStatusSettleSuccess {
|
|
|
//不需要分账
|
|
|
var activeCancel shanghu.ActiveCancelLog
|
|
|
err = activeCancel.TXActiveCancelLogCreate(activeCancelLogList)
|
|
@@ -373,20 +378,46 @@ func GroupBuyCancel(c *gin.Context) {
|
|
|
return
|
|
|
}
|
|
|
} else { // 需要分账
|
|
|
+ // 分账中
|
|
|
+ payTrans.ID = transInfo.ID
|
|
|
+ payTrans.AccountStatus = shanghu.ClientActivePayTransAccountStatusSettlePending
|
|
|
+ err = payTrans.UpdateAccountStatusByID()
|
|
|
+ if err != nil {
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "修改分账中失败:" + err.Error() //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
+
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
//校验是否被分过,分过后不再分账
|
|
|
var merchantAccountLog shanghu.MerchantAccountLog
|
|
|
- merchantAccountLog.PayTransId = payTrans.ID
|
|
|
+ merchantAccountLog.PayTransId = transInfo.ID
|
|
|
merchantAccountLog.TransType = shanghu.MerchantAccountLogTransTypeGroupBuy
|
|
|
num := merchantAccountLog.GetAccountLogNum()
|
|
|
if num > 0 { //交易已经分过账
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "交易已分过账" //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
app.Error(c, 500, errors.New("交易已分过账"), "交易已分过账")
|
|
|
return
|
|
|
}
|
|
|
//分账校验账号
|
|
|
var merchantAccount shanghu.MerchantAccount
|
|
|
- merchantAccount.MerchantOpenID = payTrans.MerchantOpenID
|
|
|
+ merchantAccount.MerchantOpenID = transInfo.MerchantOpenID
|
|
|
merchantAccountInfo, err := merchantAccount.GetMerchantAccount()
|
|
|
if err != nil && err.Error() != "record not found" {
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "商家分账校验账号:" + err.Error() //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
+
|
|
|
app.Error(c, 500, err, err.Error())
|
|
|
return
|
|
|
}
|
|
@@ -395,25 +426,46 @@ func GroupBuyCancel(c *gin.Context) {
|
|
|
merchantAccount.Version = 1
|
|
|
merchantAccount.CreatedAt = time.Now()
|
|
|
merchantAccount.UpdatedAt = time.Now()
|
|
|
- _, err = merchantAccount.Create()
|
|
|
+ merchantAccount, err = merchantAccount.Create()
|
|
|
if err != nil {
|
|
|
+
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "创建新的商家账号:" + err.Error() //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
+
|
|
|
app.Error(c, 500, err, err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- if payTrans.InvitationCode != shanghu.YuanShiMa { //校验c端客户
|
|
|
+ var clientAccount shanghu.ActiveClientAccount
|
|
|
+ if transInfo.InvitationCode != shanghu.YuanShiMa { //校验c端客户
|
|
|
var activeUser shanghu.ActiveUser
|
|
|
- var clientAccount shanghu.ActiveClientAccount
|
|
|
- activeUser.Code = payTrans.InvitationCode
|
|
|
+ activeUser.Code = transInfo.InvitationCode
|
|
|
activeUserInfo, err := activeUser.GetUserInfoByCode()
|
|
|
if err != nil {
|
|
|
+
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "根据Code获取c端客户信息:" + transInfo.InvitationCode + err.Error() //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
+
|
|
|
app.Error(c, 500, err, err.Error())
|
|
|
return
|
|
|
}
|
|
|
clientAccount.ClientOpenID = activeUserInfo.OpenID
|
|
|
clientAccountInfo, err := clientAccount.GetMerchantAccount()
|
|
|
if err != nil && err.Error() != "record not found" {
|
|
|
+
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "获取c端客户账户:" + err.Error() //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
+
|
|
|
app.Error(c, 500, err, err.Error())
|
|
|
return
|
|
|
}
|
|
@@ -423,8 +475,15 @@ func GroupBuyCancel(c *gin.Context) {
|
|
|
clientAccount.Version = 1
|
|
|
clientAccount.CreatedAt = time.Now()
|
|
|
clientAccount.UpdatedAt = time.Now()
|
|
|
- _, err = clientAccount.Create()
|
|
|
+ clientAccount, err = clientAccount.Create()
|
|
|
if err != nil {
|
|
|
+
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "创建c端客户:" + err.Error() //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
+
|
|
|
app.Error(c, 500, err, err.Error())
|
|
|
return
|
|
|
}
|
|
@@ -434,7 +493,21 @@ func GroupBuyCancel(c *gin.Context) {
|
|
|
}
|
|
|
|
|
|
//分账 根据merchant-openid + activeUserInfo.openid 进行分账
|
|
|
+ //商家分多少钱,客户分多少钱
|
|
|
+ err = merchantAccount.ActiveCancelSettle(activeCancelLogList, merchantAccount, clientAccount, transInfo)
|
|
|
+ if err != nil {
|
|
|
+
|
|
|
+ dataErr := make(map[string]interface{})
|
|
|
+ dataErr["account_status"] = shanghu.ClientActivePayTransAccountStatusSettleFail //分账失败
|
|
|
+ dataErr["account_err_log"] = "分账失败:" + err.Error() //分账失败日志
|
|
|
+ dataErr["updated_at"] = time.Now()
|
|
|
+ _ = payTrans.UpdateById(dataErr)
|
|
|
+
|
|
|
+ app.Error(c, 500, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
+ app.OK(c, nil, app.Success)
|
|
|
|
|
|
}
|