Commit 6bfe6285035175b92234b6c9b41dffdaef6a8a55

Authored by YunaiV
1 parent d5652b95

【代码优化】商城:门店自提的员工绑定

Showing 16 changed files with 115 additions and 152 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/base/system/package-info.java 0 → 100644
  1 +/**
  2 + * 占位符,可忽略
  3 + */
  4 +package cn.iocoder.yudao.module.trade.controller.admin.base.system;
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/base/system/user/UserSimpleBaseVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.admin.base.system.user;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +@Schema(description = "用户精简信息 VO")
  7 +@Data
  8 +public class UserSimpleBaseVO {
  9 +
  10 + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  11 + private Long id;
  12 +
  13 + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
  14 + private String nickname;
  15 +
  16 + @Schema(description = "用户头像", example = "https://www.iocoder.cn/1.png")
  17 + private String avatar;
  18 +
  19 +}
0 \ No newline at end of file 20 \ No newline at end of file
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryPickUpStoreController.java
1 package cn.iocoder.yudao.module.trade.controller.admin.delivery; 1 package cn.iocoder.yudao.module.trade.controller.admin.delivery;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 5 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  7 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  8 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  9 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
  10 +import cn.iocoder.yudao.module.trade.controller.admin.base.system.user.UserSimpleBaseVO;
6 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*; 11 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*;
7 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert; 12 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert;
8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; 13 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
@@ -10,19 +15,16 @@ import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreService @@ -10,19 +15,16 @@ import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreService
10 import io.swagger.v3.oas.annotations.Operation; 15 import io.swagger.v3.oas.annotations.Operation;
11 import io.swagger.v3.oas.annotations.Parameter; 16 import io.swagger.v3.oas.annotations.Parameter;
12 import io.swagger.v3.oas.annotations.tags.Tag; 17 import io.swagger.v3.oas.annotations.tags.Tag;
  18 +import jakarta.annotation.Resource;
  19 +import jakarta.validation.Valid;
13 import org.springframework.security.access.prepost.PreAuthorize; 20 import org.springframework.security.access.prepost.PreAuthorize;
14 import org.springframework.validation.annotation.Validated; 21 import org.springframework.validation.annotation.Validated;
15 import org.springframework.web.bind.annotation.*; 22 import org.springframework.web.bind.annotation.*;
16 23
17 -import jakarta.annotation.Resource;  
18 -import jakarta.validation.Valid;  
19 -  
20 -import java.util.ArrayList;  
21 import java.util.Collection; 24 import java.util.Collection;
22 import java.util.List; 25 import java.util.List;
23 26
24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 27 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;  
26 28
27 @Tag(name = "管理后台 - 自提门店") 29 @Tag(name = "管理后台 - 自提门店")
28 @RestController 30 @RestController
@@ -33,6 +35,9 @@ public class DeliveryPickUpStoreController { @@ -33,6 +35,9 @@ public class DeliveryPickUpStoreController {
33 @Resource 35 @Resource
34 private DeliveryPickUpStoreService deliveryPickUpStoreService; 36 private DeliveryPickUpStoreService deliveryPickUpStoreService;
35 37
  38 + @Resource
  39 + private AdminUserApi adminUserApi;
  40 +
36 @PostMapping("/create") 41 @PostMapping("/create")
37 @Operation(summary = "创建自提门店") 42 @Operation(summary = "创建自提门店")
38 @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:create')") 43 @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:create')")
@@ -63,22 +68,21 @@ public class DeliveryPickUpStoreController { @@ -63,22 +68,21 @@ public class DeliveryPickUpStoreController {
63 @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:query')") 68 @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:query')")
64 public CommonResult<DeliveryPickUpStoreRespVO> getDeliveryPickUpStore(@RequestParam("id") Long id) { 69 public CommonResult<DeliveryPickUpStoreRespVO> getDeliveryPickUpStore(@RequestParam("id") Long id) {
65 DeliveryPickUpStoreDO deliveryPickUpStore = deliveryPickUpStoreService.getDeliveryPickUpStore(id); 70 DeliveryPickUpStoreDO deliveryPickUpStore = deliveryPickUpStoreService.getDeliveryPickUpStore(id);
66 - return success(DeliveryPickUpStoreConvert.INSTANCE.convert(deliveryPickUpStore)); 71 + if (deliveryPickUpStore == null) {
  72 + return success(null);
  73 + }
  74 + List<AdminUserRespDTO> verifyUsers = CollUtil.isNotEmpty(deliveryPickUpStore.getVerifyUserIds()) ?
  75 + adminUserApi.getUserList(deliveryPickUpStore.getVerifyUserIds()) : null;
  76 + return success(BeanUtils.toBean(deliveryPickUpStore, DeliveryPickUpStoreRespVO.class)
  77 + .setVerifyUsers(BeanUtils.toBean(verifyUsers, UserSimpleBaseVO.class)));
67 } 78 }
68 79
69 - @GetMapping("/list-all-simple") 80 + @GetMapping("/simple-list")
70 @Operation(summary = "获得自提门店精简信息列表") 81 @Operation(summary = "获得自提门店精简信息列表")
71 public CommonResult<List<DeliveryPickUpStoreSimpleRespVO>> getSimpleDeliveryPickUpStoreList() { 82 public CommonResult<List<DeliveryPickUpStoreSimpleRespVO>> getSimpleDeliveryPickUpStoreList() {
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 - 83 + List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus(
  84 + CommonStatusEnum.ENABLE.getStatus());
  85 + return success(DeliveryPickUpStoreConvert.INSTANCE.convertList1(list));
82 } 86 }
83 87
84 @GetMapping("/list") 88 @GetMapping("/list")
@@ -101,18 +105,9 @@ public class DeliveryPickUpStoreController { @@ -101,18 +105,9 @@ public class DeliveryPickUpStoreController {
101 @PostMapping("/bind") 105 @PostMapping("/bind")
102 @Operation(summary = "绑定自提店员") 106 @Operation(summary = "绑定自提店员")
103 @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:create')") 107 @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:create')")
104 - public CommonResult<Boolean> bindDeliveryPickUpBindStoreStaffId(@Valid @RequestBody DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO) {  
105 - deliveryPickUpStoreService.bindDeliveryPickUpBindStoreStaffId(bindStoreStaffIdVO); 108 + public CommonResult<Boolean> bindDeliveryPickUpStore(@Valid @RequestBody DeliveryPickUpBindReqVO bindReqVO) {
  109 + deliveryPickUpStoreService.bindDeliveryPickUpStore(bindReqVO);
106 return success(true); 110 return success(true);
107 } 111 }
108 112
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 -  
118 } 113 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpBindStoreStaffIdReqVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpBindReqVO.java
1 package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup; 1 package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotEmpty;
4 import jakarta.validation.constraints.NotNull; 5 import jakarta.validation.constraints.NotNull;
5 import lombok.Data; 6 import lombok.Data;
6 -import lombok.EqualsAndHashCode;  
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 import java.util.List; 9 import java.util.List;
10 10
11 -@Schema(description = "管理后台 - 自提门店创建 Request VO") 11 +@Schema(description = "管理后台 - 自提门店绑定核销人 Request VO")
12 @Data 12 @Data
13 @ToString(callSuper = true) 13 @ToString(callSuper = true)
14 -public class DeliveryPickUpBindStoreStaffIdReqVO { 14 +public class DeliveryPickUpBindReqVO {
15 15
16 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128") 16 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
17 @NotNull(message = "编号不能为空") 17 @NotNull(message = "编号不能为空")
18 private Long id; 18 private Long id;
19 19
20 @Schema(description = "绑定用户编号组数", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128") 20 @Schema(description = "绑定用户编号组数", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
21 - @NotNull(message = "绑定用户编号组数不能未空")  
22 - private List<Long> storeStaffIds; 21 + @NotEmpty(message = "绑定用户编号组数不能未空")
  22 + private List<Long> verifyUserIds;
23 23
24 -} 24 -}
  25 +}
25 \ No newline at end of file 26 \ No newline at end of file
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpBindStoreStaffIdReqsVO.java deleted
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/admin/delivery/vo/pickup/DeliveryPickUpStoreRespVO.java
1 package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup; 1 package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup;
2 2
  3 +import cn.iocoder.yudao.module.trade.controller.admin.base.system.user.UserSimpleBaseVO;
3 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 5 import lombok.Data;
5 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
6 import lombok.ToString; 7 import lombok.ToString;
7 8
8 import java.time.LocalDateTime; 9 import java.time.LocalDateTime;
  10 +import java.util.List;
9 11
10 @Schema(description = "管理后台 - 自提门店 Response VO") 12 @Schema(description = "管理后台 - 自提门店 Response VO")
11 @Data 13 @Data
@@ -19,4 +21,7 @@ public class DeliveryPickUpStoreRespVO extends DeliveryPickUpStoreBaseVO { @@ -19,4 +21,7 @@ public class DeliveryPickUpStoreRespVO extends DeliveryPickUpStoreBaseVO {
19 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 21 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
20 private LocalDateTime createTime; 22 private LocalDateTime createTime;
21 23
  24 + @Schema(description = "核销用户数组", requiredMode = Schema.RequiredMode.REQUIRED)
  25 + private List<UserSimpleBaseVO> verifyUsers;
  26 +
22 } 27 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpStoreSimpleRespVO.java
@@ -5,6 +5,8 @@ import lombok.AllArgsConstructor; @@ -5,6 +5,8 @@ import lombok.AllArgsConstructor;
5 import lombok.Data; 5 import lombok.Data;
6 import lombok.NoArgsConstructor; 6 import lombok.NoArgsConstructor;
7 7
  8 +import java.util.List;
  9 +
8 @Schema(description = "管理后台 - 自提门店精简信息 Response VO") 10 @Schema(description = "管理后台 - 自提门店精简信息 Response VO")
9 @Data 11 @Data
10 @NoArgsConstructor 12 @NoArgsConstructor
@@ -29,4 +31,7 @@ public class DeliveryPickUpStoreSimpleRespVO { @@ -29,4 +31,7 @@ public class DeliveryPickUpStoreSimpleRespVO {
29 @Schema(description = "门店详细地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "复旦大学路 188 号") 31 @Schema(description = "门店详细地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "复旦大学路 188 号")
30 private String detailAddress; 32 private String detailAddress;
31 33
  34 + @Schema(description = "绑定用户编号组数", requiredMode = Schema.RequiredMode.REQUIRED, example = "23128")
  35 + private List<Long> verifyUserIds;
  36 +
32 } 37 }
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(), null); 43 + CommonStatusEnum.ENABLE.getStatus());
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/convert/delivery/DeliveryPickUpStoreConvert.java
@@ -26,8 +26,6 @@ public interface DeliveryPickUpStoreConvert { @@ -26,8 +26,6 @@ public interface DeliveryPickUpStoreConvert {
26 26
27 DeliveryPickUpStoreDO convert(DeliveryPickUpStoreUpdateReqVO bean); 27 DeliveryPickUpStoreDO convert(DeliveryPickUpStoreUpdateReqVO bean);
28 28
29 - DeliveryPickUpStoreRespVO convert(DeliveryPickUpStoreDO bean);  
30 -  
31 List<DeliveryPickUpStoreRespVO> convertList(List<DeliveryPickUpStoreDO> list); 29 List<DeliveryPickUpStoreRespVO> convertList(List<DeliveryPickUpStoreDO> list);
32 30
33 PageResult<DeliveryPickUpStoreRespVO> convertPage(PageResult<DeliveryPickUpStoreDO> page); 31 PageResult<DeliveryPickUpStoreRespVO> convertPage(PageResult<DeliveryPickUpStoreDO> page);
@@ -43,14 +41,13 @@ public interface DeliveryPickUpStoreConvert { @@ -43,14 +41,13 @@ public interface DeliveryPickUpStoreConvert {
43 41
44 default List<AppDeliveryPickUpStoreRespVO> convertList(List<DeliveryPickUpStoreDO> list, 42 default List<AppDeliveryPickUpStoreRespVO> convertList(List<DeliveryPickUpStoreDO> list,
45 Double latitude, Double longitude) { 43 Double latitude, Double longitude) {
46 - List<AppDeliveryPickUpStoreRespVO> voList = CollectionUtils.convertList(list, store -> { 44 + return CollectionUtils.convertList(list, store -> {
47 AppDeliveryPickUpStoreRespVO storeVO = convert03(store); 45 AppDeliveryPickUpStoreRespVO storeVO = convert03(store);
48 if (latitude != null && longitude != null) { 46 if (latitude != null && longitude != null) {
49 storeVO.setDistance(NumberUtils.getDistance(latitude, longitude, storeVO.getLatitude(), storeVO.getLongitude())); 47 storeVO.setDistance(NumberUtils.getDistance(latitude, longitude, storeVO.getLatitude(), storeVO.getLongitude()));
50 } 48 }
51 return storeVO; 49 return storeVO;
52 }); 50 });
53 - return voList;  
54 } 51 }
55 @Mapping(source = "areaId", target = "areaName", qualifiedByName = "convertAreaIdToAreaName") 52 @Mapping(source = "areaId", target = "areaName", qualifiedByName = "convertAreaIdToAreaName")
56 AppDeliveryPickUpStoreRespVO convert03(DeliveryPickUpStoreDO bean); 53 AppDeliveryPickUpStoreRespVO convert03(DeliveryPickUpStoreDO bean);
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryPickUpStoreDO.java
@@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.delivery; @@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.delivery;
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 cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler;
  6 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
6 import com.baomidou.mybatisplus.annotation.KeySequence; 7 import com.baomidou.mybatisplus.annotation.KeySequence;
7 import com.baomidou.mybatisplus.annotation.TableField; 8 import com.baomidou.mybatisplus.annotation.TableField;
8 import com.baomidou.mybatisplus.annotation.TableId; 9 import com.baomidou.mybatisplus.annotation.TableId;
9 import com.baomidou.mybatisplus.annotation.TableName; 10 import com.baomidou.mybatisplus.annotation.TableName;
10 -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;  
11 import lombok.Data; 11 import lombok.Data;
12 12
13 import java.time.LocalTime; 13 import java.time.LocalTime;
@@ -77,11 +77,16 @@ public class DeliveryPickUpStoreDO extends BaseDO { @@ -77,11 +77,16 @@ public class DeliveryPickUpStoreDO extends BaseDO {
77 * 经度 77 * 经度
78 */ 78 */
79 private Double longitude; 79 private Double longitude;
  80 +
80 /** 81 /**
81 - * 店员id列表 82 + * 核销员工用户编号数组
  83 + *
  84 + * 订单自提核销时,只有对应门店的店员才能核销
  85 + *
  86 + * 关联 {@link AdminUserRespDTO#getId()} 管理员编号
82 */ 87 */
83 @TableField(typeHandler = LongListTypeHandler.class) 88 @TableField(typeHandler = LongListTypeHandler.class)
84 - private List<Long> staffIds; 89 + private List<Long> verifyUserIds;
85 90
86 /** 91 /**
87 * 门店状态 92 * 门店状态
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryPickUpStoreMapper.java
@@ -22,16 +22,10 @@ public interface DeliveryPickUpStoreMapper extends BaseMapperX&lt;DeliveryPickUpSto @@ -22,16 +22,10 @@ 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, List<Long> storeIds) {  
26 - return selectList(new LambdaQueryWrapperX<DeliveryPickUpStoreDO>()  
27 - .eq(DeliveryPickUpStoreDO::getStatus, status)  
28 - .inIfPresent(DeliveryPickUpStoreDO::getId, storeIds)); 25 + default List<DeliveryPickUpStoreDO> selectListByStatus(Integer status) {
  26 + return selectList(DeliveryPickUpStoreDO::getStatus, status);
29 } 27 }
30 28
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 - }  
35 } 29 }
36 30
37 31
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryPickUpStoreService.java
@@ -54,41 +54,26 @@ public interface DeliveryPickUpStoreService { @@ -54,41 +54,26 @@ public interface DeliveryPickUpStoreService {
54 List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreList(Collection<Long> ids); 54 List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreList(Collection<Long> ids);
55 55
56 /** 56 /**
57 - * 获得自提门店分页  
58 - *  
59 - * @param pageReqVO 分页查询  
60 - * @return 自提门店分页  
61 - */  
62 - PageResult<DeliveryPickUpStoreDO> getDeliveryPickUpStorePage(DeliveryPickUpStorePageReqVO pageReqVO);  
63 -  
64 - /**  
65 * 获得指定状态的自提门店列表 57 * 获得指定状态的自提门店列表
66 * 58 *
67 * @param status 状态 59 * @param status 状态
68 - * @param storeIds 指定门店id  
69 * @return 自提门店列表 60 * @return 自提门店列表
70 */ 61 */
71 - List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status, List<Long> storeIds); 62 + List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status);
72 63
73 /** 64 /**
74 - * 绑定自提店员 65 + * 获得自提门店分页
75 * 66 *
76 - * @param bindStoreStaffIdVO 绑定数据  
77 - * @return 67 + * @param pageReqVO 分页查询
  68 + * @return 自提门店分页
78 */ 69 */
79 - void bindDeliveryPickUpBindStoreStaffId(DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO); 70 + PageResult<DeliveryPickUpStoreDO> getDeliveryPickUpStorePage(DeliveryPickUpStorePageReqVO pageReqVO);
80 71
81 /** 72 /**
82 - * 根据门店id获取自提店员  
83 - * @param id 门店id  
84 - * @return 自提店员 73 + * 绑定自提店员
  74 + *
  75 + * @param bindReqVO 绑定数据
85 */ 76 */
86 - DeliveryPickUpBindStoreStaffIdReqsVO getDeliveryPickUpStoreStaff(Long id); 77 + void bindDeliveryPickUpStore(DeliveryPickUpBindReqVO bindReqVO);
87 78
88 - /**  
89 - * 根据用户id查询自提门店店员信息  
90 - * @param userId 用户id  
91 - * @return 自提门店店员信息  
92 - */  
93 - List<DeliveryPickUpStoreDO> selectStaffByUserId(Long userId);  
94 } 79 }
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.framework.common.util.object.BeanUtils;
4 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 5 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.*; 6 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpBindReqVO;
  7 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreCreateReqVO;
  8 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStorePageReqVO;
  9 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreUpdateReqVO;
7 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert; 10 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert;
8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; 11 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
9 import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreMapper; 12 import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreMapper;
  13 +import jakarta.annotation.Resource;
10 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 15 import org.springframework.validation.annotation.Validated;
12 16
13 -import jakarta.annotation.Resource;  
14 import java.util.Collection; 17 import java.util.Collection;
15 import java.util.List; 18 import java.util.List;
16 19
@@ -59,7 +62,8 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic @@ -59,7 +62,8 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic
59 } 62 }
60 63
61 private void validateDeliveryPickUpStoreExists(Long id) { 64 private void validateDeliveryPickUpStoreExists(Long id) {
62 - if (deliveryPickUpStoreMapper.selectById(id) == null) { 65 + DeliveryPickUpStoreDO deliveryPickUpStore = deliveryPickUpStoreMapper.selectById(id);
  66 + if (deliveryPickUpStore == null) {
63 throw exception(PICK_UP_STORE_NOT_EXISTS); 67 throw exception(PICK_UP_STORE_NOT_EXISTS);
64 } 68 }
65 } 69 }
@@ -75,34 +79,25 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic @@ -75,34 +79,25 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic
75 } 79 }
76 80
77 @Override 81 @Override
78 - public PageResult<DeliveryPickUpStoreDO> getDeliveryPickUpStorePage(DeliveryPickUpStorePageReqVO pageReqVO) {  
79 - return deliveryPickUpStoreMapper.selectPage(pageReqVO);  
80 - }  
81 -  
82 - @Override  
83 - public List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status, List<Long> storeIds) {  
84 - return deliveryPickUpStoreMapper.selectListByStatus(status, storeIds); 82 + public List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status) {
  83 + return deliveryPickUpStoreMapper.selectListByStatus(status);
85 } 84 }
86 85
87 @Override 86 @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(); 87 + public PageResult<DeliveryPickUpStoreDO> getDeliveryPickUpStorePage(DeliveryPickUpStorePageReqVO pageReqVO) {
  88 + return deliveryPickUpStoreMapper.selectPage(pageReqVO);
101 } 89 }
102 90
103 @Override 91 @Override
104 - public List<DeliveryPickUpStoreDO> selectStaffByUserId(Long userId) {  
105 - return deliveryPickUpStoreMapper.selectStaffByUserId(userId); 92 + public void bindDeliveryPickUpStore(DeliveryPickUpBindReqVO bindReqVO) {
  93 + // 1.1 校验门店存在
  94 + validateDeliveryPickUpStoreExists(bindReqVO.getId());
  95 + // 1.2 校验用户存在
  96 + adminUserApi.validateUserList(bindReqVO.getVerifyUserIds());
  97 +
  98 + // 2. 更新
  99 + DeliveryPickUpStoreDO updateObj = BeanUtils.toBean(bindReqVO, DeliveryPickUpStoreDO.class);
  100 + deliveryPickUpStoreMapper.updateById(updateObj);
106 } 101 }
107 102
108 } 103 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
@@ -35,7 +35,7 @@ public class UserPageReqVO extends PageParam { @@ -35,7 +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") 38 + @Schema(description = "角色编号", example = "1024")
39 private Long roleId; 39 private Long roleId;
40 40
41 } 41 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
@@ -7,7 +7,6 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV @@ -7,7 +7,6 @@ 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;  
11 import java.util.Collection; 10 import java.util.Collection;
12 import java.util.List; 11 import java.util.List;
13 12
@@ -26,21 +25,15 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; { @@ -26,21 +25,15 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; {
26 return selectOne(AdminUserDO::getMobile, mobile); 25 return selectOne(AdminUserDO::getMobile, mobile);
27 } 26 }
28 27
29 - default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds,List<Long> userIds) {  
30 - LambdaQueryWrapperX<AdminUserDO> adminUserDOLambdaQueryWrapperX = new LambdaQueryWrapperX<AdminUserDO>() 28 + default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds, Collection<Long> userIds) {
  29 + return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
31 .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername()) 30 .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
32 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile()) 31 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
33 .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) 32 .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
34 .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime()) 33 .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
35 .inIfPresent(AdminUserDO::getDeptId, deptIds) 34 .inIfPresent(AdminUserDO::getDeptId, deptIds)
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); 35 + .inIfPresent(AdminUserDO::getId, userIds)
  36 + .orderByDesc(AdminUserDO::getId));
44 } 37 }
45 38
46 default List<AdminUserDO> selectListByNickname(String nickname) { 39 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,10 +22,8 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV @@ -22,10 +22,8 @@ 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;  
26 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 25 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
27 import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper; 26 import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
28 -import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;  
29 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; 27 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
30 import cn.iocoder.yudao.module.system.service.dept.DeptService; 28 import cn.iocoder.yudao.module.system.service.dept.DeptService;
31 import cn.iocoder.yudao.module.system.service.dept.PostService; 29 import cn.iocoder.yudao.module.system.service.dept.PostService;
@@ -46,11 +44,9 @@ import org.springframework.transaction.annotation.Transactional; @@ -46,11 +44,9 @@ import org.springframework.transaction.annotation.Transactional;
46 import java.io.InputStream; 44 import java.io.InputStream;
47 import java.time.LocalDateTime; 45 import java.time.LocalDateTime;
48 import java.util.*; 46 import java.util.*;
49 -import java.util.stream.Collectors;  
50 47
51 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 48 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
52 -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;  
53 -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 49 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
54 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; 50 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
55 import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*; 51 import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
56 52
@@ -82,8 +78,6 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -82,8 +78,6 @@ public class AdminUserServiceImpl implements AdminUserService {
82 78
83 @Resource 79 @Resource
84 private UserPostMapper userPostMapper; 80 private UserPostMapper userPostMapper;
85 - @Resource  
86 - private UserRoleMapper userRoleMapper;  
87 81
88 @Resource 82 @Resource
89 private FileApi fileApi; 83 private FileApi fileApi;
@@ -277,12 +271,11 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -277,12 +271,11 @@ public class AdminUserServiceImpl implements AdminUserService {
277 271
278 @Override 272 @Override
279 public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) { 273 public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) {
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 - } 274 + // 如果有角色编号,查询角色对应的用户编号
  275 + Set<Long> userIds = reqVO.getRoleId() != null ?
  276 + permissionService.getUserRoleIdListByRoleId(singleton(reqVO.getRoleId())) : null;
  277 +
  278 + // 分页查询
286 return userMapper.selectPage(reqVO, getDeptCondition(reqVO.getDeptId()), userIds); 279 return userMapper.selectPage(reqVO, getDeptCondition(reqVO.getDeptId()), userIds);
287 } 280 }
288 281