Selaa lähdekoodia

perf(所有服务): 代码梳理与检查

1.检查是否还存在由信创发kafka消息到本地
2.避免启动依赖,将缓存初始化放到各自服务中
autumnal_wind 10 kuukautta sitten
vanhempi
commit
f652759ecc
50 muutettua tiedostoa jossa 472 lisäystä ja 281 poistoa
  1. 2 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java
  2. 3 7
      ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/YcEncryptUtil.java
  3. 0 3
      ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/aop/aspect/SyncDataToLocalAspect.java
  4. 0 6
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtAccountController.java
  5. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtAreaController.java
  6. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtMealtypeController.java
  7. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtParameterController.java
  8. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtRoomController.java
  9. 243 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/InitServiceBusiness.java
  10. 0 25
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/accouunt/UserAccountBusiness.java
  11. 0 24
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/CardApiController.java
  12. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtCardController.java
  13. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtSubsidyController.java
  14. 0 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtSubsidyitemController.java
  15. 4 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/IPtCardService.java
  16. 37 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtCardServiceImpl.java
  17. 4 48
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/config/ArcFaceConfig.java
  18. 3 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/config/FaceEngineFactory.java
  19. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfDiscountController.java
  20. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfDiscounttermController.java
  21. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedController.java
  22. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedtermController.java
  23. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotaController.java
  24. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotatermController.java
  25. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfTermController.java
  26. 35 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/convert/RemoteConvert.java
  27. 0 2
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/lock/LockController.java
  28. 1 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/vo/card/PtCardVo.java
  29. 1 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtBagController.java
  30. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtUserAccountController.java
  31. 4 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/vo/PtUserAccountVo.java
  32. 3 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtBagService.java
  33. 16 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtBagServiceImpl.java
  34. 31 16
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java
  35. 12 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/task/InitRunner.java
  36. 0 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/wx/contorller/WxController.java
  37. 3 3
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
  38. 6 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  39. 5 2
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/CardBusiness.java
  40. 21 4
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/EmployeeBusiness.java
  41. 1 9
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/InitBusiness.java
  42. 8 8
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/cache/UserAccountCacheManager.java
  43. 3 0
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/IPtBagService.java
  44. 8 0
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/impl/PtBagServiceImpl.java
  45. 7 7
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/task/InitTasks.java
  46. 2 1
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/task/ScheduledTasks.java
  47. 6 28
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/DeptServiceImpl.java
  48. 1 5
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserAccountServiceImpl.java
  49. 0 2
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserCardServiceImpl.java
  50. 2 12
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserServiceImpl.java

+ 2 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java

@@ -204,4 +204,6 @@ public interface CacheNames {
     String XF_DETAIL_ID = "xf_detail_id";
 
     String XF_TERM_IP = "term_ip:";
+
+    String USER_HAS_CARD = "user_has_card";
 }

+ 3 - 7
ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/YcEncryptUtil.java

@@ -122,16 +122,12 @@ public class YcEncryptUtil extends EncryptUtils {
      * @return 生成的密钥
      */
     public static String getBalanceSecretKey(String publicKey, String data) {
-        String secretKey;
-        String cacheKey = CacheNames.USER_SECRET_KEY + ":" + data;
-        if (ObjectUtil.isNotNull(RedisUtils.getCacheObject(cacheKey))) {
-            secretKey = RedisUtils.getCacheObject(cacheKey).toString();
-        } else {
+        String secretKey = RedisUtils.getCacheMapValue(CacheNames.USER_SECRET_KEY,data);
+        if (ObjectUtil.isEmpty(secretKey)) {
             String md5DigestData = getMd5DigestData(publicKey);
             secretKey = encryptByMd5WidthAes(data, md5DigestData, false);
-            RedisUtils.setCacheObject(cacheKey, secretKey);
+            RedisUtils.setCacheMapValue(CacheNames.USER_SECRET_KEY,data, secretKey);
         }
-
         return secretKey;
     }
 

+ 0 - 3
ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/aop/aspect/SyncDataToLocalAspect.java

@@ -7,7 +7,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
-import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.reflect.CodeSignature;
 import org.dromara.backstage.api.RemoteSyncToLocalByKafkaService;
 import org.dromara.backstage.api.domain.bo.MessageBo;
@@ -17,8 +16,6 @@ import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.api.model.LoginUser;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
-import org.springframework.stereotype.Component;
 
 import java.lang.reflect.Field;
 import java.util.HashMap;

+ 0 - 6
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtAccountController.java

@@ -105,10 +105,4 @@ public class PtAccountController extends BaseController {
         return toAjax(ptAccountService.deleteWithValidByIds(List.of(accountIds), true));
     }
 
-    /*public static void main(String[] args) throws FileNotFoundException {
-        Map<String,String> hashMap = new HashMap<>();
-        hashMap.put("currentDate", "11111");
-        PdfUtil.renderPdf("bussinessTemplate1.html",hashMap, new FileOutputStream("D:/temp1.pdf"), PageSize.A3);
-        System.err.println("ok");
-    }*/
 }

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtAreaController.java

@@ -19,15 +19,12 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.web.core.BaseController;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 建筑物区域
  * 前端访问路由地址为:/room/ptArea

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtMealtypeController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 营业时段
  * 前端访问路由地址为:/basicParameter/ptMealtype

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtParameterController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 系统参数
  * 前端访问路由地址为:/basicParameter/ptParameter

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtRoomController.java

@@ -23,7 +23,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -36,8 +35,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 房间定义
  * 前端访问路由地址为:/room/ptRoom

+ 243 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/InitServiceBusiness.java

@@ -0,0 +1,243 @@
+package org.dromara.backstage.business;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.backstage.api.domain.vo.*;
+import org.dromara.backstage.basics.domain.bo.PtMealTypeBo;
+import org.dromara.backstage.basics.domain.vo.PtMealTypeVo;
+import org.dromara.backstage.basics.service.IPtMealtypeService;
+import org.dromara.backstage.basics.service.IPtParameterService;
+import org.dromara.backstage.cardCenter.service.IPtCardService;
+import org.dromara.backstage.consumption.domain.bo.*;
+import org.dromara.backstage.consumption.domain.vo.*;
+import org.dromara.backstage.consumption.service.*;
+import org.dromara.backstage.domain.vo.card.PtCardVo;
+import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
+import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
+import org.dromara.backstage.payment.service.IPtUserAccountService;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.json.utils.JsonUtils;
+import org.dromara.common.redis.utils.RedisUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.Duration;
+import java.util.List;
+
+/**
+ * 服务启动后一些初始化业务处理
+ * <p>
+ * [功能说明]
+ * ${1:在此简要描述文件核心功能}
+ *
+ * @author luoyibo
+ * @version 2.2.0
+ * @date 2025-07-10
+ * @since JDK17
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class InitServiceBusiness {
+    private final IPtParameterService parameterService;
+    private final IPtMealtypeService mealTypeService;
+    private final IXfLimitedTermService limitedTermService;
+    private final IXfLimitedService limitedService;
+    private final IXfDiscountService discountService;
+    private final IXfDiscountTermService discountTermService;
+    private final IXfQuotaService xfQuotaService;
+    private final IXfQuotaTermService xfQuotaTermService;
+    private final IPtCardService cardService;
+    private final IPtUserAccountService userAccountService;
+
+    /**
+     * 初始化全局消费参数.
+     * 这部分数据系统初始化时设置后基本不会改动,只需要启动后初始化即可
+     * <p>
+     * 1.是否全局启用了消费限次
+     * 2.是否全局启用了消费限额
+     * 3.是否全局启用了消费折扣
+     * >
+     */
+    public void initGlobalData() {
+        String disCount = parameterService.selectParamByCode("RATE_CONSUME");
+        String quota = parameterService.selectParamByCode("XE_CONSUME");
+        String limited = parameterService.selectParamByCode("XC_CONSUME");
+
+        log.info("初始化全局限次、限额和折扣参数完成");
+    }
+
+    /**
+     * 初始化消费餐类清单参数.
+     * <p>
+     * 该方法用于在系统启动时初始化消费餐类的相关信息,并将其存储在 Redis 缓存中以便快速访问。
+     */
+    public void initMealTypeInfo() {
+        PtMealTypeBo bo = new PtMealTypeBo();
+        List<PtMealTypeVo> list = mealTypeService.queryList(bo);
+
+        RedisUtils.deleteKeys(CacheNames.PT_MEAL_TYPE_LIST);
+        RedisUtils.setCacheList(CacheNames.PT_MEAL_TYPE_LIST, MapstructUtils.convert(list, RemoteMealTypeVo.class));
+        RedisUtils.expire(CacheNames.PT_MEAL_TYPE_LIST, Duration.ofDays(1));
+
+        log.info("初始化消费餐类清单参数完成");
+    }
+
+    /**
+     * 初始化折扣、限次、限额信息
+     * 需要折扣、限额和限次的设备与卡类在系统使用前就会初始化,后续除了增加新设备外,一般不再改动
+     * 在服务启动时加载一次,再根据是否有调整数据手工加载或第天定时加载一次
+     */
+    public void initDiscountAndOther() {
+        XfLimitedTermBo bo = new XfLimitedTermBo();
+        List<XfLimitedTermVo> list = limitedTermService.queryList(bo);
+        if (CollUtil.isNotEmpty(list)) {
+            List<Long> limitedTermIds = list.stream().map(XfLimitedTermVo::getTermId).toList();
+            RedisUtils.deleteKeys(CacheNames.T_XF_LIMITEDTERM);
+            limitedTermIds.forEach(p -> {
+                String key = String.valueOf(p);
+                RedisUtils.setCacheMapValue(CacheNames.T_XF_LIMITEDTERM, key, p);
+            });
+        }
+        log.info("初始化限次设备参数完成");
+
+        XfLimitedBo limitedBo = new XfLimitedBo();
+        limitedBo.setStatus("1");
+        List<XfLimitedVo> limitedVos = limitedService.queryList(limitedBo);
+        if (CollUtil.isNotEmpty(limitedVos)) {
+            RedisUtils.deleteKeys(CacheNames.T_XF_LIMITED);
+            limitedVos.forEach(p -> {
+                RemoteLimitedVo remoteLimitedVo = new RemoteLimitedVo();
+                remoteLimitedVo.setLimitedId(p.getLimitedId());
+                remoteLimitedVo.setCardType(p.getCardType());
+                remoteLimitedVo.setCardTypeName(p.getCardTypeName());
+                remoteLimitedVo.setDailyCount(p.getDailyCount());
+                remoteLimitedVo.setOneCount(p.getOneCount());
+                remoteLimitedVo.setTwoCount(p.getTwoCount());
+                remoteLimitedVo.setThreeCount(p.getThreeCount());
+                remoteLimitedVo.setFourCount(p.getFourCount());
+                remoteLimitedVo.setRemark(p.getRemark());
+                remoteLimitedVo.setStatus(p.getStatus());
+
+                String key = String.valueOf(p.getCardType());
+                RedisUtils.setCacheMapValue(CacheNames.T_XF_LIMITED, key, remoteLimitedVo);
+            });
+        }
+        log.info("初始化限次卡类参数完成");
+
+
+        XfDiscountTermBo xfDiscountTermBo = new XfDiscountTermBo();
+        List<XfDiscountTermVo> xfDiscountTermVos = discountTermService.queryList(xfDiscountTermBo);
+        if (CollUtil.isNotEmpty(xfDiscountTermVos)) {
+            List<Long> discountTermIds = xfDiscountTermVos.stream().map(XfDiscountTermVo::getTermId).toList();
+            RedisUtils.deleteKeys(CacheNames.T_XF_DISCOUNTTERM);
+            discountTermIds.forEach(p -> {
+                String key = String.valueOf(p);
+                RedisUtils.setCacheMapValue(CacheNames.T_XF_DISCOUNTTERM, key, p);
+            });
+        }
+        log.info("初始化折扣设备参数完成");
+
+        XfDiscountBo xfDiscountBo = new XfDiscountBo();
+        xfDiscountBo.setStatus("1");
+        List<XfDiscountVo> xfDiscountVos = discountService.queryList(xfDiscountBo);
+        if (CollUtil.isNotEmpty(xfDiscountVos)) {
+            // List<RemoteDiscountVo> discountCards = MapstructUtils.convert(list, RemoteDiscountVo.class);
+            RedisUtils.deleteKeys(CacheNames.T_XF_DISCOUNT);
+            xfDiscountVos.forEach(p -> {
+                String key = String.format("%s-%s", p.getCardType(), p.getMealType());
+                RemoteDiscountVo remoteDiscountVo = new RemoteDiscountVo();
+                remoteDiscountVo.setDiscountId(p.getDiscountId());
+                remoteDiscountVo.setCardType(p.getCardType());
+                remoteDiscountVo.setCardTypeName(p.getCardTypeName());
+                remoteDiscountVo.setMealType(p.getMealType());
+                remoteDiscountVo.setMealTypeName(p.getCardTypeName());
+                remoteDiscountVo.setRateType(p.getRateType());
+                remoteDiscountVo.setOneRate(p.getOneRate());
+                remoteDiscountVo.setTwoRate(p.getTwoRate());
+                remoteDiscountVo.setThreeRate(p.getThreeRate());
+                remoteDiscountVo.setFourRate(p.getFourRate());
+                remoteDiscountVo.setRemark(p.getRemark());
+                remoteDiscountVo.setStatus(p.getStatus());
+
+                RedisUtils.setCacheMapValue(CacheNames.T_XF_DISCOUNT, key, remoteDiscountVo);
+            });
+        }
+        log.info("初始化折扣卡类参数完成");
+
+        XfQuotaTermBo xfQuotaTermBo = new XfQuotaTermBo();
+        List<XfQuotatermVo> xfQuotatermVoList = xfQuotaTermService.queryList(xfQuotaTermBo);
+        if (CollUtil.isNotEmpty(xfQuotatermVoList)) {
+            List<Long> quotaTermIds = xfQuotatermVoList.stream().map(XfQuotatermVo::getTermId).toList();
+            if (CollUtil.isNotEmpty(quotaTermIds)) {
+                RedisUtils.deleteKeys(CacheNames.T_XF_QUOTATERM);
+                quotaTermIds.forEach(p -> {
+                    String key = String.valueOf(p);
+                    RedisUtils.setCacheMapValue(CacheNames.T_XF_QUOTATERM, key, p);
+                });
+            }
+        }
+        log.info("初始化限额设备参数完成");
+
+        XfQuotaBo xfQuotaBo = new XfQuotaBo();
+        xfQuotaBo.setStatus("1");
+        List<XfQuotaVo> xfQuotaVos = xfQuotaService.queryList(xfQuotaBo);
+        if (CollUtil.isNotEmpty(xfQuotaVos)) {
+            RedisUtils.deleteKeys(CacheNames.T_XF_QUOTA);
+            xfQuotaVos.forEach(p -> {
+                String key = String.valueOf(p.getCardType());
+                RemoteQuotaVo remoteQuotaVo = new RemoteQuotaVo();
+                remoteQuotaVo.setQuotaId(p.getQuotaId());
+                remoteQuotaVo.setCardType(p.getCardType());
+                remoteQuotaVo.setCardTypeName(p.getCardTypeName());
+                remoteQuotaVo.setDailyMoney(p.getDailyMoney());
+                remoteQuotaVo.setOneMoney(p.getOneMoney());
+                remoteQuotaVo.setTwoMoney(p.getTwoMoney());
+                remoteQuotaVo.setThreeMoney(p.getThreeMoney());
+                remoteQuotaVo.setFourMoney(p.getFourMoney());
+                remoteQuotaVo.setRemark(p.getRemark());
+                remoteQuotaVo.setStatus(p.getStatus());
+
+                RedisUtils.setCacheMapValue(CacheNames.T_XF_QUOTA, key, remoteQuotaVo);
+            });
+        }
+        log.info("初始化限额卡类参数完成");
+    }
+
+    /**
+     * 初始化人员卡片
+     */
+    public void initUserCard() {
+        List<PtCardVo> list = cardService.selectNormalCards();
+        RedisUtils.deleteKeys(CacheNames.PT_USER_CARD_NO);
+        RedisUtils.deleteKeys(CacheNames.PT_USER_CARD_USER_ID);
+        RedisUtils.deleteKeys(CacheNames.PT_USER_CARD_FACTORYID);
+        list.forEach(p -> {
+            RedisUtils.setCacheMapValue(CacheNames.PT_USER_CARD_NO, p.getCardNo().toString(), JsonUtils.toJsonString(p));
+            RedisUtils.setCacheMapValue(CacheNames.PT_USER_CARD_USER_ID, p.getUserId().toString(), JsonUtils.toJsonString(p));
+            RedisUtils.setCacheMapValue(CacheNames.PT_USER_CARD_FACTORYID, p.getFactoryId().toString(), JsonUtils.toJsonString(p));
+        });
+        log.info("初始化人员卡片参数完成");
+    }
+
+    public void initUserAccount() {
+        PtUserAccountBo bo = new PtUserAccountBo();
+        List<PtUserAccountVo> voList = userAccountService.queryList(bo);
+        List<PtUserAccountVo> filterList = voList.stream().filter(
+            p -> p.getDelFlag().equals("0")
+                && p.getLifespan().getTime() > System.currentTimeMillis()).toList();
+        RedisUtils.deleteKeys(CacheNames.PT_USER_ACCOUNT_NO);
+        RedisUtils.deleteKeys(CacheNames.PT_USER_ACCOUNT_NUMB);
+        RedisUtils.deleteKeys(CacheNames.PT_USER_ACCOUNT_ID);
+        if (CollUtil.isNotEmpty(filterList)) {
+            filterList.forEach(p -> {
+                RedisUtils.setCacheMapValue(CacheNames.PT_USER_ACCOUNT_NO, p.getUserNo().toString(), JsonUtils.toJsonString(p));
+                RedisUtils.setCacheMapValue(CacheNames.PT_USER_ACCOUNT_NUMB, p.getUserNumb(), JsonUtils.toJsonString(p));
+                RedisUtils.setCacheMapValue(CacheNames.PT_USER_ACCOUNT_ID, p.getUserId().toString(), JsonUtils.toJsonString(p));
+            });
+        }
+        log.info("初始化人员账户参数完成");
+    }
+}

+ 0 - 25
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/accouunt/UserAccountBusiness.java

@@ -16,14 +16,11 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboReference;
-import org.dromara.backstage.api.RemotePtParameterService;
 import org.dromara.backstage.business.card.CardBusiness;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
 import org.dromara.backstage.domain.vo.account.AccountInfoVo;
 import org.dromara.backstage.domain.vo.card.PtCardVo;
-import org.dromara.backstage.mq.KafkaNormalProducer;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
@@ -44,10 +41,6 @@ public class UserAccountBusiness {
     private final IPtBagService bagService;
     private final IPtCardService cardService;
     private final CardBusiness cardBusiness;
-    private final KafkaNormalProducer kafkaNormalProducer;
-
-    @DubboReference
-    private final RemotePtParameterService remotePtParameterService;
 
     /**
      * 开通一卡通账户
@@ -67,7 +60,6 @@ public class UserAccountBusiness {
             //--------- 设置 流水号和主键id set 到 cardBo
             bo.setCardId(cardBo.getCardId());
             bo.setCardNo(cardBo.getCardNo());
-            //sendCloudConsume(ptUserAccountService.queryById(bo.getUserId()));
             return rs;
         }
 
@@ -100,21 +92,4 @@ public class UserAccountBusiness {
         accountInfoVo.setAccountBase(ptUserAccountVo);
         return R.ok(accountInfoVo);
     }
-
-    //private void sendCloudConsume(PtUserAccountVo vo) {
-    //    String pushData = remotePtParameterService.getPtParameterByKey("PUSH_MQ_DATA");
-    //    if (ObjectUtil.isNotEmpty(pushData) && ObjectUtil.equals(pushData, "1")) {
-    //        KafkaMessage<PtUserAccountVo> message = new KafkaMessage<>();
-    //        KafkaHeader header = message.getHeader();
-    //        header.setTimestamp(System.currentTimeMillis());
-    //        header.setEventId(CloudMqEventConstants.ACCOUNT);
-    //        header.setEventType(CloudMqEventConstants.ACCOUNT);
-    //        header.setSender(CloudMqEventConstants.SENDER);
-    //
-    //        message.setHeader(header);
-    //        message.setBody(vo);
-    //
-    //        kafkaNormalProducer.sendKafkaMessage(CloudMqEventConstants.TOPIC, message);
-    //    }
-    //}
 }

+ 0 - 24
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/CardApiController.java

@@ -21,7 +21,6 @@ import org.dromara.common.core.enums.CardOperateEnum;
 import org.dromara.common.core.enums.CardStatusEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.exception.ApiException;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.web.core.BaseController;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.validation.annotation.Validated;
@@ -34,8 +33,6 @@ import java.math.BigDecimal;
 import java.text.MessageFormat;
 import java.util.Map;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * @ClassName CardApiController
  * @Description 提供给自助客户端对卡片操作的接口
@@ -72,16 +69,6 @@ public class CardApiController extends BaseController {
         }
         throw new ApiException(result.getData().getDetail(), result.getData().getCode());
     }
-    //@PostMapping("/api/v1/change")
-    //@SyncDataToLocal(eventType = CARD_OPERATION, sender = CARD_CENTER_SENDER)
-    //public ReturnResult initChangeCard(@RequestBody Map<String, Object> initParam) {
-    //    return getReturnResult(initParam);
-    //}
-    //@PostMapping("/api/v1/reissue")
-    //@SyncDataToLocal(eventType = CARD_OPERATION, sender = CARD_CENTER_SENDER)
-    //public ReturnResult initReissueCard(@RequestBody Map<String, Object> initParam) {
-    //    return getReturnResult(initParam);
-    //}
 
     @NotNull
     private ReturnResult getReturnResult(@RequestBody Map<String, Object> initParam) {
@@ -206,15 +193,4 @@ public class CardApiController extends BaseController {
         return bo;
     }
 
-    //@PostMapping("/api/v1/init")
-    //public ReturnResult initSefNewCard(@RequestBody Map<String, Object> initParam) {
-    //    PtCardBo bo = getInitInfo(initParam);
-    //    InitCardVo initCardVo = new InitCardVo();
-    //    R<ResultInfo> result = cardBusiness.initEntityCard(bo, initCardVo);
-    //    if (R.isSuccess(result)) {
-    //        PtCardVo cardVo = initCardVo.getCard();
-    //        return ReturnResult.success(YcVoConvert.cardVoConvert(cardVo));
-    //    }
-    //    throw new ApiException(result.getData().getDetail(), result.getData().getCode());
-    //}
 }

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtCardController.java

@@ -17,7 +17,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -26,8 +25,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 账户卡片
  * 前端访问路由地址为:/cardOperation/ptCard

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtSubsidyController.java

@@ -16,7 +16,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -25,8 +24,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 补助设置
  * 前端访问路由地址为:/subsidy/ptSubsidy

+ 0 - 4
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtSubsidyitemController.java

@@ -21,7 +21,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.satoken.utils.LoginHelper;
@@ -39,9 +38,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.SUBSIDY_ITEM_REMOVE;
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.SUBSIDY_SENDER;
-
 /**
  * 补助明细
  * 前端访问路由地址为:/subsidy/ptSubsidyitem

+ 4 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/IPtCardService.java

@@ -1,5 +1,6 @@
 package org.dromara.backstage.cardCenter.service;
 
+import org.dromara.backstage.api.domain.vo.RemoteCardVo;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
 import org.dromara.backstage.domain.vo.card.PtCardVo;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
@@ -10,6 +11,7 @@ import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 账户卡片Service接口
@@ -230,4 +232,6 @@ public interface IPtCardService {
     List<PtCardVo> selectNormalCards();
 
     Boolean updateCardDayData(PtCardBo bo);
+
+    Map<Long, String> getUserHasCard();
 }

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

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.backstage.api.domain.vo.RemoteCardVo;
 import org.dromara.backstage.basics.domain.vo.PtCardtypeVo;
 import org.dromara.backstage.basics.service.IPtCardtypeService;
 import org.dromara.backstage.basics.service.IPtParameterService;
@@ -21,6 +22,7 @@ import org.dromara.backstage.cardCenter.mapper.PtCardMapper;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
 import org.dromara.backstage.domain.vo.card.PtCardVo;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
+import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.constant.Constants;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.enums.CardOpenEnum;
@@ -31,11 +33,14 @@ import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.hotel.api.service.RemoteCardDataService;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
+import javax.smartcardio.Card;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 账户卡片Service业务层处理
@@ -604,7 +609,13 @@ public class PtCardServiceImpl implements IPtCardService {
             .eq(PtCard::getStatus, CardStatusEnum.NORMAL.code().toString())
             .ge(PtCard::getLifespan, DateUtil.date())
             .orderByDesc(PtCard::getChangeTime);
-        return baseMapper.selectVoList(lqw);
+
+        List<PtCardVo> cardVos = baseMapper.selectVoList(lqw);
+        cardVos.forEach(p -> {
+            PtCardtypeVo cardTypeVo = cardTypeService.queryByCode(p.getCardType());
+            p.setCardTypeName(cardTypeVo == null ? "未知卡类" : cardTypeVo.getTypeName());
+        });
+        return cardVos;
     }
 
     @Override
@@ -612,4 +623,29 @@ public class PtCardServiceImpl implements IPtCardService {
         PtCard update = MapstructUtils.convert(bo, PtCard.class);
         return baseMapper.updateById(update) > 0;
     }
+
+    @Override
+    public Map<Long, String> getUserHasCard() {
+        LambdaQueryWrapper<PtCard> lqw = new LambdaQueryWrapper<>();
+        lqw.in(PtCard::getStatus, "1", "2", "7");
+        lqw.select(PtCard::getUserId, PtCard::getFactoryId);
+
+        List<PtCard> listVo = baseMapper.selectList(lqw);
+        // 按userId分组
+        return listVo.stream()
+            .collect(Collectors.groupingBy(
+                PtCard::getUserId,  // 按userId分组
+                Collectors.collectingAndThen(
+                    Collectors.toList(),
+                    cards -> {
+                        if (cards.size() > 1) {
+                            return "实体卡";
+                        } else {
+                            PtCard singleCard = cards.get(0);
+                            return (singleCard.getFactoryId() == 0L) ? "虚拟卡" : "实体卡";
+                        }
+                    }
+                )
+            ));
+    }
 }

+ 4 - 48
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/config/ArcFaceConfig.java

@@ -1,6 +1,9 @@
 package org.dromara.backstage.config;
 
 
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 
@@ -9,9 +12,9 @@ import org.springframework.context.annotation.Configuration;
  * @date 2020/7/31 0031
  * @time 16:31
  */
+@Data
 @Configuration
 @ConfigurationProperties(prefix = "arcconfig.arcface-sdk")
-//@ConditionalOnProperty(value = { "arcConfig.arcface-sdk.enable" },matchIfMissing = false)
 public class ArcFaceConfig {
     //获取配置参数
     public String sdkLibPath="";
@@ -27,51 +30,4 @@ public class ArcFaceConfig {
     // 离线激活文件
     public String activeFile = "";
 
-    public String getSdkLibPath() {
-        return sdkLibPath;
-    }
-
-    public void setSdkLibPath(String sdkLibPath) {
-        this.sdkLibPath = sdkLibPath;
-    }
-
-    public String getAppId() {
-        return appId;
-    }
-
-    public void setAppId(String appId) {
-        this.appId = appId;
-    }
-
-    public String getSdkKey() {
-        return sdkKey;
-    }
-
-    public void setSdkKey(String sdkKey) {
-        this.sdkKey = sdkKey;
-    }
-
-    public Integer getDetectPooSize() {
-        return detectPooSize;
-    }
-
-    public void setDetectPooSize(Integer detectPooSize) {
-        this.detectPooSize = detectPooSize;
-    }
-
-    public Integer getComparePooSize() {
-        return comparePooSize;
-    }
-
-    public void setComparePooSize(Integer comparePooSize) {
-        this.comparePooSize = comparePooSize;
-    }
-
-    public String getActiveFile() {
-        return activeFile;
-    }
-
-    public void setActiveFile(String activeFile) {
-        this.activeFile = activeFile;
-    }
 }

+ 3 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/config/FaceEngineFactory.java

@@ -17,13 +17,13 @@ import org.dromara.common.core.exception.ServiceException;
 @Slf4j
 //@ConditionalOnProperty(value = { "arcConfig.arcface-sdk.enable" }, matchIfMissing = false)
 public class FaceEngineFactory extends BasePooledObjectFactory<FaceEngine> {
-	private String libPath;
+	private final String libPath;
 	private String appId;
 	private String sdkKey;
 	private String activeKey;
-	private EngineConfiguration engineConfiguration;
+	private final EngineConfiguration engineConfiguration;
 
-    private String activeFile;
+    private final String activeFile;
 
 	public FaceEngineFactory(String libPath, String appId, String sdkKey, String activeKey,
                              EngineConfiguration engineConfiguration, String activeFile) {

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfDiscountController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 折扣管理
  * 前端访问路由地址为:/consumption/xfDiscount

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfDiscounttermController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 折扣设备
  * 前端访问路由地址为:/consumption/xfDiscountterm

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 限次管理
  * 前端访问路由地址为:/consumption/xfLimited

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedtermController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 限次设备绑定
  * 前端访问路由地址为:/consumption/xfLimitedterm

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotaController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 限额管理
  * 前端访问路由地址为:/consumption/xfQuota

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotatermController.java

@@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -24,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 限额设备绑定
  * 前端访问路由地址为:/consumption/xfQuotaterm

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfTermController.java

@@ -20,7 +20,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -32,8 +31,6 @@ import org.springframework.web.multipart.MultipartFile;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 消费设备
  * 前端访问路由地址为:/consumption/xfTerm

+ 35 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/convert/RemoteConvert.java

@@ -0,0 +1,35 @@
+package org.dromara.backstage.consumption.domain.convert;
+
+import org.dromara.backstage.api.domain.vo.RemoteLimitedVo;
+import org.dromara.backstage.consumption.domain.vo.XfLimitedVo;
+
+/**
+ * 类转换
+ * <p>
+ * [功能说明]
+ * ${1:在此简要描述文件核心功能}
+ *
+ * @author luoyibo
+ * @date 2025-07-10
+ * @since JDK17
+ */
+public class RemoteConvert {
+    public static RemoteLimitedVo convertLimited(XfLimitedVo arg0, RemoteLimitedVo arg1) {
+        if ( arg0 == null ) {
+            return arg1;
+        }
+
+        arg1.setLimitedId( arg0.getLimitedId() );
+        arg1.setCardType( arg0.getCardType() );
+        arg1.setCardTypeName( arg0.getCardTypeName() );
+        arg1.setDailyCount( arg0.getDailyCount() );
+        arg1.setOneCount( arg0.getOneCount() );
+        arg1.setTwoCount( arg0.getTwoCount() );
+        arg1.setThreeCount( arg0.getThreeCount() );
+        arg1.setFourCount( arg0.getFourCount() );
+        arg1.setRemark( arg0.getRemark() );
+        arg1.setStatus( arg0.getStatus() );
+
+        return arg1;
+    }
+}

+ 0 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/lock/LockController.java

@@ -7,8 +7,6 @@ import org.dromara.backstage.domain.bo.lock.RoomCardBo;
 import org.dromara.backstage.task.ScheduledTasks;
 import org.dromara.common.core.api.ResponseResult;
 import org.dromara.common.core.api.ReturnResult;
-import org.dromara.common.core.config.DefaultConfig;
-import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.springframework.web.bind.annotation.*;

+ 1 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/vo/card/PtCardVo.java

@@ -152,7 +152,7 @@ public class PtCardVo implements Serializable {
     /**
      * 卡片类型名称
      */
-    @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
+    // @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
     private String cardTypeName;
 
     /**

+ 1 - 4
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtBagController.java

@@ -22,7 +22,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.satoken.utils.LoginHelper;
@@ -36,8 +35,6 @@ import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 账户钱包
  * 前端访问路由地址为:/payment/ptBag
@@ -59,7 +56,7 @@ public class PtBagController extends BaseController {
     //根据userId查询账户余额
 //    @SaCheckPermission("payment:ptBag:query")
     @GetMapping("/selectSelfAccountBalance")
-    public R<java.lang.String> selectAccountBalanceByIds() {
+    public R<String> selectAccountBalanceByIds() {
         java.lang.String userIds = java.lang.String.valueOf(LoginHelper.getUserId());
         return R.ok("", ptBagService.selectAccountBalanceByIds(userIds));
     }

+ 0 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtUserAccountController.java

@@ -33,7 +33,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
@@ -49,8 +48,6 @@ import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.List;
 
-import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
-
 /**
  * 一卡通账户
  * 前端访问路由地址为:/payment/ptUserAccount

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

@@ -216,25 +216,25 @@ public class PtUserAccountVo implements Serializable {
     /**
      * 部门名
      */
-    @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "deptId")
+    // @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "deptId")
     private String deptName;
 
     /**
      * 卡类名
      */
-    @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
+    // @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
     private String cardTypeName;
 
     /**
      * 账户余额
      */
-    @Translation(type = TransConstant.USER_ID_TO_BALANCE, mapper = "userId")
+    // @Translation(type = TransConstant.USER_ID_TO_BALANCE, mapper = "userId")
     private String accountBalance;
 
     /**
      * 账户发卡信息
      */
-    @Translation(type = TransConstant.USER_ID_TO_CARD_INFO, mapper = "userId")
+    // @Translation(type = TransConstant.USER_ID_TO_CARD_INFO, mapper = "userId")
     private String accountCard;
 
     /**

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

@@ -9,6 +9,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
 import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 账户钱包Service接口
@@ -106,4 +107,6 @@ public interface IPtBagService {
      * @return 账户钱包
      */
     PtBagVo queryByUserBagCode(Long userId,String bagCode);
+
+    Map<Long, BigDecimal> queryUserBalance();
 }

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

@@ -281,6 +281,22 @@ public class PtBagServiceImpl implements IPtBagService {
         return entity;
     }
 
+    @Override
+    public Map<Long, BigDecimal> queryUserBalance() {
+        LambdaQueryWrapper<PtBag> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(PtBag::getBagCode, Arrays.asList("1", "3"));
+        queryWrapper.select(PtBag::getBalance,PtBag::getUserId);
+        List<PtBagVo> listVo = baseMapper.selectVoList(queryWrapper);
+
+        Map<Long, BigDecimal> sumMap = new HashMap<>();
+        for (PtBagVo vo : listVo) {
+            Long userId = vo.getUserId();
+            BigDecimal amount = vo.getBalance();
+            sumMap.merge(userId, amount, BigDecimal::add);
+        }
+        return sumMap;
+    }
+
     /**
      * 组装充值钱包数据
      * 1.设置充值后余额=账户原余额+充值金额

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

@@ -118,6 +118,9 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
             .orderByAsc(PtUserAccount::getRealName);
         //Page<PtUserAccountVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         Page<PtUserAccountVo> result = baseMapper.customSelectVoPage(pageQuery.build(), lqw);
+        List<PtUserAccountVo> list = result.getRecords();
+        addOtherInfoForList(list);
+        result.setRecords(list);
         return TableDataInfo.build(result);
     }
 
@@ -133,6 +136,7 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
 //        }
 //        wrapper.orderByAsc("u.dept_id").orderByAsc("u.create_time");
         Page<PtUserAccount4SelectVo> result = baseMapper.customPageList(pageQuery.build(), bo);
+
         return TableDataInfo.build(result);
     }
 
@@ -146,20 +150,7 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
     public List<PtUserAccountVo> queryList(PtUserAccountBo bo) {
         LambdaQueryWrapper<PtUserAccount> lqw = buildQueryWrapper(bo);
         List<PtUserAccountVo> accountVoList = baseMapper.selectVoList(lqw);
-        List<RemoteDeptVo> deptVoList = remoteDeptService.selectDeptList();
-        PtCardtypeBo cardTypeBo = new PtCardtypeBo();
-        cardTypeBo.setStatus("0");
-
-        List<PtCardtypeVo> cardTypeVos = cardTypeService.queryList(cardTypeBo);
-        accountVoList.forEach(p -> {
-            String deptName = deptVoList.parallelStream().filter(k -> k.getDeptId().equals(p.getDeptId()))
-                .findFirst().map(RemoteDeptVo::getDeptName).orElse("未知部门");
-            p.setDeptName(deptName);
-
-            String cardTypeNme = cardTypeVos.parallelStream().filter(k -> k.getCode().equals(p.getCardType()))
-                .findFirst().map(PtCardtypeVo::getTypeName).orElse("未知卡类");
-            p.setCardTypeName(cardTypeNme);
-        });
+        addOtherInfoForList(accountVoList);
         return accountVoList;
     }
 
@@ -683,7 +674,7 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
             .between(PtUserAccount::getUpdateTime, startDate, date);
         List<PtUserAccountVo> userAccountVos = baseMapper.selectVoList(between);
         List<PtUserAccountVo> updatePhotos = userAccountVos.stream().filter(e -> StringUtils.isNotBlank(e.getPhoto())).toList();
-        updatePhotos.forEach(e -> e.setFacePicUrl(photoPrefix+e.getPhoto()));
+        updatePhotos.forEach(e -> e.setFacePicUrl(photoPrefix + e.getPhoto()));
 
         List<PtUserAccountVo> rs = new ArrayList<>(updatePhotos);
 
@@ -691,7 +682,7 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
         List<PtCardVo> cardVos = ptCardService.getList(startDate, date);
         List<Long> userIds = cardVos.stream().map(PtCardVo::getUserId).toList();
         Map<Long, PtCardVo> collect = cardVos.stream().collect(Collectors.toMap(PtCardVo::getUserId, e -> e));
-        if(CollectionUtil.isNotEmpty(userIds)){
+        if (CollectionUtil.isNotEmpty(userIds)) {
             LambdaQueryWrapper<PtUserAccount> in = Wrappers.lambdaQuery(PtUserAccount.class).in(PtUserAccount::getUserId, userIds);
             List<PtUserAccountVo> userAccountVos1 = baseMapper.selectVoList(in);
             userAccountVos1.forEach(e -> e.setCard(collect.get(e.getUserId())));
@@ -703,5 +694,29 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
         return rs;
     }
 
+    private void addOtherInfoForList(List<PtUserAccountVo> list){
+        // 附加部门信息
+        List<RemoteDeptVo> deptVoList = remoteDeptService.selectDeptList();
+        // 附加余额信息
+        Map<Long, BigDecimal> accountBalance = bagService.queryUserBalance();
+        // 附加发卡信息
+        Map<Long, String> accountCards = ptCardService.getUserHasCard();
+
+        list.forEach(p -> {
+            addOtherInfo(p, deptVoList, accountBalance, accountCards);
+        });
+    }
+   private void addOtherInfo(PtUserAccountVo vo,List<RemoteDeptVo> deptVoList,Map<Long, BigDecimal> accountBalance,Map<Long, String> accountCards){
+       String deptName = deptVoList.parallelStream().filter(k -> k.getDeptId().equals(vo.getDeptId()))
+           .findFirst().map(RemoteDeptVo::getDeptName).orElse("未知部门");
+       vo.setDeptName(deptName);
+
+       PtCardtypeVo cardTypeVo = cardTypeService.queryByCode(vo.getCardType());
+       vo.setCardTypeName(cardTypeVo == null ? "未知卡类" : cardTypeVo.getTypeName());
+
+       BigDecimal balance = accountBalance.getOrDefault(vo.getUserId(),BigDecimal.ZERO);
+       vo.setAccountBalance(balance.toString());
 
+       vo.setAccountCard(accountCards.getOrDefault(vo.getUserId(), "未发卡"));
+   }
 }

+ 12 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/task/InitRunner.java

@@ -2,6 +2,9 @@ package org.dromara.backstage.task;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.backstage.business.InitServiceBusiness;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
@@ -18,9 +21,15 @@ import org.springframework.stereotype.Component;
 @RequiredArgsConstructor
 @Component
 @Slf4j
-public class InitRunner implements CommandLineRunner {
-    @Override
-    public void run(String... args) throws Exception {
+public class InitRunner implements ApplicationRunner {
+    private final InitServiceBusiness initServiceBusiness;
 
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        initServiceBusiness.initGlobalData();
+        initServiceBusiness.initMealTypeInfo();
+        initServiceBusiness.initDiscountAndOther();
+        initServiceBusiness.initUserCard();
+        initServiceBusiness.initUserAccount();
     }
 }

+ 0 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/wx/contorller/WxController.java

@@ -26,7 +26,6 @@ import java.util.Map;
 @Validated
 @RequiredArgsConstructor
 @RestController
-//@ResponseResult
 @RequestMapping("/wx")
 public class WxController extends BaseController {
     private final IWxService wxService;

+ 3 - 3
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -296,7 +296,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
         int count = this.insertDept(bo);
         if (count > 0) {
             SysDeptVo vo = baseMapper.selectVoById(bo.getDeptId());
-            kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
+            // kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
             return vo;
         }
         return null;
@@ -331,8 +331,8 @@ public class SysDeptServiceImpl implements ISysDeptService {
             updateParentDeptStatusNormal(dept);
         }
         // sendCloudConsume(baseMapper.selectVoById(dept.getDeptId()));
-        SysDeptVo vo = baseMapper.selectVoById(bo.getDeptId());
-        kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
+        // SysDeptVo vo = baseMapper.selectVoById(bo.getDeptId());
+        // kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
         return result;
     }
 

+ 6 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -395,10 +395,10 @@ public class SysUserServiceImpl implements ISysUserService {
                     user.setUserNo(remoteUserAccountBo.getUserNo());
                 }
             }
-            SysUserVo vo = baseMapper.selectVoById(user.getUserId());
-            vo.setUserNo(user.getUserNo());
-            vo.setCardNo(user.getCardNo());
-            kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
+            // SysUserVo vo = baseMapper.selectVoById(user.getUserId());
+            // vo.setUserNo(user.getUserNo());
+            // vo.setCardNo(user.getCardNo());
+            // kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
             return rows;
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -441,8 +441,8 @@ public class SysUserServiceImpl implements ISysUserService {
             int flag = baseMapper.updateById(sysUser);
             // 更新对应的一卡通账户信息
             remoteUserAccountService.updateByBo(BeanUtil.copyProperties(user, RemoteUserAccountBo.class));
-            SysUserVo vo = baseMapper.selectVoById(user.getUserId());
-            kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
+            // SysUserVo vo = baseMapper.selectVoById(user.getUserId());
+            // kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
             return flag;
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 5 - 2
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/CardBusiness.java

@@ -96,8 +96,11 @@ public class CardBusiness {
 
     private Object setCardBagInfo(RemoteCardVo remoteCardVo) {
         CardBagInfo cardBagInfo = new CardBagInfo();
-        // String StrUserId = String.valueOf(remoteCardVo.getUserId());
-        RemoteUserAccountVo userAccountVo = userAccountCacheManager.getByUserId(remoteCardVo.getUserId());
+        String stringAccount = userAccountCacheManager.getByUserId(remoteCardVo.getUserId());
+        if (ObjectUtil.isEmpty(stringAccount)) {
+            return null;
+        }
+        RemoteUserAccountVo userAccountVo = JsonUtils.parseObject(stringAccount, RemoteUserAccountVo.class);
         if (userAccountVo == null) {
             return null;
         }

+ 21 - 4
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/EmployeeBusiness.java

@@ -1,5 +1,6 @@
 package org.dromara.server.consume.business;
 
+import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.backstage.api.domain.vo.RemoteCardVo;
@@ -33,7 +34,11 @@ public class EmployeeBusiness {
     private final CardCacheManager cardCacheManager;
 
     public ReturnResult getEmployeeVoByNumb(String userNumb) {
-        RemoteUserAccountVo userAccountVo = userAccountCacheManager.getByUserNumb(userNumb);
+        String stringAccount = userAccountCacheManager.getByUserNumb(userNumb);
+        if (ObjectUtil.isEmpty(stringAccount)) {
+            return null;
+        }
+        RemoteUserAccountVo userAccountVo = JsonUtils.parseObject(stringAccount, RemoteUserAccountVo.class);
         if (userAccountVo == null) {
             ErrorResult result = new ErrorResult();
             result.setStatusCode(HttpStatus.NOT_FOUND.value());
@@ -55,13 +60,25 @@ public class EmployeeBusiness {
     public RemoteUserAccountVo getAccountFromCache(String checkParam, Integer checkMode) {
         switch (checkMode) {
             case ConsumeConstants.USER_ID -> {
-                return userAccountCacheManager.getByUserId(Long.valueOf(checkParam));
+                String stringAccount = userAccountCacheManager.getByUserId(Long.valueOf(checkParam));
+                if (ObjectUtil.isEmpty(stringAccount)) {
+                    return null;
+                }
+                return JsonUtils.parseObject(stringAccount, RemoteUserAccountVo.class);
             }
             case ConsumeConstants.USER_NO -> {
-                return userAccountCacheManager.getByUserNo(Long.valueOf(checkParam));
+                String stringAccount = userAccountCacheManager.getByUserNo(Long.valueOf(checkParam));
+                if (ObjectUtil.isEmpty(stringAccount)) {
+                    return null;
+                }
+                return JsonUtils.parseObject(stringAccount, RemoteUserAccountVo.class);
             }
             case ConsumeConstants.USER_NUMB -> {
-                return userAccountCacheManager.getByUserNumb(checkParam);
+                String stringAccount = userAccountCacheManager.getByUserNumb(checkParam);
+                if (ObjectUtil.isEmpty(stringAccount)) {
+                    return null;
+                }
+                return JsonUtils.parseObject(stringAccount, RemoteUserAccountVo.class);
             }
         }
         return null;

+ 1 - 9
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/InitBusiness.java

@@ -79,17 +79,8 @@ public class InitBusiness {
      */
     public void initGlobalData() {
         String disCount = remotePtParameterService.getPtParameterByKey("RATE_CONSUME");
-        if (ObjectUtil.isNotEmpty(disCount)) {
-            RedisUtils.setCacheMapValue(CacheNames.PT_PARAMETER, "RATE_CONSUME", disCount);
-        }
         String quota = remotePtParameterService.getPtParameterByKey("XE_CONSUME");
-        if (ObjectUtil.isNotEmpty(quota)) {
-            RedisUtils.setCacheMapValue(CacheNames.PT_PARAMETER, "XE_CONSUME", quota);
-        }
         String limited = remotePtParameterService.getPtParameterByKey("XC_CONSUME");
-        if (ObjectUtil.isNotEmpty(limited)) {
-            RedisUtils.setCacheMapValue(CacheNames.PT_PARAMETER, "XC_CONSUME", limited);
-        }
 
         log.info("初始化全局限次、限额和折扣参数完成");
     }
@@ -177,6 +168,7 @@ public class InitBusiness {
         }
         for (Map.Entry<Long, BigDecimal> entry : sumMap.entrySet()) {
             bagService.cacheUserTotalBalance(entry.getKey(), entry.getValue());
+            bagService.getUserSecretKeyByUserId(entry.getKey());
         }
         log.info("初始化人员余额参数完成");
     }

+ 8 - 8
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/cache/UserAccountCacheManager.java

@@ -32,17 +32,17 @@ public class UserAccountCacheManager {
     private final RemoteUserAccountService remoteUserAccountService;
 
     @Cacheable(cacheNames = CacheNames.PT_USER_ACCOUNT_ID, key = "#userId", unless = "#result == null")
-    public RemoteUserAccountVo getByUserId(Long userId) {
-        return remoteUserAccountService.getUserAccountVoById(userId);
+    public String getByUserId(Long userId) {
+        return JsonUtils.toJsonString(remoteUserAccountService.getUserAccountVoById(userId));
     }
     @Cacheable(cacheNames = CacheNames.PT_USER_ACCOUNT_NO, key = "#userNo", unless = "#result == null")
-    public RemoteUserAccountVo getByUserNo(Long userNo) {
-        return  remoteUserAccountService.getUserAccountVoByUserNo(userNo);
+    public String getByUserNo(Long userNo) {
+        return  JsonUtils.toJsonString(remoteUserAccountService.getUserAccountVoByUserNo(userNo));
     }
 
     @Cacheable(cacheNames = CacheNames.PT_USER_ACCOUNT_NUMB, key = "#userNumb", unless = "#result == null")
-    public RemoteUserAccountVo getByUserNumb(String userNumb) {
-        return remoteUserAccountService.getUserAccountVoByUserNumb(userNumb);
+    public String getByUserNumb(String userNumb) {
+        return JsonUtils.toJsonString(remoteUserAccountService.getUserAccountVoByUserNumb(userNumb));
     }
 
     @Caching(
@@ -52,7 +52,7 @@ public class UserAccountCacheManager {
             @CachePut(cacheNames = CacheNames.PT_USER_ACCOUNT_NUMB, key = "#accountVo.userNumb")
         }
     )
-    public RemoteUserAccountVo cacheUserAccountVo(RemoteUserAccountVo accountVo) {
-        return accountVo;
+    public String cacheUserAccountVo(RemoteUserAccountVo accountVo) {
+        return JsonUtils.toJsonString(accountVo);
     }
 }

+ 3 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/IPtBagService.java

@@ -119,5 +119,8 @@ public interface IPtBagService {
     List<PtBagVo> selectBalanceBag();
 
     BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance);
+
+    String getUserSecretKeyByUserId(Long userId);
+
     // boolean updateBalanceByByConsume(PtBagBo bo);
 }

+ 8 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/impl/PtBagServiceImpl.java

@@ -19,6 +19,7 @@ import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.encrypt.utils.YcEncryptUtil;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.server.consume.domain.PtBag;
 import org.dromara.server.consume.domain.bo.PtBagBo;
@@ -347,6 +348,13 @@ public class PtBagServiceImpl implements IPtBagService {
     public BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance) {
         return balance;
     }
+
+    @Override
+    @CachePut(cacheNames = CacheNames.USER_SECRET_KEY, key = "#userId")
+    public String getUserSecretKeyByUserId(Long userId) {
+        return YcEncryptUtil.getBalanceSecretKey(RedisUtils.getCacheObject(CacheNames.CUSTOM_PUB_KEY).toString(), userId.toString());
+    }
+
     /**
      * 组装充值钱包数据
      * 1.设置充值后余额=账户原余额+充值金额

+ 7 - 7
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/task/InitTasks.java

@@ -32,14 +32,14 @@ public class InitTasks implements ApplicationRunner {
     public void run(ApplicationArguments args) throws Exception {
         log.info("初始化消费验证基础数据");
         long startTime = System.currentTimeMillis();
-        initBusiness.initGlobalData();
-        initBusiness.initTermInfo();
-        initBusiness.initMealTypeInfo();
-        initBusiness.initDiscountAndOther();
-        initBusiness.initUserCard();
-        initBusiness.initUserAccount();
+        // initBusiness.initGlobalData();
+        // initBusiness.initTermInfo();
+        // initBusiness.initMealTypeInfo();
+        // initBusiness.initDiscountAndOther();
+        // initBusiness.initUserCard();
+        // initBusiness.initUserAccount();
         initBusiness.initXfCardLimited();
-        initBusiness.initUserBalance();
+        // initBusiness.initUserBalance();
         validationParam.refresh();
 
         log.info("初始化消费验证基础数据完成。耗时:{} ms", System.currentTimeMillis() - startTime);

+ 2 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/task/ScheduledTasks.java

@@ -76,7 +76,8 @@ public class ScheduledTasks {
         baseBusiness.initMealTypeInfo();
         validationParam.refresh();
     }
-    @Scheduled(cron = "0 0 5,9,13,16,20 * * ?")
+
+    @Scheduled(cron = "0 0 5,9,10,13,16,20 * * ?")
     public void initConsumeInfo() {
         baseBusiness.initXfCardLimited();
         baseBusiness.initUserCard();

+ 6 - 28
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/DeptServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.RequiredArgsConstructor;
-import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -46,10 +45,10 @@ public class DeptServiceImpl implements IDeptService {
 
     @Override
     public SysDeptVo selectByParentAndName(Long parentId, String deptName, String tenantId) {
-        return TenantHelper.ignore(()->deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>()
-                                          .eq(SysDept::getParentId, parentId)
-                                          .eq(SysDept::getDeptName, deptName)
-                                          .eq(SysDept::getTenantId,tenantId)));
+        return TenantHelper.ignore(() -> deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>()
+            .eq(SysDept::getParentId, parentId)
+            .eq(SysDept::getDeptName, deptName)
+            .eq(SysDept::getTenantId, tenantId)));
 
     }
 
@@ -62,12 +61,6 @@ public class DeptServiceImpl implements IDeptService {
         Objects.requireNonNull(entity).setAncestors(getAncestors(bo.getParentId()));
         int iCount = TenantHelper.ignore(
             () -> deptMapper.insert(entity));
-        //if (iCount > 0) {
-        //    bo.setDeptId(entity.getDeptId());
-        //    SysDeptVo vo = TenantHelper.ignore(
-        //        () -> deptMapper.selectVoById(bo.getDeptId()));
-        //    //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
-        //}
         return iCount > 0;
     }
 
@@ -82,11 +75,6 @@ public class DeptServiceImpl implements IDeptService {
         }
         int iCount = TenantHelper.ignore(
             () -> deptMapper.updateById(entity));
-        //if (iCount > 0) {
-        //    SysDeptVo vo = TenantHelper.ignore(
-        //        () -> deptMapper.selectVoById(bo.getDeptId()));
-        //    //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
-        //}
         return iCount > 0;
     }
 
@@ -112,19 +100,9 @@ public class DeptServiceImpl implements IDeptService {
 
     @Override
     public Boolean deleteByOtherId(String otherId, String tenantId) {
-        // TODO 2025-01-24 10:41:56 luoyibo 删除前的校验
-        SysDeptVo vo = TenantHelper.ignore(
-            () -> deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getOtherId, otherId).eq(SysDept::getTenantId, tenantId)));
         int iCount = TenantHelper.ignore(
             () -> deptMapper.delete(new LambdaQueryWrapper<SysDept>().eq(SysDept::getOtherId, otherId).eq(SysDept::getTenantId, tenantId)));
-        //if (iCount > 0) {
-        //    vo.setDelFlag(DefaultConstants.DELETED);
-            //vo.setUpdateBy();
-            //SysDeptVo vo = TenantHelper.ignore(
-            //    () -> deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getOtherId, otherId).eq(SysDept::getTenantId, tenantId)));
-
-            //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
-        //}
+
         return iCount > 0;
     }
 
@@ -135,7 +113,7 @@ public class DeptServiceImpl implements IDeptService {
 
     @Override
     public SysDeptVo selectVoAllByOtherId(String otherId, String tenantId) {
-        return TenantHelper.ignore(()-> deptMapper.selectVoAllByOtherId(otherId, tenantId));
+        return TenantHelper.ignore(() -> deptMapper.selectVoAllByOtherId(otherId, tenantId));
     }
 
     private String getAncestors(Long parentId) {

+ 1 - 5
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserAccountServiceImpl.java

@@ -83,9 +83,7 @@ public class UserAccountServiceImpl implements IUserAccountService {
                 // 如果卡类或有效期变了,需要同步更新主卡的卡类与有效期
             }
         }
-        //vo = TenantHelper.ignore(() -> baseMapper.selectVoById(bo.getUserId()));
-        //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.ACCOUNT, EventSenderEnum.BACKSTAGE.code(), vo);
-        return true;
+         return true;
     }
     /**
      * 根据userId删除账户
@@ -96,7 +94,6 @@ public class UserAccountServiceImpl implements IUserAccountService {
     public Boolean deleteById(String userId) {
         UserAccountVo vo = TenantHelper.ignore(() -> baseMapper.selectVoById(userId));
         vo.setDelFlag(DefaultConstants.DELETED);
-        //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.ACCOUNT, EventSenderEnum.BACKSTAGE.code(), vo);
         return TenantHelper.ignore(() -> baseMapper.update(null, new LambdaUpdateWrapper<UserAccount>()
             .set(UserAccount::getDelFlag, DefaultConstants.DELETED)
             .set(UserAccount::getUpdateBy, userId)
@@ -110,7 +107,6 @@ public class UserAccountServiceImpl implements IUserAccountService {
         vo.setDelFlag(DefaultConstants.DELETED);
         vo.setUpdateBy(operationId);
         vo.setUpdateTime(DateUtil.date());
-        //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.ACCOUNT, EventSenderEnum.BACKSTAGE.code(), vo);
         return TenantHelper.ignore(() -> baseMapper.update(null, new LambdaUpdateWrapper<UserAccount>()
             .set(UserAccount::getDelFlag, DefaultConstants.DELETED)
             .set(UserAccount::getUpdateBy, operationId)

+ 0 - 2
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserCardServiceImpl.java

@@ -63,8 +63,6 @@ public class UserCardServiceImpl implements IUserCardService {
                 bo.setCardId(add.getCardId());
             }
         }
-        //UserCardVo vo = baseMapper.selectVoById(bo.getCardId());
-        //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.CARD, EventSenderEnum.BACKSTAGE.code(), vo);
         return flag;
     }
 }

+ 2 - 12
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserServiceImpl.java

@@ -11,9 +11,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.enums.UserAccountStatusEnum;
 import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.message.kafka.constant.EventTypeConstants;
-import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
-import org.dromara.common.message.kafka.enums.EventSenderEnum;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.server.sync.domain.SysUser;
 import org.dromara.server.sync.domain.bo.SysUserBo;
@@ -21,7 +18,6 @@ import org.dromara.server.sync.domain.bo.UserAccountBo;
 import org.dromara.server.sync.domain.bo.UserDeptBo;
 import org.dromara.server.sync.domain.vo.SysUserVo;
 import org.dromara.server.sync.mapper.SysUserMapper;
-import org.dromara.server.sync.mq.PushKafkaData;
 import org.dromara.server.sync.service.IUserAccountService;
 import org.dromara.server.sync.service.IUserDeptService;
 import org.dromara.server.sync.service.IUserService;
@@ -45,7 +41,6 @@ public class UserServiceImpl implements IUserService {
     private final SysUserMapper baseMapper;
     private final IUserDeptService userDeptService;
     private final IUserAccountService userAccountService;
-    //private final PushKafkaData kafkaNormalProducer;
 
     @Override
     public SysUserVo selectByOtherId(String otherId, String tenantId) {
@@ -65,10 +60,8 @@ public class UserServiceImpl implements IUserService {
         if (rows > 0) {
             UserAccountBo userAccountBo = BeanUtil.copyProperties(bo, UserAccountBo.class);
             userAccountBo.setAccountStatus(UserAccountStatusEnum.IS_OPEN.code().toString());
-            Boolean result = userAccountService.doUserAccount(userAccountBo);
+            userAccountService.doUserAccount(userAccountBo);
         }
-        //SysUserVo vo = TenantHelper.ignore(()->baseMapper.selectVoById(bo.getUserId()));
-        //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
         return rows > 0;
     }
 
@@ -83,10 +76,8 @@ public class UserServiceImpl implements IUserService {
         if (rows > 0) {
             UserAccountBo userAccountBo = BeanUtil.copyProperties(bo, UserAccountBo.class);
             userAccountBo.setAccountStatus(UserAccountStatusEnum.IS_OPEN.code().toString());
-            Boolean result = userAccountService.doUserAccount(userAccountBo);
+            userAccountService.doUserAccount(userAccountBo);
         }
-        //SysUserVo vo = TenantHelper.ignore(()->baseMapper.selectVoById(bo.getUserId()));
-        //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
         return rows > 0;
     }
 
@@ -101,7 +92,6 @@ public class UserServiceImpl implements IUserService {
         vo.setDelFlag(DefaultConstants.DELETED);
         vo.setUpdateBy(operatorId);
 
-        //kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
         userAccountService.deleteById(Long.valueOf(userId), operatorId);
         // 删除人员
         return TenantHelper.ignore(() -> baseMapper.update(null, new LambdaUpdateWrapper<SysUser>()