1.提交修改,门店用户加入分配角色 查询角色 门店
This commit is contained in:
@@ -100,9 +100,10 @@ public class StoreUserController {
|
|||||||
HttpServletResponse response) throws IOException {
|
HttpServletResponse response) throws IOException {
|
||||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||||
List<StoreUserDO> list = storeUserService.getStoreUserPage(pageReqVO).getList();
|
List<StoreUserDO> list = storeUserService.getStoreUserPage(pageReqVO).getList();
|
||||||
// 导出 Excel
|
List<StoreUserRespVO> rows = BeanUtils.toBean(list, StoreUserRespVO.class);
|
||||||
ExcelUtils.write(response, "门店-用户绑定.xls", "数据", StoreUserRespVO.class,
|
// 密码不落库、不落 Excel
|
||||||
BeanUtils.toBean(list, StoreUserRespVO.class));
|
rows.forEach(row -> row.setPassword(null));
|
||||||
|
ExcelUtils.write(response, "门店-用户绑定.xls", "数据", StoreUserRespVO.class, rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/e3SyncStoreAndUser")
|
@PostMapping("/e3SyncStoreAndUser")
|
||||||
|
|||||||
@@ -28,4 +28,10 @@ public class StoreUserPageReqVO extends PageParam {
|
|||||||
private String username;
|
private String username;
|
||||||
private String nickname;
|
private String nickname;
|
||||||
private String mobile;
|
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;
|
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 com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
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")
|
@Schema(description = "管理后台 - 门店-用户绑定 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -16,40 +14,61 @@ import cn.idev.excel.annotation.*;
|
|||||||
public class StoreUserRespVO {
|
public class StoreUserRespVO {
|
||||||
|
|
||||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8169")
|
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8169")
|
||||||
@ExcelProperty("主键ID")
|
@ExcelProperty(value = "主键ID", index = 0)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Schema(description = "门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30851")
|
@Schema(description = "门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30851")
|
||||||
@ExcelProperty("门店ID")
|
@ExcelProperty(value = "门店ID", index = 1)
|
||||||
private Long storeId;
|
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)
|
@TableField(exist = false)
|
||||||
private String storeCode;
|
private String storeCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门店名称
|
* 门店名称
|
||||||
*/
|
*/
|
||||||
|
@Schema(description = "门店名称")
|
||||||
|
@ExcelProperty(value = "门店名称", index = 3)
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String storeName;
|
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)
|
@TableField(exist = false)
|
||||||
private String storeName;
|
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.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
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.system.dal.dataobject.user.AdminUserDO;
|
||||||
import cn.iocoder.yudao.module.ydoyun.controller.admin.storeuser.vo.StoreUserPageReqVO;
|
import cn.iocoder.yudao.module.ydoyun.controller.admin.storeuser.vo.StoreUserPageReqVO;
|
||||||
import cn.iocoder.yudao.module.ydoyun.dal.dataobject.store.StoreDO;
|
import cn.iocoder.yudao.module.ydoyun.dal.dataobject.store.StoreDO;
|
||||||
@@ -38,12 +39,19 @@ public interface StoreUserMapper extends BaseMapperX<StoreUserDO> {
|
|||||||
StoreUserDO::getUserId)
|
StoreUserDO::getUserId)
|
||||||
.leftJoin(StoreDO.class,
|
.leftJoin(StoreDO.class,
|
||||||
StoreDO::getId,
|
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.getStoreId()), StoreUserDO::getStoreId, reqVO.getStoreId())
|
||||||
.eq(Objects.nonNull(reqVO.getUserId()),StoreUserDO::getUserId, reqVO.getUserId())
|
.eq(Objects.nonNull(reqVO.getUserId()), StoreUserDO::getUserId, reqVO.getUserId())
|
||||||
.like(Objects.nonNull(reqVO.getUsername()),AdminUserDO::getUsername, reqVO.getUsername())
|
.like(Objects.nonNull(reqVO.getUsername()), AdminUserDO::getUsername, reqVO.getUsername())
|
||||||
.like(Objects.nonNull(reqVO.getNickname()),AdminUserDO::getNickname, reqVO.getNickname())
|
.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);
|
.orderByDesc(StoreUserDO::getId);
|
||||||
|
|
||||||
if (reqVO.getCreateTime() != null && reqVO.getCreateTime().length == 2) {
|
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.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
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.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.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.system.service.user.AdminUserService;
|
||||||
import cn.iocoder.yudao.module.ydoyun.config.ProcedureHttpClient;
|
import cn.iocoder.yudao.module.ydoyun.config.ProcedureHttpClient;
|
||||||
import cn.iocoder.yudao.module.ydoyun.controller.admin.store.vo.StoreSaveReqVO;
|
import cn.iocoder.yudao.module.ydoyun.controller.admin.store.vo.StoreSaveReqVO;
|
||||||
@@ -59,6 +63,12 @@ public class StoreUserServiceImpl implements StoreUserService {
|
|||||||
@Resource
|
@Resource
|
||||||
private YdoyunUserExtMapper ydoyunUserExtMapper;
|
private YdoyunUserExtMapper ydoyunUserExtMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserRoleMapper userRoleMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RoleMapper roleMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建:AdminUser + StoreUser
|
* 创建:AdminUser + StoreUser
|
||||||
*/
|
*/
|
||||||
@@ -148,7 +158,51 @@ public class StoreUserServiceImpl implements StoreUserService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<StoreUserDO> getStoreUserPage(StoreUserPageReqVO pageReqVO) {
|
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