Эх сурвалжийг харах

feature: 卡务中心代码优化

luoyb 1 жил өмнө
parent
commit
a060c0ce4d

+ 18 - 22
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/PaymentsBusiness.java

@@ -69,6 +69,8 @@ public class PaymentsBusiness {
      * @return 辅助信息列表
      */
     public List<Object> getOtherInfo(PtBagBo bo) {
+        Date my = DateUtil.date();
+        Date my1 = new Date();
         List<Object> list = new ArrayList<>();
         //1.人员辅助信息
         PtUserAccountVo userAccountVo = userAccountService.queryById(bo.getUserId());
@@ -84,7 +86,7 @@ public class PaymentsBusiness {
         }
         list.add(ptCardVo);
         //3.钱包辅助信息
-        PtBagVo ptBagVo = bagService.queryByUserBagCode(bo.getUserId(),bo.getBagCode());
+        PtBagVo ptBagVo = bagService.queryByUserBagCode(bo.getUserId(), bo.getBagCode());
         list.add(ptBagVo);
         //4.设备辅助信息
         XfTermVo xfTermVo = termService.queryByNo(bo.getTermNo() == null ? 0 : bo.getTermNo());
@@ -112,7 +114,7 @@ public class PaymentsBusiness {
         xfCreditaccountbackBo.setBackId(backId);
 
         //设置交易数据
-        xfCreditaccountbackBo.setCreditTime(DateUtil.date());
+        xfCreditaccountbackBo.setCreditTime(new Date());
         xfCreditaccountbackBo.setCreditType(bo.getCreditType().code().toString());
         xfCreditaccountbackBo.setReceiptMoney(bo.getReceiptMoney());
         xfCreditaccountbackBo.setPayStyle(bo.getPayStyle());
@@ -166,8 +168,8 @@ public class PaymentsBusiness {
         //校验要处理的原始收支记录
         ValidOriginalRecord(originalId);
         XfCreditAccountBo xfCreditaccountbo = new XfCreditAccountBo();
-        String backId = getRecordKeyId(bo, accountVo, bagVo);
-        xfCreditaccountbo.setCreditId(backId);
+        String accountId = getRecordKeyId(bo, accountVo, bagVo);
+        xfCreditaccountbo.setCreditId(accountId);
 
         //设置交易数据
         xfCreditaccountbo.setCreditTime(DateUtil.date());
@@ -200,7 +202,7 @@ public class PaymentsBusiness {
         xfCreditaccountbo.setBagType(bagVo.getBagCode());
         // 设置操作员信息
         xfCreditaccountbo.setOperatorId(bo.getOperatorId());
-        xfCreditaccountbo.setOperatorName("");
+        xfCreditaccountbo.setOperatorName(bo.getOperatorName());
 
         xfCreditaccountbo.setOriginalId(originalId);
 
@@ -235,8 +237,9 @@ public class PaymentsBusiness {
      * 这里主要是处理一次性完成的原始订单生成、收支记账
      *
      * @param bo 资金收支信息
+     * @return 辅助信息
      */
-    public void createOrderMin(PtBagBo bo) {
+    public List<Object> createOrderMin(PtBagBo bo) {
         log.info("[开始生成{}订单]-{}", bo.getCreditType().message(), JSONUtil.toJsonStr(bo));
         //1.处理入账需要的其它信息
         List<Object> list = getOtherInfo(bo);
@@ -249,10 +252,12 @@ public class PaymentsBusiness {
         //2.创建收支订单
         XfCreditAccountBackVo creditBackVo = createOriginalRecord(bo, (PtUserAccountVo) list.get(0),
             (PtCardVo) list.get(1), (PtBagVo) list.get(2), (XfTermVo) list.get(3), (PtWorkstationVo) list.get(4));
-
+        bo.setOriginalId(creditBackVo.getBackId());
         //3.收支入账,此处只需要入收支明细表就可以了
         log.info("[{}订单生成完成,开始生成{}收支记录]-{}", bo.getCreditType().message(), bo.getCreditType().message(), JSONUtil.toJsonStr(bo));
-        keepAccounts(bo, accountVo, cardVo, bagVo, termVo, workstationVo, creditBackVo.getBackId());
+        XfCreditAccountVo creditVo = keepAccounts(bo, accountVo, cardVo, bagVo, termVo, workstationVo, creditBackVo.getBackId());
+        bo.setCreditId(creditVo.getCreditId());
+        return list;
     }
 
     /**
@@ -262,28 +267,19 @@ public class PaymentsBusiness {
      * @param bo 资金收支信息
      */
     public void createOrderNormal(PtBagBo bo) {
-        log.info("[开始生成{}订单]-{}", bo.getCreditType().message(), JSONUtil.toJsonStr(bo));
-        //1.处理入账需要的其它信息
-        List<Object> list = getOtherInfo(bo);
+        List<Object> list = createOrderMin(bo);
         PtUserAccountVo accountVo = list.get(0) == null ? new PtUserAccountVo() : (PtUserAccountVo) list.get(0);
         PtCardVo cardVo = list.get(1) == null ? new PtCardVo() : (PtCardVo) list.get(1);
-        PtBagVo bagVo = list.get(2) == null ? new PtBagVo() : (PtBagVo) list.get(2);
-        XfTermVo termVo = list.get(3) == null ? new XfTermVo() : (XfTermVo) list.get(3);
-        PtWorkstationVo workstationVo = list.get(4) == null ? new PtWorkstationVo() : (PtWorkstationVo) list.get(4);
-
-        //2.创建收支订单
-        XfCreditAccountBackVo creditBackVo = createOriginalRecord(bo, (PtUserAccountVo) list.get(0),
-            (PtCardVo) list.get(1), (PtBagVo) list.get(2), (XfTermVo) list.get(3), (PtWorkstationVo) list.get(4));
-
-        //3.收支入账,此处只需要入收支明细表就可以了
-        log.info("[{}订单生成完成,开始生成{}收支记录]-{}", bo.getCreditType().message(), bo.getCreditType().message(), JSONUtil.toJsonStr(bo));
-        keepAccounts(bo, accountVo, cardVo, bagVo, termVo, workstationVo, creditBackVo.getBackId());
 
         //4.写日统计表
         log.info("[收支记录生成完成,开始写个人日统计表]-{}", JSONUtil.toJsonStr(bo));
         createOrUpdateUserTotal(bo, accountVo, cardVo);
     }
 
+    public void updateOrderStatus(PtBagBo bo, Integer status, BigDecimal cardValue) {
+        creditAccountBackService.updateStatusById(bo.getOriginalId(), status, bo.getCreditId(), cardValue);
+    }
+
     /**
      * 收支入账前校验收支原始记录
      *

+ 4 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/strategy/impl/RechargePaymentsStrategyImpl.java

@@ -12,6 +12,7 @@ import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.common.core.constant.CreditTypeConstants;
+import org.dromara.common.core.enums.CreditStatusEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -45,7 +46,9 @@ public class RechargePaymentsStrategyImpl implements IPaymentsStrategy {
         business.createOrderNormal(bo);
         //5.写钱包余额
         log.info("[个人日统计表处理成功,开始更新账户余额-{}", JSONUtil.toJsonStr(bo));
-        return business.updateBalance(bo);
+        PtBagVo vo = business.updateBalance(bo);
+        business.updateOrderStatus(bo, CreditStatusEnum.SUCCESS.code(),vo.getBalance());
+        return vo;
     }
 
     @Override

+ 4 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/strategy/impl/RefundPaymentsStrategyImpl.java

@@ -14,6 +14,7 @@ import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.common.core.constant.CreditTypeConstants;
+import org.dromara.common.core.enums.CreditStatusEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -53,7 +54,9 @@ public class RefundPaymentsStrategyImpl implements IPaymentsStrategy {
         //5.写钱包余额
         log.info("[个人日统计表处理成功,开始更新账户余额-{}", JSONUtil.toJsonStr(bo));
         bo.setReceiptMoney(doValue.negate());
-        return business.updateBalance(bo);
+        PtBagVo vo = business.updateBalance(bo);
+        business.updateOrderStatus(bo, CreditStatusEnum.SUCCESS.code(),vo.getBalance());
+        return vo;
     }
 
     @Override

+ 15 - 11
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtCardServiceImpl.java

@@ -16,7 +16,6 @@ import org.dromara.backstage.cardCenter.domain.vo.PtCardVo;
 import org.dromara.backstage.cardCenter.mapper.PtCardMapper;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
-import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.common.core.constant.Constants;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.SpringUtils;
@@ -43,7 +42,6 @@ public class PtCardServiceImpl implements IPtCardService {
     private final IPtParameterService parameterService;
     private final IPtCardtypeService cardTypeService;
 
-
     /**
      * 查询账户卡片
      *
@@ -52,7 +50,10 @@ public class PtCardServiceImpl implements IPtCardService {
      */
     @Override
     public PtCardVo queryById(Long cardId) {
-        return baseMapper.selectVoById(cardId);
+        PtCardVo vo = baseMapper.selectVoById(cardId);
+        String cardTypeName = cardTypeService.selectCardTypeNameByIds(vo.getCardType().toString());
+        vo.setCardTypeName(cardTypeName);
+        return vo;
     }
 
     /**
@@ -229,13 +230,16 @@ public class PtCardServiceImpl implements IPtCardService {
      */
     @Override
     public PtCardVo queryMainCardByUserId(Long userId) {
-        PtCardBo bo = new PtCardBo();
-        bo.setUserId(userId);
-        bo.setStatus("1");
-        bo.setMainCard("Y");
-
-        List<PtCardVo> list = SpringUtils.getAopProxy(this).queryList(bo);
-        return list == null ? null : list.get(0);
+        PtCardVo vo = baseMapper.selectVoOne(new LambdaQueryWrapper<PtCard>()
+            .eq(PtCard::getMainCard, "Y")
+            .eq(PtCard::getStatus, "1")
+            .eq(PtCard::getUserId, userId));
+        if (vo != null) {
+            PtCardtypeVo cardTypeVo = cardTypeService.queryByCode(vo.getCardType());
+            vo.setCardTypeName(cardTypeVo.getTypeName());
+            return vo;
+        }
+        return null;
     }
 
     /**
@@ -273,7 +277,7 @@ public class PtCardServiceImpl implements IPtCardService {
      * 计算管理费
      * 考虑账户可能没有卡数据就充值,此时只能从账户中获取账户的卡类,从而得到管理费的计算方式
      *
-     * @param bo     资金收支业务对象
+     * @param bo 资金收支业务对象
      * @return 管理费
      */
     @Override

+ 17 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfCreditAccountBackService.java

@@ -5,6 +5,7 @@ import org.dromara.backstage.consumption.domain.bo.XfCreditAccountBackBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
 
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.List;
 
@@ -66,5 +67,21 @@ public interface IXfCreditAccountBackService {
      */
     Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
 
+    /**
+     * 创建原始收支记录
+     *
+     * @param bo     原始收支记录
+     * @return 原始收支记录入库信息
+     */
     XfCreditAccountBackVo createOriginalRecord(XfCreditAccountBackBo bo);
+    /**
+     * 更新原始收支记录的处理状态
+     *
+     * @param backId     原始收支记录Id
+     * @param status     原始收支记录状态
+     * @param accountId  收支记录Id
+     * @param cardValue  处理完成后的卡余
+     * @return 原始收支记录入库信息
+     */
+    Boolean updateStatusById(String backId, Integer status, String accountId, BigDecimal cardValue);
 }

+ 27 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfCreditAccountBackServiceImpl.java

@@ -1,5 +1,8 @@
 package org.dromara.backstage.consumption.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import org.dromara.backstage.cardCenter.domain.PtCard;
 import org.dromara.backstage.consumption.domain.XfCreditAccountBack;
 import org.dromara.backstage.consumption.domain.bo.XfCreditAccountBackBo;
 import org.dromara.backstage.consumption.domain.vo.XfCreditAccountBackVo;
@@ -15,6 +18,7 @@ import org.springframework.stereotype.Service;
 import org.dromara.backstage.consumption.mapper.XfCreditAccountBackMapper;
 import org.dromara.backstage.consumption.service.IXfCreditAccountBackService;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -150,7 +154,12 @@ public class XfCreditAccountBackServiceImpl implements IXfCreditAccountBackServi
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
-
+    /**
+     * 创建原始收支记录
+     *
+     * @param bo     原始收支记录
+     * @return 原始收支记录入库信息
+     */
     @Override
     public XfCreditAccountBackVo createOriginalRecord(XfCreditAccountBackBo bo) {
         if(insertByBo(bo)){
@@ -159,4 +168,21 @@ public class XfCreditAccountBackServiceImpl implements IXfCreditAccountBackServi
             return null;
         }
     }
+    /**
+     * 更新原始收支记录的处理状态
+     *
+     * @param backId     原始收支记录Id
+     * @param status     原始收支记录状态
+     * @param accountId  收支记录Id
+     * @param cardValue  处理完成后的卡余
+     * @return 原始收支记录入库信息
+     */
+    @Override
+    public Boolean updateStatusById(String backId, Integer status, String accountId, BigDecimal cardValue) {
+        return baseMapper.update(null, new LambdaUpdateWrapper<XfCreditAccountBack>()
+            .set(XfCreditAccountBack::getCreditStatus, status)
+            .set(XfCreditAccountBack::getCreditId, accountId)
+            .set(XfCreditAccountBack::getCardValue, cardValue)
+            .eq(XfCreditAccountBack::getBackId, backId)) > 0;
+    }
 }

+ 14 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtBagBo.java

@@ -1,5 +1,6 @@
 package org.dromara.backstage.payment.domain.bo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import org.dromara.backstage.payment.domain.PtBag;
 import org.dromara.common.core.enums.BalanceUpdateEnum;
 import org.dromara.common.core.enums.CreditTypeEnum;
@@ -120,7 +121,10 @@ public class PtBagBo extends BaseEntity {
      * 操作员Id
      */
     private Long operatorId;
-
+    /**
+     * 操作员姓名
+     */
+    private String operatorName;
     /**
      * 系统使用类型
      */
@@ -130,5 +134,14 @@ public class PtBagBo extends BaseEntity {
      * 卡片类型Id
      */
     private Long cardTypeId;
+    /**
+     * 原始订单Id(收支备份表)
+     */
+    private String originalId;
+    /**
+     * 收支记录Id(收支明细表)
+     */
+    private String creditId;
+
     //endregion
 }

+ 10 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java

@@ -2,7 +2,9 @@ package org.dromara.backstage.payment.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
 import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
 import org.dromara.backstage.payment.service.IPtBagService;
@@ -14,6 +16,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.system.api.RemoteDeptService;
 import org.springframework.stereotype.Service;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
@@ -42,6 +45,9 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
     private final IPtCardService ptCardService;
     private final IPtBagService bagService;
 
+    @DubboReference
+    private final RemoteDeptService remoteDeptService;
+
     /**
      * 查询一卡通账户
      *
@@ -50,7 +56,10 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
      */
     @Override
     public PtUserAccountVo queryById(Long userId){
-        return baseMapper.selectVoById(userId);
+        PtUserAccountVo vo= baseMapper.selectVoById(userId);;
+        String deptName = remoteDeptService.selectDeptNameByIds(vo.getDeptId().toString());
+        vo.setDeptName(deptName);
+        return vo;
     }
 
     /**

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java

@@ -53,6 +53,10 @@ public class SysUserVo implements Serializable {
      */
     private String nickName;
 
+    /**
+     * 用户姓名
+     */
+    private String realName;
     /**
      * 用户类型(sys_user系统用户)
      */