[feat] 重构KSysUserAccount相关代码

This commit is contained in:
hsdllcw
2025-05-23 14:28:47 +08:00
parent d6148bc6b4
commit 0d37958304
33 changed files with 247 additions and 169 deletions

View File

@@ -1,11 +1,11 @@
<p align="center"> <p align="center">
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-b99b286755aef70355a7084753f89cdb7c9.png"> <img alt="logo" src="https://oscimg.oschina.net/oscnet/up-b99b286755aef70355a7084753f89cdb7c9.png">
</p> </p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.6.5.0.6</h1> <h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.6.5.0.7</h1>
<h4 align="center">基于 Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构</h4> <h4 align="center">基于 Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构</h4>
<p align="center"> <p align="center">
<a href="https://gitee.com/y_project/RuoYi-Cloud/stargazers"><img src="https://gitee.com/y_project/RuoYi-Cloud/badge/star.svg?theme=dark"></a> <a href="https://gitee.com/y_project/RuoYi-Cloud/stargazers"><img src="https://gitee.com/y_project/RuoYi-Cloud/badge/star.svg?theme=dark"></a>
<a href="https://gitee.com/y_project/RuoYi-Cloud"><img src="https://img.shields.io/badge/RuoYi-v3.6.5.0.6-brightgreen.svg"></a> <a href="https://gitee.com/y_project/RuoYi-Cloud"><img src="https://img.shields.io/badge/RuoYi-v3.6.5.0.7-brightgreen.svg"></a>
<a href="https://gitee.com/y_project/RuoYi-Cloud/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a> <a href="https://gitee.com/y_project/RuoYi-Cloud/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
</p> </p>

View File

@@ -6,14 +6,14 @@
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
<name>ruoyi</name> <name>ruoyi</name>
<url>http://www.ruoyi.vip</url> <url>http://www.ruoyi.vip</url>
<description>若依微服务系统</description> <description>若依微服务系统</description>
<properties> <properties>
<ruoyi.version>3.6.5.0.6</ruoyi.version> <ruoyi.version>3.6.5.0.7</ruoyi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version> <java.version>1.8</java.version>

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-api</artifactId> <artifactId>ruoyi-api</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
@@ -22,7 +22,17 @@
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-core</artifactId> <artifactId>ruoyi-common-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.zkjiadi</groupId>
<artifactId>zkjiadi-mall-api</artifactId>
<version>1.0.6</version>
<exclusions>
<exclusion>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>

View File

@@ -1,6 +1,7 @@
package com.ruoyi.system.api.factory; package com.ruoyi.system.api.factory;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.ruoyi.system.api.domain.KSysUserAccount;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -11,8 +12,6 @@ import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
import java.util.Map;
/** /**
* 用户服务降级处理 * 用户服务降级处理
* *
@@ -76,7 +75,7 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
} }
@Override @Override
public R<Boolean> registerUserByWxUnionId_Inner(Map<String, String> params, String source) { public R<Boolean> registerUserBySysUserAccount_Inner(KSysUserAccount sysUserAccount, Long deptId, String source) {
return R.fail("注册用户失败:" + throwable.getMessage()); return R.fail("注册用户失败:" + throwable.getMessage());
} }
}; };

View File

@@ -3,6 +3,7 @@ package com.ruoyi.system.api.inner;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.KSysUserAccount;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -18,17 +19,17 @@ public interface InnerRemoteUserService {
* @return 结果 * @return 结果
*/ */
@GetMapping("/inner/user/detail/{userId}") @GetMapping("/inner/user/detail/{userId}")
R<LoginUser> getById_Inner(@PathVariable("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); R<LoginUser> getById_Inner(@PathVariable("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/** /**
* 通过用户ID查询用户信息 * 通过用户ID查询用户信息
* *
* @param unionid 用户微信unionid * @param unionid 用户微信unionid
* @param source 请求来源 * @param source 请求来源
* @return 结果 * @return 结果
*/ */
@GetMapping("/inner/user/detail/wx/unionid/{unionid}") @GetMapping("/inner/user/detail/wx/unionid/{unionid}")
R<LoginUser> getByWxUnionId_Inner(@PathVariable("unionid") String unionid, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); R<LoginUser> getByWxUnionId_Inner(@PathVariable("unionid") String unionid, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/** /**
* 通过手机号查询用户信息 * 通过手机号查询用户信息
@@ -56,10 +57,11 @@ public interface InnerRemoteUserService {
/** /**
* 注册用户信息 * 注册用户信息
* *
* @param params 包含微信unionId和deptId * @param sysUserAccount 包含微信unionId
* @param deptId 包含部门ID
* @param source 请求来源 * @param source 请求来源
* @return 结果 * @return 结果
*/ */
@PostMapping("/inner/user/register/wx/unionid") @PostMapping("/inner/user/register/dept/{deptId}/wx/unionid")
public R<Boolean> registerUserByWxUnionId_Inner(@RequestBody Map<String, String> params, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); public R<Boolean> registerUserBySysUserAccount_Inner(@RequestBody KSysUserAccount sysUserAccount,@PathVariable Long deptId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
} }

View File

@@ -1,9 +1,21 @@
package com.ruoyi.system.api.domain package com.ruoyi.system.api.domain
class KSysUserAccount { import com.cyl.manager.ums.domain.entity.MemberWechat
open class KSysUserAccount : MemberWechat() {
/** 用户ID */ /** 用户ID */
var userId: Long? = null open var userId: Long? = null
set(value) {
memberId = value
field = value
}
get() = memberId
/** 微信UnionId */ /** 微信UnionId */
var wxUnionId: String? = null open var wxUnionId: String? = null
set(value) {
unionid = value
field = value
}
get() = unionid
} }

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
import javax.validation.Validator; import javax.validation.Validator;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.ruoyi.system.api.domain.KSysUserAccount;
import com.ruoyi.system.service.IKSysUserService; import com.ruoyi.system.service.IKSysUserService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -37,7 +38,7 @@ import com.ruoyi.system.service.ISysUserService;
/** /**
* 用户 业务层处理 * 用户 业务层处理
* *
* @author ruoyi * @author ruoyi
*/ */
@Service @Service
@@ -74,7 +75,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 根据条件分页查询用户列表 * 根据条件分页查询用户列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
@@ -87,7 +88,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 根据条件分页查询已分配用户角色列表 * 根据条件分页查询已分配用户角色列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
@@ -100,7 +101,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 根据条件分页查询未分配用户角色列表 * 根据条件分页查询未分配用户角色列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
@@ -113,7 +114,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 通过用户名查询用户 * 通过用户名查询用户
* *
* @param userName 用户名 * @param userName 用户名
* @return 用户对象信息 * @return 用户对象信息
*/ */
@@ -147,7 +148,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 通过用户ID查询用户 * 通过用户ID查询用户
* *
* @param userId 用户ID * @param userId 用户ID
* @return 用户对象信息 * @return 用户对象信息
*/ */
@@ -159,7 +160,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 查询用户所属角色组 * 查询用户所属角色组
* *
* @param userName 用户名 * @param userName 用户名
* @return 结果 * @return 结果
*/ */
@@ -176,7 +177,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 查询用户所属岗位组 * 查询用户所属岗位组
* *
* @param userName 用户名 * @param userName 用户名
* @return 结果 * @return 结果
*/ */
@@ -193,7 +194,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 校验用户名称是否唯一 * 校验用户名称是否唯一
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@@ -247,7 +248,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 校验用户是否允许操作 * 校验用户是否允许操作
* *
* @param user 用户信息 * @param user 用户信息
*/ */
@Override @Override
@@ -261,7 +262,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 校验用户是否有数据权限 * 校验用户是否有数据权限
* *
* @param userId 用户id * @param userId 用户id
*/ */
@Override @Override
@@ -281,7 +282,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 新增保存用户信息 * 新增保存用户信息
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@@ -300,7 +301,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 注册用户信息 * 注册用户信息
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@@ -312,14 +313,13 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 修改保存用户信息 * 修改保存用户信息
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int updateUser(SysUser user) public int updateUser(SysUser user) {
{
Long userId = user.getUserId(); Long userId = user.getUserId();
// 删除用户与角色关联 // 删除用户与角色关联
userRoleMapper.deleteUserRoleByUserId(userId); userRoleMapper.deleteUserRoleByUserId(userId);
@@ -331,9 +331,11 @@ public class SysUserServiceImpl implements ISysUserService
insertUserPost(user); insertUserPost(user);
// 重绑定微信信息 // 重绑定微信信息
if (Objects.nonNull(user.getSysUserAccount())) { if (Objects.nonNull(user.getSysUserAccount())) {
kSysUserService.unBindWxUnionIdByUserId(userId); KSysUserAccount sysUserAccount = new KSysUserAccount();
sysUserAccount.setUserId(userId);
kSysUserService.updateSysUserAccount(sysUserAccount);
if (Objects.nonNull(user.getSysUserAccount().getWxUnionId())) { if (Objects.nonNull(user.getSysUserAccount().getWxUnionId())) {
kSysUserService.bindWxUnionIdByUserId(userId, user.getSysUserAccount().getWxUnionId()); kSysUserService.updateSysUserAccount(user.getSysUserAccount());
} }
} }
return userMapper.updateUser(user); return userMapper.updateUser(user);
@@ -341,7 +343,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 用户授权角色 * 用户授权角色
* *
* @param userId 用户ID * @param userId 用户ID
* @param roleIds 角色组 * @param roleIds 角色组
*/ */
@@ -355,7 +357,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 修改用户状态 * 修改用户状态
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@@ -367,7 +369,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 修改用户基本信息 * 修改用户基本信息
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@@ -379,7 +381,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 修改用户头像 * 修改用户头像
* *
* @param userName 用户名 * @param userName 用户名
* @param avatar 头像地址 * @param avatar 头像地址
* @return 结果 * @return 结果
@@ -392,7 +394,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 重置用户密码 * 重置用户密码
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@@ -404,7 +406,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 重置用户密码 * 重置用户密码
* *
* @param userName 用户名 * @param userName 用户名
* @param password 密码 * @param password 密码
* @return 结果 * @return 结果
@@ -417,7 +419,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 新增用户角色信息 * 新增用户角色信息
* *
* @param user 用户对象 * @param user 用户对象
*/ */
public void insertUserRole(SysUser user) public void insertUserRole(SysUser user)
@@ -427,7 +429,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 新增用户岗位信息 * 新增用户岗位信息
* *
* @param user 用户对象 * @param user 用户对象
*/ */
public void insertUserPost(SysUser user) public void insertUserPost(SysUser user)
@@ -450,7 +452,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 新增用户角色信息 * 新增用户角色信息
* *
* @param userId 用户ID * @param userId 用户ID
* @param roleIds 角色组 * @param roleIds 角色组
*/ */
@@ -473,7 +475,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 通过用户ID删除用户 * 通过用户ID删除用户
* *
* @param userId 用户ID * @param userId 用户ID
* @return 结果 * @return 结果
*/ */
@@ -490,7 +492,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 批量删除用户信息 * 批量删除用户信息
* *
* @param userIds 需要删除的用户ID * @param userIds 需要删除的用户ID
* @return 结果 * @return 结果
*/ */
@@ -512,7 +514,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 导入用户数据 * 导入用户数据
* *
* @param userList 用户数据列表 * @param userList 用户数据列表
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
* @param operName 操作用户 * @param operName 操作用户

View File

@@ -10,6 +10,7 @@ import com.ruoyi.common.log.annotation.Log
import com.ruoyi.common.log.enums.BusinessType import com.ruoyi.common.log.enums.BusinessType
import com.ruoyi.common.security.annotation.InnerAuth import com.ruoyi.common.security.annotation.InnerAuth
import com.ruoyi.common.security.service.TokenService import com.ruoyi.common.security.service.TokenService
import com.ruoyi.system.api.domain.KSysUserAccount
import com.ruoyi.system.api.domain.SysUser import com.ruoyi.system.api.domain.SysUser
import com.ruoyi.system.api.model.LoginUser import com.ruoyi.system.api.model.LoginUser
import com.ruoyi.system.service.IKSysUserService import com.ruoyi.system.service.IKSysUserService
@@ -150,17 +151,15 @@ open class InnerSysUserController : BaseController() {
* 注册用户信息 * 注册用户信息
*/ */
@InnerAuth @InnerAuth
@PostMapping("/register/wx/unionid") @PostMapping("/register/dept/{deptId}/wx/unionid")
fun registerUserByWxUnionId(@RequestBody params: Map<String, String?>): R<Boolean> { fun registerUserBySysUserAccount(@RequestBody sysUserAccount: KSysUserAccount, @PathVariable deptId: Long): R<Boolean> {
if (!("true" == configService.selectConfigByKey("sys.account.registerUser"))) { if ("true" != configService.selectConfigByKey("sys.account.registerUser")) {
return R.fail("当前系统没有开启注册功能!") return R.fail("当前系统没有开启注册功能!")
} }
val unionid = params.get("unionId") if (sysUserAccount.wxUnionId == null) return R.fail("微信unionid不存在无法注册")
val deptId = params.get("deptId")?.toLong() if (!kSysUserService.checkWxUnionIdUnique(sysUserAccount.wxUnionId!!)) {
if (unionid == null) return R.fail("微信unionid不存在无法注册") return R.fail("保存用户'$sysUserAccount.wxUnionId'失败,注册账号已存在")
if (!kSysUserService.checkWxUnionIdUnique(unionid)) {
return R.fail("保存用户'$unionid'失败,注册账号已存在")
} }
return R.ok(kSysUserService.registerUserByWxUnionId(unionid, deptId)) return R.ok(kSysUserService.registerUserBySysUserAccount(sysUserAccount, deptId))
} }
} }

View File

@@ -32,7 +32,9 @@ interface KSysUserMapper {
*/ */
fun checkWxUnionIdUnique(wxUnionId: String): SysUser? fun checkWxUnionIdUnique(wxUnionId: String): SysUser?
fun insertSysUserAccount(params: Map<String, Any>): Int fun insertSysUserAccount(sysUserAccount: KSysUserAccount): Int
fun updateSysUserAccount(params: Map<String, Any?>): Int fun updateSysUserAccount(sysUserAccount: KSysUserAccount): Int
fun unBindWxUnionIdByUserId(params: Map<String, Any?>): Int
} }

View File

@@ -33,14 +33,14 @@ interface IKSysUserService {
/** /**
* 注册用户信息 * 注册用户信息
* *
* @param wxUnionId 微信unionId * @param sysUserAccount 包含微信unionId
* @return 结果 * @return 结果
*/ */
fun registerUserByWxUnionId(wxUnionId: String, deptId: Long?): Boolean fun registerUserBySysUserAccount(sysUserAccount: KSysUserAccount, deptId: Long): Boolean
/** /**
* 绑定微信 * 绑定微信
*/ */
fun bindWxUnionIdByUserId(userId: Long,wxUnionId: String): Int fun updateSysUserAccount(sysUserAccount: KSysUserAccount): Int
/** /**
* 解绑微信 * 解绑微信
*/ */

View File

@@ -3,6 +3,7 @@ package com.ruoyi.system.service.impl
import com.ruoyi.common.core.constant.UserConstants import com.ruoyi.common.core.constant.UserConstants
import com.ruoyi.common.core.utils.uuid.IdUtils import com.ruoyi.common.core.utils.uuid.IdUtils
import com.ruoyi.common.security.utils.SecurityUtils import com.ruoyi.common.security.utils.SecurityUtils
import com.ruoyi.system.api.domain.KSysUserAccount
import com.ruoyi.system.api.domain.SysUser import com.ruoyi.system.api.domain.SysUser
import com.ruoyi.system.mapper.KSysUserMapper import com.ruoyi.system.mapper.KSysUserMapper
import com.ruoyi.system.service.IKSysUserService import com.ruoyi.system.service.IKSysUserService
@@ -28,10 +29,11 @@ open class KSysUserServiceImpl : IKSysUserService {
/** /**
* 注册用户信息 * 注册用户信息
* *
* @param wxUnionId 微信unionId * @param sysUserAccount 包含微信unionId
* @param deptId 部门ID
* @return 结果 * @return 结果
*/ */
override fun registerUserByWxUnionId(wxUnionId: String, deptId: Long?): Boolean { override fun registerUserBySysUserAccount(sysUserAccount: KSysUserAccount, deptId: Long): Boolean {
val user = SysUser().apply { val user = SysUser().apply {
userName = IdUtils.randomUUID().replace("-".toRegex(), "").substring(0, 30) userName = IdUtils.randomUUID().replace("-".toRegex(), "").substring(0, 30)
nickName = "嘉迪微信用户" nickName = "嘉迪微信用户"
@@ -40,34 +42,16 @@ open class KSysUserServiceImpl : IKSysUserService {
} }
return sysUserService.registerUser(user).apply { return sysUserService.registerUser(user).apply {
sysUserService.selectUserByUserName(user.userName) sysUserService.selectUserByUserName(user.userName)
kSysUserMapper.insertSysUserAccount( kSysUserMapper.insertSysUserAccount(sysUserAccount)
mapOf(
"userId" to user.userId,
"wxUnionId" to wxUnionId,
)
)
} }
} }
override fun bindWxUnionIdByUserId(userId: Long, wxUnionId: String): Int { override fun updateSysUserAccount(sysUserAccount: KSysUserAccount): Int {
if (this.selectUserById(userId) != null) return kSysUserMapper.updateSysUserAccount(sysUserAccount)
return kSysUserMapper.updateSysUserAccount(
mapOf(
"userId" to userId,
"wxUnionId" to wxUnionId,
)
)
else
return kSysUserMapper.insertSysUserAccount(
mapOf(
"userId" to userId,
"wxUnionId" to wxUnionId,
)
)
} }
override fun unBindWxUnionIdByUserId(userId: Long): Int { override fun unBindWxUnionIdByUserId(userId: Long): Int {
return kSysUserMapper.updateSysUserAccount( return kSysUserMapper.unBindWxUnionIdByUserId(
mapOf( mapOf(
"userId" to userId, "userId" to userId,
"wxUnionId" to null, "wxUnionId" to null,

View File

@@ -1,84 +1,152 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.KSysUserMapper"> <mapper namespace="com.ruoyi.system.mapper.KSysUserMapper">
<resultMap type="SysUser" id="SysUserResult"> <resultMap type="SysUser" id="SysUserResult">
<id property="userId" column="user_id" /> <id property="userId" column="user_id"/>
<result property="deptId" column="dept_id" /> <result property="deptId" column="dept_id"/>
<result property="userName" column="user_name" /> <result property="userName" column="user_name"/>
<result property="nickName" column="nick_name" /> <result property="nickName" column="nick_name"/>
<result property="email" column="email" /> <result property="email" column="email"/>
<result property="phonenumber" column="phonenumber" /> <result property="phonenumber" column="phonenumber"/>
<result property="sex" column="sex" /> <result property="sex" column="sex"/>
<result property="avatar" column="avatar" /> <result property="avatar" column="avatar"/>
<result property="password" column="password" /> <result property="password" column="password"/>
<result property="status" column="status" /> <result property="status" column="status"/>
<result property="delFlag" column="del_flag" /> <result property="delFlag" column="del_flag"/>
<result property="loginIp" column="login_ip" /> <result property="loginIp" column="login_ip"/>
<result property="loginDate" column="login_date" /> <result property="loginDate" column="login_date"/>
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by"/>
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time"/>
<result property="remark" column="remark" /> <result property="remark" column="remark"/>
<association property="sysUserAccount" javaType="KSysUserAccount" resultMap="KSysUserAccount" /> <association property="sysUserAccount" javaType="com.ruoyi.system.api.domain.KSysUserAccount"
<association property="dept" javaType="SysDept" resultMap="deptResult" /> resultMap="KSysUserAccount"/>
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" /> <association property="dept" javaType="SysDept" resultMap="deptResult"/>
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
</resultMap> </resultMap>
<resultMap id="KSysUserAccount" type="KSysUserAccount"> <resultMap id="KSysUserAccount" type="com.ruoyi.system.api.domain.KSysUserAccount">
<id property="userId" column="member_id" /> <id property="id" column="member_id"/>
<result property="wxUnionId" column="unionid" /> <result property="userId" column="member_id"/>
<result property="wxUnionId" column="unionid"/>
<result property="openid" column="openid"/>
<result property="routineOpenid" column="routineOpenid"/>
<result property="groupid" column="groupid"/>
<result property="tagidList" column="tagidList"/>
<result property="subscribe" column="subscribe"/>
<result property="subscribeTime" column="subscribeTime"/>
<result property="sessionKey" column="sessionKey"/>
<result property="accessToken" column="accessToken"/>
<result property="expiresIn" column="expiresIn"/>
<result property="refreshToken" column="refreshToken"/>
<result property="expireTime" column="expireTime"/>
</resultMap> </resultMap>
<resultMap id="deptResult" type="SysDept"> <resultMap id="deptResult" type="SysDept">
<id property="deptId" column="dept_id" /> <id property="deptId" column="dept_id"/>
<result property="parentId" column="parent_id" /> <result property="parentId" column="parent_id"/>
<result property="deptName" column="dept_name" /> <result property="deptName" column="dept_name"/>
<result property="ancestors" column="ancestors" /> <result property="ancestors" column="ancestors"/>
<result property="orderNum" column="order_num" /> <result property="orderNum" column="order_num"/>
<result property="leader" column="leader" /> <result property="leader" column="leader"/>
<result property="status" column="dept_status" /> <result property="status" column="dept_status"/>
</resultMap> </resultMap>
<resultMap id="RoleResult" type="SysRole"> <resultMap id="RoleResult" type="SysRole">
<id property="roleId" column="role_id" /> <id property="roleId" column="role_id"/>
<result property="roleName" column="role_name" /> <result property="roleName" column="role_name"/>
<result property="roleKey" column="role_key" /> <result property="roleKey" column="role_key"/>
<result property="roleSort" column="role_sort" /> <result property="roleSort" column="role_sort"/>
<result property="dataScope" column="data_scope" /> <result property="dataScope" column="data_scope"/>
<result property="status" column="role_status" /> <result property="status" column="role_status"/>
</resultMap> </resultMap>
<sql id="selectUserVo"> <sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, select u.user_id,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, u.dept_id,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status, u.user_name,
umw.unionid u.nick_name,
u.email,
u.avatar,
u.phonenumber,
u.password,
u.sex,
u.status,
u.del_flag,
u.login_ip,
u.login_date,
u.create_by,
u.create_time,
u.remark,
d.dept_id,
d.parent_id,
d.ancestors,
d.dept_name,
d.order_num,
d.leader,
d.status as dept_status,
r.role_id,
r.role_name,
r.role_key,
r.role_sort,
r.data_scope,
r.status as role_status,
umw.unionid
from sys_user u from sys_user u
left join ums_member_wechat umw on umw.member_id = u.user_id left join ums_member_wechat umw on umw.member_id = u.user_id
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id 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 sys_role r on r.role_id = ur.role_id
</sql> </sql>
<select id="selectUserById" parameterType="Long" resultMap="KSysUserAccount"> <select id="selectUserById" parameterType="Long" resultMap="KSysUserAccount">
select umw.member_id, umw.unionid from ums_member_wechat umw where umw.member_id = #{userId} limit 1 select umw.member_id, umw.unionid
from ums_member_wechat umw
where umw.member_id = #{userId}
limit 1
</select> </select>
<select id="selectUserByWxUnionId" parameterType="String" resultMap="SysUserResult"> <select id="selectUserByWxUnionId" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/> <include refid="selectUserVo"/>
where umw.unionid = #{wxUnionId} and u.del_flag = '0' where umw.unionid = #{wxUnionId} and u.del_flag = '0'
</select> </select>
<select id="checkWxUnionIdUnique" parameterType="String" resultMap="SysUserResult"> <select id="checkWxUnionIdUnique" parameterType="String" resultMap="SysUserResult">
select u.user_id, u.user_name from sys_user u left join ums_member_wechat umw on umw.member_id=u.user_id where umw.unionid = #{wxUnionId} and u.del_flag = '0' limit 1 select u.user_id, u.user_name
from sys_user u
left join ums_member_wechat umw on umw.member_id = u.user_id
where umw.unionid = #{wxUnionId}
and u.del_flag = '0'
limit 1
</select> </select>
<insert id="insertSysUserAccount"> <insert id="insertSysUserAccount" parameterType="com.ruoyi.system.api.domain.KSysUserAccount">
insert into ums_member_wechat(member_id, unionid) values (#{userId},#{wxUnionId}) insert into ums_member_wechat(member_id, unionid, openid, routine_openid, groupid, tagid_list, subscribe,
subscribe_time, session_key, access_token, expires_in, refresh_token, expire_time)
values (#{userId}, #{wxUnionId}, #{openid}, #{routineOpenid}, #{groupid}, #{tagidList}, #{subscribe},
#{subscribeTime}, #{sessionKey}, #{accessToken}, #{expiresIn}, #{refreshToken}, #{expireTime})
</insert> </insert>
<insert id="updateSysUserAccount"> <update id="updateSysUserAccount">
update ums_member_wechat set unionid = #{wxUnionId} where member_id = #{userId} update ums_member_wechat
set unionid = #{wxUnionId},
openid = #{openid},
routine_openid = #{routineOpenid},
groupid = #{groupid},
tagid_list = #{tagidList},
subscribe = #{subscribe},
subscribe_time = #{subscribeTime},
session_key = #{sessionKey},
access_token = #{accessToken},
expires_in = #{expiresIn},
refresh_token = #{refreshToken},
expire_time = #{expireTime}
where member_id = #{userId}
</update>
<insert id="unBindWxUnionIdByUserId">
update ums_member_wechat
set unionid = #{wxUnionId}
where member_id = #{userId}
</insert> </insert>
</mapper> </mapper>

View File

@@ -108,7 +108,7 @@
<span>更新日志</span> <span>更新日志</span>
</div> </div>
<el-collapse accordion> <el-collapse accordion>
<el-collapse-item title="v3.6.5.0.6 - 2024-11-13"> <el-collapse-item title="v3.6.5.0.7 - 2024-11-13">
<ol> <ol>
<li>使用SpringDoc代替Swagger</li> <li>使用SpringDoc代替Swagger</li>
<li>菜单管理新增路由名称</li> <li>菜单管理新增路由名称</li>
@@ -909,7 +909,7 @@ export default {
data() { data() {
return { return {
// 版本号 // 版本号
version: "3.6.5.0.6", version: "3.6.5.0.7",
}; };
}, },
methods: { methods: {

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-visual</artifactId> <artifactId>ruoyi-visual</artifactId>
<version>3.6.5.0.6</version> <version>3.6.5.0.7</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>