Commit 476dafbb993bc0bf177ed4413d19e6d894085692
1 parent
2c4d8298
【功能】添加扫描枪核销功能、根据当前登录人查询自提点功能和绑定自提员工功能
Showing
16 changed files
with
356 additions
and
13 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 | 80 | |
| 81 | 81 | // ========== 物流 PICK_UP 模块 1-011-006-000 ========== |
| 82 | 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 | 85 | // ========== 分销用户 模块 1-011-007-000 ========== |
| 85 | 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
| ... | ... | @@ -3,10 +3,14 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery; |
| 3 | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | +import cn.iocoder.yudao.framework.security.core.LoginUser; | |
| 7 | +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | |
| 6 | 8 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*; |
| 7 | 9 | import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert; |
| 8 | 10 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; |
| 11 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreStaffDO; | |
| 9 | 12 | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreService; |
| 13 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreStaffService; | |
| 10 | 14 | import io.swagger.v3.oas.annotations.Operation; |
| 11 | 15 | import io.swagger.v3.oas.annotations.Parameter; |
| 12 | 16 | import io.swagger.v3.oas.annotations.tags.Tag; |
| ... | ... | @@ -16,10 +20,15 @@ import org.springframework.web.bind.annotation.*; |
| 16 | 20 | |
| 17 | 21 | import jakarta.annotation.Resource; |
| 18 | 22 | import jakarta.validation.Valid; |
| 23 | + | |
| 24 | +import java.util.ArrayList; | |
| 19 | 25 | import java.util.Collection; |
| 20 | 26 | import java.util.List; |
| 21 | 27 | |
| 22 | 28 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 29 | +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; | |
| 30 | +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | |
| 31 | +import static java.util.stream.Collectors.toList; | |
| 23 | 32 | |
| 24 | 33 | @Tag(name = "管理后台 - 自提门店") |
| 25 | 34 | @RestController |
| ... | ... | @@ -30,6 +39,9 @@ public class DeliveryPickUpStoreController { |
| 30 | 39 | @Resource |
| 31 | 40 | private DeliveryPickUpStoreService deliveryPickUpStoreService; |
| 32 | 41 | |
| 42 | + @Resource | |
| 43 | + private DeliveryPickUpStoreStaffService deliveryPickUpStoreStaffService; | |
| 44 | + | |
| 33 | 45 | @PostMapping("/create") |
| 34 | 46 | @Operation(summary = "创建自提门店") |
| 35 | 47 | @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:create')") |
| ... | ... | @@ -66,9 +78,16 @@ public class DeliveryPickUpStoreController { |
| 66 | 78 | @GetMapping("/list-all-simple") |
| 67 | 79 | @Operation(summary = "获得自提门店精简信息列表") |
| 68 | 80 | public CommonResult<List<DeliveryPickUpStoreSimpleRespVO>> getSimpleDeliveryPickUpStoreList() { |
| 69 | - List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus( | |
| 70 | - CommonStatusEnum.ENABLE.getStatus()); | |
| 71 | - return success(DeliveryPickUpStoreConvert.INSTANCE.convertList1(list)); | |
| 81 | + List<DeliveryPickUpStoreStaffDO> storeStaffDOS = deliveryPickUpStoreStaffService.selectStaffByUserId(getLoginUserId()); | |
| 82 | + List<Long> storeIds = storeStaffDOS.stream().map(DeliveryPickUpStoreStaffDO::getStoreId).toList(); | |
| 83 | + if(!storeIds.isEmpty()){ | |
| 84 | + List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus( | |
| 85 | + CommonStatusEnum.ENABLE.getStatus(), storeIds); | |
| 86 | + return success(DeliveryPickUpStoreConvert.INSTANCE.convertList1(list)); | |
| 87 | + }else{ | |
| 88 | + return success(new ArrayList<>()); | |
| 89 | + } | |
| 90 | + | |
| 72 | 91 | } |
| 73 | 92 | |
| 74 | 93 | @GetMapping("/list") |
| ... | ... | @@ -88,4 +107,22 @@ public class DeliveryPickUpStoreController { |
| 88 | 107 | return success(DeliveryPickUpStoreConvert.INSTANCE.convertPage(pageResult)); |
| 89 | 108 | } |
| 90 | 109 | |
| 110 | + @PostMapping("/bind") | |
| 111 | + @Operation(summary = "绑定自提店员") | |
| 112 | + @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:create')") | |
| 113 | + public CommonResult<Boolean> bindDeliveryPickUpBindStoreStaffId(@Valid @RequestBody DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO) { | |
| 114 | + deliveryPickUpStoreService.bindDeliveryPickUpBindStoreStaffId(bindStoreStaffIdVO); | |
| 115 | + return success(true); | |
| 116 | + } | |
| 117 | + | |
| 118 | + @GetMapping("/get-store-staff") | |
| 119 | + @Operation(summary = "查询门店绑定情况") | |
| 120 | + @Parameter(name = "id", description = "编号", required = true, example = "1024") | |
| 121 | + @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:query')") | |
| 122 | + public CommonResult<DeliveryPickUpBindStoreStaffIdReqsVO> getDeliveryPickUpStoreStaff(@RequestParam("id") Long id) { | |
| 123 | + DeliveryPickUpStoreDO deliveryPickUpStore = deliveryPickUpStoreService.getDeliveryPickUpStore(id); | |
| 124 | + return success(deliveryPickUpStoreStaffService.getDeliveryPickUpStoreStaff(deliveryPickUpStore.getId(),deliveryPickUpStore.getName())); | |
| 125 | + } | |
| 126 | + | |
| 127 | + | |
| 91 | 128 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryPickUpStoreStaffController.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery; | |
| 2 | + | |
| 3 | +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.PageResult; | |
| 6 | +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | |
| 7 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*; | |
| 8 | +import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert; | |
| 9 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; | |
| 10 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreService; | |
| 11 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreStaffService; | |
| 12 | +import io.swagger.v3.oas.annotations.Operation; | |
| 13 | +import io.swagger.v3.oas.annotations.Parameter; | |
| 14 | +import io.swagger.v3.oas.annotations.tags.Tag; | |
| 15 | +import jakarta.annotation.Resource; | |
| 16 | +import jakarta.validation.Valid; | |
| 17 | +import org.springframework.security.access.prepost.PreAuthorize; | |
| 18 | +import org.springframework.validation.annotation.Validated; | |
| 19 | +import org.springframework.web.bind.annotation.*; | |
| 20 | + | |
| 21 | +import java.util.Collection; | |
| 22 | +import java.util.List; | |
| 23 | + | |
| 24 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | |
| 25 | + | |
| 26 | +@Tag(name = "管理后台 - 自提门店店员") | |
| 27 | +@RestController | |
| 28 | +@RequestMapping("/trade/delivery/pick-up-store-staff") | |
| 29 | +@Validated | |
| 30 | +public class DeliveryPickUpStoreStaffController { | |
| 31 | + | |
| 32 | + | |
| 33 | + @Resource | |
| 34 | + private DeliveryPickUpStoreStaffService deliveryPickUpStoreStaffService; | |
| 35 | + | |
| 36 | + @DeleteMapping("/delete") | |
| 37 | + @Operation(summary = "删除自提门店店员") | |
| 38 | + @Parameter(name = "userId", description = "用户编号", required = true) | |
| 39 | + @Parameter(name = "storeId", description = "自提门店编号", required = true) | |
| 40 | + @PreAuthorize("@ss.hasPermission('trade:delivery:pick-up-store:delete')") | |
| 41 | + public CommonResult<Boolean> deleteDeliveryPickUpStoreStaff(@RequestParam("userId") Long id,@RequestParam("storeId") Long storeId) { | |
| 42 | + deliveryPickUpStoreStaffService.deleteDeliveryPickUpStoreStaff(id, storeId); | |
| 43 | + return success(true); | |
| 44 | + } | |
| 45 | + | |
| 46 | +} | ... | ... |
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 | 40 | @RequestParam(value = "latitude", required = false) Double latitude, |
| 41 | 41 | @RequestParam(value = "longitude", required = false) Double longitude) { |
| 42 | 42 | List<DeliveryPickUpStoreDO> list = deliveryPickUpStoreService.getDeliveryPickUpStoreListByStatus( |
| 43 | - CommonStatusEnum.ENABLE.getStatus()); | |
| 43 | + CommonStatusEnum.ENABLE.getStatus(), null); | |
| 44 | 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/DeliveryPickUpStoreStaffDO.java
| ... | ... | @@ -5,7 +5,9 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 5 | 5 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.TableId; |
| 7 | 7 | import com.baomidou.mybatisplus.annotation.TableName; |
| 8 | +import lombok.Builder; | |
| 8 | 9 | import lombok.Data; |
| 10 | +import lombok.NoArgsConstructor; | |
| 9 | 11 | |
| 10 | 12 | // TODO @芋艿:后续再详细 review 一轮 |
| 11 | 13 | // TODO @芋艿:可能改成 DeliveryPickUpStoreUserDO | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryPickUpStoreMapper.java
| ... | ... | @@ -22,8 +22,10 @@ public interface DeliveryPickUpStoreMapper extends BaseMapperX<DeliveryPickUpSto |
| 22 | 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 | |
| 29 | 31 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryPickUpStoreStaffMapper.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.delivery; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | |
| 4 | 5 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreStaffDO; |
| 6 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
| 5 | 7 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 8 | |
| 9 | +import java.util.Collections; | |
| 10 | +import java.util.List; | |
| 11 | + | |
| 7 | 12 | @Mapper |
| 8 | 13 | public interface DeliveryPickUpStoreStaffMapper extends BaseMapperX<DeliveryPickUpStoreStaffDO> { |
| 9 | 14 | |
| 15 | + default Long selectStaffIdByUserIdAndStoreId(List<Long> userId, Long storeId){ | |
| 16 | + return selectOne(new LambdaQueryWrapperX<DeliveryPickUpStoreStaffDO>() | |
| 17 | + .inIfPresent(DeliveryPickUpStoreStaffDO::getAdminUserId, userId) | |
| 18 | + .eqIfPresent(DeliveryPickUpStoreStaffDO::getStoreId, storeId)) | |
| 19 | + .getId(); | |
| 20 | + } | |
| 21 | + | |
| 22 | + default List<DeliveryPickUpStoreStaffDO> getUserIdsByStoreId(Long id){ | |
| 23 | + return selectList(new LambdaQueryWrapperX<DeliveryPickUpStoreStaffDO>() | |
| 24 | + .eq(DeliveryPickUpStoreStaffDO::getStoreId,id)); | |
| 25 | + } | |
| 26 | + | |
| 27 | + default void deleteStaffByUserIdsAndStoreId(List<Long> userIds, Long storeId){ | |
| 28 | + Long StaffId = selectStaffIdByUserIdAndStoreId(userIds, storeId); | |
| 29 | + deleteById(StaffId); | |
| 30 | + } | |
| 10 | 31 | } |
| 11 | 32 | |
| 12 | 33 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryPickUpStoreService.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.service.delivery; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpBindStoreStaffIdReqVO; | |
| 4 | 5 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreCreateReqVO; |
| 5 | 6 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStorePageReqVO; |
| 6 | 7 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreUpdateReqVO; |
| ... | ... | @@ -67,7 +68,16 @@ public interface DeliveryPickUpStoreService { |
| 67 | 68 | * 获得指定状态的自提门店列表 |
| 68 | 69 | * |
| 69 | 70 | * @param status 状态 |
| 71 | + * @param storeIds 指定门店id | |
| 70 | 72 | * @return 自提门店列表 |
| 71 | 73 | */ |
| 72 | - List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status); | |
| 74 | + List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status, List<Long> storeIds); | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * 绑定自提店员 | |
| 78 | + * | |
| 79 | + * @param bindStoreStaffIdVO 绑定数据 | |
| 80 | + * @return | |
| 81 | + */ | |
| 82 | + void bindDeliveryPickUpBindStoreStaffId(DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO); | |
| 73 | 83 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryPickUpStoreServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.service.delivery; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.collection.CollUtil; | |
| 4 | +import cn.hutool.core.util.ObjectUtil; | |
| 3 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | |
| 7 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpBindStoreStaffIdReqVO; | |
| 4 | 8 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreCreateReqVO; |
| 5 | 9 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStorePageReqVO; |
| 6 | 10 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.DeliveryPickUpStoreUpdateReqVO; |
| 7 | 11 | import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert; |
| 8 | 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; |
| 13 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreStaffDO; | |
| 9 | 14 | import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreMapper; |
| 15 | +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreStaffMapper; | |
| 16 | +import com.mchange.lang.LongUtils; | |
| 10 | 17 | import org.springframework.stereotype.Service; |
| 11 | 18 | import org.springframework.validation.annotation.Validated; |
| 12 | 19 | |
| 13 | 20 | import jakarta.annotation.Resource; |
| 14 | 21 | import java.util.Collection; |
| 15 | 22 | import java.util.List; |
| 23 | +import java.util.stream.Collectors; | |
| 16 | 24 | |
| 17 | 25 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 18 | 26 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.PICK_UP_STORE_NOT_EXISTS; |
| ... | ... | @@ -28,6 +36,8 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic |
| 28 | 36 | |
| 29 | 37 | @Resource |
| 30 | 38 | private DeliveryPickUpStoreMapper deliveryPickUpStoreMapper; |
| 39 | + @Resource | |
| 40 | + private DeliveryPickUpStoreStaffMapper deliveryPickUpStoreStaffMapper; | |
| 31 | 41 | |
| 32 | 42 | @Override |
| 33 | 43 | public Long createDeliveryPickUpStore(DeliveryPickUpStoreCreateReqVO createReqVO) { |
| ... | ... | @@ -77,8 +87,32 @@ public class DeliveryPickUpStoreServiceImpl implements DeliveryPickUpStoreServic |
| 77 | 87 | } |
| 78 | 88 | |
| 79 | 89 | @Override |
| 80 | - public List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status) { | |
| 81 | - return deliveryPickUpStoreMapper.selectListByStatus(status); | |
| 90 | + public List<DeliveryPickUpStoreDO> getDeliveryPickUpStoreListByStatus(Integer status, List<Long> storeIds) { | |
| 91 | + return deliveryPickUpStoreMapper.selectListByStatus(status, storeIds); | |
| 92 | + } | |
| 93 | + | |
| 94 | + @Override | |
| 95 | + public void bindDeliveryPickUpBindStoreStaffId(DeliveryPickUpBindStoreStaffIdReqVO bindStoreStaffIdVO) { | |
| 96 | + //查询旧列表 | |
| 97 | + List<DeliveryPickUpStoreStaffDO> storeStaffDOS = deliveryPickUpStoreStaffMapper.getUserIdsByStoreId(bindStoreStaffIdVO.getId()); | |
| 98 | + List<Long> oldStoreStaffIds = storeStaffDOS.stream().map(DeliveryPickUpStoreStaffDO::getAdminUserId).toList(); | |
| 99 | + List<Long> newStoreStaffIds = bindStoreStaffIdVO.getStoreStaffIds(); | |
| 100 | + List<List<Long>> diffList = CollectionUtils.diffList(oldStoreStaffIds, newStoreStaffIds, // id 不同,就认为是不同的记录 | |
| 101 | + ObjectUtil::equal); | |
| 102 | + // 添加 | |
| 103 | + if (CollUtil.isNotEmpty(diffList.get(0))) { | |
| 104 | + diffList.get(0).forEach(id -> { | |
| 105 | + DeliveryPickUpStoreStaffDO storeStaffDO = new DeliveryPickUpStoreStaffDO(); | |
| 106 | + storeStaffDO.setStoreId(bindStoreStaffIdVO.getId()); | |
| 107 | + storeStaffDO.setAdminUserId(id); | |
| 108 | + deliveryPickUpStoreStaffMapper.insert(storeStaffDO); | |
| 109 | + }); | |
| 110 | + } | |
| 111 | + //删除 | |
| 112 | + if (CollUtil.isNotEmpty(diffList.get(2))) { | |
| 113 | + deliveryPickUpStoreStaffMapper.deleteStaffByUserIdsAndStoreId(diffList.get(2), bindStoreStaffIdVO.getId()); | |
| 114 | + } | |
| 115 | + | |
| 82 | 116 | } |
| 83 | 117 | |
| 84 | 118 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryPickUpStoreStaffService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.service.delivery; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 4 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*; | |
| 5 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; | |
| 6 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreStaffDO; | |
| 7 | +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreStaffMapper; | |
| 8 | +import jakarta.annotation.Resource; | |
| 9 | +import jakarta.validation.Valid; | |
| 10 | + | |
| 11 | +import java.util.Collection; | |
| 12 | +import java.util.List; | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * 自提门店店员 Service 接口 | |
| 16 | + * | |
| 17 | + * @author jason | |
| 18 | + */ | |
| 19 | +public interface DeliveryPickUpStoreStaffService { | |
| 20 | + | |
| 21 | + /** | |
| 22 | + * 查询门店绑定用户信息数组 | |
| 23 | + * | |
| 24 | + * @param id 门店编号 | |
| 25 | + * @return 用户信息数组 | |
| 26 | + */ | |
| 27 | + DeliveryPickUpBindStoreStaffIdReqsVO getDeliveryPickUpStoreStaff(Long id, String name); | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * 删除自提门店店员 | |
| 31 | + * | |
| 32 | + * @param id 门店店员编号 | |
| 33 | + */ | |
| 34 | + void deleteDeliveryPickUpStoreStaff(Long id, Long storeId); | |
| 35 | + | |
| 36 | + /** | |
| 37 | + * 根据用户id查询自提门店店员信息 | |
| 38 | + * @param userId | |
| 39 | + * @return | |
| 40 | + */ | |
| 41 | + List<DeliveryPickUpStoreStaffDO> selectStaffByUserId(Long userId); | |
| 42 | +} | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryPickUpStoreStaffServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.service.delivery; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | |
| 6 | +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | |
| 7 | +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | |
| 8 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.pickup.*; | |
| 9 | +import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryPickUpStoreConvert; | |
| 10 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; | |
| 11 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreStaffDO; | |
| 12 | +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreMapper; | |
| 13 | +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryPickUpStoreStaffMapper; | |
| 14 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
| 15 | +import jakarta.annotation.Resource; | |
| 16 | +import org.springframework.stereotype.Service; | |
| 17 | +import org.springframework.validation.annotation.Validated; | |
| 18 | + | |
| 19 | +import java.util.Arrays; | |
| 20 | +import java.util.Collection; | |
| 21 | +import java.util.Collections; | |
| 22 | +import java.util.List; | |
| 23 | +import java.util.stream.Collectors; | |
| 24 | + | |
| 25 | +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | |
| 26 | +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.PICK_UP_STORE_NOT_EXISTS; | |
| 27 | +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.PICK_UP_STORE_STAFF_NOT_EXISTS; | |
| 28 | +import static java.util.stream.Collectors.toList; | |
| 29 | + | |
| 30 | +/** | |
| 31 | + * 自提门店店员 Service 实现类 | |
| 32 | + * | |
| 33 | + * @author jason | |
| 34 | + */ | |
| 35 | +@Service | |
| 36 | +@Validated | |
| 37 | +public class DeliveryPickUpStoreStaffServiceImpl implements DeliveryPickUpStoreStaffService { | |
| 38 | + | |
| 39 | + | |
| 40 | + @Resource | |
| 41 | + private DeliveryPickUpStoreStaffMapper deliveryPickUpStoreStaffMapper; | |
| 42 | + | |
| 43 | + @Resource | |
| 44 | + private AdminUserApi adminUserApi; | |
| 45 | + | |
| 46 | + | |
| 47 | + @Override | |
| 48 | + public DeliveryPickUpBindStoreStaffIdReqsVO getDeliveryPickUpStoreStaff(Long id, String name) { | |
| 49 | + //1 查询绑定对应关系 | |
| 50 | + List<DeliveryPickUpStoreStaffDO> storeStaffDOS = deliveryPickUpStoreStaffMapper.selectList(new LambdaQueryWrapperX<DeliveryPickUpStoreStaffDO>() | |
| 51 | + .eq(DeliveryPickUpStoreStaffDO::getStoreId, id) | |
| 52 | + .eq(DeliveryPickUpStoreStaffDO::getStatus, CommonStatusEnum.ENABLE.getStatus())); | |
| 53 | + List<Long> adminUserIds = storeStaffDOS.stream().map(DeliveryPickUpStoreStaffDO::getAdminUserId).collect(toList()); | |
| 54 | + //2 查询绑定用户信息 | |
| 55 | + List<AdminUserRespDTO> storeStaffs = adminUserApi.getUserList(adminUserIds); | |
| 56 | + return DeliveryPickUpBindStoreStaffIdReqsVO.builder().storeStaffs(storeStaffs).name(name).id(id).build(); | |
| 57 | + } | |
| 58 | + | |
| 59 | + @Override | |
| 60 | + public void deleteDeliveryPickUpStoreStaff(Long userId, Long storeId) { | |
| 61 | + //通过用户编号和自提门店id查询 | |
| 62 | + Long StaffId = deliveryPickUpStoreStaffMapper.selectStaffIdByUserIdAndStoreId(Collections.singletonList(userId), storeId); | |
| 63 | + // 校验存在 | |
| 64 | + validateDeliveryPickUpStoreStaffExists(StaffId); | |
| 65 | + // 删除 | |
| 66 | + deliveryPickUpStoreStaffMapper.deleteById(StaffId); | |
| 67 | + } | |
| 68 | + | |
| 69 | + @Override | |
| 70 | + public List<DeliveryPickUpStoreStaffDO> selectStaffByUserId(Long userId) { | |
| 71 | + return deliveryPickUpStoreStaffMapper.selectList(new LambdaQueryWrapper<DeliveryPickUpStoreStaffDO>().eq(DeliveryPickUpStoreStaffDO::getAdminUserId,userId)); | |
| 72 | + } | |
| 73 | + | |
| 74 | + private void validateDeliveryPickUpStoreStaffExists(Long id) { | |
| 75 | + if (deliveryPickUpStoreStaffMapper.selectById(id) == null) { | |
| 76 | + throw exception(PICK_UP_STORE_STAFF_NOT_EXISTS); | |
| 77 | + } | |
| 78 | + } | |
| 79 | +} | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
| ... | ... | @@ -25,14 +25,18 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> { |
| 25 | 25 | return selectOne(AdminUserDO::getMobile, mobile); |
| 26 | 26 | } |
| 27 | 27 | |
| 28 | - default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds) { | |
| 29 | - return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>() | |
| 28 | + default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds,List<Long> userIds) { | |
| 29 | + LambdaQueryWrapperX<AdminUserDO> adminUserDOLambdaQueryWrapperX = new LambdaQueryWrapperX<AdminUserDO>() | |
| 30 | 30 | .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername()) |
| 31 | 31 | .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile()) |
| 32 | 32 | .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) |
| 33 | 33 | .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime()) |
| 34 | 34 | .inIfPresent(AdminUserDO::getDeptId, deptIds) |
| 35 | - .orderByDesc(AdminUserDO::getId)); | |
| 35 | + .orderByDesc(AdminUserDO::getId); | |
| 36 | + if(userIds != null){ | |
| 37 | + adminUserDOLambdaQueryWrapperX.in(AdminUserDO::getId, userIds); | |
| 38 | + } | |
| 39 | + return selectPage(reqVO, adminUserDOLambdaQueryWrapperX); | |
| 36 | 40 | } |
| 37 | 41 | |
| 38 | 42 | 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 | 22 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO; |
| 23 | 23 | import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; |
| 24 | 24 | import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO; |
| 25 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO; | |
| 25 | 26 | import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; |
| 26 | 27 | import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper; |
| 28 | +import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper; | |
| 27 | 29 | import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; |
| 28 | 30 | import cn.iocoder.yudao.module.system.service.dept.DeptService; |
| 29 | 31 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| ... | ... | @@ -44,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional; |
| 44 | 46 | import java.io.InputStream; |
| 45 | 47 | import java.time.LocalDateTime; |
| 46 | 48 | import java.util.*; |
| 49 | +import java.util.stream.Collectors; | |
| 47 | 50 | |
| 48 | 51 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 49 | 52 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| ... | ... | @@ -79,6 +82,8 @@ public class AdminUserServiceImpl implements AdminUserService { |
| 79 | 82 | |
| 80 | 83 | @Resource |
| 81 | 84 | private UserPostMapper userPostMapper; |
| 85 | + @Resource | |
| 86 | + private UserRoleMapper userRoleMapper; | |
| 82 | 87 | |
| 83 | 88 | @Resource |
| 84 | 89 | private FileApi fileApi; |
| ... | ... | @@ -272,7 +277,13 @@ public class AdminUserServiceImpl implements AdminUserService { |
| 272 | 277 | |
| 273 | 278 | @Override |
| 274 | 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 | 289 | @Override | ... | ... |