linxk 1 týždeň pred
rodič
commit
48f89a5b7f

+ 2 - 1
cif-service/src/main/java/com/txz/cif/core/ResultCode.java

@@ -60,7 +60,8 @@ public enum ResultCode {
     LOGINACCOUNT_IS_NULL("1068", "登录账号不能为空"),
     ORG_IS_NULL("1069", "组织机构未找到" ),
     USER_IS_EXIST("7008", "用户已注册"), CODE_CHECK_FAIL("1070", "验证码校验失败"),
-    BANK_IS_NULL("1071", "提现银行不能为空" ), REVIEW_IS_NULL("1072", "审核内容为空");
+    BANK_IS_NULL("1071", "提现银行不能为空" ), REVIEW_IS_NULL("1072", "审核内容为空"),
+    EFFECTIVE_BALANCE_IS_INSUFFICIENT("1073", "有效余额不足" );
 
     private final String code;   //状态码
     private final String message;

+ 2 - 2
cif-service/src/main/java/com/txz/cif/service/impl/WithdrawRecordServiceImpl.java

@@ -44,9 +44,9 @@ public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> i
     public void add(WithdrawRecord withdrawRecord) {
         saveUseGeneratedKeys(withdrawRecord);
         Account account = accountService.getAccount(withdrawRecord.getUserId(), withdrawRecord.getAccountType());
-        //冻结金额
+        //冻结金额+手续费
         Result freeze = flowService.freeze(FreezdParam.builder().accountType(withdrawRecord.getAccountType())
-                .amount(withdrawRecord.getAmount()).bizType(BizTypeEnum.WITHDRAW.getKey())
+                .amount(withdrawRecord.getAmount().add(withdrawRecord.getFee())).bizType(BizTypeEnum.WITHDRAW.getKey())
                 .bizId(withdrawRecord.getId() + "").bizNo(withdrawRecord.getOrderNo())
                 .transTime(withdrawRecord.getTransTime())
                 .userId(withdrawRecord.getUserId())

+ 12 - 1
cif-service/src/main/java/com/txz/cif/web/WithdrawRecordApiController.java

@@ -55,6 +55,9 @@ public class WithdrawRecordApiController {
 	@Resource
 	private AuthService authService;
 
+	@Resource
+	private AccountService accountService;
+
 	@Resource
 	private BizLogService bizLogService;
 
@@ -106,6 +109,14 @@ public class WithdrawRecordApiController {
 			String rate = openRedEnvelopeRate.getData().getValueInfo();
 			BigDecimal fee = param.getAmount().multiply(new BigDecimal(rate)).divide(BigDecimal.valueOf(100),2, RoundingMode.DOWN);
 
+			Account account = accountService.getAccount(userId, param.getAccountType());
+			if (account == null){
+				return ResultGenerator.genFailResult(ResultCode.ACCOUNT_IS_NULL);
+			}
+			if (account.getEffectiveBalance().compareTo(param.getAmount().add(fee)) <0) {
+				return ResultGenerator.genFailResult(ResultCode.EFFECTIVE_BALANCE_IS_INSUFFICIENT);
+			}
+
 			String orderNo = sequenceService.genSerialNumber("withdraw_rule",null);
 
 			WithdrawRecord withdrawRecord = new WithdrawRecord();
@@ -187,7 +198,7 @@ public class WithdrawRecordApiController {
 
 	@GetMapping("/callback")
 	@ApiOperation(value = "三方回调",httpMethod = "GET")
-	public Result<RechargeRecord> detail(@RequestParam String data) {
+	public Result<RechargeRecord> callback(@RequestParam String data) {
 		//TODO 回调成功
 		JSONObject json = JSONUtil.parseObj(data);
 		String orderNo = json.getStr("orderNo");