From 0d520631715ce7918a3da8cecd4ef8461a9aae66 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 23 May 2025 15:53:46 +0800 Subject: [PATCH] feat(mall): 新增自提点核销功能 --- src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java | 3 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java | 3 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 2 src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderInsureDto.java | 25 +++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 96 +++++++++++++++++++ src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ApiMallTeamLeaderController.java | 19 +++ src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderDto.java | 17 +++ src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java | 2 src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderItemVo.java | 24 ++++ src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java | 4 src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderVo.java | 54 ++++++++++ 11 files changed, 249 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java index fcde796..2b6b0bd 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java @@ -84,6 +84,8 @@ * 是否是核销员 0-否 1-是 * 匿名状态 1:匿名 0:不匿名 * 展示状态 1:显示 0:隐藏 + * 是否是自提订单核销员 0-否 1-是 + * 商品状态 0-待自提 1-已自提 */ DOWN(0), UP(1); diff --git a/src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ApiMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ApiMallTeamLeaderController.java index 8b91b02..cd1c9cd 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ApiMallTeamLeaderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ApiMallTeamLeaderController.java @@ -3,8 +3,10 @@ import cc.mrbird.febs.common.annotation.ControllerEndpoint; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto; import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService; import cc.mrbird.febs.mall.vo.*; +import cc.mrbird.febs.mall.vo.activity.ApiCheckOrderVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -40,6 +42,23 @@ return iApiMallTeamLeaderService.happyLeaderList(); } + @ApiOperation(value = "自提点核销", notes = "自提点核销") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiHappyOrderLeaderVo.class) + }) + @PostMapping(value = "/checkOrder") + public FebsResponse checkOrder(@RequestBody @Validated ApiHappyOrderLeaderDto dto) { + + return iApiMallTeamLeaderService.checkOrder(dto); + } + + @ApiOperation(value = "自提点核销-确认核销", notes = "自提点核销-确认核销") + @PostMapping(value = "/insureOrder") + public FebsResponse insureOrder(@RequestBody @Validated ApiHappyOrderLeaderInsureDto dto) { + + return iApiMallTeamLeaderService.insureOrder(dto); + } + /** * 申请团长 */ diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderDto.java new file mode 100644 index 0000000..aea7976 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderDto.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +@ApiModel(value = "ApiHappyOrderLeaderDto", description = "参数接收类") +public class ApiHappyOrderLeaderDto { + + @NotBlank(message = "自提码") + @ApiModelProperty(value = "自提码(手动输入,或者扫码)", example = "1") + private String takeCode; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderInsureDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderInsureDto.java new file mode 100644 index 0000000..2f96ab4 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiHappyOrderLeaderInsureDto.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiHappyOrderLeaderInsureDto", description = "参数接收类") +public class ApiHappyOrderLeaderInsureDto { + + @NotBlank(message = "自提码不能为空") + @ApiModelProperty(value = "自提码(手动输入,或者扫码)", example = "1") + private String takeCode; + + @NotNull(message = "订单不能为空") + @ApiModelProperty(value = "订单ID") + private Long orderId; + + @NotNull(message = "订单不能为空") + @ApiModelProperty(value = "订单子表ID") + private String itemId; +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java index 40e2e15..06f3cd0 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java @@ -193,4 +193,6 @@ private Integer checkOrder; //是否领取新人礼 0-否 1-是 private Integer newGift; + //是否是订单核销员 0-否 1-是 + private Integer checkLeader; } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java index 78b786a..c5454f1 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java @@ -48,6 +48,9 @@ private Integer isNormal; + //商品状态 0-待自提 1-已自提 + private Integer leaderState; + /** * 是否结清 */ diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java index 69ca5dc..2a264c7 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java @@ -41,4 +41,8 @@ FebsResponse noLoginLeaderTitle(ApiLeaderTitleDto apiLeaderTitleDto); FebsResponse happyLeaderList(); + + FebsResponse checkOrder(ApiHappyOrderLeaderDto dto); + + FebsResponse insureOrder(ApiHappyOrderLeaderInsureDto dto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java index 669c97a..13e72cc 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java @@ -16,6 +16,7 @@ import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.vo.*; +import cc.mrbird.febs.mall.vo.activity.ApiCheckOrderVo; import cc.mrbird.febs.pay.model.OrderStateDto; import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.WeixinServiceUtil; @@ -697,4 +698,99 @@ return new FebsResponse().success().data(apiHappyLeaderInfoVos); } + @Override + public FebsResponse checkOrder(ApiHappyOrderLeaderDto dto) { + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + + MallMember mallMember = mallMemberMapper.selectById(memberId); + + if(StateUpDownEnum.UP.getCode() != mallMember.getCheckLeader()){ + throw new FebsException("您不是订单核销员!"); + } + + String takeCode = dto.getTakeCode(); + + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOne( + new LambdaQueryWrapper<MallOrderInfo>() + .eq(MallOrderInfo::getTakeCode, takeCode) + .last("limit 1") + ); + + if(mallOrderInfo == null){ + throw new FebsException("自提码不存在!"); + } + + MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(mallOrderInfo.getTakeUniqueCode()); + if(mallTeamLeader==null){ + throw new FebsException("自提点不存在!"); + } + + ArrayList<ApiHappyOrderLeaderVo> apiHappyOrderLeaderVos = new ArrayList<>(); + + List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectList( + new LambdaQueryWrapper<MallOrderItem>() + .eq(MallOrderItem::getOrderId, mallOrderInfo.getId()) + .eq(MallOrderItem::getLeaderState, StateUpDownEnum.DOWN.getCode()) + ); + if(CollUtil.isNotEmpty(mallOrderItems)){ + for(MallOrderItem item : mallOrderItems){ + ApiHappyOrderLeaderVo apiHappyOrderLeaderVo = new ApiHappyOrderLeaderVo(); + apiHappyOrderLeaderVo.setAddressArea(mallTeamLeader.getAddressArea()); + apiHappyOrderLeaderVo.setName(mallTeamLeader.getName()); + apiHappyOrderLeaderVo.setPhone(mallTeamLeader.getPhone()); + apiHappyOrderLeaderVo.setOrderId(mallOrderInfo.getId()); + apiHappyOrderLeaderVo.setOrderState(mallOrderInfo.getStatus()); + apiHappyOrderLeaderVo.setTakeCode(takeCode); + apiHappyOrderLeaderVo.setGoodsName(item.getGoodsName()); + apiHappyOrderLeaderVo.setGoodsSku(item.getSkuName()); + apiHappyOrderLeaderVo.setGoodsCnt(item.getCnt()); + apiHappyOrderLeaderVo.setGoodsPrice(item.getPrice()); + apiHappyOrderLeaderVo.setLeaderState(item.getLeaderState()); + + apiHappyOrderLeaderVos.add(apiHappyOrderLeaderVo); + } + } + + return new FebsResponse().success().data(apiHappyOrderLeaderVos); + } + + @Override + public FebsResponse insureOrder(ApiHappyOrderLeaderInsureDto dto) { + + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + + MallMember mallMember = mallMemberMapper.selectById(memberId); + + if(StateUpDownEnum.UP.getCode() != mallMember.getCheckLeader()){ + throw new FebsException("您不是订单核销员!"); + } + + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(dto.getOrderId()); + + if(mallOrderInfo == null){ + throw new FebsException("订单不存在!"); + } + + MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(mallOrderInfo.getTakeUniqueCode()); + if(mallTeamLeader==null){ + throw new FebsException("自提点不存在!"); + } + + MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(dto.getItemId()); + if(mallOrderItem==null){ + throw new FebsException("订单不存在!"); + } + + if(mallOrderItem.getLeaderState()==1){ + throw new FebsException("订单已自提!"); + } + + mallOrderItem.setLeaderState(1); + mallOrderItemMapper.updateById(mallOrderItem); + + return new FebsResponse().success().message("操作成功"); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderItemVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderItemVo.java new file mode 100644 index 0000000..417212a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderItemVo.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +@Data +@ApiModel(value = "ApiHappyOrderLeaderItemVo", description = "信息返回类") +public class ApiHappyOrderLeaderItemVo { + + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品规格") + private String goodsSku; + + @ApiModelProperty(value = "商品数量") + private Integer goodsCnt; + + @ApiModelProperty(value = "商品单价") + private BigDecimal goodsPrice; +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderVo.java new file mode 100644 index 0000000..4c3781e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiHappyOrderLeaderVo.java @@ -0,0 +1,54 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel(value = "ApiHappyOrderLeaderVo", description = "信息返回类") +public class ApiHappyOrderLeaderVo { + + @ApiModelProperty(value = "自提点名称") + private String addressArea; + + @ApiModelProperty(value = "自提点联系人") + private String name; + + @ApiModelProperty(value = "自提点联系电话") + private String phone; + + @ApiModelProperty(value = "提货码", example = "1") + private String takeCode; + + @ApiModelProperty(value = "订单ID") + private Long orderId; + + @ApiModelProperty(value = "订单状态 1-待支付2-待发货3-待收货4-已完成") + private Integer orderState; + +// @ApiModelProperty(value = "订单详情") +// private List<ApiHappyOrderLeaderItemVo> items; + + + @ApiModelProperty(value = "订单子表ID") + private String itemId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品规格") + private String goodsSku; + + @ApiModelProperty(value = "商品数量") + private Integer goodsCnt; + + @ApiModelProperty(value = "商品单价") + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "商品状态 0-待自提 1-已自提") + private Integer leaderState; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java index a41dfcf..9e7aeed 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java @@ -119,6 +119,9 @@ @ApiModelProperty(value = "是否是核销员 0-否 1-是") private Integer checkOrder; + @ApiModelProperty(value = "是否是自提核销员 0-否 1-是") + private Integer checkLeader; + @ApiModelProperty(value = "是否领取新人礼 0-否 1-是") private Integer newGift; } -- Gitblit v1.9.1