Bläddra i källkod

bugfix:提现修改

lyx 1 månad sedan
förälder
incheckning
2fa548ff6d

+ 9 - 10
alien-store/src/main/java/shop/alien/store/controller/StoreIncomeDetailsRecordController.java

@@ -39,29 +39,28 @@ public class StoreIncomeDetailsRecordController {
             @ApiImplicitParam(name = "withdrawalMoney", value = "提现金额", dataType = "Integer", paramType = "query", required = true)
     })
     @GetMapping("/cashOut")
+    @Deprecated
     public R cashOut(Integer storeId, String payPassword, Integer withdrawalMoney) {
         return storeIncomeDetailsRecordService.cashOut(storeId, payPassword, withdrawalMoney);
     }
 
-    @ApiOperation("提现申请-提现全部")
+    @ApiOperation("提现申请-提现全部/部分提现")
     @ApiOperationSupport(order = 2)
-    @ApiImplicitParams({@ApiImplicitParam(name = "storeId", value = "门店id", dataType = "Integer", paramType = "query", required = true), @ApiImplicitParam(name = "payPassword", value = "支付密码", dataType = "String", paramType = "query", required = true)})
+    @ApiImplicitParams({@ApiImplicitParam(name = "storeId", value = "门店id", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "payPassword", value = "支付密码", dataType = "String", paramType = "query", required = true),
+            @ApiImplicitParam(name = "withdrawalMoney", value = "提现金额", dataType = "Integer", paramType = "query", required = true)})
     @GetMapping("/applyCashOut")
-    public R<Boolean> applyCashOut(Integer storeId, String payPassword) {
-        String s = storeIncomeDetailsRecordService.applyCashOut(storeId, payPassword);
-        if ("success".equals(s)) {
-            return R.success("提现成功");
-        }
-        return R.fail(s);
+    public R applyCashOut(Integer storeId, String payPassword, Integer withdrawalMoney) {
+           return storeIncomeDetailsRecordService.applyCashOut(storeId, payPassword, withdrawalMoney);
     }
 
-    @ApiOperation("提现审批-提现全部")
+    @ApiOperation("提现审批-提现全部/部分提现")
     @ApiOperationSupport(order = 2)
     @ApiImplicitParams({@ApiImplicitParam(name = "cashOutId", value = "提现申请记录ID", dataType = "Integer", paramType = "query", required = true),
             @ApiImplicitParam(name = "approveStatus", value = "审批状态", dataType = "String", paramType = "query", required = true),
             @ApiImplicitParam(name = "failReason", value = "失败原因", dataType = "String", paramType = "query", required = false)})
     @GetMapping("/approveCashOut")
-    public R<Boolean> approveCashOut(Integer cashOutId, String approveStatus, String failReason) {
+    public R approveCashOut(Integer cashOutId, String approveStatus, String failReason) {
         String s = storeIncomeDetailsRecordService.approveCashOut(cashOutId, approveStatus, failReason);
         if ("付款失败".equals(s)) {
             return R.fail("付款失败");

+ 9 - 1
alien-store/src/main/java/shop/alien/store/service/StoreIncomeDetailsRecordService.java

@@ -32,7 +32,15 @@ public interface StoreIncomeDetailsRecordService extends IService<StoreIncomeDet
      * @param storeId     门店id
      * @return 是否成功
      */
-    String applyCashOut(Integer storeId, String payPassword);
+    /**
+     * 提现申请
+     *
+     * @param storeId     门店id
+     * @param payPassword 支付密码
+     * @param withdrawalMoney 提现金额
+     * @return 是否成功
+     */
+    R applyCashOut(Integer storeId, String payPassword, Integer withdrawalMoney);
 
     /**
      * 提现审批

+ 36 - 53
alien-store/src/main/java/shop/alien/store/service/impl/StoreIncomeDetailsRecordServiceImpl.java

@@ -15,7 +15,6 @@ import org.springframework.transaction.annotation.Transactional;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.StoreIncomeDetailsRecordVo;
-import shop.alien.entity.store.vo.SystemConfigVo;
 import shop.alien.entity.store.vo.WebSocketVo;
 import shop.alien.mapper.*;
 import shop.alien.store.config.WebSocketProcess;
@@ -147,7 +146,7 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
                 }
                 //增加提现记录
                 StoreCashOutRecord storeCashOutRecord = new StoreCashOutRecord();
-                if(null == pay){
+                if (null == pay) {
                     return R.fail("支付宝转账失败");
                 }
                 if (pay.getStoreAliPayErrorLog() == null) {
@@ -195,10 +194,19 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
      */
     @Transactional
     @Override
-    public String applyCashOut(Integer storeId, String payPassword) {
+    public R applyCashOut(Integer storeId, String payPassword, Integer withdrawalMoney) {
         StoreUser storeUser = storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, storeId).eq(StoreUser::getPayPassword, payPassword));
         if (storeUser != null) {
-            int freeze = 0;
+            if (storeUser.getMoney() <= withdrawalMoney) {
+                return R.fail("余额不足");
+            }
+            //调用支付宝转账
+            BigDecimal decimal = new BigDecimal(withdrawalMoney);
+            BigDecimal divide = decimal.divide(new BigDecimal(100), 2, RoundingMode.DOWN);
+            if (Double.parseDouble(divide.toString()) < 0.1) {
+                return R.fail("金额不能小于0.1元");
+            }
+            /*int freeze = 0;
             //查询冻结配置
             SystemConfigVo systemConfigVo = storeDictService.getConfig("freeze");
             if (systemConfigVo != null) {
@@ -214,44 +222,22 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
             //当前时间-3天大于创建时间
             if (freeze > 0) {
                 wrapper.lt(StoreIncomeDetailsRecord::getCreatedTime, DateUtils.calcDays(new Date(), -freeze));
-            }
-            //未绑定提现记录的
-            wrapper.isNull(StoreIncomeDetailsRecord::getCashOutId);
-            wrapper.eq(StoreIncomeDetailsRecord::getStoreId, storeId);
-            List<StoreIncomeDetailsRecord> list = this.list(wrapper);
-            if (!list.isEmpty()) {
-                //总金额
-                Integer availableAmount = 0;
-                //手续费
-                Integer commission = 0;
-                for (StoreIncomeDetailsRecord record : list) {
-                    availableAmount += record.getMoney();
-                    commission += record.getCommission();
-                }
-                int money = availableAmount - commission;
-                list = list.stream().sorted(Comparator.comparing(StoreIncomeDetailsRecord::getCreatedTime)).collect(Collectors.toList());
-                Date startDate = list.get(0).getCreatedTime();
-                Date endDate = list.get(list.size() - 1).getCreatedTime();
-                //增加提现申请记录
-                StoreCashOutRecord storeCashOutRecord = new StoreCashOutRecord();
-                storeCashOutRecord.setStoreId(storeId);
-                storeCashOutRecord.setMoney(money);
-                storeCashOutRecord.setCommission(commission);
-                storeCashOutRecord.setCashOutType(0);
-                storeCashOutRecord.setPaymentStatus(3);
-                storeCashOutRecord.setDeleteFlag(0);
-                storeCashOutRecord.setIncomeStartTime(startDate);
-                storeCashOutRecord.setIncomeEndTime(endDate);
-                storeCashOutRecord.setStoreUserId(storeUser.getId());
-                storeCashOutRecordMapper.insert(storeCashOutRecord);
-                //关联提现记录
-                list.forEach(record -> record.setCashOutId(storeCashOutRecord.getId()));
-                this.saveOrUpdateBatch(list);
-                return "申请成功";
-            }
-            return "账单未到可提现时间";
+            }*/
+            //增加提现申请记录
+            StoreCashOutRecord storeCashOutRecord = new StoreCashOutRecord();
+            storeCashOutRecord.setStoreId(storeId);
+            storeCashOutRecord.setMoney(withdrawalMoney);
+//            storeCashOutRecord.setCommission(commission);
+            storeCashOutRecord.setCashOutType(0);
+            storeCashOutRecord.setPaymentStatus(3);
+            storeCashOutRecord.setDeleteFlag(0);
+            storeCashOutRecord.setIncomeStartTime(new Date());
+            storeCashOutRecord.setIncomeEndTime(new Date());
+            storeCashOutRecord.setStoreUserId(storeUser.getId());
+            storeCashOutRecordMapper.insert(storeCashOutRecord);
+            return R.data(storeCashOutRecord);
         }
-        return "支付密码错误";
+        return R.fail("支付密码错误");
     }
 
     @Transactional
@@ -279,8 +265,13 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
                 if (Double.parseDouble(divide.toString()) < 0.10) {
                     return "金额不能小于0.1元";
                 }
-                StoreAliPayLog pay = aliApi.pay(storeUser.getName(), storeUser.getIdCard(), storeUser.getPhone(), divide.toString());
-                if (pay != null) {
+                StoreAliPayLog pay = new StoreAliPayLog();
+                if (StringUtils.isNotBlank(storeUser.getAlipayAccount())) {
+                    pay = aliApi.pay(storeUser.getName(), storeUser.getIdCard(), storeUser.getAlipayAccount(), divide.toString());
+                } else {
+                    pay = aliApi.payAccount(storeUser.getName(), storeUser.getIdCard(), null, divide.toString(), storeUser.getPhone());
+                }
+                if (null != pay) {
                     // 提现成功,更新提现申请相关状态
                     storeCashOutRecord.setOrderNo(pay.getOutBizNo());
                     storeCashOutRecord.setAliOrderNo(pay.getOrderId());
@@ -288,17 +279,9 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
                     storeCashOutRecord.setApproveTime(new Date());// 审批时间
                     storeCashOutRecord.setPayDate(new Date());//支付时间
                     storeCashOutRecord.setPaymentDate(new Date());//支付到账时间
-                    Integer commission = storeCashOutRecord.getCommission();
-                    if (storeCashOutRecord.getCommission() == null) {
-                        commission = 0;
-                    }
                     storeCashOutRecordMapper.updateById(storeCashOutRecord);
-                    int deductMoney = storeCashOutRecord.getMoney() - commission;
-                    if (storeUser.getMoney() < deductMoney) {
-                        storeUserMapper.updateById(new StoreUser(storeUserId, 0));
-                    } else {
-                        storeUserMapper.updateById(new StoreUser(storeUserId, storeUser.getMoney() - storeCashOutRecord.getMoney() - commission));
-                    }
+                    // 在存钱包的时候已经去掉了手续费
+                    storeUserMapper.updateById(new StoreUser(storeUserId, storeUser.getMoney() - storeCashOutRecord.getMoney()));
                     // 提现成功通知
                     cashOutSendNotice(storeCashOutRecord, storeUser, failReason, "3");
                     return "付款成功";