Browse Source

feat(member): 新增默认用户信息列表接口并优化相关功能

- 新增 getListInfo 接口,用于获取默认用户信息列表
- 优化 UserInfoAiRespVO,增加信息类型转换名称字段
- 修改 UserInfoAiMapper,增加 selectList 方法支持查询条件
- 更新 UserInfoAiServiceImpl,使用新的查询方法获取用户信息列表
- 在 DictFrameworkUtils 中添加 getDictDatas 方法获取字典数据列表
zrd 3 months ago
parent
commit
86ccd79432

+ 14 - 4
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/dict/core/DictFrameworkUtils.java

@@ -21,9 +21,8 @@ import java.util.List;
 @Slf4j
 public class DictFrameworkUtils {
 
-    private static DictDataApi dictDataApi;
-
     private static final DictDataRespDTO DICT_DATA_NULL = new DictDataRespDTO();
+    private static DictDataApi dictDataApi;
 
     // TODO @puhui999:GET_DICT_DATA_CACHE、GET_DICT_DATA_LIST_CACHE、PARSE_DICT_DATA_CACHE 这 3 个缓存是有点重叠,可以思考下,有没可能减少 1 个。微信讨论好私聊,再具体改哈
     /**
@@ -53,7 +52,8 @@ public class DictFrameworkUtils {
                 }
 
             });
-
+    
+    
     /**
      * 针对 {@link #parseDictDataValue(String, String)} 的缓存
      */
@@ -92,5 +92,15 @@ public class DictFrameworkUtils {
     public static String parseDictDataValue(String dictType, String label) {
         return PARSE_DICT_DATA_CACHE.get(new KeyValue<>(dictType, label)).getValue();
     }
-
+    
+    /**
+     * 获取预留值1
+     *
+     * @param dictType dict 类型
+     * @return {@link String }
+     */
+    @SneakyThrows
+    public static List<DictDataRespDTO> getDictDatas(String dictType) {
+        return dictDataApi.getDictDataList(dictType);
+    }
 }

+ 4 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinfoai/vo/UserInfoAiRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.member.controller.admin.userinfoai.vo;
 
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -31,10 +32,13 @@ public class UserInfoAiRespVO {
     
     @Schema(description = "材料类型", example = "1")
     @ExcelProperty("材料类型")
+    @DictFormat("information_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private String informationType;
+    private String informationTypeTranName;
     
     @Schema(description = "是否选中#info_status", example = "1")
     @ExcelProperty("是否选中#info_status")
+    @DictFormat("info_status")
     private String infoStatus;
     private List<String> infoFiles;
     private String additionalInfo;

+ 29 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserInfoAiController.java

@@ -3,11 +3,13 @@ package cn.iocoder.yudao.module.member.controller.app.user;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
 import cn.iocoder.yudao.module.member.controller.admin.userinfoai.vo.UserInfoAiPageReqVO;
 import cn.iocoder.yudao.module.member.controller.admin.userinfoai.vo.UserInfoAiRespVO;
 import cn.iocoder.yudao.module.member.controller.admin.userinfoai.vo.UserInfoAiSaveReqVO;
 import cn.iocoder.yudao.module.member.dal.dataobject.userinfoai.UserInfoAiDO;
 import cn.iocoder.yudao.module.member.service.userinfoai.UserInfoAiService;
+import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -16,6 +18,7 @@ import jakarta.validation.Valid;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -73,4 +76,30 @@ public class AppUserInfoAiController {
         List<UserInfoAiDO> list = userInfoAiService.getUserInfoAiList(pageReqVO);
         return success(BeanUtils.toBean(list, UserInfoAiRespVO.class));
     }
+    
+    @GetMapping("/listInfo")
+    @Operation(summary = "获得默认用户信息列表")
+    public CommonResult<List<UserInfoAiRespVO>> getAddressInfoList(UserInfoAiPageReqVO pageReqVO) {
+        List<UserInfoAiRespVO> respVOList = new ArrayList<>();
+        List<DictDataRespDTO> dictDatas = DictFrameworkUtils.getDictDatas("information_type");
+        pageReqVO.setUserId(getLoginUserId());
+        pageReqVO.setInfoStatus("1");
+        List<UserInfoAiDO> list = userInfoAiService.getUserInfoAiList(pageReqVO);
+        
+        // 合并两个列表
+        for (DictDataRespDTO dictData : dictDatas) {
+            for (UserInfoAiDO userInfoAiDO : list) {
+                UserInfoAiRespVO userInfoAiRespVO = new UserInfoAiRespVO();
+                if (dictData.getDictType().equals(userInfoAiDO.getInformationType())) {
+                    
+                    BeanUtils.copyProperties(userInfoAiDO, userInfoAiRespVO);
+                    
+                }
+                userInfoAiRespVO.setInformationTypeTranName(dictData.getLabel());
+                userInfoAiRespVO.setInformationType(dictData.getValue());
+                respVOList.add(userInfoAiRespVO);
+            }
+        }
+        return success(respVOList);
+    }
 }

+ 12 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userinfoai/UserInfoAiMapper.java

@@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.member.controller.admin.userinfoai.vo.UserInfoAiP
 import cn.iocoder.yudao.module.member.dal.dataobject.userinfoai.UserInfoAiDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 用户信息 Mapper
  *
@@ -25,4 +27,14 @@ public interface UserInfoAiMapper extends BaseMapperX<UserInfoAiDO> {
                 .orderByDesc(UserInfoAiDO::getId));
     }
     
+    default List<UserInfoAiDO> selectList(UserInfoAiPageReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<UserInfoAiDO>()
+                .eqIfPresent(UserInfoAiDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(UserInfoAiDO::getTextInformation, reqVO.getTextInformation())
+                .betweenIfPresent(UserInfoAiDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(UserInfoAiDO::getInformationType, reqVO.getInformationType())
+                .eqIfPresent(UserInfoAiDO::getInfoStatus, reqVO.getInfoStatus())
+                .orderByDesc(UserInfoAiDO::getId));
+    }
+    
 }

+ 1 - 4
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userinfoai/UserInfoAiServiceImpl.java

@@ -6,7 +6,6 @@ import cn.iocoder.yudao.framework.common.exception.util.CommonValidationUtils;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.dict.core.AiFrameworkUtils;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.member.controller.admin.userinfoai.vo.UserInfoAiPageReqVO;
 import cn.iocoder.yudao.module.member.controller.admin.userinfoai.vo.UserInfoAiSaveReqVO;
@@ -98,9 +97,7 @@ public class UserInfoAiServiceImpl implements UserInfoAiService {
     @Override
     public List<UserInfoAiDO> getUserInfoAiList(UserInfoAiPageReqVO pageReqVO) {
         
-        return userInfoAiMapper.selectList(new LambdaQueryWrapperX<UserInfoAiDO>().eq(UserInfoAiDO::getUserId,
-                pageReqVO.getUserId())
-        );
+        return userInfoAiMapper.selectList(pageReqVO);
     }
     
 }