Ver Fonte

1.完成履约者登录解耦
2.完成bug修复
3.完成业务异常调整

steelwei há 1 mês atrás
pai
commit
5dbdea591c
13 ficheiros alterados com 217 adições e 98 exclusões
  1. 27 0
      ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/RemoteSysServiceService.java
  2. 29 0
      ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/domain/vo/RemoteSysServiceVo.java
  3. 17 1
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java
  4. 8 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrPetServiceImpl.java
  5. 15 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfAppController.java
  6. 2 2
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfAudit.java
  7. 1 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfFulfiller.java
  8. 8 3
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfAuditVo.java
  9. 14 2
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerVo.java
  10. 16 42
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfAuditServiceImpl.java
  11. 14 44
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java
  12. 63 0
      ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/dubbo/RemoteSysServiceServiceImpl.java
  13. 3 3
      ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties

+ 27 - 0
ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/RemoteSysServiceService.java

@@ -0,0 +1,27 @@
+package org.dromara.service.api;
+
+import org.dromara.service.api.domain.vo.RemoteSysServiceVo;
+
+import java.util.List;
+
+/**
+ * 服务项目远程服务接口(Dubbo)
+ *
+ * @author steelwei
+ */
+public interface RemoteSysServiceService {
+
+    /**
+     * 查询所有服务项目列表(id + name)
+     */
+    List<RemoteSysServiceVo> listAll();
+
+    /**
+     * 根据服务ID列表查询服务名称列表
+     *
+     * @param ids 服务ID列表
+     * @return 服务名称列表(保持顺序)
+     */
+    List<String> selectNamesByIds(List<Long> ids);
+
+}

+ 29 - 0
ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/domain/vo/RemoteSysServiceVo.java

@@ -0,0 +1,29 @@
+package org.dromara.service.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 远程服务项目VO(供跨模块Dubbo调用)
+ *
+ * @author steelwei
+ */
+@Data
+public class RemoteSysServiceVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 服务ID
+     */
+    private Long id;
+
+    /**
+     * 服务名称
+     */
+    private String name;
+
+}

+ 17 - 1
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java

@@ -19,6 +19,7 @@ import org.dromara.archieves.domain.UsrCustomer;
 import org.dromara.archieves.mapper.UsrCustomerMapper;
 import org.dromara.archieves.mapper.SysTagRelMapper;
 import org.dromara.archieves.mapper.SysTagMapper;
+import org.dromara.archieves.service.IArcChangeLogService;
 import org.dromara.archieves.service.IUsrCustomerService;
 
 import java.util.List;
@@ -40,6 +41,7 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
     private final UsrCustomerMapper baseMapper;
     private final SysTagRelMapper tagRelMapper;
     private final SysTagMapper tagMapper;
+    private final IArcChangeLogService arcChangeLogService;
 
     @Override
     public UsrCustomerVo queryById(Long id) {
@@ -90,6 +92,7 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
         if (flag) {
             bo.setId(add.getId());
             saveTagRels(add.getId(), bo.getTagIds(), "user");
+            arcChangeLogService.addLog(add.getId(), "customer", "创建", "用户已被创建");
         }
         return flag;
     }
@@ -102,6 +105,12 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
         boolean flag = baseMapper.updateById(update) > 0;
         if (flag) {
             saveTagRels(bo.getId(), bo.getTagIds(), "user");
+            // 如果有备注内容,记录备注日志;否则记录编辑日志
+            if (StringUtils.isNotBlank(bo.getRemark())) {
+                arcChangeLogService.addLog(bo.getId(), "customer", "备注", bo.getRemark());
+            } else {
+                arcChangeLogService.addLog(bo.getId(), "customer", "编辑", "用户信息已修改");
+            }
         }
         return flag;
     }
@@ -115,6 +124,8 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
         if (isValid) {
             //TODO 做一些业务上的校验
         }
+        // 记录删除日志
+        ids.forEach(id -> arcChangeLogService.addLog(id, "customer", "删除", "用户已被删除"));
         // 删除标签关联
         ids.forEach(id -> tagRelMapper.delete(
             Wrappers.lambdaQuery(SysTagRel.class)
@@ -129,7 +140,12 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
         UsrCustomer update = new UsrCustomer();
         update.setId(id);
         update.setStatus(status);
-        return baseMapper.updateById(update) > 0;
+        boolean flag = baseMapper.updateById(update) > 0;
+        if (flag) {
+            String statusText = (status != null && status == 0) ? "启用" : "停用";
+            arcChangeLogService.addLog(id, "customer", "状态变更", "用户状态变更为 " + statusText);
+        }
+        return flag;
     }
 
     /**

+ 8 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrPetServiceImpl.java

@@ -115,6 +115,8 @@ public class UsrPetServiceImpl implements IUsrPetService {
             saveTagRels(add.getId(), bo.getTagIds(), "pet");
             // 更新用户宠物数量
             updateCustomerPetCount(bo.getUserId());
+            // 记录到用户的档案日志
+            arcChangeLogService.addLog(bo.getUserId(), "customer", "新增宠物", "新增宠物档案 (" + bo.getName() + ")");
         }
         return flag;
     }
@@ -147,6 +149,12 @@ public class UsrPetServiceImpl implements IUsrPetService {
         }
         // 获取宠物对应的用户ID,用于后续更新宠物数量
         List<UsrPet> pets = baseMapper.selectBatchIds(ids);
+        // 记录删除宠物日志到用户的档案日志
+        for (UsrPet pet : pets) {
+            if (pet.getUserId() != null) {
+                arcChangeLogService.addLog(pet.getUserId(), "customer", "删除宠物", "删除宠物档案 (" + pet.getName() + ")");
+            }
+        }
         // 删除标签关联
         ids.forEach(id -> tagRelMapper.delete(
             Wrappers.lambdaQuery(SysTagRel.class)

+ 15 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfAppController.java

@@ -9,6 +9,8 @@ import org.dromara.fulfiller.domain.bo.FlfAuditBo;
 import org.dromara.fulfiller.service.IFlfAuditService;
 import org.dromara.resource.api.RemoteFileService;
 import org.dromara.resource.api.domain.RemoteFile;
+import org.dromara.service.api.RemoteSysServiceService;
+import org.dromara.service.api.domain.vo.RemoteSysServiceVo;
 import org.dromara.system.api.RemoteAreaStationService;
 import org.dromara.system.api.domain.vo.RemoteAreaStationVo;
 import org.springframework.http.MediaType;
@@ -41,6 +43,19 @@ public class FlfAppController {
     @DubboReference
     private RemoteFileService remoteFileService;
 
+    @DubboReference
+    private RemoteSysServiceService remoteSysServiceService;
+
+    /**
+     * 查询服务项目列表(App端,无需登录)
+     *
+     * @author steelwei
+     */
+    @GetMapping("/service/list")
+    public R<List<RemoteSysServiceVo>> serviceList() {
+        return R.ok(remoteSysServiceService.listAll());
+    }
+
     /**
      * 查询子级区域/站点列表(级联选择器用)
      *

+ 2 - 2
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfAudit.java

@@ -99,12 +99,12 @@ public class FlfAudit extends BaseEntity {
     private Long idCardBack;
 
     /**
-     * 专业资质图片(JSON数组)
+     * 专业资质图片OSS ID(逗号分隔,如 1,2,3)
      */
     private String qualifications;
 
     /**
-     * 申请服务类型(JSON数组)
+     * 申请服务类型ID(逗号分隔,如 1,2,3)
      */
     private String serviceTypes;
 

+ 1 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfFulfiller.java

@@ -95,7 +95,7 @@ public class FlfFulfiller extends BaseEntity {
     private Date idCardExpiry;
 
     /**
-     * 服务类型(JSON数组)
+     * 服务类型ID(逗号分隔,如 1,2,3)
      */
     private String serviceTypes;
 

+ 8 - 3
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfAuditVo.java

@@ -6,6 +6,8 @@ import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -50,19 +52,22 @@ public class FlfAuditVo implements Serializable {
     private String rejectReason;
     private Date createTime;
 
-    // ===== 以下为非数据库字段,由Service层填充 =====
+    // ===== 以下为非数据库字段,由Translation注解或Service层填充 =====
 
     /** 身份证人像面图片URL */
     @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "idCardFront")
     private String idCardFrontUrl;
 
     /** 身份证国徽面图片URL */
     @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "idCardBack")
     private String idCardBackUrl;
 
-    /** 专业资质图片URL列表 */
+    /** 专业资质图片URL(逗号分隔的OSS ID自动翻译) */
     @TableField(exist = false)
-    private List<String> qualificationUrls;
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "qualifications")
+    private String qualificationUrls;
 
     /** 意向站点名称 */
     @TableField(exist = false)

+ 14 - 2
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerVo.java

@@ -5,6 +5,10 @@ import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
 import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -34,6 +38,8 @@ public class FlfFulfillerVo implements Serializable {
     private Date birthday;
     private Integer age;
     private Long avatar;
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "avatar")
     private String avatarUrl;
     private String idCard;
     private Long idCardFront;
@@ -59,11 +65,17 @@ public class FlfFulfillerVo implements Serializable {
     private Date createTime;
 
     /** 身份证正面图片URL */
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "idCardFront")
     private String idCardFrontUrl;
     /** 身份证背面图片URL */
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "idCardBack")
     private String idCardBackUrl;
-    /** 资质证书图片URL列表 */
-    private List<String> qualImageUrls;
+    /** 资质证书图片URL(逗号分隔的OSS ID自动翻译) */
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "qualImages")
+    private String qualImageUrls;
     /** 服务类型列表(解析后) */
     private List<String> serviceTypeList;
     /** 是否已设置密码 */

+ 16 - 42
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfAuditServiceImpl.java

@@ -22,11 +22,9 @@ import org.dromara.fulfiller.enums.AuditTypeEnum;
 import org.dromara.fulfiller.mapper.FlfAuditMapper;
 import org.dromara.fulfiller.mapper.FlfFulfillerMapper;
 import org.dromara.fulfiller.service.IFlfAuditService;
-import org.dromara.resource.api.RemoteFileService;
-import org.dromara.resource.api.domain.RemoteFile;
+import org.dromara.service.api.RemoteSysServiceService;
 import org.dromara.system.api.RemoteAreaStationService;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -45,10 +43,10 @@ public class FlfAuditServiceImpl implements IFlfAuditService {
     private final FlfFulfillerMapper fulfillerMapper;
 
     @DubboReference
-    private RemoteFileService remoteFileService;
+    private RemoteAreaStationService remoteAreaStationService;
 
     @DubboReference
-    private RemoteAreaStationService remoteAreaStationService;
+    private RemoteSysServiceService remoteSysServiceService;
 
     @Override
     public FlfAuditVo queryById(Long id) {
@@ -72,50 +70,26 @@ public class FlfAuditServiceImpl implements IFlfAuditService {
      */
     private void enrichVo(FlfAuditVo vo) {
         try {
-            // 解析服务类型 JSON
+            // 解析服务类型(逗号分隔ID -> 名称列表)
             if (StringUtils.isNotBlank(vo.getServiceTypes())) {
-                vo.setServiceTypeList(com.alibaba.fastjson2.JSON.parseArray(vo.getServiceTypes(), String.class));
+                try {
+                    String cleaned = vo.getServiceTypes().replaceAll("[\\[\\]\"']", "");
+                    List<Long> serviceIds = java.util.Arrays.stream(cleaned.split(","))
+                        .map(String::trim).filter(s -> !s.isEmpty() && s.matches("\\d+"))
+                        .map(Long::parseLong)
+                        .collect(java.util.stream.Collectors.toList());
+                    if (!serviceIds.isEmpty()) {
+                        vo.setServiceTypeList(remoteSysServiceService.selectNamesByIds(serviceIds));
+                    }
+                } catch (Exception ignored) {}
             }
             // 解析站点名称
             if (vo.getStationId() != null) {
                 vo.setStationName(remoteAreaStationService.selectNameById(vo.getStationId()));
             }
-            // 解析身份证图片URL
-            List<String> ossIds = new ArrayList<>();
-            if (vo.getIdCardFront() != null) ossIds.add(String.valueOf(vo.getIdCardFront()));
-            if (vo.getIdCardBack() != null) ossIds.add(String.valueOf(vo.getIdCardBack()));
-            // 解析资质图片 OSS IDs
-            List<String> qualOssIds = new ArrayList<>();
-            if (StringUtils.isNotBlank(vo.getQualifications())) {
-                qualOssIds = com.alibaba.fastjson2.JSON.parseArray(vo.getQualifications(), String.class);
-                ossIds.addAll(qualOssIds);
-            }
-            // 批量查询 OSS URL
-            if (!ossIds.isEmpty()) {
-                String idsStr = String.join(",", ossIds);
-                List<RemoteFile> files = remoteFileService.selectByIds(idsStr);
-                for (RemoteFile f : files) {
-                    if (vo.getIdCardFront() != null && f.getOssId().equals(vo.getIdCardFront())) {
-                        vo.setIdCardFrontUrl(f.getUrl());
-                    }
-                    if (vo.getIdCardBack() != null && f.getOssId().equals(vo.getIdCardBack())) {
-                        vo.setIdCardBackUrl(f.getUrl());
-                    }
-                }
-                // 资质图片URL
-                List<String> qualUrls = new ArrayList<>();
-                for (String qId : qualOssIds) {
-                    for (RemoteFile f : files) {
-                        if (String.valueOf(f.getOssId()).equals(qId)) {
-                            qualUrls.add(f.getUrl());
-                            break;
-                        }
-                    }
-                }
-                vo.setQualificationUrls(qualUrls);
-            }
+            // 图片URL由 @Translation 注解在序列化时自动解析,无需手动处理
         } catch (Exception e) {
-            log.warn("填充审核VO扩展字段失败: id={}", vo.getId(), e);
+            log.error("填充审核VO扩展字段失败: id={}", vo.getId(), e);
         }
     }
 

+ 14 - 44
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java

@@ -37,11 +37,9 @@ import org.dromara.fulfiller.mapper.SysTagMapper;
 import org.dromara.fulfiller.mapper.SysTagRelMapper;
 import org.dromara.fulfiller.service.IFlfFulfillerService;
 
-import org.dromara.resource.api.RemoteFileService;
-import org.dromara.resource.api.domain.RemoteFile;
+import org.dromara.service.api.RemoteSysServiceService;
 import org.dromara.system.api.RemoteAreaStationService;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -69,7 +67,7 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
     private RemoteAreaStationService remoteAreaStationService;
 
     @DubboReference
-    private RemoteFileService remoteFileService;
+    private RemoteSysServiceService remoteSysServiceService;
 
     @Override
     public FlfFulfillerVo queryById(Long id) {
@@ -321,9 +319,18 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
             if (vo.getStationId() != null) {
                 vo.setStationName(remoteAreaStationService.selectNameById(vo.getStationId()));
             }
-            // 解析服务类型 JSON
+            // 解析服务类型(逗号分隔ID -> 名称列表)
             if (StringUtils.isNotBlank(vo.getServiceTypes())) {
-                vo.setServiceTypeList(com.alibaba.fastjson2.JSON.parseArray(vo.getServiceTypes(), String.class));
+                try {
+                    String cleaned = vo.getServiceTypes().replaceAll("[\\[\\]\"']", "");
+                    List<Long> serviceIds = java.util.Arrays.stream(cleaned.split(","))
+                        .map(String::trim).filter(s -> !s.isEmpty() && s.matches("\\d+"))
+                        .map(Long::parseLong)
+                        .collect(Collectors.toList());
+                    if (!serviceIds.isEmpty()) {
+                        vo.setServiceTypeList(remoteSysServiceService.selectNamesByIds(serviceIds));
+                    }
+                } catch (Exception ignored) {}
             }
             // 计算注册天数
             if (vo.getCreateTime() != null) {
@@ -339,44 +346,7 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
             FlfFulfiller entity = baseMapper.selectById(vo.getId());
             vo.setHasPassword(entity != null && StringUtils.isNotBlank(entity.getPassword()));
 
-            // 收集所有需要查询URL的OSS ID
-            List<String> ossIds = new ArrayList<>();
-            if (vo.getAvatar() != null) ossIds.add(String.valueOf(vo.getAvatar()));
-            if (vo.getIdCardFront() != null) ossIds.add(String.valueOf(vo.getIdCardFront()));
-            if (vo.getIdCardBack() != null) ossIds.add(String.valueOf(vo.getIdCardBack()));
-            // 解析资质图片 OSS IDs
-            List<String> qualOssIds = new ArrayList<>();
-            if (StringUtils.isNotBlank(vo.getQualImages())) {
-                qualOssIds = com.alibaba.fastjson2.JSON.parseArray(vo.getQualImages(), String.class);
-                ossIds.addAll(qualOssIds);
-            }
-            // 批量查询 OSS URL
-            if (!ossIds.isEmpty()) {
-                String idsStr = String.join(",", ossIds);
-                List<RemoteFile> files = remoteFileService.selectByIds(idsStr);
-                for (RemoteFile f : files) {
-                    if (vo.getAvatar() != null && f.getOssId().equals(vo.getAvatar())) {
-                        vo.setAvatarUrl(f.getUrl());
-                    }
-                    if (vo.getIdCardFront() != null && f.getOssId().equals(vo.getIdCardFront())) {
-                        vo.setIdCardFrontUrl(f.getUrl());
-                    }
-                    if (vo.getIdCardBack() != null && f.getOssId().equals(vo.getIdCardBack())) {
-                        vo.setIdCardBackUrl(f.getUrl());
-                    }
-                }
-                // 资质图片URL
-                List<String> qualUrls = new ArrayList<>();
-                for (String qId : qualOssIds) {
-                    for (RemoteFile f : files) {
-                        if (String.valueOf(f.getOssId()).equals(qId)) {
-                            qualUrls.add(f.getUrl());
-                            break;
-                        }
-                    }
-                }
-                vo.setQualImageUrls(qualUrls);
-            }
+            // 图片URL由 @Translation 注解在序列化时自动解析,无需手动处理
         } catch (Exception e) {
             log.warn("enrichVo失败: {}", e.getMessage());
         }

+ 63 - 0
ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/dubbo/RemoteSysServiceServiceImpl.java

@@ -0,0 +1,63 @@
+package org.dromara.service.dubbo;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.service.api.RemoteSysServiceService;
+import org.dromara.service.api.domain.vo.RemoteSysServiceVo;
+import org.dromara.service.domain.SysService;
+import org.dromara.service.mapper.SysServiceMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 服务项目远程服务实现(Dubbo)
+ *
+ * @author steelwei
+ */
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteSysServiceServiceImpl implements RemoteSysServiceService {
+
+    private final SysServiceMapper baseMapper;
+
+    @Override
+    public List<RemoteSysServiceVo> listAll() {
+        List<SysService> list = baseMapper.selectList(
+            Wrappers.lambdaQuery(SysService.class).orderByAsc(SysService::getSort)
+        );
+        return list.stream().map(e -> {
+            RemoteSysServiceVo vo = new RemoteSysServiceVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            return vo;
+        }).toList();
+    }
+
+    @Override
+    public List<String> selectNamesByIds(List<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyList();
+        }
+        List<SysService> list = baseMapper.selectList(
+            Wrappers.lambdaQuery(SysService.class).in(SysService::getId, ids)
+        );
+        Map<Long, String> nameMap = list.stream()
+            .collect(Collectors.toMap(SysService::getId, SysService::getName));
+        List<String> names = new ArrayList<>();
+        for (Long id : ids) {
+            String name = nameMap.get(id);
+            if (name != null) {
+                names.add(name);
+            }
+        }
+        return names;
+    }
+
+}

+ 3 - 3
ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties

@@ -40,9 +40,9 @@ spring.sql.init.platform=mysql
 db.num=1
 
 ### Connect URL of DB:
-db.url.0=jdbc:mysql://yp1.yingpaipay.com:9039/pet_system_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
-db.user.0=root
-db.password.0=P@ssw0rd
+db.url.0=jdbc:mysql://116.62.136.107:4563/pet_system_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+db.user.0=pet_system_config
+db.password.0=tfry6h6yrztNTw3e
 
 ### the maximum retry times for push
 nacos.config.push.maxRetryTime=50