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); 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); } } src/main/java/cc/mrbird/febs/mall/dto/activity/ApiCheckOrderDto.java
New file @@ -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; } 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-已删除', */ 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; } 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); } 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(); 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; } src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCheckOrderVo.java
New file @@ -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; }