From 3b5b47c0a839c2245d045f93cff916db701dcb5d Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 14 二月 2025 13:31:04 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/xiaochen991015/xizang

---
 ruoyi-admin/src/main/resources/application-test.yml                                                 |    6 
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                                     |   15 ++-
 ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java |   22 ++++-
 ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java                                 |    8 +
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TBillController.java                        |   13 +--
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTenantServiceImpl.java                    |    5 
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java             |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java                         |    5 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java                    |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFaultAreaDicController.java                 |    1 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java                  |    8 +-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java              |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java                           |    9 ++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/SysUserVO.java                                       |    4 
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java                      |    5 +
 ruoyi-system/src/main/resources/mapper/system/TItemMapper.xml                                       |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java                           |    3 
 ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml                                 |    6 +
 ruoyi-applet/src/main/resources/application-test.yml                                                |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java                    |   69 ++++++++++++++--
 ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml                                  |   15 ---
 ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml                                 |    3 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java                        |    1 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TItemTypeController.java                     |    1 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java                     |   23 ++++-
 25 files changed, 167 insertions(+), 73 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFaultAreaDicController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFaultAreaDicController.java
index 612ca22..928ee34 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFaultAreaDicController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFaultAreaDicController.java
@@ -53,7 +53,6 @@
         return R.ok(faultAreaDicService.pageList(query));
     }
 
-    @PreAuthorize("@ss.hasPermi('system:faultArea:list')")
     @ApiOperation(value = "获取故障区域列表")
     @PostMapping(value = "/list")
     public R<List<TFaultAreaDic>> list() {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TItemTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TItemTypeController.java
index e35db1f..648c2e8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TItemTypeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TItemTypeController.java
@@ -54,7 +54,6 @@
     /**
      * 获取维修物品分类管理列表
      */
-    @PreAuthorize("@ss.hasPermi('system:itemType:list')")
     @ApiOperation(value = "获取维修物品分类列表")
     @PostMapping(value = "/list")
     public R<List<TItemType>> list() {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
index 40f0228..8c232f4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
@@ -54,7 +54,7 @@
                     //注入创建时间
                     if ("createTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, LocalDateTime.now());
+//                        field.set(parameter, LocalDateTime.now());
                         field.setAccessible(false);
                     } 
                 } catch (Exception e) {
@@ -77,7 +77,7 @@
                     }
                     if ("updateTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, new Date());
+//                        field.set(parameter, new Date());
                         field.setAccessible(false);
                     }
                 } catch (Exception e) {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index c5afa68..27aea74 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -165,7 +165,7 @@
             return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
         user.setCreateBy(getUsername());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+        user.setPassword(SecurityUtils.encryptPassword("123456"));
         userService.insertUser(user);
         return AjaxResult.success();
     }
diff --git a/ruoyi-admin/src/main/resources/application-test.yml b/ruoyi-admin/src/main/resources/application-test.yml
index 4ca4b21..93fd2c2 100644
--- a/ruoyi-admin/src/main/resources/application-test.yml
+++ b/ruoyi-admin/src/main/resources/application-test.yml
@@ -193,9 +193,9 @@
     accessPath: /file/
     allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF
 wx:
-  config:
-    appId: wxc3985a05da7d86dc
-    secret: 5cca42633c25439613b328c08ef20cc9
+  conf:
+    appId: wxe91f1af7638aa5dd
+    secretId: a787e1a462715604e0c9528b6d8960d1
 #OSS及短信配置
 code:
   config:
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TBillController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TBillController.java
index a16749f..c90ea72 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TBillController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TBillController.java
@@ -55,9 +55,8 @@
     @ApiOperation(value = "缴费账单查询分页列表")
     @PostMapping("list")
     public R<PageInfo<TBillDto>> list(@RequestBody TBillQuery query){
-        if (StringUtils.isEmpty(query.getUserId())){
-            throw new ServiceException("用户ID不能为空");
-        }
+        String userId = tokenService.getLoginUserApplet().getUserId();
+        query.setUserId(userId);
         PageInfo<TBillDto> pageInfo = tBillService.queryPage(query);
         return R.ok(pageInfo);
     }
@@ -65,9 +64,8 @@
     @ApiOperation(value = "缴费账单查询列表")
     @PostMapping("/getBillIds")
     public R<List<String>> getBillIds(@RequestBody TBillQuery query){
-        if (StringUtils.isEmpty(query.getUserId())){
-            throw new ServiceException("用户ID不能为空");
-        }
+        String userId = tokenService.getLoginUserApplet().getUserId();
+        query.setUserId(userId);
         List<String> billIds = tBillService.getBillIds(query);
         return R.ok(billIds);
     }
@@ -124,8 +122,7 @@
     @PostMapping(value = "/invoiceList")
     public R<PageInfo<TBillDto>> invoiceList(@RequestBody TBillQuery query) {
 
-//        Long userId = tokenService.getLoginUser().getUserId();
-        String userId = "1881967035070177281";
+        String userId = tokenService.getLoginUserApplet().getUserId();
         query.setUserId(userId);
         PageInfo<TBillDto> pageInfo = tBillService.invoiceList(query);
         return R.ok(pageInfo);
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
index 658b4f5..c784c42 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
@@ -123,17 +123,20 @@
         if (tenant==null){
 //            appUser.setTenantAttributes();
 //            appUser.setTenantType();
+            tenant = new TTenant();
             tenant.setPhone(appletUserDecodeData.getPhoneNumber());
             tenant.setAccount(appletUserDecodeData.getPhoneNumber());
             tenant.setPassword(SecurityUtils.encryptPassword(appletUserDecodeData.getPhoneNumber().substring(5)));
             tenant.setOpenId(appletUserDecodeData.getOpenId());
+            // 手机号中间四位替换为*
+            tenant.setResidentName(appletUserDecodeData.getPhoneNumber().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
             tTenantService.save(tenant);
         }
         LoginUserApplet loginUserApplet = new LoginUserApplet();
         TTenantResp tTenantResp = new TTenantResp();
         BeanUtils.copyProperties(tenant, tTenantResp);
         loginUserApplet.setUser(tTenantResp);
-        loginUserApplet.setUserId(Long.valueOf(tenant.getId()));
+        loginUserApplet.setUserId(tenant.getId());
         Map<String, Object> tokenInfos = new HashMap<>();
         tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet));
         tokenInfos.put("info",loginUserApplet);
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
index ae4b66e..57a4ff0 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
@@ -56,7 +56,7 @@
                     //注入创建时间
                     if ("createTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, new Date());
+//                        field.set(parameter, new Date());
                         field.setAccessible(false);
                     } 
                 } catch (Exception e) {
@@ -79,7 +79,7 @@
                     }
                     if ("updateTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, new Date());
+//                        field.set(parameter, new Date());
                         field.setAccessible(false);
                     }
                 } catch (Exception e) {
diff --git a/ruoyi-applet/src/main/resources/application-test.yml b/ruoyi-applet/src/main/resources/application-test.yml
index 53c6be7..a0e94e7 100644
--- a/ruoyi-applet/src/main/resources/application-test.yml
+++ b/ruoyi-applet/src/main/resources/application-test.yml
@@ -193,9 +193,9 @@
     accessPath: /file/
     allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF
 wx:
-  config:
-    appId: wxc3985a05da7d86dc
-    secret: 5cca42633c25439613b328c08ef20cc9
+  conf:
+    appId: wxe91f1af7638aa5dd
+    secretId: a787e1a462715604e0c9528b6d8960d1
 #OSS及短信配置
 code:
   config:
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 21ff250..9a6eea2 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -125,8 +125,11 @@
 
     @TableField(exist = false)
     private String roleName;
-
+    @TableField(exist = false)
     private String deptName;
+    @ApiModelProperty(value = "部门id集合")
+    @TableField(exist = false)
+    private List<String> deptIds;
 
     public String getRoleName() {
         return roleName;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java
index 2dceb2e..186be08 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java
@@ -23,7 +23,7 @@
     /**
      * 用户ID
      */
-    private Long userId;
+    private String userId;
 
     /**
      * 部门ID
@@ -86,7 +86,7 @@
         this.permissions = permissions;
     }
 
-    public LoginUserApplet(Long userId, Long deptId, TTenantResp user, Set<String> permissions)
+    public LoginUserApplet(String userId, Long deptId, TTenantResp user, Set<String> permissions)
     {
         this.userId = userId;
         this.deptId = deptId;
@@ -94,12 +94,12 @@
         this.permissions = permissions;
     }
 
-    public Long getUserId()
+    public String getUserId()
     {
         return userId;
     }
 
-    public void setUserId(Long userId)
+    public void setUserId(String userId)
     {
         this.userId = userId;
     }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 1a4e0fa..5f90047 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -118,6 +118,7 @@
                         "/applet/changepwd", "/captchaImage","/getCode","/loginCode",
                         "/operations/getBySingleNum/**",
                         "/user/getUserInfoByNumber/**",
+                        "/wxLogin/**",
                         "/open/**"
                 ).permitAll()
                 // 静态资源,可匿名访问
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
index 3eb2495..9015708 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
@@ -5,6 +5,8 @@
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.core.domain.model.LoginUserApplet;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -32,12 +34,22 @@
             throws ServletException, IOException
     {
         LoginUser loginUser = tokenService.getLoginUser(request);
-        if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication()))
+        LoginUserApplet applet = tokenService.getLoginUserApplet(request);
+        if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())||
+                StringUtils.isNotNull(applet))
         {
-            tokenService.verifyToken(loginUser);
-            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
-            authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
-            SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+            if (StringUtils.isNotNull(loginUser)){
+                tokenService.verifyToken(loginUser);
+                UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
+                authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+                SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+            }
+            if (StringUtils.isNotNull(applet)){
+                tokenService.verifyTokenApplet(applet);
+                UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(applet, null, applet.getAuthorities());
+                authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+                SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+            }
         }
         chain.doFilter(request, response);
     }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
index 9bed984..a7a640b 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
@@ -72,9 +72,9 @@
      *
      * @return 用户信息
      */
-    public LoginUser getLoginUserApplet()
+    public LoginUserApplet getLoginUserApplet()
     {
-        return getLoginUser(ServletUtils.getRequest());
+        return getLoginUserApplet(ServletUtils.getRequest());
     }
     /**
      * 获取用户身份信息
@@ -108,7 +108,7 @@
      *
      * @return 用户信息
      */
-    public LoginUser getLoginUserApplet(HttpServletRequest request)
+    public LoginUserApplet getLoginUserApplet(HttpServletRequest request)
     {
         // 获取请求携带的令牌
         String token = getToken(request);
@@ -120,7 +120,7 @@
                 // 解析对应的权限以及用户信息
                 String uuid = (String) claims.get(Constants.LOGIN_USER_APPLET_KEY);
                 String userKey = getTokenKey(uuid);
-                LoginUser user = redisCache.getCacheObject(userKey);
+                LoginUserApplet user = redisCache.getCacheObject(userKey);
                 return user;
             }
             catch (Exception e)
@@ -204,6 +204,21 @@
             refreshToken(loginUser);
         }
     }
+    /**
+     * 小程序验证令牌有效期,相差不足20分钟,自动刷新缓存
+     *
+     * @param loginUser
+     * @return 令牌
+     */
+    public void verifyTokenApplet(LoginUserApplet loginUser)
+    {
+        long expireTime = loginUser.getExpireTime();
+        long currentTime = System.currentTimeMillis();
+        if (expireTime - currentTime <= MILLIS_MINUTE_TEN)
+        {
+            refreshTokenApplet(loginUser);
+        }
+    }
 
     /**
      * 刷新令牌有效期
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
index c98a23f..843a7fc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import com.ruoyi.system.model.TDeptToUser;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import com.ruoyi.system.domain.SysUserRole;
@@ -70,4 +71,6 @@
      * @return 结果
      */
     public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
+
+    void insertBatchUserDept(List<TDeptToUser> deptToUserList);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java
index effd9a5..37dfe49 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.system.model.TDeptToUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -11,6 +12,14 @@
  * @author xiaochen
  * @since 2025-02-06
  */
+@Mapper
 public interface TDeptToUserMapper extends BaseMapper<TDeptToUser> {
 
+    /**
+     * 根据用户ID删除部门用户中间表
+     *
+     * @param userId 用户ID
+     * @return 删除结果
+     **/
+    int deleteUserDeptByUserId(Long userId);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
index 8609862..3727f0a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
@@ -5,18 +5,20 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @ApiModel(value = "账户列表query")
 public class SysUserQuery extends BasePage {
 
     @ApiModelProperty(value = "姓名")
-    private String nickName;
+    private String nickNameAndPhone;
 
     @ApiModelProperty(value = "角色id")
     private Integer roleId;
 
-    @ApiModelProperty(value = "手机号")
-    private String phonenumber;
+    @ApiModelProperty(value = "部门id集合")
+    private List<String> deptIds;
 
     @ApiModelProperty(value = "状态  0=正常 1=停用")
     private String status;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 5fc26a4..ed7ae34 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -6,8 +6,14 @@
 import java.util.stream.Collectors;
 import javax.validation.Validator;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.system.mapper.*;
+import com.ruoyi.system.model.TDept;
+import com.ruoyi.system.model.TDeptToUser;
 import com.ruoyi.system.query.SysUserQuery;
+import com.ruoyi.system.service.TDeptToUserService;
 import com.ruoyi.system.vo.SysUserVO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,11 +33,6 @@
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysPostMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
 
@@ -59,9 +60,13 @@
 
     @Autowired
     private SysUserPostMapper userPostMapper;
+    @Autowired
+    private TDeptToUserMapper deptToUserMapper;
 
     @Autowired
     private ISysConfigService configService;
+    @Autowired
+    private TDeptMapper deptMapper;
 
     @Autowired
     protected Validator validator;
@@ -264,7 +269,7 @@
         // 新增用户信息
         int rows = userMapper.insertUser(user);
         // 新增用户岗位关联
-//        insertUserPost(user);
+        insertUserDept(user);
         // 新增用户与角色管理
         insertUserRoleId(user);
         return rows;
@@ -297,10 +302,10 @@
         userRoleMapper.deleteUserRoleByUserId(userId);
         // 新增用户与角色管理
         insertUserRoleId(user);
-        // 删除用户与岗位关联
-//        userPostMapper.deleteUserPostByUserId(userId);
-        // 新增用户与岗位管理
-//        insertUserPost(user);
+        // 删除用户与部门关联
+        deptToUserMapper.deleteUserDeptByUserId(userId);
+        // 新增用户与部门管理
+        insertUserDept(user);
         return userMapper.updateUser(user);
     }
 
@@ -401,6 +406,17 @@
     }
 
     /**
+     * 新增用户角色信息
+     *
+     * @param user 用户对象
+     */
+    public void insertUserDept(SysUser user)
+    {
+        this.insertUserDept(user.getUserId(), user.getDeptIds());
+    }
+
+
+    /**
      * 新增用户岗位信息
      * 
      * @param user 用户对象
@@ -460,6 +476,26 @@
             ur.setUserId(userId);
             ur.setRoleId(roleId);
             userRoleMapper.insertUserRole(ur);
+        }
+    }
+    /**
+     * 新增用户部门信息
+     *
+     * @param userId 用户ID
+     * @param deptIds 部门id集合
+     */
+    public void insertUserDept(Long userId, List<String> deptIds)
+    {
+        if (Objects.nonNull(userId) && !CollectionUtils.isEmpty(deptIds)){
+            List<TDeptToUser> deptToUserList = new ArrayList<>();
+            for (String deptId : deptIds) {
+                // 新增用户与角色管理
+                TDeptToUser deptToUser = new TDeptToUser();
+                deptToUser.setUserId(userId);
+                deptToUser.setDeptId(deptId);
+                deptToUserList.add(deptToUser);
+            }
+            userRoleMapper.insertBatchUserDept(deptToUserList);
         }
     }
 
@@ -628,6 +664,19 @@
     public PageInfo<SysUserVO> pageList(SysUserQuery query) {
         PageInfo<SysUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<SysUserVO> list = userMapper.pageList(query,pageInfo);
+        if(CollectionUtils.isEmpty(list)){
+            return pageInfo;
+        }
+        List<Long> userIds = list.stream().map(SysUserVO::getUserId).collect(Collectors.toList());
+        // 查询所有部门
+        List<TDept> depts = deptMapper.selectList(Wrappers.lambdaQuery(TDept.class));
+        List<TDeptToUser> tDeptToUsers = deptToUserMapper.selectList(Wrappers.lambdaQuery(TDeptToUser.class)
+                .in(TDeptToUser::getUserId, userIds));
+        for (SysUserVO sysUserVO : list) {
+            tDeptToUsers.stream().filter(tDeptToUser -> tDeptToUser.getUserId().equals(sysUserVO.getUserId())).forEach(tDeptToUser -> {
+                sysUserVO.setDeptList(depts.stream().filter(tDept -> tDept.getId().equals(tDeptToUser.getDeptId())).map(TDept::getDeptName).collect(Collectors.toList()));
+            });
+        }
         pageInfo.setRecords(list);
         return pageInfo;
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTenantServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTenantServiceImpl.java
index e927181..95a8452 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTenantServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTenantServiceImpl.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.constant.DictConstants;
 import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.mapper.TTenantMapper;
 import com.ruoyi.system.model.TTenant;
 import com.ruoyi.system.query.TTenantQuery;
@@ -31,8 +32,8 @@
         PageInfo<TenantVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<TenantVO> list = this.baseMapper.pageList(query,pageInfo);
         for (TenantVO tenantVO : list) {
-            tenantVO.setTenantAttributesName(DictUtils.getDictLabel(DictConstants.DICT_TYPE_TENANT_ATTRIBUTE,tenantVO.getTenantAttributes()));
-            tenantVO.setTenantTypeName(DictUtils.getDictLabel(DictConstants.DICT_TYPE_TENANT_TYPE,tenantVO.getTenantType()));
+            tenantVO.setTenantAttributesName(StringUtils.isNotBlank(tenantVO.getTenantAttributes())?DictUtils.getDictLabel(DictConstants.DICT_TYPE_TENANT_ATTRIBUTE,tenantVO.getTenantAttributes()):"");
+            tenantVO.setTenantTypeName(StringUtils.isNotBlank(tenantVO.getTenantType())?DictUtils.getDictLabel(DictConstants.DICT_TYPE_TENANT_TYPE,tenantVO.getTenantType()):"");
         }
         pageInfo.setRecords(list);
         return pageInfo;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysUserVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysUserVO.java
index 15cf0d2..09a4e0d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysUserVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysUserVO.java
@@ -5,6 +5,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @ApiModel(value = "账户列表VO")
 public class SysUserVO extends SysUser {
@@ -14,7 +16,7 @@
     @ApiModelProperty(value = "单位名称")
     private String companyName;
     @ApiModelProperty(value = "部门")
-    private String deptName;
+    private List<String> deptList;
     @ApiModelProperty(value = "角色")
     private String roleName;
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
index faaee57..cc568e7 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
@@ -92,21 +92,6 @@
 			   sol.oper_time AS operTime, sol.cost_time AS costTime,sol.companyName AS companyName,sol.roleName AS roleName,sol.phonenumber AS phonenumber,
 			   sol.userId AS userId,sol.nickName AS nickName
 		from sys_oper_log sol
-		<where>
-			<if test="query.companyName != null and query.companyName != ''">
-				AND sol.companyName LIKE concat('%',#{query.companyName},'%')
-			</if>
-			<if test="query.roleName != null and query.roleName != ''">
-				AND sol.roleName LIKE concat('%',#{query.roleName},'%')
-			</if>
-			<if test="query.nickName != null and query.nickName != ''">
-				AND sol.nickName LIKE concat('%',#{query.nickName},'%')
-			</if>
-			<if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
-				AND DATE_FORMAT(sol.oper_time, '%Y-%m-%d %H:%i:%s') &gt;= #{query.startTime}
-				AND DATE_FORMAT(sol.oper_time, '%Y-%m-%d %H:%i:%s') &lt;= #{query.endTime}
-			</if>
-		</where>
 		ORDER BY sol.oper_time DESC
 	</select>
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 7336905..7487409 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -228,19 +228,24 @@
 		from sys_user u
 		left join sys_user_role ur on u.user_id = ur.user_id
 		left join sys_role r on r.role_id = ur.role_id
+		left join t_dept_to_user tdtu on u.user_id = tdtu.user_id
 		WHERE u.del_flag = 0
-		<if test="query.nickName != null and query.nickName != ''">
-			AND u.nick_name LIKE concat('%',#{query.nickName},'%')
+		<if test="query.nickNameAndPhone != null and query.nickNameAndPhone != ''">
+			AND (u.nick_name LIKE concat('%',#{query.nickNameAndPhone},'%')
+			    OR u.phonenumber LIKE concat('%',#{query.nickNameAndPhone},'%'))
 		</if>
 		<if test="query.roleId != null">
 			AND r.role_id = #{query.roleId}
 		</if>
-		<if test="query.phonenumber != null and query.phonenumber != ''">
-			AND u.phonenumber LIKE concat('%',#{query.phonenumber},'%')
-		</if>
 		<if test="query.status != null and query.status != ''">
 			AND u.status = #{query.status}
 		</if>
+		<if test="query.deptIds != null and query.deptIds.size()>0">
+			AND u.user_id IN (select DISTINCT user_id from t_dept_to_user where dept_id IN
+			<foreach collection="query.deptIds" close=")" open="(" item="deptId" separator=",">
+				#{deptId}
+			</foreach>)
+		</if>
 		ORDER BY u.create_time DESC
 	</select>
 	<select id="selectIdByPhone" resultType="java.lang.Long">
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
index f7715e4..9b0d3cd 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
@@ -33,6 +33,12 @@
     <insert id="insertUserRole">
 		insert into sys_user_role(user_id, role_id) values (#{userRole.userId},#{userRole.roleId})
 	</insert>
+    <insert id="insertBatchUserDept">
+		insert into sys_user_role(user_id, dept_id) values
+		<foreach item="item" index="index" collection="deptToUserList" separator=",">
+			(#{item.userId},#{item.deptId})
+		</foreach>
+	</insert>
 
     <delete id="deleteUserRoleInfo" parameterType="SysUserRole">
 		delete from sys_user_role where user_id=#{userId} and role_id=#{roleId}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml
index 8e20f23..a740cf8 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml
@@ -13,5 +13,8 @@
     <sql id="Base_Column_List">
         id, dept_id, user_id
     </sql>
+    <delete id="deleteUserDeptByUserId">
+        delete from t_dept_to_user where user_id=#{userId}
+    </delete>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TItemMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TItemMapper.xml
index 84d057e..7a03ea8 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TItemMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TItemMapper.xml
@@ -22,7 +22,7 @@
     </sql>
     <select id="pageList" resultType="com.ruoyi.system.vo.TItemVO">
         select
-        t.id, t.type_id, t.item_name, t.sort_by, t.pictures, t.create_time, t.update_time, t.create_by, t.update_by, t.disabled
+        t.id, t.type_id, t.item_name, t.sort_by, t.pictures, t.create_time, t.update_time, t.create_by, t.update_by, t.disabled,
         tt.type_name
         from t_item t
         left join t_item_type tt on t.type_id = tt.id

--
Gitblit v1.7.1