From 77eaae1a96b2c6a0a23bafbacf39806acd1980b6 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 29 一月 2026 09:29:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
/dev/null | 12 -
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/web/src/main/java/com/doumee/api/web/ApiController.java | 5
server/services/src/main/java/com/doumee/core/constants/Constants.java | 4
server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java | 28 +++
server/services/src/main/java/com/doumee/service/business/MemberService.java | 2
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 200 +++++++++++++++++++-----
server/services/src/main/java/com/doumee/dao/business/model/Category.java | 4
server/services/src/main/java/com/doumee/dao/business/model/Member.java | 48 ++++++
server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java | 29 +-
11 files changed, 330 insertions(+), 96 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/core/annotation/LoginRequired.java b/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
deleted file mode 100644
index e406b69..0000000
--- a/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.doumee.core.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target({ElementType.METHOD,ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface LoginRequired {
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index 8919316..5fe8c94 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/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";
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Category.java b/server/services/src/main/java/com/doumee/dao/business/model/Category.java
index fccea28..b2e5e00 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Category.java
+++ b/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;
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Member.java b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
index cdc5bed..405d4ab 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/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;
+
/**
* 浼氬憳淇℃伅琛∕odel瀹氫箟
* @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("璁插笀绛夌骇缂栫爜锛堝叧鑱攃ategory锛�")
@ExcelColumn(name="璁插笀绛夌骇缂栫爜锛堝叧鑱攃ategory锛�",index=17 ,width=10)
private Integer levelId;
@@ -106,4 +112,46 @@
@ApiModelProperty("瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_record)")
@ExcelColumn(name="瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_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;
+
+
}
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/MemberService.java b/server/services/src/main/java/com/doumee/service/business/MemberService.java
index d5804e4..bc604e3 100644
--- a/server/services/src/main/java/com/doumee/service/business/MemberService.java
+++ b/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);
+
}
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 3b7e90c..1f2d07d 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
@@ -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;
/**
* 浼氬憳淇℃伅琛⊿ervice瀹炵幇
@@ -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);
diff --git a/server/web/src/main/java/com/doumee/api/web/ApiController.java b/server/web/src/main/java/com/doumee/api/web/ApiController.java
index c9eb82a..b6e10cb 100644
--- a/server/web/src/main/java/com/doumee/api/web/ApiController.java
+++ b/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;
}
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