Browse Source

feature: 支付管理平台->账户管理模块
1.增加了账户余额统计并提供前端显示(只统计消费和补助钱包余额)

luoyb 1 năm trước cách đây
mục cha
commit
a0fc652fb9

+ 21 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteBagService.java

@@ -0,0 +1,21 @@
+package org.dromara.backstage.api;
+
+/**
+ * name: RemoteBagService
+ * package: org.dromara.backstage.api
+ * description: 账户钱包服务
+ * date: 2024-08-08 10:40:43 10:40
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public interface RemoteBagService {
+    /**
+     * 根据Id获取账户钱包余额
+     *
+     * @param userIds 人员Id串,英文逗号分隔
+     * @return 余额串,英文逗号分隔
+     */
+    String selectAccountBalanceByIds(String userIds);
+}

+ 4 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java

@@ -38,4 +38,8 @@ public interface TransConstant {
      */
     String  CARD_TYPE_ID_TO_NAME = "card_type_id_to_name";
 
+    /**
+     * 账户余额计算
+     */
+    String USER_ID_TO_BALANCE = "user_id_to_balance";
 }

+ 30 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/BagBalanceTranslationImpl.java

@@ -0,0 +1,30 @@
+package org.dromara.common.translation.core.impl;
+
+import lombok.AllArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.backstage.api.RemoteBagService;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+
+/**
+ * name: BagBalanceTranslationImpl
+ * package: org.dromara.common.translation.core.impl
+ * description: 账户钱包余额翻译实现
+ * date: 2024-08-08 10:58:10 10:58
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@AllArgsConstructor
+@TranslationType(type = TransConstant.USER_ID_TO_BALANCE)
+public class BagBalanceTranslationImpl implements TranslationInterface<String> {
+    @DubboReference
+    private RemoteBagService remoteBagService;
+
+    @Override
+    public String translation(Object key, String other) {
+        return remoteBagService.selectAccountBalanceByIds(key.toString());
+    }
+}

+ 1 - 0
ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -5,3 +5,4 @@ org.dromara.common.translation.core.impl.OssUrlTranslationImpl
 org.dromara.common.translation.core.impl.UserNameTranslationImpl
 org.dromara.common.translation.core.impl.NicknameTranslationImpl
 org.dromara.common.translation.core.impl.CardTypeNameTranslationImpl
+org.dromara.common.translation.core.impl.BagBalanceTranslationImpl

+ 28 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/dubbo/RemoteBagServiceImpl.java

@@ -0,0 +1,28 @@
+package org.dromara.backstage.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.backstage.api.RemoteBagService;
+import org.dromara.backstage.payment.service.IPtBagService;
+import org.springframework.stereotype.Service;
+
+/**
+ * name: RemoteBagServiceImpl
+ * package: org.dromara.backstage.dubbo
+ * description: 账户钱包服务实现
+ * date: 2024-08-08 10:53:41 10:53
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteBagServiceImpl implements RemoteBagService {
+    private final IPtBagService bagService;
+    @Override
+    public String selectAccountBalanceByIds(String userIds) {
+        return bagService.selectAccountBalanceByIds(userIds);
+    }
+}

+ 6 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/vo/PtUserAccountVo.java

@@ -229,4 +229,10 @@ public class PtUserAccountVo implements Serializable {
      */
     @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
     private String cardTypeName;
+
+    /**
+     * 账户余额
+     */
+    @Translation(type = TransConstant.USER_ID_TO_BALANCE, mapper = "userId")
+    private String accountBalance;
 }

+ 8 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtBagService.java

@@ -66,4 +66,12 @@ public interface IPtBagService {
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 根据Id获取账户钱包余额
+     *
+     * @param userIds  人员Id串,英文逗号分隔
+     * @return 余额串,英文逗号分隔
+     */
+    String selectAccountBalanceByIds(String userIds);
 }

+ 46 - 13
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtBagServiceImpl.java

@@ -1,23 +1,24 @@
 package org.dromara.backstage.payment.service.impl;
 
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
+import org.dromara.backstage.payment.domain.PtBag;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
-import org.dromara.backstage.payment.domain.PtBag;
 import org.dromara.backstage.payment.mapper.PtBagMapper;
 import org.dromara.backstage.payment.service.IPtBagService;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.math.BigDecimal;
+import java.util.*;
 
 /**
  * 账户钱包Service业务层处理
@@ -38,7 +39,7 @@ public class PtBagServiceImpl implements IPtBagService {
      * @return 账户钱包
      */
     @Override
-    public PtBagVo queryById(Long bagId){
+    public PtBagVo queryById(Long bagId) {
         return baseMapper.selectVoById(bagId);
     }
 
@@ -115,7 +116,7 @@ public class PtBagServiceImpl implements IPtBagService {
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(PtBag entity){
+    private void validEntityBeforeSave(PtBag entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -128,9 +129,41 @@ public class PtBagServiceImpl implements IPtBagService {
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    /**
+     * 根据Id获取账户钱包余额
+     *
+     * @param userIds 人员Id串,英文逗号分隔
+     * @return 余额串,英文逗号分隔
+     */
+    @Override
+    public String selectAccountBalanceByIds(String userIds) {
+        List<String> list = new ArrayList<>();
+        for (Long id : StringUtils.splitTo(userIds, Convert::toLong)) {
+            PtBagBo bo = new PtBagBo();
+            bo.setUserId(id);
+            List<PtBagVo> listVo = SpringUtils.getAopProxy(this).queryList(bo);
+            BigDecimal balance1 = BigDecimal.ZERO;
+            BigDecimal balance2 = BigDecimal.ZERO;
+            Optional<PtBagVo> vo = listVo.stream().filter(p -> "1".equals(p.getBagCode()))
+                .findFirst();
+            if (vo.isPresent()) {
+                balance1 = vo.get().getBalance();
+            }
+            vo = listVo.stream().filter(p -> "3".equals(p.getBagCode()))
+                .findFirst();
+            if (vo.isPresent()) {
+                balance2 = vo.get().getBalance();
+            }
+            BigDecimal total = balance1.add(balance2);
+
+            list.add(total.toString());
+        }
+        return String.join(StringUtils.SEPARATOR, list);
+    }
 }