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