From 35bb3902c998467e0dd61d5e587c09b0dc34acfb Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 28 一月 2026 18:38:28 +0800
Subject: [PATCH] 功能开发

---
 server/web/src/main/java/com/doumee/api/web/LoginController.java                      |   70 ++++++++++-
 server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java                 |   24 +--
 server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java                   |   28 ++++
 server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  201 ++++++++++++++++++++++++++-------
 server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java                 |   29 ++--
 5 files changed, 269 insertions(+), 83 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index f0fca7a..9c0b262 100644
--- a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.core.constants.Constants;
 import com.doumee.dao.business.model.Member;
+import com.doumee.dao.vo.WebLoginUserVO;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
 import lombok.extern.slf4j.Slf4j;
@@ -34,23 +35,21 @@
     /**
      * 鐢熸垚token浠ょ墝
      *
-     * @param member 浠ょ墝涓惡甯︾殑闄勫姞淇℃伅
+     * @param webLoginUser 浠ょ墝涓惡甯︾殑闄勫姞淇℃伅
      * @return 浠oken鐗�
      */
-    public String generateToken(Member member) {
-        if(member == null){
+    public String generateToken(WebLoginUserVO webLoginUser) {
+        if(webLoginUser == null){
             return  null;
         }
-        Map<String,Object> map = new HashMap<>();
-        map.put("id",member.getId());
-        return generateTokenDo(member);
+        return generateTokenDo(webLoginUser);
     }
 
 
-    public Member getUserInfoByToken(String token) {
+    public WebLoginUserVO getUserInfoByToken(String token) {
         try {
-            Member member = getClaimsFromToken(token);
-            return member;
+            WebLoginUserVO userVO = getClaimsFromToken(token);
+            return userVO;
         } catch (Exception e) {
            e.printStackTrace();
         }
@@ -97,15 +96,15 @@
      *
      * @return 浠ょ墝
      */
-    private String generateTokenDo(Member member) {
+    private String generateTokenDo(WebLoginUserVO webLoginUser) {
         Map<String, Object> claims = new HashMap<>();
-        claims.put("id",member.getId());
+        claims.put("id",webLoginUser.getId());
         Date expirationDate = new Date(System.currentTimeMillis() + jwtProperties.getExpiration());
         String token = Jwts.builder().setClaims(claims)
                 .setExpiration(expirationDate)
                 .signWith(SignatureAlgorithm.HS512, jwtProperties.getSecret())
                 .compact();
-        redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(member));
+        redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(webLoginUser));
         return token;
     }
 
@@ -116,11 +115,11 @@
      * @param token 浠ょ墝
      * @return 鏁版嵁澹版槑
      */
-    private Member getClaimsFromToken(String token) {
-        Member claims;
+    private WebLoginUserVO getClaimsFromToken(String token) {
+        WebLoginUserVO claims;
         try {
             String userInfo = (String) redisTemplate.opsForValue().get(Constants.REDIS_TOKEN_KEY+token);
-            claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),Member.class);
+            claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),WebLoginUserVO.class);
         } catch (Exception e) {
             claims = null;
         }
diff --git a/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java b/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
index a52062a..0d90178 100644
--- a/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
+++ b/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
@@ -1,11 +1,10 @@
 package com.doumee.config.jwt;
 
 import com.alibaba.fastjson.JSONObject;
-import com.doumee.core.annotation.LoginRequired;
-import com.doumee.core.constants.Constants;
+import com.doumee.config.annotation.LoginRequired;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
-import com.doumee.dao.business.model.Member;
+import com.doumee.dao.vo.WebLoginUserVO;
 import io.jsonwebtoken.JwtException;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -79,23 +78,14 @@
     public Boolean checkLogin(HttpServletRequest request, HttpServletResponse response){
         String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
         try {
-            Member member  = jwtTokenUtil.getUserInfoByToken(token);
-            if(Objects.isNull(member)){
+            WebLoginUserVO webLoginUserVO = jwtTokenUtil.getUserInfoByToken(token);
+            if(Objects.isNull(webLoginUserVO)){
                 throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
             }
-            Integer isDeleted = dao.queryForObject(" select COALESCE(DELETED,1)  from member where id  = ?", Integer.class, member.getId());
-            if(isDeleted.equals(Constants.ONE)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
-            }
-            Integer count = dao.queryForObject("select count(1) from member where id  = ?", Integer.class, member.getId());
-            if (count != null && count > 0) {
 //                jwtTokenUtil.refreshToken(token,member);
-                request.setAttribute(JwtTokenUtil.MEMBER_INFO, JSONObject.toJSONString(member));
-                request.setAttribute(JwtTokenUtil.MEMBER_ID, member.getId());
-                return true;
-            }else{
-                throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
-            }
+            request.setAttribute(JwtTokenUtil.MEMBER_INFO, JSONObject.toJSONString(webLoginUserVO));
+            request.setAttribute(JwtTokenUtil.MEMBER_ID, webLoginUserVO.getId());
+            return true;
         } catch (IllegalArgumentException | JwtException e) {
             throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
         }
diff --git a/server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java b/server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java
new file mode 100644
index 0000000..e9cd3f1
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2026/1/28 10:43
+ */
+@Data
+@ApiModel("H5鐢ㄦ埛璇锋眰杩斿洖瀵硅薄绫�")
+public class WebLoginUserVO {
+
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+    private String id;
+
+    @ApiModelProperty(value = "鐢ㄦ埛瑙掕壊锛�")
+    private String roleType;
+
+    @ApiModelProperty(value = "鎴樺尯缂栫爜")
+    private String zhanqu;
+
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 1a1f3c0..aaf1e1b 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,20 +1,34 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.CasesMapper;
+import com.doumee.dao.business.CategoryMapper;
+import com.doumee.dao.business.MultifileMapper;
+import com.doumee.dao.business.model.Cases;
+import com.doumee.dao.business.model.Category;
 import com.doumee.dao.business.model.Member;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.model.Multifile;
 import com.doumee.service.business.MemberService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 浼氬憳淇℃伅琛⊿ervice瀹炵幇
@@ -26,6 +40,18 @@
 
     @Autowired
     private MemberMapper memberMapper;
+
+    @Autowired
+    private CategoryMapper categoryMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private CasesMapper casesMapper;
+
+    @Autowired
+    private MultifileMapper multifileMapper;
 
     @Override
     public Integer create(Member member) {
@@ -87,55 +113,140 @@
     @Override
     public PageData<Member> findPage(PageWrap<Member> pageWrap) {
         IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-               queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,Member::getId, pageWrap.getModel().getId());
-               queryWrapper.lambda().eq(pageWrap.getModel().getDeleted() != null,Member::getDeleted, pageWrap.getModel().getDeleted());
-               queryWrapper.lambda().eq(pageWrap.getModel().getCreateUser() != null,Member::getCreateUser, pageWrap.getModel().getCreateUser());
-             if (pageWrap.getModel().getId() != null) {
-                  queryWrapper.lambda().ge(Member::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
-                  queryWrapper.lambda().le(Member::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
-             }
-               queryWrapper.lambda().eq(pageWrap.getModel().getUpdateUser() != null,Member::getUpdateUser, pageWrap.getModel().getUpdateUser());
-             if (pageWrap.getModel().getId() != null) {
-                  queryWrapper.lambda().ge(Member::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
-                  queryWrapper.lambda().le(Member::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
-             }
-               queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,Member::getRemark, pageWrap.getModel().getRemark());
-               queryWrapper.lambda().eq(pageWrap.getModel().getImgurl() != null,Member::getImgurl, pageWrap.getModel().getImgurl());
-               queryWrapper.lambda().eq(pageWrap.getModel().getDingdingId() != null,Member::getDingdingId, pageWrap.getModel().getDingdingId());
-               queryWrapper.lambda().eq(pageWrap.getModel().getPhone() != null,Member::getPhone, pageWrap.getModel().getPhone());
-               queryWrapper.lambda().eq(pageWrap.getModel().getName() != null,Member::getName, pageWrap.getModel().getName());
-               queryWrapper.lambda().eq(pageWrap.getModel().getSex() != null,Member::getSex, pageWrap.getModel().getSex());
-               queryWrapper.lambda().eq(pageWrap.getModel().getJobYear() != null,Member::getJobYear, pageWrap.getModel().getJobYear());
-               queryWrapper.lambda().eq(pageWrap.getModel().getPositon() != null,Member::getPositon, pageWrap.getModel().getPositon());
-               queryWrapper.lambda().eq(pageWrap.getModel().getZhanquIds() != null,Member::getZhanquIds, pageWrap.getModel().getZhanquIds());
-               queryWrapper.lambda().eq(pageWrap.getModel().getBustypeIds() != null,Member::getBustypeIds, pageWrap.getModel().getBustypeIds());
-               queryWrapper.lambda().eq(pageWrap.getModel().getLevelId() != null,Member::getLevelId, pageWrap.getModel().getLevelId());
-               queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null,Member::getStatus, pageWrap.getModel().getStatus());
-               queryWrapper.lambda().eq(pageWrap.getModel().getFee() != null,Member::getFee, pageWrap.getModel().getFee());
-               queryWrapper.lambda().eq(pageWrap.getModel().getServeNum() != null,Member::getServeNum, pageWrap.getModel().getServeNum());
-               queryWrapper.lambda().eq(pageWrap.getModel().getType() != null,Member::getType, pageWrap.getModel().getType());
-               queryWrapper.lambda().eq(pageWrap.getModel().getContent() != null,Member::getContent, pageWrap.getModel().getContent());
-             if (pageWrap.getModel().getId() != null) {
-                  queryWrapper.lambda().ge(Member::getLoginDate, Utils.Date.getStart(pageWrap.getModel().getLoginDate()));
-                  queryWrapper.lambda().le(Member::getLoginDate, Utils.Date.getEnd(pageWrap.getModel().getLoginDate()));
-             }
-               queryWrapper.lambda().eq(pageWrap.getModel().getLoginCount() != null,Member::getLoginCount, pageWrap.getModel().getLoginCount());
-               queryWrapper.lambda().eq(pageWrap.getModel().getSortnum() != null,Member::getSortnum, pageWrap.getModel().getSortnum());
-               queryWrapper.lambda().eq(pageWrap.getModel().getUsername() != null,Member::getUsername, pageWrap.getModel().getUsername());
-               queryWrapper.lambda().eq(pageWrap.getModel().getAddType() != null,Member::getAddType, pageWrap.getModel().getAddType());
-               queryWrapper.lambda().eq(pageWrap.getModel().getImportId() != null,Member::getImportId, pageWrap.getModel().getImportId());
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
+        Member model = pageWrap.getModel();
+        queryWrapper.selectAll(Member.class)
+                .select(" c1.NAME ", Member::getPromotionName)
+                .select(" c2.NAME ", Member::getLevelName)
+                .select(" TIMESTAMPDIFF(YEAR, CONCAT(t.JOB_YEAR , '-01-01'), now()) ",Member::getWorkYears)
+                .leftJoin(" category c1 on t.POSITON = c1.id ")
+                .leftJoin(" category c2 on t.LEVEL_ID = c2.id ")
+                .apply(Objects.nonNull(model.getBustypeIds())," find_in_set( '["+model.getBustypeIds()+"]', t.BUSTYPE_IDS ) ")
+                .like(StringUtils.isNotBlank(model.getName()),Member::getName, model.getName())
+                .eq(Objects.nonNull(model.getStatus()),Member::getStatus, model.getStatus())
+                .orderByAsc(Objects.isNull(model.getOrderByType()),"c2.DETAIL")
+                .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ZERO),Member::getFee)
+                .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ONE),Member::getFee)
+                .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.TWO),"c2.DETAIL")
+                .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.THREE),"c2.DETAIL")
+                .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.FOUR),Member::getServeNum)
+        ;
+        if(StringUtils.isNotBlank(model.getFieldIds())){
+            String [] fieldIds = model.getFieldIds().split(",");
+            for (String s:fieldIds) {
+                queryWrapper.apply("find_in_set( '["+s+"]' , t.FIELD_IDS )");
             }
         }
-        return PageData.from(memberMapper.selectPage(page, queryWrapper));
+        if (StringUtils.isNotBlank(model.getQueryZQCode())) {
+            Category zhanqu = categoryMapper.selectOne(new QueryWrapper<Category>().lambda()
+                    .eq(Category::getDeleted,Constants.ZERO)
+                    .eq(Category::getStatus,Constants.ZERO)
+                    .eq(Category::getDetail,model.getQueryZQCode())
+                    .last(" limit 1")
+            );
+            if(Objects.nonNull(zhanqu)){
+                queryWrapper.apply(" find_in_set( '["+zhanqu.getId()+"]', t.ZHANQU_IDS ) ");
+            }
+        }
+        IPage<Member> memberIPage  = memberMapper.selectJoinPage(page, Member.class, new MPJLambdaWrapper<>());
+        if(CollectionUtils.isNotEmpty(memberIPage.getRecords())){
+            List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+                    .eq(Category::getDeleted, Constants.ZERO)
+                    .eq(Category::getType,Constants.TWO)
+                    .orderByAsc(Category::getSortnum)
+            );
+            String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode();
+            String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode();
+            for (Member member:memberIPage.getRecords()) {
+                if(CollectionUtils.isNotEmpty(categoryList)){
+                    dealMemberField(member,categoryList);
+                }
+                member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(path + member.getImgurl()):"");
+                if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(model.getQueryUserRole())
+                || !roleConfig.contains(model.getQueryUserRole())){
+                    member.setFee(null);
+                }
+            }
+        }
+        return PageData.from(memberIPage);
     }
 
+
+    @Override
+    public Member findDetailById(Integer id,String queryUserRole) {
+        Member member = memberMapper.selectJoinOne(Member.class, new MPJLambdaWrapper<Member>()
+                .selectAll(Member.class)
+                .select(" c1.NAME ", Member::getPromotionName)
+                .select(" c2.NAME ", Member::getLevelName)
+                .select(" TIMESTAMPDIFF(YEAR, CONCAT(t.JOB_YEAR , '-01-01'), now()) ",Member::getWorkYears)
+                .leftJoin(" category c1 on t.POSITON = c1.id ")
+                .leftJoin(" category c2 on t.LEVEL_ID = c2.id ")
+                .eq(Member::getId, id)
+                .last(" limit 1 "));
+       if(Objects.isNull(member)){
+           throw new BusinessException(ResponseStatus.DATA_EMPTY);
+       }
+       if(StringUtils.isNotBlank(member.getFieldIds())){
+           member.setFieldList(
+                   categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+                           .eq(Category::getDeleted, Constants.ZERO)
+                           .eq(Category::getType,Constants.TWO)
+                           .apply(" find_in_set(CONCAT('[',id,']'),'"+member.getFieldIds()+"') ")
+                           .orderByAsc(Category::getSortnum)
+            )
+           );
+       }
+
+        String resourcePath = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode();
+        String path =  systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode();
+        String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode();
+        member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(resourcePath  + path + member.getImgurl()):"");
+        List<Cases> casesList = casesMapper.selectList(new QueryWrapper<Cases>().lambda()
+                .eq(Cases::getMemberId,member.getId())
+                .eq(Cases::getDeleted,Constants.ZERO)
+                .orderByDesc(Cases::getId)
+        );
+        if(CollectionUtils.isNotEmpty(casesList)){
+            String casePath =  systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CASES_FILES).getCode();
+            for (Cases cases:casesList) {
+                List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+                        .eq(Multifile::getObjId,cases.getId())
+                        .eq(Multifile::getObjType,Constants.OBJECT_TYPE_CASES)
+                        .eq(Multifile::getIsdeleted,Constants.ZERO)
+                        .orderByDesc(Multifile::getId)
+                );
+                multifileList.forEach(multifile -> {
+                    multifile.setFileurlFull(StringUtils.isNotBlank(multifile.getFileurl())?(resourcePath  + casePath + multifile.getFileurl()):"");
+                });
+            }
+            member.setCasesList(casesList);
+        }
+        if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(queryUserRole)
+                || !roleConfig.contains(queryUserRole)){
+            member.setFee(null);
+        }
+        return member;
+    }
+
+
+
+
+    public void dealMemberField(Member member,List<Category> categoryList){
+        if(CollectionUtils.isNotEmpty(categoryList)){
+            return;
+        }
+        String fieldNames = "";
+        for (Category category:categoryList) {
+            if(member.getFieldIds().contains("["+category.getId()+"]")){
+                fieldNames = fieldNames + (StringUtils.isNotBlank(fieldNames)?",":"") + category.getName();
+            }
+        }
+        member.setFieldNames(fieldNames);
+    }
+
+
     @Override
     public long count(Member member) {
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
diff --git a/server/web/src/main/java/com/doumee/api/web/LoginController.java b/server/web/src/main/java/com/doumee/api/web/LoginController.java
index 0015f4f..e4a8040 100644
--- a/server/web/src/main/java/com/doumee/api/web/LoginController.java
+++ b/server/web/src/main/java/com/doumee/api/web/LoginController.java
@@ -4,8 +4,11 @@
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.api.BaseController;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.jwt.JwtTokenUtil;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.LoginUserInfo;
@@ -14,10 +17,15 @@
 import com.doumee.core.utils.HttpsUtil;
 import com.doumee.dao.business.dto.LoginRequestNewParam;
 import com.doumee.dao.business.model.Category;
+import com.doumee.dao.business.model.Member;
 import com.doumee.dao.system.model.SystemJob;
+import com.doumee.dao.vo.WebLoginUserVO;
 import com.doumee.service.business.CategoryService;
+import com.doumee.service.business.MemberService;
 import com.sun.deploy.net.HttpUtils;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -41,22 +49,30 @@
  * @date 2025/07/09 12:00
  */
 @Api(tags = "web鐧诲綍鐩稿叧鎺ュ彛")
+@Trace(exclude = true)
 @RestController
-@RequestMapping("/web")
+@RequestMapping("/web/login")
 @Slf4j
-public class LoginController extends BaseController {
+public class LoginController extends ApiController {
 
     @Autowired
     private CategoryService categoryService;
 
     @Autowired
+    private JwtTokenUtil jwtTokenUtil;
+
+    @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+    @Autowired
+    private MemberService memberService;
+
+
     @ApiOperation("UK鍗曠偣鐧诲綍")
-    @RequestMapping("/ukLogin")
+    @GetMapping("/ukLogin")
     public void ukLogin(String tick, Object obj, HttpServletRequest request, HttpServletResponse response) throws Exception  {
         LoginRequestNewParam requestParam = new LoginRequestNewParam();
-        // UK_ERROR_URL = "http://u.zhibang.com/sso/web/token/error";
+        /*// UK_ERROR_URL = "http://u.zhibang.com/sso/web/token/error";
         String errorUrl =systemDictDataBiz.queryByCode(Constants.ZBOM_PARAM,Constants.ZBOM_UK_ERROR_URL).getCode();
         try {
             log.error("璇锋眰鍙傛暟TICK鏈�鍘熷===========锛�" + tick);
@@ -80,9 +96,13 @@
             log.error("ticket鎺ュ彛璇锋眰閿欒锛�" + e.getMessage());
             response.sendRedirect(errorUrl + "?title=" + enCode("鐧婚檰閿欒") + "&msg=" + enCode("绯荤粺绻佸繖锛岃绋嶅悗閲嶈瘯~"));
             return;
-        }
+        }*/
         requestParam.setRediUrl("http://localhost:10087/#/login");
-        String token = UUID.randomUUID().toString()+"_doumee";
+        WebLoginUserVO loginUserVO = new WebLoginUserVO();
+        loginUserVO.setId("123");
+        loginUserVO.setRoleType("admin");
+        loginUserVO.setZhanqu("1");
+        String token = jwtTokenUtil.generateToken(loginUserVO);
         response.sendRedirect(requestParam.getRediUrl()+"?token="+token);
     }
 
@@ -99,5 +119,43 @@
         return str;
     }
 
+    @LoginRequired
+    @ApiOperation("鑰佸笀鍒嗛〉鏌ヨ")
+    @PostMapping("/memberPage")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<PageData<Member>> memberPage(@RequestBody PageWrap<Member> pageWrap) {
+        WebLoginUserVO loginUserVO = this.getMemberResponse();
+        pageWrap.getModel().setQueryUserRole(loginUserVO.getRoleType());
+        pageWrap.getModel().setQueryZQCode(loginUserVO.getZhanqu());
+        return ApiResponse.success(memberService.findPage(pageWrap));
+    }
+
+
+
+    @LoginRequired
+    @ApiOperation("鑰佸笀璇︽儏")
+    @GetMapping("/memberDetail")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<Member> memberPage(@RequestParam Integer id) {
+        WebLoginUserVO loginUserVO = this.getMemberResponse();
+        return ApiResponse.success(memberService.findDetailById(id,loginUserVO.getRoleType()));
+    }
+
+
+    @LoginRequired
+    @ApiOperation("鍒嗙被淇℃伅鏌ヨ")
+    @GetMapping("/categoryList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<List<Category>> categoryList(@RequestParam Integer type) {
+        return ApiResponse.success(categoryService.getCategoryList(type));
+    }
+
+
 
 }

--
Gitblit v1.9.3