From c4a0a66f61e1ccfefb0793fba5a9b62ccb7818ae Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 22 Apr 2025 16:10:29 +0800 Subject: [PATCH] feat(mall): 重构活动模块接口和数据结构 --- src/main/java/cc/mrbird/febs/mall/dto/ApiOperateVoteDto.java | 2 src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java | 2 src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityController.java | 39 - src/main/resources/mapper/modules/HappyActivityOptionMapper.xml | 45 ++ src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java | 341 +++++++++++++++++-- src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java | 6 src/main/java/cc/mrbird/febs/mall/vo/ApiConnectListInPageVo.java | 24 + src/main/java/cc/mrbird/febs/mall/entity/HappyActivityConnect.java | 22 + src/main/resources/mapper/modules/HappyActivityMapper.xml | 41 -- src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java | 41 ++ src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityConnectMapper.java | 14 src/main/java/cc/mrbird/febs/mall/dto/ApiPayOrderDto.java | 27 + src/main/java/cc/mrbird/febs/mall/dto/ApiConnectSaveDto.java | 29 + src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrder.java | 43 ++ src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java | 44 ++ src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java | 4 src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java | 2 src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterUserDto.java | 24 + src/main/java/cc/mrbird/febs/mall/vo/ApiCategoryInfoVo.java | 2 src/main/java/cc/mrbird/febs/mall/dto/ApiCreateOrderDto.java | 26 + src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityCategoryController.java | 4 src/main/java/cc/mrbird/febs/mall/dto/ApiActivityDto.java | 2 src/main/java/cc/mrbird/febs/mall/dto/ApiConnectListDto.java | 13 src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderItemMapper.java | 8 src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderMapper.java | 7 src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java | 22 + src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java | 28 + src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java | 2 src/main/resources/application-test.yml | 7 src/main/java/cc/mrbird/febs/mall/dto/ApiActivityInfoDto.java | 2 src/main/java/cc/mrbird/febs/mall/entity/HappyActivity.java | 2 src/main/java/cc/mrbird/febs/mall/vo/ApiVoteRecordInPageVo.java | 2 src/main/java/cc/mrbird/febs/mall/dto/ApiVoteRecordInPageDto.java | 2 src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterActivityDto.java | 5 src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java | 2 src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java | 5 src/main/java/cc/mrbird/febs/mall/dto/ApiOperateDoDto.java | 2 src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityOrderController.java | 85 +++++ src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java | 8 src/main/java/cc/mrbird/febs/mall/vo/ApiActivityInfoVo.java | 2 40 files changed, 854 insertions(+), 134 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 c4f4ba4..1bfced4 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/StateUpDownEnum.java @@ -27,6 +27,27 @@ VOTE_OPTION_STATE_AUDIT_REFUSE(2), /** + * 支付状态 0-待支付 1-支付成功 2-支付失败 + */ + PAY_STATE_NOT_PAY(0), + PAY_STATE_PAY_SUCCESS(1), + PAY_STATE_PAY_FAIL(2), + + /** + * 支付方式 1-余额支付 2-微信支付 3-积分支付 0-无需支付 + */ + PAY_METHOD_BALANCE(1), + PAY_METHOD_WECHAT(2), + PAY_METHOD_INTEGRAL(3), + PAY_METHOD_NO_PAY(0), + + /** + * 是否众筹 0-关闭 1-开启(开启代表收取参与费用) + */ + ACTIVITY_CROWDFUNDING_STATE_CLOSE(0), + ACTIVITY_CROWDFUNDING_STATE_OPEN(1), + + /** * 活动类型 1-普通活动 2-众筹活动 3-投票活动 */ ACTIVITY_TYPE_NORMAL(1), @@ -43,6 +64,7 @@ * 状态 0-未开启 1-已开启 * 是否推荐到首页 0-不推荐 1-推荐 * 删除标识 0-未删除 1-已删除 + * 使用状态 0-待使用 1-已使用 */ DOWN(0), UP(1); diff --git a/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java b/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java index ca1b5e0..9afaae3 100644 --- a/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java +++ b/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java @@ -17,6 +17,8 @@ private String wecharPaynotifyUrl; + private String wecharActivityPaynotifyUrl; + private String wecharRechargePaynotifyUrl; //测试支付的开关,true:支付0.01元 private Boolean debug; diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityCategoryController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityCategoryController.java index 182db24..40eb8c7 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityCategoryController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityCategoryController.java @@ -2,7 +2,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.service.HappyActivityCategoryService; -import cc.mrbird.febs.mall.vo.api.activity.category.ApiCategoryInfoVo; +import cc.mrbird.febs.mall.vo.ApiCategoryInfoVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -19,7 +19,7 @@ @RestController @RequiredArgsConstructor @RequestMapping(value = "/api/happyCategory") -@Api(value = "ApiHappyActivityCategoryController", tags = "365活动") +@Api(value = "ApiHappyActivityCategoryController", tags = "365活动分类") public class ApiHappyActivityCategoryController { private final HappyActivityCategoryService happyActivityCategoryService; diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityController.java index 0c1adc8..0d4f8a5 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityController.java @@ -2,10 +2,9 @@ import cc.mrbird.febs.common.annotation.Limit; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.service.HappyActivityService; -import cc.mrbird.febs.mall.vo.api.activity.*; -import cc.mrbird.febs.mall.vo.api.activity.follow.ApiOperateDoDto; -import cc.mrbird.febs.mall.vo.api.activity.options.*; +import cc.mrbird.febs.mall.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -20,7 +19,7 @@ @RestController @RequiredArgsConstructor @RequestMapping(value = "/api/happyActivity") -@Api(value = "ApiHappyActivityController", tags = "365活动分类") +@Api(value = "ApiHappyActivityController", tags = "365活动") public class ApiHappyActivityController{ private final HappyActivityService happyActivityService; @@ -45,7 +44,15 @@ return happyActivityService.activityInfo(dto); } - @ApiOperation(value = "投票活动选项列表", notes = "投票活动选项列表") + @ApiOperation(value = "点赞关注转发", notes = "点赞关注转发") + @PostMapping(value = "/operateDo") + @Limit(key = "operateDo", period = 60, count = 1, name = "点赞关注转发接口", prefix = "limit") + public FebsResponse operateDo(@RequestBody @Validated ApiOperateDoDto dto) { + + return happyActivityService.operateDo(dto); + } + + @ApiOperation(value = "投票活动-选项列表", notes = "投票活动-选项列表") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiActivityOptionListVo.class) }) @@ -55,7 +62,7 @@ return happyActivityService.voteOptionList(id); } - @ApiOperation(value = "投票活动选项详情", notes = "投票活动选项详情") + @ApiOperation(value = "投票活动-选项详情", notes = "投票活动-选项详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiActivityOptionVo.class) }) @@ -65,15 +72,7 @@ return happyActivityService.voteOption(id); } - @ApiOperation(value = "点赞关注转发", notes = "点赞关注转发") - @PostMapping(value = "/operateDo") - @Limit(key = "operateDo", period = 60, count = 1, name = "点赞关注转发接口", prefix = "limit") - public FebsResponse operateDo(@RequestBody @Validated ApiOperateDoDto dto) { - - return happyActivityService.operateDo(dto); - } - - @ApiOperation(value = "投票活动选项投票", notes = "投票活动选项投票") + @ApiOperation(value = "投票活动-选项投票", notes = "投票活动-选项投票") @PostMapping(value = "/operateVote") @Limit(key = "operateVote", period = 60, count = 1, name = "投票接口", prefix = "limit") public FebsResponse operateVote(@RequestBody @Validated ApiOperateVoteDto dto) { @@ -81,7 +80,7 @@ return happyActivityService.operateVote(dto); } - @ApiOperation(value = "投票活动选项投票记录", notes = "投票活动选项投票记录") + @ApiOperation(value = "投票活动-选项投票记录", notes = "投票活动-选项投票记录") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiVoteRecordInPageVo.class) }) @@ -89,14 +88,6 @@ public FebsResponse voteRecordInPage(@RequestBody @Validated ApiVoteRecordInPageDto dto) { return happyActivityService.voteRecordInPage(dto); - } - - @ApiOperation(value = "活动报名", notes = "活动报名") - @PostMapping(value = "/operateRegister") - @Limit(key = "operateRegister", period = 60, count = 1, name = "活动报名接口", prefix = "limit") - public FebsResponse operateRegister(@RequestBody @Validated ApiOperateRegisterActivityDto dto) { - - return happyActivityService.operateRegister(dto); } } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityOrderController.java new file mode 100644 index 0000000..771a30a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiHappyActivityOrderController.java @@ -0,0 +1,85 @@ +package cc.mrbird.febs.mall.controller; + +import cc.mrbird.febs.common.annotation.Limit; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.service.HappyActivityService; +import cc.mrbird.febs.mall.vo.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@Validated +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/api/happyActivityOrder") +@Api(value = "ApiHappyActivityOrderController", tags = "365活动订单") +public class ApiHappyActivityOrderController { + + private final HappyActivityService happyActivityService; + + @ApiOperation(value = "活动报名-新增报名人", notes = "活动报名-新增报名人") + @PostMapping(value = "/addConnect") + @Limit(key = "addConnect", period = 60, count = 1, name = "活动报名-新增报名人", prefix = "limit") + public FebsResponse addConnect(@RequestBody @Validated ApiOperateRegisterUserDto dto) { + + return happyActivityService.addConnect(dto); + } + + @ApiOperation(value = "活动报名-报名人列表", notes = "活动报名-报名人列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiConnectListInPageVo.class) + }) + @PostMapping(value = "/connectList") + public FebsResponse connectList(@RequestBody @Validated ApiConnectListDto dto) { + + return happyActivityService.connectList(dto); + } + + @ApiOperation(value = "活动报名-报名人详情", notes = "活动报名-报名人详情") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiConnectListInPageVo.class) + }) + @GetMapping(value = "/connectInfo/{id}") + public FebsResponse connectInfo(@PathVariable("id") Long id) { + + return happyActivityService.connectInfo(id); + } + + @ApiOperation(value = "活动报名-报名人删除", notes = "活动报名-报名人删除") + @GetMapping(value = "/connectDel/{id}") + public FebsResponse connectDel(@PathVariable("id") Long id) { + + return happyActivityService.connectDel(id); + } + + @ApiOperation(value = "活动报名-报名人保存", notes = "活动报名-报名人保存") + @PostMapping(value = "/connectSave") + public FebsResponse connectSave(@RequestBody @Validated ApiConnectSaveDto dto) { + + return happyActivityService.connectSave(dto); + } + + @ApiOperation(value = "活动报名-报名-创建订单", notes = "活动报名-报名-创建订单") + @PostMapping(value = "/createOrder") + @Limit(key = "createOrder", period = 60, count = 1, name = "创建订单", prefix = "limit") + public FebsResponse createOrder(@RequestBody @Validated ApiCreateOrderDto dto) { + + return happyActivityService.createOrder(dto); + } + + @ApiOperation(value = "活动报名-报名-支付订单", notes = "活动报名-报名-支付订单") + @PostMapping(value = "/payOrder") + @Limit(key = "payOrder", period = 60, count = 1, name = "支付订单", prefix = "limit") + public FebsResponse payOrder(@RequestBody @Validated ApiPayOrderDto dto) { + + return happyActivityService.payOrder(dto); + } + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiActivityDto.java similarity index 91% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityDto.java rename to src/main/java/cc/mrbird/febs/mall/dto/ApiActivityDto.java index 1622193..65e9967 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiActivityDto.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity; +package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiActivityInfoDto.java similarity index 94% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityInfoDto.java rename to src/main/java/cc/mrbird/febs/mall/dto/ApiActivityInfoDto.java index 80b14e8..7fa933f 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityInfoDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiActivityInfoDto.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity; +package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiConnectListDto.java similarity index 60% copy from src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageDto.java copy to src/main/java/cc/mrbird/febs/mall/dto/ApiConnectListDto.java index ba2864f..d8cc295 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiConnectListDto.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.options; +package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -7,9 +7,8 @@ import javax.validation.constraints.NotNull; @Data -@ApiModel(value = "ApiVoteRecordInPageDto", description = "参数") -public class ApiVoteRecordInPageDto { - +@ApiModel(value = "ApiConnectListDto", description = "参数") +public class ApiConnectListDto { @NotNull(message = "页码不能为空") @ApiModelProperty(value = "页码", example = "1") @@ -19,8 +18,6 @@ @ApiModelProperty(value = "每页数量", example = "10") private Integer pageSize; - @NotNull(message = "选项ID不能为空") - @ApiModelProperty(value = "选项ID") - private Long sourceOptionId; - + @ApiModelProperty(hidden = true) + private Long memberId; } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiConnectSaveDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiConnectSaveDto.java new file mode 100644 index 0000000..19742b7 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiConnectSaveDto.java @@ -0,0 +1,29 @@ +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 = "ApiConnectSaveDto", description = "参数") +public class ApiConnectSaveDto { + + @NotNull(message = "ID不能为空") + @ApiModelProperty(value = "ID", example = "丽丽") + private Long id; + + @NotBlank(message = "姓名不可为空") + @ApiModelProperty(value = "姓名", example = "丽丽") + private String name; + + @NotBlank(message = "电话不可为空") + @ApiModelProperty(value = "电话", example = "丽丽") + private String phone; + + @NotBlank(message = "地址不可为空") + @ApiModelProperty(value = "地址", example = "丽丽") + private String address; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateOrderDto.java new file mode 100644 index 0000000..be8e80b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateOrderDto.java @@ -0,0 +1,26 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +@ApiModel(value = "ApiCreateOrderDto", description = "参数") +public class ApiCreateOrderDto { + + @NotNull(message = "活动ID不能为空") + @ApiModelProperty(value = "活动ID", example = "1") + private Long activityId; + + @NotNull(message = "数量不能为空") + @ApiModelProperty(value = "数量", example = "1") + private Integer numCnt; + + @NotNull(message = "报名人不能为空") + @ApiModelProperty(value = "报名人ID列表", example = "1") + private List<Long> connectIds; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/follow/ApiOperateDoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateDoDto.java similarity index 93% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/follow/ApiOperateDoDto.java rename to src/main/java/cc/mrbird/febs/mall/dto/ApiOperateDoDto.java index 37ab08b..af863f9 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/follow/ApiOperateDoDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateDoDto.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.follow; +package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiOperateRegisterActivityDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterActivityDto.java similarity index 93% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiOperateRegisterActivityDto.java rename to src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterActivityDto.java index 50e21b3..ebe16c1 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiOperateRegisterActivityDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterActivityDto.java @@ -1,16 +1,17 @@ -package cc.mrbird.febs.mall.vo.api.activity; +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 = "ApiOperateRegisterActivityDto", description = "参数") public class ApiOperateRegisterActivityDto { - @NotBlank(message = "活动ID不可为空") + @NotNull(message = "活动ID不可为空") @ApiModelProperty(value = "活动ID", example = "1") private Long activityId;//投票活动ID diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterUserDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterUserDto.java new file mode 100644 index 0000000..2324ff1 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateRegisterUserDto.java @@ -0,0 +1,24 @@ +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 = "ApiOperateRegisterUserDto", description = "参数") +public class ApiOperateRegisterUserDto { + + @NotBlank(message = "姓名不可为空") + @ApiModelProperty(value = "姓名", example = "丽丽") + private String name; + + @NotBlank(message = "电话不可为空") + @ApiModelProperty(value = "电话", example = "丽丽") + private String phone; + + @NotBlank(message = "地址不可为空") + @ApiModelProperty(value = "地址", example = "丽丽") + private String address; +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiOperateVoteDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateVoteDto.java similarity index 92% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiOperateVoteDto.java rename to src/main/java/cc/mrbird/febs/mall/dto/ApiOperateVoteDto.java index 3402938..b91c6bd 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiOperateVoteDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiOperateVoteDto.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.options; +package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiPayOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiPayOrderDto.java new file mode 100644 index 0000000..a40652c --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiPayOrderDto.java @@ -0,0 +1,27 @@ +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 = "ApiPayOrderDto", description = "参数") +public class ApiPayOrderDto { + + + @NotNull(message = "订单ID不能为空") + @ApiModelProperty(value = "订单ID", example = "1") + private Long orderId; + + @NotNull(message = "支付方式不能为空") + @ApiModelProperty(value = "支付方式 1-余额支付 2-微信支付 3-积分支付 0-无需支付", example = "1") + private Integer payType; + + @NotBlank(message = "支付密码不能为空") + @ApiModelProperty(value = "支付密码", example = "如果选择余额支付需要输入") + private String tradePwd; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiVoteRecordInPageDto.java similarity index 92% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageDto.java rename to src/main/java/cc/mrbird/febs/mall/dto/ApiVoteRecordInPageDto.java index ba2864f..2b7a2c0 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiVoteRecordInPageDto.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.options; +package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/cc/mrbird/febs/mall/entity/HappyActivity.java b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivity.java index 83dd49f..da8abe5 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/HappyActivity.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivity.java @@ -35,6 +35,7 @@ `hot_state` int(11) DEFAULT '0' COMMENT '是否推荐到首页 0-不推荐 1-推荐', `back_img` varchar(500) DEFAULT NULL COMMENT '背景图片', `DELETE_FLAG` int(11) DEFAULT '0' COMMENT '删除标识 0-未删除 1-已删除', + `vote_cnt` int(11) DEFAULT NULL COMMENT '投票数量', */ private Long categoryId; private String code; @@ -59,6 +60,7 @@ private Integer hotState; private String backImg; private Integer deleteFlag; + private Integer voteCnt; } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityConnect.java b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityConnect.java new file mode 100644 index 0000000..88a8faa --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityConnect.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("happy_activity_connect") +public class HappyActivityConnect extends BaseEntity { + /** + * + `member_id` bigint(20) DEFAULT NULL COMMENT '用户ID', + `name` varchar(100) DEFAULT NULL COMMENT '姓名', + `phone` varchar(100) DEFAULT NULL COMMENT '电话', + `address` varchar(200) DEFAULT NULL COMMENT '地址', + */ + + private Long memberId; + private String name; + private String phone; + private String address; +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrder.java b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrder.java new file mode 100644 index 0000000..c815c20 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrder.java @@ -0,0 +1,43 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@TableName("happy_activity_order") +public class HappyActivityOrder extends BaseEntity { + /** + * + `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + `member_id` bigint(20) DEFAULT NULL, + `activity_id` bigint(20) DEFAULT NULL COMMENT '活动ID', + `price` decimal(20,2) DEFAULT NULL COMMENT '单价', + `num_cnt` int(11) DEFAULT NULL COMMENT '数量', + `amount` decimal(20,2) DEFAULT NULL COMMENT '支付总金额', + `pay_state` int(11) DEFAULT NULL COMMENT '支付状态 0-待支付 1-支付成功 2-支付失败', + `pay_type` int(11) DEFAULT NULL COMMENT '支付方式 1-余额支付 2-微信支付 3-积分支付', + `DELETE_FLAG` int(11) DEFAULT '0' COMMENT '删除标识 0-未删除 1-已删除', + `order_no` varchar(32) DEFAULT NULL COMMENT '订单号', + `pay_order_no` text COMMENT '支付订单号', + `wx_order_no` varchar(100) DEFAULT NULL COMMENT '微信订单编号', + */ + + + private Long memberId; + private Long activityId; + private BigDecimal price; + private Integer numCnt; + private BigDecimal amount; + private Integer payState; + private Integer payType; + private Date payTime; + private Integer deleteFlag; + private String orderNo; + private String payOrderNo; + private String wxOrderNo; +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java new file mode 100644 index 0000000..6fa05ea --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/HappyActivityOrderItem.java @@ -0,0 +1,41 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@TableName("happy_activity_order_item") +public class HappyActivityOrderItem extends BaseEntity { + /** + * + `member_id` bigint(20) DEFAULT NULL, + `activity_id` bigint(20) DEFAULT NULL COMMENT '活动ID', + `order_id` bigint(20) DEFAULT NULL COMMENT '订单ID', + `connect_id` bigint(20) DEFAULT NULL COMMENT '联系人ID', + `code` varchar(100) DEFAULT NULL COMMENT '唯一票号', + `price` decimal(20,2) DEFAULT NULL COMMENT '单价', + `name` varchar(100) DEFAULT NULL COMMENT '姓名', + `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_state` int(11) DEFAULT '0' COMMENT '是否转赠 0-未转赠 1-已转赠', + `DELETE_FLAG` int(11) DEFAULT '0' COMMENT '删除标识 0-未删除 1-已删除', + */ + private Long memberId; + private Long activityId; + private Long orderId; + private Long connectId; + private String code; + private BigDecimal price; + private String name; + private String phone; + private String address; + private Integer state; + private Long transferItemId; + private Integer transferState; + private Integer deleteFlag; +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityConnectMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityConnectMapper.java new file mode 100644 index 0000000..5053e1c --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityConnectMapper.java @@ -0,0 +1,14 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.dto.ApiConnectListDto; +import cc.mrbird.febs.mall.entity.HappyActivityConnect; +import cc.mrbird.febs.mall.vo.ApiConnectListInPageVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +public interface HappyActivityConnectMapper extends BaseMapper<HappyActivityConnect> { + + Page<ApiConnectListInPageVo> selectConnectListPage(Page<ApiConnectListInPageVo> page, @Param("record")ApiConnectListDto dto); + +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java index 34e8702..440c582 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java @@ -1,10 +1,10 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.entity.HappyActivity; -import cc.mrbird.febs.mall.vo.api.activity.ApiActivityInfoDto; -import cc.mrbird.febs.mall.vo.api.activity.ApiActivityInfoVo; -import cc.mrbird.febs.mall.vo.api.activity.options.ApiVoteRecordInPageDto; -import cc.mrbird.febs.mall.vo.api.activity.options.ApiVoteRecordInPageVo; +import cc.mrbird.febs.mall.dto.ApiActivityInfoDto; +import cc.mrbird.febs.mall.vo.ApiActivityInfoVo; +import cc.mrbird.febs.mall.dto.ApiVoteRecordInPageDto; +import cc.mrbird.febs.mall.vo.ApiVoteRecordInPageVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderItemMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderItemMapper.java new file mode 100644 index 0000000..6ee9faf --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderItemMapper.java @@ -0,0 +1,8 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.HappyActivityOrder; +import cc.mrbird.febs.mall.entity.HappyActivityOrderItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface HappyActivityOrderItemMapper extends BaseMapper<HappyActivityOrderItem> { +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderMapper.java new file mode 100644 index 0000000..36d9e72 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityOrderMapper.java @@ -0,0 +1,7 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.HappyActivityOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface HappyActivityOrderMapper extends BaseMapper<HappyActivityOrder> { +} 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 78dfe73..0460af0 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java @@ -1,13 +1,11 @@ package cc.mrbird.febs.mall.service; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.HappyActivity; -import cc.mrbird.febs.mall.vo.api.activity.ApiActivityDto; -import cc.mrbird.febs.mall.vo.api.activity.ApiActivityInfoDto; -import cc.mrbird.febs.mall.vo.api.activity.ApiOperateRegisterActivityDto; -import cc.mrbird.febs.mall.vo.api.activity.follow.ApiOperateDoDto; -import cc.mrbird.febs.mall.vo.api.activity.options.ApiOperateVoteDto; -import cc.mrbird.febs.mall.vo.api.activity.options.ApiVoteRecordInPageDto; +import cc.mrbird.febs.mall.dto.ApiOperateDoDto; +import cc.mrbird.febs.mall.dto.ApiOperateVoteDto; +import cc.mrbird.febs.mall.dto.ApiVoteRecordInPageDto; import com.baomidou.mybatisplus.extension.service.IService; public interface HappyActivityService extends IService<HappyActivity> { @@ -31,4 +29,22 @@ FebsResponse voteRecordInPage(ApiVoteRecordInPageDto dto); FebsResponse operateRegister(ApiOperateRegisterActivityDto dto); + + FebsResponse addConnect(ApiOperateRegisterUserDto dto); + + FebsResponse connectList(ApiConnectListDto dto); + + FebsResponse connectInfo(Long id); + + FebsResponse connectDel(Long id); + + FebsResponse connectSave(ApiConnectSaveDto dto); + + FebsResponse createOrder(ApiCreateOrderDto dto); + + FebsResponse payOrder(ApiPayOrderDto dto); + + void addLikeCnt(Long sourceOptionId); + + void substructJoinCnt(Long activityId,Integer cnt); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java index 84246f9..13e5f6f 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java @@ -5,7 +5,7 @@ import cc.mrbird.febs.mall.entity.HappyActivityCategory; import cc.mrbird.febs.mall.mapper.HappyActivityCategoryMapper; import cc.mrbird.febs.mall.service.HappyActivityCategoryService; -import cc.mrbird.febs.mall.vo.api.activity.category.ApiCategoryInfoVo; +import cc.mrbird.febs.mall.vo.ApiCategoryInfoVo; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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 b088dd0..773d5c5 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 @@ -1,25 +1,28 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.common.enumerates.StateUpDownEnum; +import cc.mrbird.febs.common.enumerates.*; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; -import cc.mrbird.febs.mall.entity.HappyActivity; -import cc.mrbird.febs.mall.entity.HappyActivityOption; -import cc.mrbird.febs.mall.entity.HappyFollow; -import cc.mrbird.febs.mall.entity.MallMember; -import cc.mrbird.febs.mall.mapper.HappyActivityMapper; -import cc.mrbird.febs.mall.mapper.HappyActivityOptionMapper; -import cc.mrbird.febs.mall.mapper.HappyFollowMapper; -import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.common.utils.ShareCodeUtil; +import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.HappyActivityService; -import cc.mrbird.febs.mall.vo.api.activity.*; -import cc.mrbird.febs.mall.vo.api.activity.follow.ApiOperateDoDto; -import cc.mrbird.febs.mall.vo.api.activity.options.*; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; +import cc.mrbird.febs.mall.vo.*; +import cc.mrbird.febs.mall.dto.ApiOperateDoDto; +import cc.mrbird.febs.pay.model.BrandWCPayRequestData; +import cc.mrbird.febs.pay.service.IXcxPayService; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -28,6 +31,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -40,6 +45,11 @@ private final HappyFollowMapper happyFollowMapper; private final MallMemberMapper mallMemberMapper; private final HappyActivityOptionMapper happyActivityOptionMapper; + private final HappyActivityConnectMapper happyActivityConnectMapper; + private final HappyActivityOrderMapper happyActivityOrderMapper; + private final HappyActivityOrderItemMapper happyActivityOrderItemMapper; + private final IXcxPayService iXcxPayService; + private final IApiMallMemberWalletService iApiMallMemberWalletService; @Override public FebsResponse activityList(ApiActivityInfoDto dto) { @@ -189,6 +199,7 @@ throw new FebsException("选项ID不能为空"); } this.operateDoVote(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, sourceOptionId, type); + this.addLikeCnt(sourceOptionId); } else { this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, type); } @@ -235,6 +246,18 @@ Integer sourceType = dto.getSourceType(); Integer type = StateUpDownEnum.VOTE.getCode(); + HappyActivity happyActivity = this.baseMapper.selectById(sourceId); + if(StateUpDownEnum.ACTIVITY_TYPE_VOTE.getCode() != happyActivity.getType()){ + throw new FebsException("当前活动无法投票"); + } + + HappyActivityOption happyActivityOption = happyActivityOptionMapper.selectById(sourceOptionId); + if (happyActivityOption == null) { + throw new FebsException("投票对象不存在"); + } + if (StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_SUCCESS.getCode() != happyActivityOption.getState()) { + throw new FebsException("请重新选择投票对象"); + } //验证当前登录人员今日是否已经投票 List<HappyFollow> happyFollows = happyFollowMapper.selectList( new LambdaQueryWrapper<HappyFollow>() @@ -244,33 +267,11 @@ .eq(HappyFollow::getType, type) .gt(HappyFollow::getCreatedTime, DateUtil.beginOfDay(new Date())) ); - if (CollUtil.isNotEmpty(happyFollows)){ + if (CollUtil.isNotEmpty(happyFollows) && happyFollows.size() >= happyActivity.getVoteCnt()){ throw new FebsException("今日已经投票"); } - - if (StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode() == sourceType) { - HappyActivityOption happyActivityOption = happyActivityOptionMapper.selectById(sourceOptionId); - if (happyActivityOption == null) { - throw new FebsException("投票对象不存在"); - } - if (StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_SUCCESS.getCode() != happyActivityOption.getState()) { - throw new FebsException("请重新选择投票对象"); - } - - Integer likesCnt = happyActivityOption.getLikesCnt(); - if (likesCnt == null) { - likesCnt = 0; - } - likesCnt += 1; - happyActivityOption.setLikesCnt(likesCnt); - - boolean updateSuccess = happyActivityOptionMapper.updateById(happyActivityOption) > 0; - if (!updateSuccess) { - throw new FebsException("更新票数失败"); - } - - this.operateDoVote(memberId, sourceType, sourceId, sourceOptionId, type); - } + this.operateDoVote(memberId, sourceType, sourceId, sourceOptionId, type); + this.addLikeCnt(sourceOptionId); return new FebsResponse().success(); } @@ -307,9 +308,275 @@ @Override public FebsResponse operateRegister(ApiOperateRegisterActivityDto dto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); return null; } + @Override + public FebsResponse addConnect(ApiOperateRegisterUserDto dto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + + HappyActivityConnect happyActivityConnect = new HappyActivityConnect(); + happyActivityConnect.setMemberId(memberId); + happyActivityConnect.setName(dto.getName()); + happyActivityConnect.setPhone(dto.getPhone()); + happyActivityConnect.setAddress(dto.getAddress()); + happyActivityConnectMapper.insert(happyActivityConnect); + return new FebsResponse().success(); + } + + @Override + public FebsResponse connectList(ApiConnectListDto dto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + dto.setMemberId(memberId); + // 创建分页对象,传入当前页和每页大小 + Page<ApiConnectListInPageVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + Page<ApiConnectListInPageVo> voteRecordInPage = happyActivityConnectMapper.selectConnectListPage(page, dto); + return new FebsResponse().success().data(voteRecordInPage); + } + + @Override + public FebsResponse connectInfo(Long id) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + HappyActivityConnect happyActivityConnect = happyActivityConnectMapper.selectById(id); + ApiConnectListInPageVo apiConnectListInPageVo = new ApiConnectListInPageVo(); + BeanUtil.copyProperties(happyActivityConnect,apiConnectListInPageVo); + return new FebsResponse().success().data(apiConnectListInPageVo); + } + + @Override + public FebsResponse connectDel(Long id) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + happyActivityConnectMapper.deleteById(id); + return new FebsResponse().success(); + } + + @Override + public FebsResponse connectSave(ApiConnectSaveDto dto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long id = dto.getId(); + HappyActivityConnect happyActivityConnect = happyActivityConnectMapper.selectById(id); + if (happyActivityConnect == null) { + throw new FebsException("记录不存在"); + } + happyActivityConnect.setName(dto.getName()); + happyActivityConnect.setPhone(dto.getPhone()); + happyActivityConnect.setAddress(dto.getAddress()); + happyActivityConnectMapper.updateById(happyActivityConnect); + return new FebsResponse().success(); + } + + @Override + public FebsResponse createOrder(ApiCreateOrderDto dto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + if(CollUtil.isEmpty(dto.getConnectIds())){ + throw new FebsException("请选择报名人"); + } + + List<Long> connectIds = dto.getConnectIds(); + Integer numCnt = dto.getNumCnt(); + if(numCnt != connectIds.size()){ + throw new FebsException("报名人数与票的数量不匹配"); + } + + Long activityId = dto.getActivityId(); + HappyActivity happyActivity = this.baseMapper.selectById(activityId); + if (ObjectUtil.isEmpty(happyActivity)) { + throw new FebsException("活动不存在"); + } + + Integer joinCnt = happyActivity.getJoinCnt(); + if(joinCnt < numCnt){ + throw new FebsException("报名额度剩下"+joinCnt+",请减少报名人数"); + } + //支付总金额 + BigDecimal amount = happyActivity.getPayAmount().multiply(new BigDecimal(dto.getNumCnt())).setScale(2, RoundingMode.DOWN); + if(amount.compareTo(BigDecimal.ZERO) < 0){ + throw new FebsException("支付金额错误"); + } + HappyActivityOrder happyActivityOrder = new HappyActivityOrder(); + happyActivityOrder.setOrderNo(MallUtils.getOrderNum()); + happyActivityOrder.setMemberId(memberId); + happyActivityOrder.setActivityId(dto.getActivityId()); + happyActivityOrder.setPrice(happyActivity.getPayAmount()); + happyActivityOrder.setNumCnt(dto.getNumCnt()); + happyActivityOrder.setAmount(amount); + happyActivityOrder.setPayState(StateUpDownEnum.PAY_STATE_NOT_PAY.getCode()); + happyActivityOrderMapper.insert(happyActivityOrder); + + for(Long connectId : connectIds){ + HappyActivityConnect happyActivityConnect = happyActivityConnectMapper.selectById(connectId); + HappyActivityOrderItem happyActivityOrderItem = new HappyActivityOrderItem(); + happyActivityOrderItem.setMemberId(memberId); + happyActivityOrderItem.setActivityId(dto.getActivityId()); + happyActivityOrderItem.setOrderId(happyActivityOrder.getId()); + happyActivityOrderItem.setConnectId(connectId); + happyActivityOrderItem.setPrice(happyActivity.getPayAmount()); + + happyActivityOrderItem.setName(happyActivityConnect.getName()); + happyActivityOrderItem.setPhone(happyActivityConnect.getPhone()); + happyActivityOrderItem.setAddress(happyActivityConnect.getAddress()); + happyActivityOrderItem.setState(StateUpDownEnum.DOWN.getCode()); + happyActivityOrderItemMapper.insert(happyActivityOrderItem); + } + + this.substructJoinCnt(activityId, happyActivityOrder.getNumCnt()); + HashMap<String, Object> stringObjectHashMap = new HashMap<>(); + stringObjectHashMap.put("orderId",happyActivityOrder.getId()); + stringObjectHashMap.put("amount",amount); + + return new FebsResponse().success().data(stringObjectHashMap); + } + + /** + * 支付订单函数,根据传入的支付订单数据对象处理不同支付类型的订单支付逻辑。 + * + * @param dto 包含支付订单相关信息的数据传输对象,包括订单ID和支付类型等信息。 + * - orderId: 订单ID,用于查询订单信息。 + * - payType: 支付类型,决定支付逻辑的分支。 + * - tradePwd: 交易密码(可选),用于余额或积分支付时验证。 + * @return FebsResponse 返回支付结果的响应对象,包含支付状态、订单信息等数据。 + * - orderInfo: 支付结果信息,可能是预支付ID或其他支付相关数据。 + * - orderNo: 订单编号。 + * - orderId: 订单ID。 + * - wxResultStr: 微信支付相关的结果字符串(仅在微信支付时返回)。 + * @throws FebsException 如果订单不存在、已支付、支付失败或支付类型不支持,则抛出异常。 + */ + @Override + public FebsResponse payOrder(ApiPayOrderDto dto) { + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long orderId = dto.getOrderId(); + Integer payType = dto.getPayType(); + + // 查询订单信息,确保订单存在且未支付 + HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(orderId); + if (ObjectUtil.isEmpty(happyActivityOrder)) { + throw new FebsException("订单不存在"); + } + if (happyActivityOrder.getPayState() == StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode()) { + throw new FebsException("订单已支付"); + } + + String payResultStr = ""; + String wxResultStr = ""; + + try { + // 根据支付类型处理不同的支付逻辑 + if (StateUpDownEnum.PAY_METHOD_NO_PAY.getCode() == payType) { + // 处理无需支付的订单逻辑 + processNoPayOrder(happyActivityOrder, orderId); + } else if (StateUpDownEnum.PAY_METHOD_WECHAT.getCode() == payType) { + // 处理微信支付逻辑,生成支付请求数据并更新订单状态 + BrandWCPayRequestData brandWCPayRequestData = iXcxPayService.startPaymentActivity(happyActivityOrder); + wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData); + payResultStr = brandWCPayRequestData.getPrepay_id(); + updateOrderState(happyActivityOrder, payType, StateUpDownEnum.PAY_STATE_NOT_PAY.getCode()); + } else if (StateUpDownEnum.PAY_METHOD_BALANCE.getCode() == payType || + StateUpDownEnum.PAY_METHOD_INTEGRAL.getCode() == payType) { + // 处理余额或积分支付逻辑,验证交易密码并完成支付 + String payMethod = StateUpDownEnum.PAY_METHOD_BALANCE.getCode() == payType ? "balance" : "prizeScore"; + payResultStr = balancePay(happyActivityOrder, dto.getTradePwd(), payMethod); + processPaidOrder(happyActivityOrder, orderId, payType); + } else { + // 如果支付类型不支持,抛出异常 + throw new FebsException("不支持的支付类型"); + } + } catch (Exception e) { + // 捕获支付过程中的异常,记录日志并抛出自定义异常 + log.error("支付失败,订单ID:{},支付类型:{}", orderId, payType, e); + throw new FebsException("支付失败:" + e.getMessage()); + } + + // todo 支付失败要把对应的人数加回来 + + // 构造返回结果,包含支付相关信息 + Map<String, Object> map = new HashMap<>(); + map.put("orderInfo", payResultStr); + map.put("orderNo", happyActivityOrder.getOrderNo()); + map.put("orderId", happyActivityOrder.getId()); + map.put("wxResultStr", wxResultStr); + + return new FebsResponse().success().data(map).message("支付成功"); + } + + + @Override + public void addLikeCnt(Long sourceOptionId) { + HappyActivityOption happyActivityOption = happyActivityOptionMapper.selectById(sourceOptionId); + happyActivityOption.setLikesCnt(happyActivityOption.getLikesCnt() + 1); + happyActivityOptionMapper.updateById(happyActivityOption); + } + + @Override + public void substructJoinCnt(Long activityId, Integer numCnt) { + HappyActivity happyActivity = this.baseMapper.selectById(activityId); + if(ObjectUtil.isNotEmpty(happyActivity)){ + happyActivity.setJoinCnt(happyActivity.getJoinCnt() -numCnt); + this.baseMapper.updateById(happyActivity); + } + } + + // 处理未支付订单 + private void processNoPayOrder(HappyActivityOrder order, Long orderId) { + updateOrderState(order, StateUpDownEnum.PAY_METHOD_NO_PAY.getCode(), StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode()); + generateOrderItemCodes(orderId); + } + + // 处理已支付订单 + private void processPaidOrder(HappyActivityOrder order, Long orderId, Integer payType) { + updateOrderState(order, payType, StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode()); + generateOrderItemCodes(orderId); + } + + // 更新订单状态 + private void updateOrderState(HappyActivityOrder order, Integer payType, Integer payState) { + order.setPayState(payState); + order.setPayType(payType); + if (payState == StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode()) { + order.setPayTime(new Date()); + } + happyActivityOrderMapper.updateById(order); + } + + // 批量生成订单项编码 + private void generateOrderItemCodes(Long orderId) { + List<HappyActivityOrderItem> items = happyActivityOrderItemMapper.selectList( + new LambdaQueryWrapper<HappyActivityOrderItem>() + .eq(HappyActivityOrderItem::getOrderId, orderId) + ); + if (CollUtil.isNotEmpty(items)) { + for (HappyActivityOrderItem item : items) { + String code = ShareCodeUtil.toSerialCode(item.getOrderId()) + MallUtils.getRandomNum(8); + item.setCode(code); + happyActivityOrderItemMapper.updateById(item); + } + } + } + + + private String balancePay(HappyActivityOrder happyActivityOrder, String tradePwd, String field) { + if (StrUtil.isBlank(tradePwd)) { + throw new FebsException("支付密码错误"); + } + + MallMember mallMember = mallMemberMapper.selectById(happyActivityOrder.getMemberId()); + if (StrUtil.isBlank(mallMember.getTradePassword())) { + throw new FebsException("未设置支付密码"); + } + + if (!SecureUtil.md5(tradePwd).equals(mallMember.getTradePassword())) { + throw new FebsException("支付密码错误"); + } + + int reduce = iApiMallMemberWalletService.reduce(happyActivityOrder.getAmount(), mallMember.getId(), field); + if (reduce == 2) { + throw new FebsException("余额不足"); + } + return happyActivityOrder.getOrderNo(); + } + + public static void main(String[] args) { Date date = new Date(); //获取今日的凌晨的时间 diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityInfoVo.java similarity index 95% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityInfoVo.java rename to src/main/java/cc/mrbird/febs/mall/vo/ApiActivityInfoVo.java index c2e531a..5ef7ba8 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityInfoVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityInfoVo.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity; +package cc.mrbird.febs.mall.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiActivityOptionListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java similarity index 91% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiActivityOptionListVo.java rename to src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java index dce99ba..fa07419 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiActivityOptionListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.options; +package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiActivityOptionVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java similarity index 90% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiActivityOptionVo.java rename to src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java index 991d30c..9f9d7e3 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiActivityOptionVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.options; +package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -40,4 +40,7 @@ @ApiModelProperty(value = "是否签约mcn机构 0否 1是") private Integer mcnState; + + @ApiModelProperty(value = "投票数量") + private Integer voteCnt; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java similarity index 97% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityVo.java rename to src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java index 5decd94..056d4c8 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/ApiActivityVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity; +package cc.mrbird.febs.mall.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/category/ApiCategoryInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiCategoryInfoVo.java similarity index 91% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/category/ApiCategoryInfoVo.java rename to src/main/java/cc/mrbird/febs/mall/vo/ApiCategoryInfoVo.java index 121dcbe..a6ba03a 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/category/ApiCategoryInfoVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiCategoryInfoVo.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.category; +package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiConnectListInPageVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiConnectListInPageVo.java new file mode 100644 index 0000000..d3a4cd8 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiConnectListInPageVo.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiConnectListInPageVo", description = "参数") +public class ApiConnectListInPageVo { + + @ApiModelProperty(value = "ID", example = "丽丽") + private Long id; + + @ApiModelProperty(value = "姓名", example = "丽丽") + private String name; + + @ApiModelProperty(value = "电话", example = "丽丽") + private String phone; + + @ApiModelProperty(value = "地址", example = "丽丽") + private String address; + + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiVoteRecordInPageVo.java similarity index 92% rename from src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageVo.java rename to src/main/java/cc/mrbird/febs/mall/vo/ApiVoteRecordInPageVo.java index dc1a495..2885bef 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/api/activity/options/ApiVoteRecordInPageVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiVoteRecordInPageVo.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo.api.activity.options; +package cc.mrbird.febs.mall.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java index fe0ec26..dd7fe9c 100644 --- a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java +++ b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.ApiRechargeWalletDto; import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto; +import cc.mrbird.febs.mall.entity.HappyActivityOrder; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.pay.model.BrandWCPayRequestData; import cc.mrbird.febs.pay.model.MemberWithdrawalDto; @@ -21,6 +22,11 @@ BrandWCPayRequestData startPayment(MallOrderInfo mallOrderInfo) throws Exception; /** + * 发起支付(创建预付订单) + */ + BrandWCPayRequestData startPaymentActivity(HappyActivityOrder dto) throws Exception; + + /** * 发送订单送达消息 */ void pushOrderToAddress(OrderStateDto info); diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java index 0751acb..56ddd88 100644 --- a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java @@ -52,6 +52,12 @@ public class XcxPayServiceImpl implements IXcxPayService { @Autowired + private HappyActivityOrderMapper happyActivityOrderMapper; + + @Autowired + private HappyActivityMapper happyActivityMapper; + + @Autowired private MallOrderInfoMapper mallOrderInfoMapper; @Autowired private MallMemberMapper mallMemberMapper; @@ -202,6 +208,27 @@ } mallOrderInfo.setWxOrderNo(payData.getPrepay_id()); mallOrderInfoMapper.updateById(mallOrderInfo); + return payData; + } + + @Override + public BrandWCPayRequestData startPaymentActivity(HappyActivityOrder dto) throws Exception { + BigDecimal unit = new BigDecimal("100"); + BigDecimal money = new BigDecimal(dto.getAmount().toString()); + BrandWCPayRequestData payData; + HappyActivity happyActivity = happyActivityMapper.selectById(dto.getActivityId()); + String productNames = getActivityNames(happyActivity.getId(),dto.getNumCnt()); + MallMember mallMember = mallMemberMapper.selectById(dto.getMemberId()); + Boolean debug = xcxProperties.getDebug(); + if (debug) { + payData = weixinServiceUtil.createActivityOrder("[测试]" + productNames, dto.getOrderNo(), + 1, mallMember.getOpenId(), String.valueOf(dto.getId())); + } else { + payData = weixinServiceUtil.createActivityOrder(productNames, dto.getOrderNo(), + unit.multiply(money).intValue(),mallMember.getOpenId(), String.valueOf(dto.getId())); + } + dto.setWxOrderNo(payData.getPrepay_id()); + happyActivityOrderMapper.updateById(dto); return payData; } @@ -509,4 +536,21 @@ } return productNames; } + + /** + * 根据用户ID和订单ID获取所购买商品名称 + * @return 所含商品名称(多个以","隔开) + */ + public String getActivityNames(Long activityId,Integer numCnt) { + HappyActivity happyActivity = happyActivityMapper.selectById(activityId); + StringBuffer productNameBuffer = new StringBuffer(); + Integer maxLength = 25; + String goodsName = happyActivity.getName(); + if (goodsName.length() > maxLength) { + productNameBuffer.append(goodsName.substring(0, maxLength) + "*"+numCnt); + }else{ + productNameBuffer.append(goodsName+"*"+numCnt); + } + return productNameBuffer.toString(); + } } diff --git a/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java b/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java index 2ab1e5c..9b85918 100644 --- a/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java +++ b/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java @@ -37,6 +37,10 @@ * @return 预支付订单返回的结果对象(该结果对象已封装),在H5页面使用该对象信息 * @throws Exception */ + public BrandWCPayRequestData createActivityOrder(String desc, String outTradeNo, int price, String openId, String attach) throws Exception { + String wecharActivityPaynotifyUrl = xcxProperties.getWecharActivityPaynotifyUrl(); + return buildBrandWCPayRequestData(desc, outTradeNo, price, openId, attach, wecharActivityPaynotifyUrl); + } public BrandWCPayRequestData createOrder(String desc, String outTradeNo, int price, String openId, String attach) throws Exception { String wecharPaynotifyUrl = xcxProperties.getWecharPaynotifyUrl(); return buildBrandWCPayRequestData(desc, outTradeNo, price, openId, attach, wecharPaynotifyUrl); diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 9443759..6f2b51b 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -15,10 +15,10 @@ datasource: # 数据源-1,名称为 base base: - username: db_blnka - password: blnka!@#123 + username: root + password: root driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://121.37.162.173:3306/db_blnka?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + url: jdbc:mysql://localhost:3306/happy_community_365?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 redis: # Redis数据库索引(默认为 0) @@ -74,6 +74,7 @@ xcx_secret: 9bb58d655bff419feec3a6d948ca8b8d1 debug: true wecharPaynotifyUrl: http://blnka.csxuncong.com/api/xcxPay/wxpayCallback + wecharActivityPaynotifyUrl: http://blnka.csxuncong.com/api/xcxPay/wxpayCallback wecharRechargePaynotifyUrl: http://blnka.csxuncong.com/api/xcxPay/rechargeCallBack certLocalPath: /home/blnkaCert/apiclient_cert.p12 wecharpayMchid: 1658958205 diff --git a/src/main/resources/mapper/modules/HappyActivityMapper.xml b/src/main/resources/mapper/modules/HappyActivityMapper.xml index 90a0a01..e333c60 100644 --- a/src/main/resources/mapper/modules/HappyActivityMapper.xml +++ b/src/main/resources/mapper/modules/HappyActivityMapper.xml @@ -1,44 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="cc.mrbird.febs.mall.mapper.HappyActivityMapper"> +<mapper namespace="cc.mrbird.febs.mall.mapper.HappyActivityConnectMapper"> - <select id="selectActivityPage" resultType="cc.mrbird.febs.mall.vo.api.activity.ApiActivityInfoVo"> + <select id="selectConnectListPage" resultType="cc.mrbird.febs.mall.vo.ApiConnectListInPageVo"> select - a.id, - a.index_img, - a.code, - a.name, - a.state, - a.join_cnt, - a.start_time, - a.end_time - from happy_activity a - <where> - a.state != 0 - and a.DELETE_FLAG = 0 - <if test="record != null"> - <if test="record.query != null and record.query != ''"> - and a.name like CONCAT('%', CONCAT(#{record.query}, '%')) - </if> - <if test="record.hotState != null"> - and a.hot_state=#{record.hotState} - </if> - <if test="record.categoryId != null"> - and a.category_id=#{record.categoryId} - </if> - </if> - </where> - order by a.order_cnt asc, a.id desc - </select> - - <select id="getVoteRecordInPage" resultType="cc.mrbird.febs.mall.vo.api.activity.options.ApiVoteRecordInPageVo"> - select - a.member_id as memberId, - a.created_time as createdTime - from happy_follow a + a.* + from happy_activity_connect a where - a.type = 4 - and a.source_option_id = #{record.sourceOptionId} + a.member_id = #{record.memberId} order by a.id desc </select> diff --git a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml new file mode 100644 index 0000000..02086bc --- /dev/null +++ b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.mall.mapper.HappyActivityMapper"> + + <select id="selectActivityPage" resultType="cc.mrbird.febs.mall.vo.ApiActivityInfoVo"> + select + a.id, + a.index_img, + a.code, + a.name, + a.state, + a.join_cnt, + a.start_time, + a.end_time + from happy_activity a + <where> + a.state != 0 + and a.DELETE_FLAG = 0 + <if test="record != null"> + <if test="record.query != null and record.query != ''"> + and a.name like CONCAT('%', CONCAT(#{record.query}, '%')) + </if> + <if test="record.hotState != null"> + and a.hot_state=#{record.hotState} + </if> + <if test="record.categoryId != null"> + and a.category_id=#{record.categoryId} + </if> + </if> + </where> + order by a.order_cnt asc, a.id desc + </select> + + <select id="getVoteRecordInPage" resultType="cc.mrbird.febs.mall.vo.ApiVoteRecordInPageVo"> + select + a.member_id as memberId, + a.created_time as createdTime + from happy_follow a + where + a.type = 4 + and a.source_option_id = #{record.sourceOptionId} + order by a.id desc + </select> + +</mapper> \ No newline at end of file -- Gitblit v1.9.1