Commit d5652b950efc6a83f58a515ee89760539fde2e9a

Authored by 芋道源码
Committed by Gitee
2 parents 2c4d8298 3e537243

!1098 【新增功能】添加扫描枪、门店店员绑定功能

Merge pull request !1098 from 痴货/jh-smq
Showing 14 changed files with 181 additions and 83 deletions
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
@@ -80,6 +80,7 @@ public interface ErrorCodeConstants { @@ -80,6 +80,7 @@ public interface ErrorCodeConstants {
80 80
81 // ========== 物流 PICK_UP 模块 1-011-006-000 ========== 81 // ========== 物流 PICK_UP 模块 1-011-006-000 ==========
82 ErrorCode PICK_UP_STORE_NOT_EXISTS = new ErrorCode(1_011_006_000, "自提门店不存在"); 82 ErrorCode PICK_UP_STORE_NOT_EXISTS = new ErrorCode(1_011_006_000, "自提门店不存在");
  83 + ErrorCode PICK_UP_STORE_STAFF_NOT_EXISTS = new ErrorCode(1_011_006_000, "自提门店店员不存在");
83 84
84 // ========== 分销用户 模块 1-011-007-000 ========== 85 // ========== 分销用户 模块 1-011-007-000 ==========
85 ErrorCode BROKERAGE_USER_NOT_EXISTS = new ErrorCode(1_011_007_000, "分销用户不存在"); 86 ErrorCode BROKERAGE_USER_NOT_EXISTS = new ErrorCode(1_011_007_000, "分销用户不存在");
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryPickUpStoreController.java
@@ -16,10 +16,13 @@ import org.springframework.web.bind.annotation.*; @@ -16,10 +16,13 @@ import org.springframework.web.bind.annotation.*;
16 16
17 import jakarta.annotation.Resource; 17 import jakarta.annotation.Resource;
18 import jakarta.validation.Valid; 18 import jakarta.validation.Valid;
  19 +
  20 +import java.util.ArrayList;
19 import java.util.Collection; 21 import java.util.Collection;
20 import java.util.List; 22 import java.util.List;
21 23
22 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  25 +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
23 26
24 @Tag(name = "管理后台 - 自提门店") 27 @Tag(name = "管理后台 - 自提门店")
25 @RestController 28 @RestController
@@ -66,9 +69,16 @@ public class DeliveryPickUpStoreController { @@ -66,9 +69,16 @@ public class DeliveryPickUpStoreController {
66 @GetMapping("/list-all-simple") 69 @GetMapping("/list-all-simple")
67 @Operation(summary = "获得自提门店精简信息列表") 70 @Operation(summary = "获得自提门店精简信息列表")
68 public CommonResult<List<DeliveryPickUpStoreSimpleRespVO>> getSimpleDeliveryPickUpStoreList() { 71 public CommonResult<List<DeliveryPickUpStoreSimpleRespVO>> getSimpleDeliveryPickUpStoreList() {
69 - List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus(  
70 - CommonStatusEnum.ENABLE.getStatus());  
71 - return success(DeliveryPickUpStoreConvert.INSTANCE.convertList1(list)); 72 + List<DeliveryPickUpStoreDO> storeStaffDOS = deliveryPickUpStoreService.selectStaffByUserId(getLoginUserId());
  73 + List<Long> storeIds = storeStaffDOS.stream().map(DeliveryPickUpStoreDO::getId).toList();
  74 + if(!storeIds.isEmpty()){
  75 + List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus(
  76 + CommonStatusEnum.ENABLE.getStatus(), storeIds);
  77 + return success(DeliveryPickUpStoreConvert.INSTANCE.convertList1(list));
  78 + }else{
  79 + return success(new ArrayList<>());
  80 + }
  81 +
72 } 82 }
73 83
74 @GetMapping("/list") 84 @GetMapping("/list")
@@ -88,4 +98,21 @@ public class DeliveryPickUpStoreController { @@ -88,4 +98,21 @@ public class DeliveryPickUpStoreController {
88 return success(DeliveryPickUpStoreConvert.INSTANCE.convertPage(pageResult)); 98 return success(DeliveryPickUpStoreConvert.INSTANCE.convertPage(pageResult));
89 } 99 }
90 100
  101 + @PostMapping("/bind")
  102 + @Operation(summary = "绑定自提店员")
  103 + @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:create')")
  104 + public CommonResult<Boolean> bindDeliveryPickUpBindStoreStaffId(@Valid @RequestBody DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO) {
  105 + deliveryPickUpStoreService.bindDeliveryPickUpBindStoreStaffId(bindStoreStaffIdVO);
  106 + return success(true);
  107 + }
  108 +
  109 + @GetMapping("/get-store-staff")
  110 + @Operation(summary = "查询门店绑定情况")
  111 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  112 + @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:query')")
  113 + public CommonResult<DeliveryPickUpBindStoreStaffIdReqsVO> getDeliveryPickUpStoreStaff(@RequestParam("id") Long id) {
  114 + return success(deliveryPickUpStoreService.getDeliveryPickUpStoreStaff(id));
  115 + }
  116 +
  117 +
91 } 118 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpBindStoreStaffIdReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotNull;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import java.util.List;
  10 +
  11 +@Schema(description = "管理后台 - 自提门店创建 Request VO")
  12 +@Data
  13 +@ToString(callSuper = true)
  14 +public class DeliveryPickUpBindStoreStaffIdReqVO {
  15 +
  16 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
  17 + @NotNull(message = "编号不能为空")
  18 + private Long id;
  19 +
  20 + @Schema(description = "绑定用户编号组数", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
  21 + @NotNull(message = "绑定用户编号组数不能未空")
  22 + private List<Long> storeStaffIds;
  23 +
  24 +}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpBindStoreStaffIdReqsVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup;
  2 +
  3 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import jakarta.validation.constraints.NotNull;
  6 +import lombok.Builder;
  7 +import lombok.Data;
  8 +import lombok.ToString;
  9 +
  10 +import java.util.List;
  11 +
  12 +@Schema(description = "管理后台 - 自提门店创建 Request VO")
  13 +@Data
  14 +@ToString(callSuper = true)
  15 +@Builder
  16 +public class DeliveryPickUpBindStoreStaffIdReqsVO {
  17 +
  18 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
  19 + private Long id;
  20 +
  21 + @Schema(description = "门店名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
  22 + private String name;
  23 +
  24 + @Schema(description = "绑定用户信息组数", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
  25 + private List<AdminUserRespDTO> storeStaffs;
  26 +
  27 +}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/delivery/AppDeliverPickUpStoreController.java
@@ -40,7 +40,7 @@ public class AppDeliverPickUpStoreController { @@ -40,7 +40,7 @@ public class AppDeliverPickUpStoreController {
40 @RequestParam(value = "latitude", required = false) Double latitude, 40 @RequestParam(value = "latitude", required = false) Double latitude,
41 @RequestParam(value = "longitude", required = false) Double longitude) { 41 @RequestParam(value = "longitude", required = false) Double longitude) {
42 List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus( 42 List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus(
43 - CommonStatusEnum.ENABLE.getStatus()); 43 + CommonStatusEnum.ENABLE.getStatus(), null);
44 return success(DeliveryPickUpStoreConvert.INSTANCE.convertList(list, latitude, longitude)); 44 return success(DeliveryPickUpStoreConvert.INSTANCE.convertList(list, latitude, longitude));
45 } 45 }
46 46
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryPickUpStoreDO.java
@@ -2,19 +2,23 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.delivery; @@ -2,19 +2,23 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.delivery;
2 2
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  5 +import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler;
5 import com.baomidou.mybatisplus.annotation.KeySequence; 6 import com.baomidou.mybatisplus.annotation.KeySequence;
  7 +import com.baomidou.mybatisplus.annotation.TableField;
6 import com.baomidou.mybatisplus.annotation.TableId; 8 import com.baomidou.mybatisplus.annotation.TableId;
7 import com.baomidou.mybatisplus.annotation.TableName; 9 import com.baomidou.mybatisplus.annotation.TableName;
  10 +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
8 import lombok.Data; 11 import lombok.Data;
9 12
10 import java.time.LocalTime; 13 import java.time.LocalTime;
  14 +import java.util.List;
11 15
12 /** 16 /**
13 * 自提门店 DO 17 * 自提门店 DO
14 * 18 *
15 * @author jason 19 * @author jason
16 */ 20 */
17 -@TableName(value ="trade_delivery_pick_up_store") 21 +@TableName(value ="trade_delivery_pick_up_store", autoResultMap = true)
18 @KeySequence("trade_delivery_pick_up_store_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 22 @KeySequence("trade_delivery_pick_up_store_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
19 @Data 23 @Data
20 public class DeliveryPickUpStoreDO extends BaseDO { 24 public class DeliveryPickUpStoreDO extends BaseDO {
@@ -73,6 +77,11 @@ public class DeliveryPickUpStoreDO extends BaseDO { @@ -73,6 +77,11 @@ public class DeliveryPickUpStoreDO extends BaseDO {
73 * 经度 77 * 经度
74 */ 78 */
75 private Double longitude; 79 private Double longitude;
  80 + /**
  81 + * 店员id列表
  82 + */
  83 + @TableField(typeHandler = LongListTypeHandler.class)
  84 + private List<Long> staffIds;
76 85
77 /** 86 /**
78 * 门店状态 87 * 门店状态
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryPickUpStoreStaffDO.java deleted
1 -package cn.iocoder.yudao.module.trade.dal.dataobject.delivery;  
2 -  
3 -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;  
4 -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;  
5 -import com.baomidou.mybatisplus.annotation.KeySequence;  
6 -import com.baomidou.mybatisplus.annotation.TableId;  
7 -import com.baomidou.mybatisplus.annotation.TableName;  
8 -import lombok.Data;  
9 -  
10 -// TODO @芋艿:后续再详细 review 一轮  
11 -// TODO @芋艿:可能改成 DeliveryPickUpStoreUserDO  
12 -/**  
13 - * 自提门店店员 DO  
14 - *  
15 - * @author jason  
16 - */  
17 -@TableName(value ="trade_delivery_pick_up_store_staff")  
18 -@KeySequence("trade_delivery_pick_up_store_staff_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。  
19 -@Data  
20 -public class DeliveryPickUpStoreStaffDO extends BaseDO {  
21 -  
22 - /**  
23 - * 编号,自增  
24 - */  
25 - @TableId  
26 - private Long id;  
27 -  
28 - /**  
29 - * 自提门店编号  
30 - *  
31 - * 关联 {@link DeliveryPickUpStoreDO#getId()}  
32 - */  
33 - private Long storeId;  
34 -  
35 - /**  
36 - * 管理员用户id  
37 - *  
38 - * 关联 {AdminUserDO#getId()}  
39 - */  
40 - private Long adminUserId;  
41 -  
42 - /**  
43 - * 状态  
44 - *  
45 - * 枚举 {@link CommonStatusEnum}  
46 - */  
47 - private Integer status;  
48 -  
49 -}  
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryPickUpStoreMapper.java
@@ -22,10 +22,16 @@ public interface DeliveryPickUpStoreMapper extends BaseMapperX&lt;DeliveryPickUpSto @@ -22,10 +22,16 @@ public interface DeliveryPickUpStoreMapper extends BaseMapperX&lt;DeliveryPickUpSto
22 .orderByDesc(DeliveryPickUpStoreDO::getId)); 22 .orderByDesc(DeliveryPickUpStoreDO::getId));
23 } 23 }
24 24
25 - default List<DeliveryPickUpStoreDO> selectListByStatus(Integer status) {  
26 - return selectList(DeliveryPickUpStoreDO::getStatus, status); 25 + default List<DeliveryPickUpStoreDO> selectListByStatus(Integer status, List<Long> storeIds) {
  26 + return selectList(new LambdaQueryWrapperX<DeliveryPickUpStoreDO>()
  27 + .eq(DeliveryPickUpStoreDO::getStatus, status)
  28 + .inIfPresent(DeliveryPickUpStoreDO::getId, storeIds));
27 } 29 }
28 30
  31 + default List<DeliveryPickUpStoreDO> selectStaffByUserId(Long userId){
  32 + return selectList(new LambdaQueryWrapperX<DeliveryPickUpStoreDO>()
  33 + .and(userId != null, w -> w.apply("FIND_IN_SET({0}, staff_ids)", userId)));
  34 + }
29 } 35 }
30 36
31 37
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryPickUpStoreStaffMapper.java deleted
1 -package cn.iocoder.yudao.module.trade.dal.mysql.delivery;  
2 -  
3 -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;  
4 -import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreStaffDO;  
5 -import org.apache.ibatis.annotations.Mapper;  
6 -  
7 -@Mapper  
8 -public interface DeliveryPickUpStoreStaffMapper extends BaseMapperX<DeliveryPickUpStoreStaffDO> {  
9 -  
10 -}  
11 -  
12 -  
13 -  
14 -  
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryPickUpStoreService.java
1 package cn.iocoder.yudao.module.trade.service.delivery; 1 package cn.iocoder.yudao.module.trade.service.delivery;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreCreateReqVO;  
5 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStorePageReqVO;  
6 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreUpdateReqVO; 4 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*;
7 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; 5 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
8 6
9 import jakarta.validation.Valid; 7 import jakarta.validation.Valid;
@@ -67,7 +65,30 @@ public interface DeliveryPickUpStoreService { @@ -67,7 +65,30 @@ public interface DeliveryPickUpStoreService {
67 * 获得指定状态的自提门店列表 65 * 获得指定状态的自提门店列表
68 * 66 *
69 * @param status 状态 67 * @param status 状态
  68 + * @param storeIds 指定门店id
70 * @return 自提门店列表 69 * @return 自提门店列表
71 */ 70 */
72 - List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status); 71 + List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status, List<Long> storeIds);
  72 +
  73 + /**
  74 + * 绑定自提店员
  75 + *
  76 + * @param bindStoreStaffIdVO 绑定数据
  77 + * @return
  78 + */
  79 + void bindDeliveryPickUpBindStoreStaffId(DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO);
  80 +
  81 + /**
  82 + * 根据门店id获取自提店员
  83 + * @param id 门店id
  84 + * @return 自提店员
  85 + */
  86 + DeliveryPickUpBindStoreStaffIdReqsVO getDeliveryPickUpStoreStaff(Long id);
  87 +
  88 + /**
  89 + * 根据用户id查询自提门店店员信息
  90 + * @param userId 用户id
  91 + * @return 自提门店店员信息
  92 + */
  93 + List<DeliveryPickUpStoreDO> selectStaffByUserId(Long userId);
73 } 94 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryPickUpStoreServiceImpl.java
1 package cn.iocoder.yudao.module.trade.service.delivery; 1 package cn.iocoder.yudao.module.trade.service.delivery;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreCreateReqVO;  
5 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStorePageReqVO;  
6 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreUpdateReqVO; 4 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  5 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
  6 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*;
7 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert; 7 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert;
8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; 8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
9 import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreMapper; 9 import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreMapper;
@@ -29,6 +29,9 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic @@ -29,6 +29,9 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic
29 @Resource 29 @Resource
30 private DeliveryPickUpStoreMapper deliveryPickUpStoreMapper; 30 private DeliveryPickUpStoreMapper deliveryPickUpStoreMapper;
31 31
  32 + @Resource
  33 + private AdminUserApi adminUserApi;
  34 +
32 @Override 35 @Override
33 public Long createDeliveryPickUpStore(DeliveryPickUpStoreCreateReqVO createReqVO) { 36 public Long createDeliveryPickUpStore(DeliveryPickUpStoreCreateReqVO createReqVO) {
34 // 插入 37 // 插入
@@ -77,8 +80,29 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic @@ -77,8 +80,29 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic
77 } 80 }
78 81
79 @Override 82 @Override
80 - public List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status) {  
81 - return deliveryPickUpStoreMapper.selectListByStatus(status); 83 + public List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status, List<Long> storeIds) {
  84 + return deliveryPickUpStoreMapper.selectListByStatus(status, storeIds);
  85 + }
  86 +
  87 + @Override
  88 + public void bindDeliveryPickUpBindStoreStaffId(DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO) {
  89 + DeliveryPickUpStoreDO deliveryPickUpStoreDO = deliveryPickUpStoreMapper.selectById(bindStoreStaffIdVO.getId());
  90 + deliveryPickUpStoreDO.setStaffIds(bindStoreStaffIdVO.getStoreStaffIds());
  91 + deliveryPickUpStoreMapper.updateById(deliveryPickUpStoreDO);
  92 + }
  93 +
  94 + @Override
  95 + public DeliveryPickUpBindStoreStaffIdReqsVO getDeliveryPickUpStoreStaff(Long id) {
  96 + DeliveryPickUpStoreDO store = deliveryPickUpStoreMapper.selectById(id);
  97 + List<Long> adminUserIds = store.getStaffIds();
  98 + //2 查询绑定用户信息
  99 + List<AdminUserRespDTO> storeStaffs = adminUserApi.getUserList(adminUserIds);
  100 + return DeliveryPickUpBindStoreStaffIdReqsVO.builder().storeStaffs(storeStaffs).name(store.getName()).id(id).build();
  101 + }
  102 +
  103 + @Override
  104 + public List<DeliveryPickUpStoreDO> selectStaffByUserId(Long userId) {
  105 + return deliveryPickUpStoreMapper.selectStaffByUserId(userId);
82 } 106 }
83 107
84 } 108 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
@@ -35,4 +35,7 @@ public class UserPageReqVO extends PageParam { @@ -35,4 +35,7 @@ public class UserPageReqVO extends PageParam {
35 @Schema(description = "部门编号,同时筛选子部门", example = "1024") 35 @Schema(description = "部门编号,同时筛选子部门", example = "1024")
36 private Long deptId; 36 private Long deptId;
37 37
  38 + @Schema(description = "角色id", example = "1024")
  39 + private Long roleId;
  40 +
38 } 41 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
7 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
8 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
9 9
  10 +import java.util.ArrayList;
10 import java.util.Collection; 11 import java.util.Collection;
11 import java.util.List; 12 import java.util.List;
12 13
@@ -25,14 +26,21 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; { @@ -25,14 +26,21 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; {
25 return selectOne(AdminUserDO::getMobile, mobile); 26 return selectOne(AdminUserDO::getMobile, mobile);
26 } 27 }
27 28
28 - default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds) {  
29 - return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>() 29 + default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds,List<Long> userIds) {
  30 + LambdaQueryWrapperX<AdminUserDO> adminUserDOLambdaQueryWrapperX = new LambdaQueryWrapperX<AdminUserDO>()
30 .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername()) 31 .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
31 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile()) 32 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
32 .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) 33 .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
33 .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime()) 34 .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
34 .inIfPresent(AdminUserDO::getDeptId, deptIds) 35 .inIfPresent(AdminUserDO::getDeptId, deptIds)
35 - .orderByDesc(AdminUserDO::getId)); 36 + .orderByDesc(AdminUserDO::getId);
  37 + if(userIds != null){
  38 + if(userIds.isEmpty()){
  39 + return new PageResult<AdminUserDO>().setList(new ArrayList<>()).setTotal(0L);
  40 + }
  41 + adminUserDOLambdaQueryWrapperX.in(AdminUserDO::getId, userIds);
  42 + }
  43 + return selectPage(reqVO, adminUserDOLambdaQueryWrapperX);
36 } 44 }
37 45
38 default List<AdminUserDO> selectListByNickname(String nickname) { 46 default List<AdminUserDO> selectListByNickname(String nickname) {
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
@@ -22,8 +22,10 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV @@ -22,8 +22,10 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
22 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO; 22 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
23 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; 23 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
24 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO; 24 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
  25 +import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
25 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 26 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
26 import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper; 27 import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
  28 +import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
27 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; 29 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
28 import cn.iocoder.yudao.module.system.service.dept.DeptService; 30 import cn.iocoder.yudao.module.system.service.dept.DeptService;
29 import cn.iocoder.yudao.module.system.service.dept.PostService; 31 import cn.iocoder.yudao.module.system.service.dept.PostService;
@@ -44,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional; @@ -44,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
44 import java.io.InputStream; 46 import java.io.InputStream;
45 import java.time.LocalDateTime; 47 import java.time.LocalDateTime;
46 import java.util.*; 48 import java.util.*;
  49 +import java.util.stream.Collectors;
47 50
48 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 51 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
49 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; 52 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
@@ -79,6 +82,8 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -79,6 +82,8 @@ public class AdminUserServiceImpl implements AdminUserService {
79 82
80 @Resource 83 @Resource
81 private UserPostMapper userPostMapper; 84 private UserPostMapper userPostMapper;
  85 + @Resource
  86 + private UserRoleMapper userRoleMapper;
82 87
83 @Resource 88 @Resource
84 private FileApi fileApi; 89 private FileApi fileApi;
@@ -272,7 +277,13 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -272,7 +277,13 @@ public class AdminUserServiceImpl implements AdminUserService {
272 277
273 @Override 278 @Override
274 public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) { 279 public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) {
275 - return userMapper.selectPage(reqVO, getDeptCondition(reqVO.getDeptId())); 280 + List<Long> userIds = null;
  281 + if (reqVO.getRoleId() != null){
  282 + //查询角色信息
  283 + List<UserRoleDO> userRoleDOS = userRoleMapper.selectListByRoleIds(List.of(reqVO.getRoleId()));
  284 + userIds = userRoleDOS.stream().map(UserRoleDO::getUserId).toList();
  285 + }
  286 + return userMapper.selectPage(reqVO, getDeptCondition(reqVO.getDeptId()), userIds);
276 } 287 }
277 288
278 @Override 289 @Override