拆分用户模块为saas用户模块

cloud-master
面包骑士 2024-09-24 11:01:55 +08:00
parent 99b4f3bb16
commit 7540b931c5
29 changed files with 494 additions and 40 deletions

View File

@ -25,5 +25,6 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
public class CloudAuthApplication {
public static void main (String[] args) {
SpringApplication.run(CloudAuthApplication.class, args);
System.out.println("CloudAuth 模块启动成功!");
}
}

View File

@ -40,8 +40,8 @@ spring:
file-extension: yml
# 共享配置
shared-configs:
# 系统共享配置
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 系统环境Config共享配置
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 系统共享配置
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

View File

@ -1,5 +1,8 @@
package com.muyu.common.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.annotation.Excel.ColumnType;
import com.muyu.common.core.annotation.Excel.Type;
@ -28,6 +31,7 @@ import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("sys_user")
public class SysUser extends BaseEntity {
private static final long serialVersionUID = 1L;
@ -35,6 +39,7 @@ public class SysUser extends BaseEntity {
* ID
*/
@Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
@TableId(type = IdType.AUTO)
private Long userId;
private Integer isAdmin;

View File

@ -1,4 +1,4 @@
package com.muyu.system.domain;
package com.muyu.common.system.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;

View File

@ -1,4 +1,4 @@
package com.muyu.system.domain;
package com.muyu.common.system.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;

View File

@ -4,12 +4,10 @@ import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.system.domain.SysEnt;
import com.muyu.common.system.domain.SysFirmUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.domain.*;
import com.muyu.common.system.remote.factory.RemoteUserFallbackFactory;
import com.muyu.common.system.domain.LoginUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -59,4 +57,35 @@ public interface RemoteUserService {
*/
@PostMapping("/permission/getMenu")
public Set<String> getMenuPermission (@RequestBody SysUser user);
/**
*
*/
@GetMapping(value = "/dept/{deptId}")
public Result<SysDept> selectDeptById (@PathVariable("deptId") Long deptId);
/**
*
*
* @param user
*/
@PostMapping("/user/insertUserRole")
public void insertUserRole (@RequestBody SysUser user);
/**
*
*
* @param user
*/
@PostMapping("/user/insertUserPost")
public void insertUserPost (@RequestBody SysUser user);
/**
*
*/
@PostMapping("/user")
public Result addUser (@RequestBody SysUser user);
}

View File

@ -2,11 +2,8 @@ package com.muyu.common.system.remote.factory;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.system.domain.SysEnt;
import com.muyu.common.system.domain.SysFirmUser;
import com.muyu.common.system.domain.*;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.domain.LoginUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@ -54,6 +51,26 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
return Set.of();
}
@Override
public Result<SysDept> selectDeptById(Long deptId) {
return Result.error();
}
@Override
public void insertUserRole(SysUser user) {
log.warn("新增用户角色失败!");
}
@Override
public void insertUserPost(SysUser user) {
log.warn("新增用户权限失败!");
}
@Override
public Result addUser(SysUser user) {
return Result.error(throwable);
}
};
}
}

View File

@ -13,5 +13,6 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
public class CloudGatewayApplication {
public static void main (String[] args) {
SpringApplication.run(CloudGatewayApplication.class, args);
System.out.println("CloudGateway 模块启动成功!");
}
}

View File

@ -22,29 +22,29 @@ spring:
discovery:
# 服务注册地址
server-addr: ${nacos.addr}
# nacos用户名
username: ${nacos.user-name}
# nacos密码
password: ${nacos.password}
# # nacos用户名
# username: ${nacos.user-name}
# # nacos密码
# password: ${nacos.password}
# 命名空间
namespace: ${nacos.namespace}
config:
# 服务注册地址
server-addr: ${nacos.addr}
# nacos用户名
username: ${nacos.user-name}
# nacos密码
password: ${nacos.password}
# # nacos用户名
# username: ${nacos.user-name}
# # nacos密码
# password: ${nacos.password}
# 命名空间
namespace: ${nacos.namespace}
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
# 系统共享配置
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 系统环境Config共享配置
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 系统共享配置
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
sentinel:
# 取消控制台懒加载
eager: true

View File

@ -13,5 +13,6 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
public class CloudFileApplication {
public static void main (String[] args) {
SpringApplication.run(CloudFileApplication.class, args);
System.out.println("CloudFile 模块启动成功!");
}
}

View File

@ -3,18 +3,25 @@ package com.muyu.system.saas.controller;
import com.muyu.cloud.common.many.datasource.holder.DynamicDataSourceHolder;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.InnerAuth;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysDept;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.system.saas.service.SysUserService;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import lombok.extern.slf4j.Slf4j;
/**
* @Author:
* @Name: SysUser
@ -25,7 +32,9 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@RestController
@RequestMapping("/user")
public class SysUserController {
public class SysUserController extends BaseController {
@Resource
private RemoteUserService remoteUserService;
@Resource
private SysUserService userService;
@ -37,8 +46,45 @@ public class SysUserController {
DynamicDataSourceHolder.setDynamicDataSourceKey(firmCode);
SysUser sysUser = userService.selectUserByUserName(userName);
if (StringUtils.isNull(sysUser)) {
return Result.error("用户名或密码错误");
return error("用户名或密码错误");
}
return Result.success(sysUser);
}
/**
*
*/
@RequiresPermissions("system:user:add")
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add (@Validated @RequestBody SysUser user) {
SysUser checked = userService.checkUserNameUnique(user);
if (ObjectUtils.isNotEmpty(checked)) {
if (checked.getUserName().equals(user.getUserName())) {
return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && checked.getPhonenumber().equals(user.getPhonenumber())) {
return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
} else if (StringUtils.isNotEmpty(user.getEmail()) && checked.getEmail().equals(user.getEmail())) {
return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
}
user.setCreateBy(SecurityUtils.getUsername());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
String saasKey = SecurityUtils.getSaasKey();
if ("FIRM".equals(saasKey)) {
SysDept sysDept = remoteUserService.selectDeptById(user.getDeptId()).getData();
if (ObjectUtils.isEmpty(sysDept)){
return error("部门不存在!");
}
user.setFirmCode(sysDept.getFirmCode());
}else {
user.setFirmCode(saasKey);
}
userService.save(user);
userService.insertUserPost(user);
userService.insertUserRole(user);
return remoteUserService.addUser(user);
}
}

View File

@ -19,4 +19,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
SysUser selectUserByUserName(@Param("userName") String userName);
}

View File

@ -0,0 +1,49 @@
package com.muyu.system.saas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.common.system.domain.SysUserPost;
import java.util.List;
/**
*
*
* @author muyu
*/
public interface SysUserPostMapper extends BaseMapper<SysUserPost> {
/**
* ID
*
* @param userId ID
*
* @return
*/
public int deleteUserPostByUserId (Long userId);
/**
* ID使
*
* @param postId ID
*
* @return
*/
public int countUserPostById (Long postId);
/**
*
*
* @param ids ID
*
* @return
*/
public int deleteUserPost (Long[] ids);
/**
*
*
* @param userPostList
*
* @return
*/
public int batchUserPost (List<SysUserPost> userPostList);
}

View File

@ -0,0 +1,69 @@
package com.muyu.system.saas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.common.system.domain.SysUserRole;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author muyu
*/
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
/**
* ID
*
* @param userId ID
*
* @return
*/
public int deleteUserRoleByUserId (Long userId);
/**
*
*
* @param ids ID
*
* @return
*/
public int deleteUserRole (Long[] ids);
/**
* ID使
*
* @param roleId ID
*
* @return
*/
public int countUserRoleByRoleId (Long roleId);
/**
*
*
* @param userRoleList
*
* @return
*/
public int batchUserRole (List<SysUserRole> userRoleList);
/**
*
*
* @param userRole
*
* @return
*/
public int deleteUserRoleInfo (SysUserRole userRole);
/**
*
*
* @param roleId ID
* @param userIds ID
*
* @return
*/
public int deleteUserRoleInfos (@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
}

View File

@ -15,4 +15,27 @@ import com.muyu.common.system.domain.SysUser;
public interface SysUserService extends IService<SysUser> {
SysUser selectUserByUserName(String userName);
/**
*
*
* @param user
*
* @return
*/
public SysUser checkUserNameUnique (SysUser user);
/**
*
*
* @param user
*/
public void insertUserPost (SysUser user);
/**
*
*
* @param user
*/
public void insertUserRole (SysUser user);
}

View File

@ -4,12 +4,23 @@ package com.muyu.system.saas.service.impl;
import javax.annotation.Resource;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.muyu.common.core.constant.UserConstants;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.domain.SysUserPost;
import com.muyu.common.system.domain.SysUserRole;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.system.saas.mapper.SysUserPostMapper;
import com.muyu.system.saas.mapper.SysUserRoleMapper;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.system.saas.mapper.SysUserMapper;
import com.muyu.system.saas.service.SysUserService;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* @Author:
@ -24,10 +35,96 @@ import com.muyu.system.saas.service.SysUserService;
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
implements SysUserService {
@Resource
private RemoteUserService remoteUserService;
@Resource
private SysUserMapper userMapper;
@Resource
private SysUserPostMapper userPostMapper;
@Resource
private SysUserRoleMapper userRoleMapper;
@Override
public SysUser selectUserByUserName(String userName) {
return userMapper.selectUserByUserName(userName);
}
/**
* //
*
* @param user
*
* @return
*/
@Override
public SysUser checkUserNameUnique (SysUser user) {
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.eq(
StringUtils.isNotNull(user.getUserId()),
SysUser::getUserId, user.getUserId()
)
.eq(SysUser::getUserName, user.getUserName())
.or()
.eq(SysUser::getPhonenumber, user.getPhonenumber())
.or()
.eq(SysUser::getEmail, user.getEmail())
.last("LIMIT 1");
return this.getOne(queryWrapper);
}
/**
*
*
* @param user
*/
@Override
public void insertUserPost (SysUser user) {
Long[] posts = user.getPostIds();
if (StringUtils.isNotEmpty(posts)) {
// 新增用户与岗位管理
List<SysUserPost> list = new ArrayList<SysUserPost>();
for (Long postId : posts) {
SysUserPost up = new SysUserPost();
up.setUserId(user.getUserId());
up.setPostId(postId);
list.add(up);
}
userPostMapper.batchUserPost(list);
}
}
/**
*
*
* @param user
*/
@Override
public void insertUserRole (SysUser user) {
this.insertUserRole(user.getUserId(), user.getRoleIds());
}
/**
*
*
* @param userId ID
* @param roleIds
*/
public void insertUserRole (Long userId, Long[] roleIds) {
if (StringUtils.isNotEmpty(roleIds)) {
// 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long roleId : roleIds) {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
list.add(ur);
}
userRoleMapper.batchUserRole(list);
}
}
}

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.system.saas.mapper.SysUserPostMapper">
<resultMap type="com.muyu.common.system.domain.SysUserPost" id="SysUserPostResult">
<result property="userId" column="user_id"/>
<result property="postId" column="post_id"/>
</resultMap>
<delete id="deleteUserPostByUserId" parameterType="Long">
delete
from sys_user_post
where user_id = #{userId}
</delete>
<select id="countUserPostById" resultType="Integer">
select count(1)
from sys_user_post
where post_id = #{postId}
</select>
<delete id="deleteUserPost" parameterType="Long">
delete from sys_user_post where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
<insert id="batchUserPost">
insert into sys_user_post(user_id, post_id) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.userId},#{item.postId})
</foreach>
</insert>
</mapper>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.system.saas.mapper.SysUserRoleMapper">
<resultMap type="com.muyu.common.system.domain.SysUserRole" id="SysUserRoleResult">
<result property="userId" column="user_id"/>
<result property="roleId" column="role_id"/>
</resultMap>
<delete id="deleteUserRoleByUserId" parameterType="Long">
delete
from sys_user_role
where user_id = #{userId}
</delete>
<select id="countUserRoleByRoleId" resultType="Integer">
select count(1)
from sys_user_role
where role_id = #{roleId}
</select>
<delete id="deleteUserRole" parameterType="Long">
delete from sys_user_role where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
<insert id="batchUserRole">
insert into sys_user_role(user_id, role_id) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.userId},#{item.roleId})
</foreach>
</insert>
<delete id="deleteUserRoleInfo" parameterType="com.muyu.common.system.domain.SysUserRole">
delete
from sys_user_role
where user_id = #{userId}
and role_id = #{roleId}
</delete>
<delete id="deleteUserRoleInfos">
delete from sys_user_role where role_id=#{roleId} and user_id in
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
</mapper>

View File

@ -27,5 +27,6 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
public class CloudSystemApplication {
public static void main (String[] args) {
SpringApplication.run(CloudSystemApplication.class, args);
System.out.println("CloudSystem 模块启动成功!");
}
}

View File

@ -11,7 +11,7 @@ import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysDept;
import com.muyu.common.system.domain.SysRole;
import com.muyu.common.system.domain.SysUser;
import com.muyu.system.domain.SysUserRole;
import com.muyu.common.system.domain.SysUserRole;
import com.muyu.system.domain.resp.DeptTreeResp;
import com.muyu.system.service.SysDeptService;
import com.muyu.system.service.SysRoleService;

View File

@ -214,6 +214,26 @@ public class SysUserController extends BaseController {
return toAjax(userService.insertUser(user));
}
/**
*
*
* @param user
*/
@PostMapping("/insertUserRole")
public void insertUserRole (@RequestBody SysUser user) {
userService.insertUserRole(user);
}
/**
*
*
* @param user
*/
@PostMapping("/insertUserPost")
public void insertUserPost (@RequestBody SysUser user) {
userService.insertUserPost(user);
}
/**
*
*/

View File

@ -1,7 +1,7 @@
package com.muyu.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.system.domain.SysUserPost;
import com.muyu.common.system.domain.SysUserPost;
import java.util.List;

View File

@ -1,7 +1,7 @@
package com.muyu.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.system.domain.SysUserRole;
import com.muyu.common.system.domain.SysUserRole;
import org.apache.ibatis.annotations.Param;
import java.util.List;

View File

@ -2,7 +2,7 @@ package com.muyu.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.system.domain.SysRole;
import com.muyu.system.domain.SysUserRole;
import com.muyu.common.system.domain.SysUserRole;
import java.util.List;
import java.util.Set;

View File

@ -228,4 +228,9 @@ public interface SysUserService extends IService<SysUser> {
public String importUser (List<SysUser> userList, Boolean isUpdateSupport, String operName);
List<SysUser> selectCompanyList();
void insertUserPost(SysUser user);
void insertUserRole(SysUser user);
}

View File

@ -11,7 +11,7 @@ import com.muyu.common.system.domain.SysRole;
import com.muyu.common.system.domain.SysUser;
import com.muyu.system.domain.SysRoleDept;
import com.muyu.system.domain.SysRoleMenu;
import com.muyu.system.domain.SysUserRole;
import com.muyu.common.system.domain.SysUserRole;
import com.muyu.system.mapper.SysRoleDeptMapper;
import com.muyu.system.mapper.SysRoleMapper;
import com.muyu.system.mapper.SysRoleMenuMapper;

View File

@ -3,7 +3,6 @@ package com.muyu.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.constant.UserConstants;
import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.core.utils.ServletUtils;
import com.muyu.common.core.utils.SpringUtils;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.bean.BeanValidators;
@ -12,12 +11,11 @@ import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysRole;
import com.muyu.common.system.domain.SysUser;
import com.muyu.system.domain.SysPost;
import com.muyu.system.domain.SysUserPost;
import com.muyu.system.domain.SysUserRole;
import com.muyu.common.system.domain.SysUserPost;
import com.muyu.common.system.domain.SysUserRole;
import com.muyu.system.mapper.*;
import com.muyu.system.service.SysUserService;
import com.muyu.system.service.SysConfigService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Validator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -361,6 +359,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
*
* @param user
*/
@Override
public void insertUserRole (SysUser user) {
this.insertUserRole(user.getUserId(), user.getRoleIds());
}
@ -370,6 +369,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
*
* @param user
*/
@Override
public void insertUserPost (SysUser user) {
Long[] posts = user.getPostIds();
if (StringUtils.isNotEmpty(posts)) {

View File

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.system.mapper.SysUserPostMapper">
<resultMap type="com.muyu.system.domain.SysUserPost" id="SysUserPostResult">
<resultMap type="com.muyu.common.system.domain.SysUserPost" id="SysUserPostResult">
<result property="userId" column="user_id"/>
<result property="postId" column="post_id"/>
</resultMap>

View File

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.system.mapper.SysUserRoleMapper">
<resultMap type="com.muyu.system.domain.SysUserRole" id="SysUserRoleResult">
<resultMap type="com.muyu.common.system.domain.SysUserRole" id="SysUserRoleResult">
<result property="userId" column="user_id"/>
<result property="roleId" column="role_id"/>
</resultMap>
@ -35,7 +35,7 @@
</foreach>
</insert>
<delete id="deleteUserRoleInfo" parameterType="com.muyu.system.domain.SysUserRole">
<delete id="deleteUserRoleInfo" parameterType="com.muyu.common.system.domain.SysUserRole">
delete
from sys_user_role
where user_id = #{userId}