Qchen преди 2 години
родител
ревизия
94327a8690

+ 6 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserAccountController.java

@@ -38,6 +38,12 @@ public class SysUserAccountController extends BaseController {
         return sysUserAccountService.inert(sysUserAccountVo);
     }
 
+    @PostMapping("/withdraw")
+    @ApiOperation("提现")
+    public HttpResult<Object> withdraw(@RequestBody SysUserAccountVo sysUserAccountVo) {
+        return sysUserAccountService.withdraw(sysUserAccountVo);
+    }
+
     @GetMapping(value = "/getSysUserAmount")
     @ApiOperation("用户账户余额")
     public HttpResult<SysUserAccount> getSysUserAmount(@RequestParam String userid) {

+ 3 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.vo.SysUserBankCardVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -18,6 +19,8 @@ public interface SysUserBankCardMapper extends BaseMapper<SysUserBankCard> {
 
     HttpResult<SysUserBankCardVO> getByUserId(String userId);
 
+    SysUserBankCard getByBankNumber(@Param("fromBankCardId") String bankNumber);
+
     List<SysUserBankCard> getUserBankList(String userId);
 }
 

+ 6 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysUserAccount.java

@@ -3,11 +3,13 @@ package com.ydtech.modules.admin.model.po;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 用户账户表
@@ -115,4 +117,8 @@ public class SysUserAccount implements Serializable {
 
     @TableField(exist = false)
     private  String  deptId;
+
+    @ApiModelProperty(value = "所属账户下的卡")
+    @TableField(exist = false)
+    List<SysUserBankCard> sysUserAccountCardList;
 }

+ 1 - 1
src/main/java/com/ydtech/modules/admin/model/vo/SysUserAccountVo.java

@@ -100,7 +100,7 @@ public class SysUserAccountVo {
 
 
     @ApiModelProperty(value = "银行卡Id")
-    private Long fromBankCardId;
+    private String fromBankCardId;
 
 
     @ApiModelProperty(value = "预收手续费佣金")

+ 2 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserAccountService.java

@@ -21,6 +21,8 @@ public interface SysUserAccountService extends IService<SysUserAccount> {
 
     HttpResult<Object> inert(SysUserAccountVo sysUserAccountVo);
 
+    HttpResult withdraw(SysUserAccountVo sysUserAccountVo);
+
     SysUserAccount getSysUserAmount(String userid);
 
     SysUserAccountVo getSysAllAmount(String userId);

+ 2 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserBankCardService.java

@@ -27,6 +27,8 @@ public interface SysUserBankCardService extends IService<SysUserBankCard> {
 
     HttpResult<SysUserBankCardVO>   getByUserId(String userId);
 
+    SysUserBankCard getByBankNumber(String bankNumber);
+
     void insertByBankNumber(SysUserBankCardVO sysUserBankCardVO);
 
     void auditByBankNumber(SysUserBankCardVO sysUserBankCardVO);

+ 84 - 1
src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.MoneyAttrConstants;
 import com.ydtech.modules.admin.constants.WithdrawTypeConstants;
 import com.ydtech.modules.admin.dao.SysUserAccountMapper;
@@ -209,7 +210,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
             return HttpResult.ok("有未提现审核单据, 请审核完成之后再提现");
         }
 //      通过银行卡id 查询卡包
-        Long fromBankCardId = sysUserAccountVo.getFromBankCardId();
+        String fromBankCardId = sysUserAccountVo.getFromBankCardId();
         if (fromBankCardId != null) {
             SysUserBankCard byId = sysUserBankCardService.getById(fromBankCardId);
 //            String bankUserId = byId.getUserId();
@@ -272,6 +273,88 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         return HttpResult.ok("提现成功,等待审核");
     }
 
+    @Override
+    @Transactional
+    public HttpResult withdraw(SysUserAccountVo sysUserAccountVo) {
+        String userId = sysUserAccountVo.getUserId();
+        BigDecimal zero = BigDecimal.ZERO;
+        BigDecimal beforeAmount;
+        BigDecimal afterAmount;
+//       用户当前金额
+        BigDecimal amount = sysUserAccountVo.getAmount();
+        SysUserAccountHistory sysUserAccountHistory = new SysUserAccountHistory();  // 记录
+        sysUserAccountHistory.setDocumentary(1);  // 1提现
+        sysUserAccountHistory.setUserId(userId);
+        SysAmountAuditingEntity sysAmountAuditingEntity = new SysAmountAuditingEntity();//审核记录表
+        sysAmountAuditingEntity.setUserId(userId);
+        sysAmountAuditingEntity.setAmount(sysUserAccountVo.getAmount());
+        SysAmountAuditingEntity judge = sysAmountAuditingService.getByUserId(userId, sysUserAccountVo.getAmountStatus());
+        if (ObjectUtils.isNotEmpty(judge)) {
+            throw new SystemException("有未提现审核单据, 请审核完成之后再提现");
+        }
+//      通过银行卡id 查询卡包
+        String fromBankCardId = sysUserAccountVo.getFromBankCardId();
+        SysUserBankCard byId = sysUserBankCardService.getByBankNumber(fromBankCardId);
+        if (byId == null) {
+            throw new SystemException("该卡未绑定此账号,或输入卡号错误,请检查");
+        }
+        if (fromBankCardId != null && byId.getUserId().equals(userId)) {
+            byId.setIsDefault(1);
+
+            sysAmountAuditingEntity.setBankNumber(byId.getBankNumber());
+            sysUserAccountHistory.setFromBankCard(byId.getBankNumber());
+            sysUserBankCardService.updateById(byId);
+        }
+
+        if (StringUtils.isNotEmpty(userId)) {
+            SysUserAccount sysUserAccount = baseMapper.getById(userId);
+
+
+            if (StringUtils.isNotEmpty(sysUserAccountVo.getAmountStatus())) {
+                sysUserAccountHistory.setProperty(Integer.valueOf(sysUserAccountVo.getAmountStatus()));   //金额类型
+
+                if ("1".equals(sysUserAccountVo.getAmountStatus())) {
+//                  用户当前费用金
+                    beforeAmount = sysUserAccount.getHandlingFee();
+                    afterAmount = beforeAmount.subtract(amount);
+                    sysUserAccount.setHandlingFee(afterAmount);
+                    sysUserAccount.setHandlingAmountPayment(amount);
+                    sysUserAccount.setHandlingAmountWithdrawal(sysUserAccount.getHandlingAmountWithdrawal().add(amount));
+                } else if ("2".equals(sysUserAccountVo.getAmountStatus())) {
+//                    用户当前 非跟单佣金
+                    beforeAmount = sysUserAccount.getDocumentary();
+                    afterAmount = beforeAmount.subtract(amount);
+                    sysUserAccount.setDocumentary(afterAmount);
+                    sysUserAccount.setDocumentaryAmountpayment(amount);
+                    sysUserAccount.setDocumentaryAmountWithdrawal(sysUserAccount.getDocumentaryAmountWithdrawal().add(amount));
+                } else {
+                    beforeAmount = sysUserAccount.getPromotion();
+                    afterAmount = beforeAmount.subtract(amount);
+                    sysUserAccount.setPromotion(afterAmount);
+                    sysUserAccount.setPromotionAmountPayment(amount);
+                    sysUserAccount.setPromotionAmountWithdrawal(sysUserAccount.getPromotionAmountWithdrawal().add(amount));
+                }
+//              用户相差
+                if (beforeAmount.compareTo(zero) == 0 || afterAmount.compareTo(zero) < 0) {
+                    return HttpResult.ok("余额不足");
+                }
+                sysUserAccountHistory.setAmount(amount);  // 金额
+                sysUserAccountHistory.setSurplusAmount(afterAmount); // 剩余金额
+                sysUserAccountHistory.setUserAmount(beforeAmount);   // 用户剩余金额
+                sysAmountAuditingEntity.setCreateTime(new Date());
+                sysAmountAuditingEntity.setAuditingStatus("2");   // 2  为待审核  3  审核通过
+                sysAmountAuditingEntity.setAmountStatus(sysUserAccountVo.getAmountStatus());
+//              新增金额记录
+                sysAmountAuditingService.save(sysAmountAuditingEntity);
+                sysUserAccountHistory.setAuditiingId(sysAmountAuditingEntity.getId());
+                sysUserAccountService.updateById(sysUserAccount);
+                sysUserAccountHistoryService.updayteByUserAccount(sysUserAccountHistory);
+            }
+
+        }
+        return HttpResult.ok("提现成功,等待审核");
+    }
+
     @Override
     public SysUserAccount getSysUserAmount(String userid) {
         SysUserAccount sysUserAccount = baseMapper.getById(userid);

+ 5 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserBankCardServiceImpl.java

@@ -89,6 +89,11 @@ public class SysUserBankCardServiceImpl extends ServiceImpl<SysUserBankCardMappe
         return baseMapper.getByUserId(userId);
     }
 
+    @Override
+    public SysUserBankCard getByBankNumber(String bankNumber) {
+        return baseMapper.getByBankNumber(bankNumber);
+    }
+
     @Override
     @Transactional
     public void insertByBankNumber(SysUserBankCardVO sysUserBankCardVO) {

+ 13 - 0
src/main/resources/mapper/modules/admin/SysUserBankCardMapper.xml

@@ -35,6 +35,19 @@
 
 
     </select>
+
+    <select id="getByBankNumber" resultType="com.ydtech.modules.admin.model.po.SysUserBankCard">
+        select
+        a.*
+        from sys_user_bank_card a
+        <where>
+            1=1
+            <if test="fromBankCardId !=null and  fromBankCardId !=''">
+                and a.bank_number =#{fromBankCardId}
+            </if>
+        </where>
+    </select>
+
     <select id="getUserBankList" resultType="com.ydtech.modules.admin.model.po.SysUserBankCard">
             select
                   a.id as "id",