1.提交修改,门店用户加入分配角色 查询角色 门店
This commit is contained in:
@@ -100,9 +100,10 @@ public class StoreUserController {
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<StoreUserDO> list = storeUserService.getStoreUserPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "门店-用户绑定.xls", "数据", StoreUserRespVO.class,
|
||||
BeanUtils.toBean(list, StoreUserRespVO.class));
|
||||
List<StoreUserRespVO> rows = BeanUtils.toBean(list, StoreUserRespVO.class);
|
||||
// 密码不落库、不落 Excel
|
||||
rows.forEach(row -> row.setPassword(null));
|
||||
ExcelUtils.write(response, "门店-用户绑定.xls", "数据", StoreUserRespVO.class, rows);
|
||||
}
|
||||
|
||||
@PostMapping("/e3SyncStoreAndUser")
|
||||
|
||||
@@ -28,4 +28,10 @@ public class StoreUserPageReqVO extends PageParam {
|
||||
private String username;
|
||||
private String nickname;
|
||||
private String mobile;
|
||||
|
||||
@Schema(description = "角色编号(按角色筛选用户)", example = "1")
|
||||
private Long roleId;
|
||||
|
||||
@Schema(description = "门店名称(模糊查询)")
|
||||
private String storeName;
|
||||
}
|
||||
@@ -1,14 +1,12 @@
|
||||
package cn.iocoder.yudao.module.ydoyun.controller.admin.storeuser.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.idev.excel.annotation.*;
|
||||
import cn.idev.excel.annotation.ExcelIgnore;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
|
||||
@Schema(description = "管理后台 - 门店-用户绑定 Response VO")
|
||||
@Data
|
||||
@@ -16,40 +14,61 @@ import cn.idev.excel.annotation.*;
|
||||
public class StoreUserRespVO {
|
||||
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8169")
|
||||
@ExcelProperty("主键ID")
|
||||
@ExcelProperty(value = "主键ID", index = 0)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30851")
|
||||
@ExcelProperty("门店ID")
|
||||
@ExcelProperty(value = "门店ID", index = 1)
|
||||
private Long storeId;
|
||||
|
||||
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15789")
|
||||
@ExcelProperty("用户ID")
|
||||
private Long userId;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
// ===== AdminUser 冗余字段 =====
|
||||
@TableField(exist = false)
|
||||
private String username;
|
||||
@TableField(exist = false)
|
||||
private String nickname;
|
||||
@TableField(exist = false)
|
||||
private String password;
|
||||
@TableField(exist = false)
|
||||
private String mobile;
|
||||
|
||||
|
||||
/**
|
||||
* 门店编码
|
||||
*/
|
||||
@Schema(description = "门店编码")
|
||||
@ExcelProperty(value = "门店编码", index = 2)
|
||||
@TableField(exist = false)
|
||||
private String storeCode;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
@Schema(description = "门店名称")
|
||||
@ExcelProperty(value = "门店名称", index = 3)
|
||||
@TableField(exist = false)
|
||||
private String storeName;
|
||||
|
||||
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15789")
|
||||
@ExcelProperty(value = "用户ID", index = 4)
|
||||
private Long userId;
|
||||
|
||||
// ===== AdminUser 冗余字段 =====
|
||||
@Schema(description = "用户名称")
|
||||
@ExcelProperty(value = "用户名称", index = 5)
|
||||
@TableField(exist = false)
|
||||
private String username;
|
||||
|
||||
@Schema(description = "用户昵称")
|
||||
@ExcelProperty(value = "用户昵称", index = 6)
|
||||
@TableField(exist = false)
|
||||
private String nickname;
|
||||
|
||||
@Schema(description = "手机号码")
|
||||
@ExcelProperty(value = "手机号码", index = 7)
|
||||
@TableField(exist = false)
|
||||
private String mobile;
|
||||
|
||||
/** 密码不落 Excel */
|
||||
@Schema(description = "密码", hidden = true)
|
||||
@ExcelIgnore
|
||||
@TableField(exist = false)
|
||||
private String password;
|
||||
|
||||
@Schema(description = "角色名称(逗号拼接)")
|
||||
@ExcelProperty(value = "角色", index = 8)
|
||||
@TableField(exist = false)
|
||||
private String roleNames;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty(value = "创建时间", index = 9)
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
@@ -56,4 +56,10 @@ public class StoreUserDO extends BaseDO {
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 用户角色名称(逗号拼接,非表字段)
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String roleNames;
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.ydoyun.dal.mysql.storeuser;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.ydoyun.controller.admin.storeuser.vo.StoreUserPageReqVO;
|
||||
import cn.iocoder.yudao.module.ydoyun.dal.dataobject.store.StoreDO;
|
||||
@@ -38,12 +39,19 @@ public interface StoreUserMapper extends BaseMapperX<StoreUserDO> {
|
||||
StoreUserDO::getUserId)
|
||||
.leftJoin(StoreDO.class,
|
||||
StoreDO::getId,
|
||||
StoreUserDO::getStoreId)
|
||||
StoreUserDO::getStoreId);
|
||||
if (Objects.nonNull(reqVO.getRoleId())) {
|
||||
wrapper.innerJoin(UserRoleDO.class, UserRoleDO::getUserId, StoreUserDO::getUserId)
|
||||
.eq(UserRoleDO::getRoleId, reqVO.getRoleId());
|
||||
}
|
||||
wrapper
|
||||
// 条件
|
||||
.eq(Objects.nonNull(reqVO.getStoreId()),StoreUserDO::getStoreId, reqVO.getStoreId())
|
||||
.eq(Objects.nonNull(reqVO.getUserId()),StoreUserDO::getUserId, reqVO.getUserId())
|
||||
.like(Objects.nonNull(reqVO.getUsername()),AdminUserDO::getUsername, reqVO.getUsername())
|
||||
.like(Objects.nonNull(reqVO.getNickname()),AdminUserDO::getNickname, reqVO.getNickname())
|
||||
.eq(Objects.nonNull(reqVO.getStoreId()), StoreUserDO::getStoreId, reqVO.getStoreId())
|
||||
.eq(Objects.nonNull(reqVO.getUserId()), StoreUserDO::getUserId, reqVO.getUserId())
|
||||
.like(Objects.nonNull(reqVO.getUsername()), AdminUserDO::getUsername, reqVO.getUsername())
|
||||
.like(Objects.nonNull(reqVO.getNickname()), AdminUserDO::getNickname, reqVO.getNickname())
|
||||
.like(Objects.nonNull(reqVO.getMobile()), AdminUserDO::getMobile, reqVO.getMobile())
|
||||
.like(Objects.nonNull(reqVO.getStoreName()), StoreDO::getStoreName, reqVO.getStoreName())
|
||||
.orderByDesc(StoreUserDO::getId);
|
||||
|
||||
if (reqVO.getCreateTime() != null && reqVO.getCreateTime().length == 2) {
|
||||
|
||||
@@ -6,7 +6,11 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
|
||||
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
||||
import cn.iocoder.yudao.module.ydoyun.config.ProcedureHttpClient;
|
||||
import cn.iocoder.yudao.module.ydoyun.controller.admin.store.vo.StoreSaveReqVO;
|
||||
@@ -59,6 +63,12 @@ public class StoreUserServiceImpl implements StoreUserService {
|
||||
@Resource
|
||||
private YdoyunUserExtMapper ydoyunUserExtMapper;
|
||||
|
||||
@Resource
|
||||
private UserRoleMapper userRoleMapper;
|
||||
|
||||
@Resource
|
||||
private RoleMapper roleMapper;
|
||||
|
||||
/**
|
||||
* 创建:AdminUser + StoreUser
|
||||
*/
|
||||
@@ -148,7 +158,51 @@ public class StoreUserServiceImpl implements StoreUserService {
|
||||
|
||||
@Override
|
||||
public PageResult<StoreUserDO> getStoreUserPage(StoreUserPageReqVO pageReqVO) {
|
||||
return storeUserMapper.selectPage(pageReqVO);
|
||||
PageResult<StoreUserDO> pageResult = storeUserMapper.selectPage(pageReqVO);
|
||||
fillUserRoleNames(pageResult.getList());
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充系统用户的角色名称(逗号拼接)
|
||||
*/
|
||||
private void fillUserRoleNames(List<StoreUserDO> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
Set<Long> userIds = list.stream()
|
||||
.map(StoreUserDO::getUserId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
if (CollUtil.isEmpty(userIds)) {
|
||||
return;
|
||||
}
|
||||
List<UserRoleDO> userRoles = userRoleMapper.selectList(new LambdaQueryWrapperX<UserRoleDO>()
|
||||
.in(UserRoleDO::getUserId, userIds));
|
||||
if (CollUtil.isEmpty(userRoles)) {
|
||||
return;
|
||||
}
|
||||
Set<Long> roleIds = userRoles.stream().map(UserRoleDO::getRoleId).collect(Collectors.toSet());
|
||||
List<RoleDO> roles = roleMapper.selectBatchIds(roleIds);
|
||||
Map<Long, String> roleIdToName =
|
||||
roles.stream().collect(Collectors.toMap(RoleDO::getId, RoleDO::getName, (a, b) -> a));
|
||||
Map<Long, List<Long>> userIdToRoleIds = userRoles.stream()
|
||||
.collect(Collectors.groupingBy(UserRoleDO::getUserId,
|
||||
Collectors.mapping(UserRoleDO::getRoleId, Collectors.toList())));
|
||||
for (StoreUserDO row : list) {
|
||||
if (row.getUserId() == null) {
|
||||
continue;
|
||||
}
|
||||
List<Long> rids = userIdToRoleIds.get(row.getUserId());
|
||||
if (CollUtil.isEmpty(rids)) {
|
||||
continue;
|
||||
}
|
||||
String names = rids.stream()
|
||||
.map(roleIdToName::get)
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.collect(Collectors.joining("、"));
|
||||
row.setRoleNames(names);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user