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 令tokenç */ 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; } 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(),"æªç»å½"); } server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
ÎļþÒÑɾ³ý server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -19,6 +19,8 @@ public static final String HWY_OBS_ENDPOINT ="HWY_OBS_ENDPOINT" ; public static final String HWY_OBS_BUCKET ="HWY_OBS_BUCKET" ; public static final String RESOURCE_PATH ="RESOURCE_PATH" ; public static final String ROLE_CONFIG ="ROLE_CONFIG" ; public static final String QYWX_CORPID = "QYWX_CORPID"; public static final String QYWX_SECRET = "QYWX_SECRET"; public static final String QYWX_TOKEN = "QYWX_TOKEN"; @@ -82,6 +84,7 @@ public static final String ZBOM_UK_ERROR_URL ="ZBOM_UK_ERROR_URL" ; public static final String ZBOM_TICKET_LOGIN_URL ="ZBOM_TICKET_LOGIN_URL" ; public static final String OBJCET_STORAGE = "OBJCET_STORAGE"; public static final Object OBJECT_TYPE_CASES = "OBJECT_TYPE_CASES"; public static boolean WORKORDER_SHE_EMAIL_SENDING = false; public static boolean DEALING_COMPANY_SYNC = false ; public static boolean DEALING_MEMBER_SYNC = false ; @@ -89,6 +92,7 @@ public static final String WORKORDER_LOG_FILE_PATH ="WORKORDER_LOG_FILE_PATH" ; public static final String REDIS_TOKEN_KEY = "token_"; public static final String CASES_FILES = "CASES_FILES"; public static final String SUCCESS = "SUCCESS"; public static final String FAIL = "FAIL"; server/services/src/main/java/com/doumee/dao/business/model/Category.java
@@ -90,4 +90,8 @@ @ApiModelProperty(value = "徿 å ¨è·¯å¾") @TableField(exist = false) private String iconFull; @ApiModelProperty(value = "åä¸å¾æè¡ä¿¡æ¯") @TableField(exist = false) private List<Multifile> multifileList; } server/services/src/main/java/com/doumee/dao/business/model/Member.java
@@ -11,6 +11,8 @@ import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; import java.math.BigDecimal; import java.util.List; /** * ä¼åä¿¡æ¯è¡¨Modelå®ä¹ * @author doumee @@ -70,6 +72,10 @@ @ApiModelProperty("åä¸åç±»åç¼ç éåï¼[1],[2],...]ï¼") @ExcelColumn(name="åä¸åç±»åç¼ç éåï¼[1],[2],...]ï¼",index=16 ,width=10) private String bustypeIds; @ApiModelProperty("æ é¿é¢åéåï¼[1],[2],...]ï¼") private String fieldIds; @ApiModelProperty("å·¥å·") private String code; @ApiModelProperty("讲å¸ç级ç¼ç ï¼å ³ècategoryï¼") @ExcelColumn(name="讲å¸ç级ç¼ç ï¼å ³ècategoryï¼",index=17 ,width=10) private Integer levelId; @@ -106,4 +112,46 @@ @ApiModelProperty("å¯¼å ¥è®°å½ç¼ç ï¼å ³èimport_record)") @ExcelColumn(name="å¯¼å ¥è®°å½ç¼ç ï¼å ³èimport_record)",index=28 ,width=10) private Integer importId; @ApiModelProperty("å·¥ä½å¹´æ°") @TableField(exist = false) private Integer workYears; @ApiModelProperty("æ é¿é¢ååç§°") @TableField(exist = false) private String fieldNames; @ApiModelProperty("å·¥ä½å²ä½åç§°") @TableField(exist = false) private String promotionName; @ApiModelProperty("级å«åç§°") @TableField(exist = false) private String levelName; @ApiModelProperty("æåºç¼ç - æ¥è¯¢") @TableField(exist = false) private String queryZQCode; @ApiModelProperty("æåºä¿¡æ¯ï¼0=æ¶è´¹ä»é«å°ä½ï¼1=æ¶è´¹ä»ä½å°é«ï¼2=ç级ä»é«å°ä½ï¼3=ç级ä»ä½å°é«ï¼4=æå¡æ°ä»é«å°ä½") @TableField(exist = false) private Integer orderByType; @ApiModelProperty("è¯ä»¶ç §å ¨è·¯å¾") @TableField(exist = false) private String fullImgurl; @ApiModelProperty("æ¥è¯¢ç¨æ·ç±»å") @TableField(exist = false) private String queryUserRole; @ApiModelProperty("æ é¿é¢å") @TableField(exist = false) private List<Category> fieldList; @ApiModelProperty("æ¡ä¾ä¿¡æ¯") @TableField(exist = false) private List<Cases> casesList; } 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; } server/services/src/main/java/com/doumee/service/business/MemberService.java
@@ -97,4 +97,6 @@ */ long count(Member model); Member findDetailById(Integer id,String queryUserRole); } server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -3,13 +3,23 @@ import com.doumee.core.annotation.excel.ExcelImporter; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; 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.ImportRecordMapper; import com.doumee.dao.business.dto.MemberImport; 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; @@ -18,6 +28,10 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.CellType; 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.transaction.annotation.Transactional; @@ -27,6 +41,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.Objects; /** * ä¼åä¿¡æ¯è¡¨Serviceå®ç° @@ -38,6 +53,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) { @@ -99,55 +126,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); server/web/src/main/java/com/doumee/api/web/ApiController.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.doumee.config.jwt.JwtTokenUtil; import com.doumee.dao.business.model.Member; import com.doumee.dao.vo.WebLoginUserVO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.context.request.RequestContextHolder; @@ -39,10 +40,10 @@ * è·åç»å½ç¨æ·å¯¹è±¡ä¿¡æ¯ * @return */ protected Member getMemberResponse(){ protected WebLoginUserVO getMemberResponse(){ Object obj = this.getRequest().getAttribute(JwtTokenUtil.MEMBER_INFO); if(obj != null){ return JSONObject.parseObject(obj.toString(),Member.class); return JSONObject.parseObject(obj.toString(), WebLoginUserVO.class); } return null; } 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)); } }