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