From 795ce45b126ff828852cb4d728d1d8d222d3ea75 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 24 Apr 2025 17:35:27 +0800
Subject: [PATCH] feat(mall): 添加门票核销功能

---
 src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityOrderController.java |   12 ++++
 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/service/impl/HappyActivityServiceImpl.java               |   44 ++++++++++++++
 src/main/java/cc/mrbird/febs/mall/dto/activity/ApiCheckOrderDto.java                       |   18 ++++++
 src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCheckOrderVo.java                         |   41 +++++++++++++
 src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java                        |    1 
 src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java                        |    3 +
 src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java                       |    2 
 9 files changed, 125 insertions(+), 1 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 381ef9e..a1f9c70 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java
@@ -74,6 +74,7 @@
      * 是否推荐到首页 0-不推荐 1-推荐
      * 删除标识 0-未删除 1-已删除
      * 使用状态 0-待使用 1-已使用
+     * 是否是核销员 0-否 1-是
      */
     DOWN(0),
     UP(1);
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityOrderController.java
index 7b50db7..97d77a8 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityOrderController.java
@@ -4,10 +4,12 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.dto.activity.ApiActivityOrderListDto;
+import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto;
 import cc.mrbird.febs.mall.service.HappyActivityService;
 import cc.mrbird.febs.mall.vo.*;
 import cc.mrbird.febs.mall.vo.activity.ApiActivityOrderInfoVo;
 import cc.mrbird.febs.mall.vo.activity.ApiActivityOrderListVo;
+import cc.mrbird.febs.mall.vo.activity.ApiCheckOrderVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
@@ -112,4 +114,14 @@
         return happyActivityService.orderDelete(id);
     }
 
+    @ApiOperation(value = "核销门票", notes = "核销门票")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiCheckOrderVo.class)
+    })
+    @PostMapping(value = "/checkOrder")
+    public FebsResponse checkOrder(@RequestBody @Validated ApiCheckOrderDto dto) {
+
+        return happyActivityService.checkOrder(dto);
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiCheckOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiCheckOrderDto.java
new file mode 100644
index 0000000..a47be63
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiCheckOrderDto.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.dto.activity;
+
+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 = "ApiCheckOrderDto", description = "参数")
+public class ApiCheckOrderDto {
+
+    @NotBlank(message = "票号不能为空")
+    @ApiModelProperty(value = "票号(手动输入,或者扫码)", example = "1")
+    private String orderItemCode;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java
index 6fa05ea..f310912 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java
@@ -21,7 +21,7 @@
      `phone` varchar(100) DEFAULT NULL COMMENT '电话',
      `address` varchar(500) DEFAULT NULL COMMENT '地址',
      `state` int(11) DEFAULT '0' COMMENT '使用状态 0-待使用 1-已使用',
-     `transfer_item_id` bigint(20) DEFAULT NULL COMMENT '转赠来源ID(接收转赠之后,更新成新增的订单子表ID)',
+     `transfer_item_id` bigint(20) DEFAULT NULL COMMENT '核销人员memberId',
      `transfer_state` int(11) DEFAULT '0' COMMENT '是否转赠 0-未转赠 1-已转赠',
      `DELETE_FLAG` int(11) DEFAULT '0' COMMENT '删除标识 0-未删除 1-已删除',
      */
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 9641bde..38170fb 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -183,4 +183,6 @@
     private Date vipLevelTime;
     //是否是医生  0-否 1-是
     private Integer doctorState;
+    //是否是核销员 0-否 1-是
+    private Integer checkOrder;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java b/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java
index 2c9a53e..138d9dd 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.dto.activity.ApiActivityOrderListDto;
+import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto;
 import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto;
 import cc.mrbird.febs.mall.entity.HappyActivity;
 import cc.mrbird.febs.mall.dto.ApiOperateDoDto;
@@ -61,4 +62,6 @@
     void activityEnd();
 
     void activityStart();
+
+    FebsResponse checkOrder(ApiCheckOrderDto dto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
index 5188d8b..e244e5d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
@@ -8,6 +8,7 @@
 import cc.mrbird.febs.common.utils.ShareCodeUtil;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.dto.activity.ApiActivityOrderListDto;
+import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto;
 import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
@@ -17,6 +18,7 @@
 import cc.mrbird.febs.mall.dto.ApiOperateDoDto;
 import cc.mrbird.febs.mall.vo.activity.ApiActivityOrderInfoVo;
 import cc.mrbird.febs.mall.vo.activity.ApiActivityOrderListVo;
+import cc.mrbird.febs.mall.vo.activity.ApiCheckOrderVo;
 import cc.mrbird.febs.mall.vo.activity.ApiVoteActivityHotVo;
 import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
 import cc.mrbird.febs.pay.service.IXcxPayService;
@@ -770,6 +772,48 @@
     }
 
     @Override
+    public FebsResponse checkOrder(ApiCheckOrderDto dto) {
+        // 获取当前登录用户的ID
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+
+        MallMember mallMember = mallMemberMapper.selectById(memberId);
+
+        if(StateUpDownEnum.UP.getCode() != mallMember.getCheckOrder()){
+            throw new FebsException("您不是核销员!");
+        }
+
+        String orderItemCode = dto.getOrderItemCode();
+
+        HappyActivityOrderItem happyActivityOrderItem = happyActivityOrderItemMapper.selectOne(
+                new LambdaQueryWrapper<HappyActivityOrderItem>()
+                        .eq(HappyActivityOrderItem::getCode, orderItemCode)
+                        .eq(HappyActivityOrderItem::getState, StateUpDownEnum.DOWN.getCode())
+                .last("limit 1")
+        );
+        if(happyActivityOrderItem != null){
+            happyActivityOrderItem.setState(StateUpDownEnum.UP.getCode());
+            happyActivityOrderItem.setTransferItemId(memberId);
+            happyActivityOrderItemMapper.updateById(happyActivityOrderItem);
+
+            HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrderItem.getActivityId());
+
+            ApiCheckOrderVo apiCheckOrderVo = new ApiCheckOrderVo();
+            apiCheckOrderVo.setActivityName(happyActivity.getName());
+            apiCheckOrderVo.setActivityStartTime(happyActivity.getStartTime());
+            apiCheckOrderVo.setActivityEndTime(happyActivity.getEndTime());
+            apiCheckOrderVo.setActivityAddress(happyActivity.getAddress());
+            apiCheckOrderVo.setCode(happyActivityOrderItem.getCode());
+            apiCheckOrderVo.setName(happyActivityOrderItem.getName());
+            apiCheckOrderVo.setPhone(happyActivityOrderItem.getPhone());
+            apiCheckOrderVo.setPrice(happyActivityOrderItem.getPrice());
+
+            return new FebsResponse().success().data(apiCheckOrderVo);
+        }
+
+        return new FebsResponse().fail().message("核销失败!");
+    }
+
+    @Override
     public FebsResponse voteActivityHot(Long id) {
 
         ApiVoteActivityHotVo apiVoteActivityHotVo = new ApiVoteActivityHotVo();
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 e483f7c..67cd370 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -102,4 +102,7 @@
 
     @ApiModelProperty(value = "是否是医生")
     private Integer doctorState;
+
+    @ApiModelProperty(value = "是否是核销员 0-否 1-是")
+    private Integer checkOrder;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCheckOrderVo.java b/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCheckOrderVo.java
new file mode 100644
index 0000000..3a8e4af
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCheckOrderVo.java
@@ -0,0 +1,41 @@
+package cc.mrbird.febs.mall.vo.activity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "ApiCheckOrderVo", description = "参数")
+public class ApiCheckOrderVo {
+    @ApiModelProperty(value = "活动名称")
+    private String activityName;
+
+    @ApiModelProperty(value = "活动开始时间(有效期)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date activityStartTime;
+
+    @ApiModelProperty(value = "活动结束时间(有效期)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date activityEndTime;
+
+    @ApiModelProperty(value = "活动地点")
+    private String activityAddress;
+
+    @ApiModelProperty(value = "票号")
+    private String code;
+
+    @ApiModelProperty(value = "报名人姓名")
+    private String name;
+
+    @ApiModelProperty(value = "报名人电话")
+    private String phone;
+
+    @ApiModelProperty(value = "实付金额")
+    private BigDecimal price;
+
+
+}

--
Gitblit v1.9.1