| 
					
				 | 
			
			
				@@ -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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |