【7.6.0】【sys】【user】完善绑定用户角色

pull/55/MERGE
fengshuonan 2023-06-12 14:31:38 +08:00
parent 1d916e8335
commit bd83a4f3d8
4 changed files with 68 additions and 21 deletions

View File

@ -9,6 +9,8 @@ import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUser; import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest; import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRoleRequest;
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserRoleService;
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserService; import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -29,6 +31,9 @@ public class SysUserController {
@Resource @Resource
private SysUserService sysUserService; private SysUserService sysUserService;
@Resource
private SysUserRoleService sysUserRoleService;
/** /**
* *
* *
@ -111,4 +116,16 @@ public class SysUserController {
return new SuccessResponseData<>(); return new SuccessResponseData<>();
} }
/**
*
*
* @author fengshuonan
* @since 2023/6/12 10:58
*/
@PostResource(name = "绑定用户角色", path = "/sysUser/bindRoles")
public ResponseData<?> bindRoles(@RequestBody @Validated(SysUserRoleRequest.bindRoles.class) SysUserRoleRequest sysUserRoleRequest) {
sysUserRoleService.bindRoles(sysUserRoleRequest);
return new SuccessResponseData<>();
}
} }

View File

@ -5,7 +5,9 @@ import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Set;
/** /**
* *
@ -20,28 +22,33 @@ public class SysUserRoleRequest extends BaseRequest {
/** /**
* *
*/ */
@NotNull(message = "主键不能为空", groups = {edit.class, delete.class})
@ChineseDescription("主键") @ChineseDescription("主键")
private Long userRoleId; private Long userRoleId;
/** /**
* id * id
*/ */
@NotNull(message = "用户id不能为空", groups = {add.class, edit.class})
@ChineseDescription("用户id") @ChineseDescription("用户id")
@NotNull(message = "用户id不能为空", groups = {bindRoles.class})
private Long userId; private Long userId;
/** /**
* id * id
*/ */
@NotNull(message = "角色id不能为空", groups = {add.class, edit.class})
@ChineseDescription("角色id") @ChineseDescription("角色id")
private Long roleId; private Long roleId;
/** /**
* * id
*/ */
@ChineseDescription("租户号") @ChineseDescription("用户id集合用在批量删除用户的参数")
private Long tenantId; @NotEmpty(message = "用户id集合不能为空", groups = bindRoles.class)
private Set<Long> roleIdList;
/**
*
*/
public @interface bindRoles {
}
} }

View File

@ -15,7 +15,7 @@ import java.util.List;
*/ */
public interface SysUserRoleService extends IService<SysUserRole> { public interface SysUserRoleService extends IService<SysUserRole> {
/** /**
* *
* *
* @param sysUserRoleRequest * @param sysUserRoleRequest
@ -24,7 +24,7 @@ public interface SysUserRoleService extends IService<SysUserRole> {
*/ */
void add(SysUserRoleRequest sysUserRoleRequest); void add(SysUserRoleRequest sysUserRoleRequest);
/** /**
* *
* *
* @param sysUserRoleRequest * @param sysUserRoleRequest
@ -33,7 +33,7 @@ public interface SysUserRoleService extends IService<SysUserRole> {
*/ */
void del(SysUserRoleRequest sysUserRoleRequest); void del(SysUserRoleRequest sysUserRoleRequest);
/** /**
* *
* *
* @param sysUserRoleRequest * @param sysUserRoleRequest
@ -42,7 +42,7 @@ public interface SysUserRoleService extends IService<SysUserRole> {
*/ */
void edit(SysUserRoleRequest sysUserRoleRequest); void edit(SysUserRoleRequest sysUserRoleRequest);
/** /**
* *
* *
* @param sysUserRoleRequest * @param sysUserRoleRequest
@ -51,24 +51,32 @@ public interface SysUserRoleService extends IService<SysUserRole> {
*/ */
SysUserRole detail(SysUserRoleRequest sysUserRoleRequest); SysUserRole detail(SysUserRoleRequest sysUserRoleRequest);
/** /**
* *
* *
* @param sysUserRoleRequest * @param sysUserRoleRequest
* @return List<SysUserRole> * @return List<SysUserRole>
* @author fengshuonan * @author fengshuonan
* @date 2023/06/10 21:26 * @date 2023/06/10 21:26
*/ */
List<SysUserRole> findList(SysUserRoleRequest sysUserRoleRequest); List<SysUserRole> findList(SysUserRoleRequest sysUserRoleRequest);
/** /**
* *
* *
* @param sysUserRoleRequest * @param sysUserRoleRequest
* @return PageResult<SysUserRole> * @return PageResult<SysUserRole>
* @author fengshuonan * @author fengshuonan
* @date 2023/06/10 21:26 * @date 2023/06/10 21:26
*/ */
PageResult<SysUserRole> findPage(SysUserRoleRequest sysUserRoleRequest); PageResult<SysUserRole> findPage(SysUserRoleRequest sysUserRoleRequest);
/**
*
*
* @author fengshuonan
* @since 2023/6/12 13:47
*/
void bindRoles(SysUserRoleRequest sysUserRoleRequest);
} }

View File

@ -16,7 +16,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -61,6 +63,26 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
return PageResultFactory.createPageResult(sysRolePage); return PageResultFactory.createPageResult(sysRolePage);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void bindRoles(SysUserRoleRequest sysUserRoleRequest) {
// 清空已有的用户角色绑定
LambdaQueryWrapper<SysUserRole> wrapper = this.createWrapper(sysUserRoleRequest);
this.remove(wrapper);
// 重新绑定用户角色信息
Set<Long> roleIdList = sysUserRoleRequest.getRoleIdList();
ArrayList<SysUserRole> newUserRoles = new ArrayList<>();
for (Long newRoleId : roleIdList) {
SysUserRole sysUserRole = new SysUserRole();
sysUserRole.setUserId(sysUserRoleRequest.getUserId());
sysUserRole.setRoleId(newRoleId);
newUserRoles.add(sysUserRole);
}
this.saveBatch(newUserRoles);
}
@Override @Override
public List<SysUserRole> findList(SysUserRoleRequest sysUserRoleRequest) { public List<SysUserRole> findList(SysUserRoleRequest sysUserRoleRequest) {
LambdaQueryWrapper<SysUserRole> wrapper = this.createWrapper(sysUserRoleRequest); LambdaQueryWrapper<SysUserRole> wrapper = this.createWrapper(sysUserRoleRequest);
@ -102,15 +124,8 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
private LambdaQueryWrapper<SysUserRole> createWrapper(SysUserRoleRequest sysUserRoleRequest) { private LambdaQueryWrapper<SysUserRole> createWrapper(SysUserRoleRequest sysUserRoleRequest) {
LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>();
Long userRoleId = sysUserRoleRequest.getUserRoleId();
Long userId = sysUserRoleRequest.getUserId(); Long userId = sysUserRoleRequest.getUserId();
Long roleId = sysUserRoleRequest.getRoleId();
Long tenantId = sysUserRoleRequest.getTenantId();
queryWrapper.eq(ObjectUtil.isNotNull(userRoleId), SysUserRole::getUserRoleId, userRoleId);
queryWrapper.eq(ObjectUtil.isNotNull(userId), SysUserRole::getUserId, userId); queryWrapper.eq(ObjectUtil.isNotNull(userId), SysUserRole::getUserId, userId);
queryWrapper.eq(ObjectUtil.isNotNull(roleId), SysUserRole::getRoleId, roleId);
queryWrapper.eq(ObjectUtil.isNotNull(tenantId), SysUserRole::getTenantId, tenantId);
return queryWrapper; return queryWrapper;
} }