src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityOrderController.java
@@ -3,8 +3,11 @@ 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.dto.activity.ApiActivityOrderListDto; 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 io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -82,4 +85,24 @@ return happyActivityService.payOrder(dto); } @ApiOperation(value = "我的报名-列表", notes = "我的报名-列表") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiActivityOrderListVo.class) }) @PostMapping(value = "/orderList") public FebsResponse orderList(@RequestBody ApiActivityOrderListDto dto) { return happyActivityService.orderList(dto); } @ApiOperation(value = "我的报名-详情", notes = "我的报名-详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiActivityOrderInfoVo.class) }) @GetMapping(value = "/orderInfo/{id}") public FebsResponse orderInfo(@PathVariable("id") Long id) { return happyActivityService.orderInfo(id); } } src/main/java/cc/mrbird/febs/mall/dto/activity/ApiActivityOrderListDto.java
New file @@ -0,0 +1,20 @@ package cc.mrbird.febs.mall.dto.activity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "ApiActivityOrderListDto", description = "订单列表参数接收类") public class ApiActivityOrderListDto { @ApiModelProperty(value = "一页数量", example = "10") private Integer pageSize; @ApiModelProperty(value = "第几页", example = "1") private Integer pageNum; @ApiModelProperty(value = "订单状态", example = "订单状态 1-待支付 2-待使用 3-已使用 4-售后") private Integer state; } src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java
@@ -2,6 +2,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.ApiVoteOptionInPageDto; import cc.mrbird.febs.mall.entity.HappyActivity; import cc.mrbird.febs.mall.dto.ApiOperateDoDto; @@ -48,4 +49,8 @@ void addLikeCnt(Long sourceOptionId); void substructJoinCnt(Long activityId,Integer cnt); FebsResponse orderList(ApiActivityOrderListDto dto); FebsResponse orderInfo(Long id); } src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
@@ -7,6 +7,7 @@ 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.dto.activity.ApiActivityOrderListDto; import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; @@ -14,6 +15,8 @@ import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.vo.*; 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.pay.model.BrandWCPayRequestData; import cc.mrbird.febs.pay.service.IXcxPayService; import cn.hutool.core.bean.BeanUtil; @@ -25,6 +28,7 @@ import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -35,6 +39,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @Slf4j @@ -51,6 +56,7 @@ private final HappyActivityOrderItemMapper happyActivityOrderItemMapper; private final IXcxPayService iXcxPayService; private final IApiMallMemberWalletService iApiMallMemberWalletService; private final HappyActivityCategoryMapper happyActivityCategoryMapper; @Override public FebsResponse activityList(ApiActivityInfoDto dto) { @@ -492,6 +498,8 @@ } } // 处理无需支付订单 private void processNoPayOrder(HappyActivityOrder order, Long orderId) { updateOrderState(order, StateUpDownEnum.PAY_METHOD_NO_PAY.getCode(), StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode(),StateUpDownEnum.ORDER_STATE_WAIT_USE.getCode()); @@ -552,6 +560,101 @@ return happyActivityOrder.getOrderNo(); } @Override public FebsResponse orderList(ApiActivityOrderListDto dto) { // 获取当前登录用户的ID Long memberId = LoginUserUtil.getLoginUser().getId(); ArrayList<ApiActivityOrderListVo> apiActivityOrderListVos = new ArrayList<>(); LambdaQueryWrapper<HappyActivityOrder> happyActivityOrderLambdaQueryWrapper = new LambdaQueryWrapper<>(); happyActivityOrderLambdaQueryWrapper.eq(HappyActivityOrder::getMemberId, memberId); if(ObjectUtil.isNotEmpty(dto.getState())){ happyActivityOrderLambdaQueryWrapper.eq(HappyActivityOrder::getState, dto.getState()); } happyActivityOrderLambdaQueryWrapper.orderByDesc(HappyActivityOrder::getCreatedTime); Page<HappyActivityOrder> page = new Page<>(dto.getPageNum(), dto.getPageSize()); Page<HappyActivityOrder> voteActivityPage = happyActivityOrderMapper.selectPage(page, happyActivityOrderLambdaQueryWrapper); List<HappyActivityOrder> records = voteActivityPage.getRecords(); if(CollUtil.isNotEmpty(records)){ Set<Long> activityIds = records.stream().map(HappyActivityOrder::getActivityId).collect(Collectors.toSet()); List<HappyActivity> happyActivities = this.baseMapper.selectList( new LambdaQueryWrapper<HappyActivity>() .select( HappyActivity::getCategoryId, HappyActivity::getName, HappyActivity::getStartTime, HappyActivity::getEndTime, HappyActivity::getAddress) .in(HappyActivity::getId, activityIds) ); Map<Long, HappyActivity> activityMap = happyActivities.stream().collect(Collectors.toMap(HappyActivity::getId, Function.identity())); Set<Long> categoryIds = happyActivities.stream().map(HappyActivity::getCategoryId).collect(Collectors.toSet()); //stream流操作categoryIds得到一个Map<categoryId,HappyActivityCategory>的map对象 List<HappyActivityCategory> happyActivityCategories = happyActivityCategoryMapper.selectList( new LambdaQueryWrapper<HappyActivityCategory>() .select( HappyActivityCategory::getId, HappyActivityCategory::getName) .in(HappyActivityCategory::getId,categoryIds) ); Map<Long, HappyActivityCategory> categoryMap = happyActivityCategories.stream().collect(Collectors.toMap(HappyActivityCategory::getId, Function.identity())); for(HappyActivityOrder happyActivityOrder : records){ ApiActivityOrderListVo apiActivityOrderListVo = new ApiActivityOrderListVo(); BeanUtil.copyProperties(happyActivityOrder, apiActivityOrderListVo); apiActivityOrderListVo.setActivityName(activityMap.get(happyActivityOrder.getActivityId()).getName()); apiActivityOrderListVo.setStartTime(activityMap.get(happyActivityOrder.getActivityId()).getStartTime()); apiActivityOrderListVo.setEndTime(activityMap.get(happyActivityOrder.getActivityId()).getEndTime()); apiActivityOrderListVo.setAddress(activityMap.get(happyActivityOrder.getActivityId()).getAddress()); apiActivityOrderListVo.setCategoryName(categoryMap.get(activityMap.get(happyActivityOrder.getActivityId()).getCategoryId()).getName()); apiActivityOrderListVos.add(apiActivityOrderListVo); } } return new FebsResponse().success().data(apiActivityOrderListVos); } @Override public FebsResponse orderInfo(Long id) { // 获取当前登录用户的ID Long memberId = LoginUserUtil.getLoginUser().getId(); ArrayList<ApiActivityOrderInfoVo> apiActivityOrderInfoVos = new ArrayList<>(); HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(id); HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrder.getActivityId()); List<HappyActivityOrderItem> happyActivityOrderItems = happyActivityOrderItemMapper.selectList( new LambdaQueryWrapper<HappyActivityOrderItem>() .eq(HappyActivityOrderItem::getOrderId, happyActivityOrder.getActivityId()) .eq(HappyActivityOrderItem::getMemberId, memberId) ); if(CollUtil.isNotEmpty(happyActivityOrderItems)){ for(HappyActivityOrderItem happyActivityOrderItem : happyActivityOrderItems){ ApiActivityOrderInfoVo apiActivityOrderInfoVo = new ApiActivityOrderInfoVo(); BeanUtil.copyProperties(happyActivityOrderItem, apiActivityOrderInfoVo); apiActivityOrderInfoVo.setOrderState(happyActivityOrder.getState()); apiActivityOrderInfoVo.setActivityName(happyActivity.getName()); apiActivityOrderInfoVo.setActivityStartTime(happyActivity.getStartTime()); apiActivityOrderInfoVo.setActivityEndTime(happyActivity.getEndTime()); apiActivityOrderInfoVo.setActivityAddress(happyActivity.getAddress()); apiActivityOrderInfoVos.add(apiActivityOrderInfoVo); } } return new FebsResponse().success().data(apiActivityOrderInfoVos); } public static void main(String[] args) { Date date = new Date(); src/main/java/cc/mrbird/febs/mall/vo/ApiActivityInfoVo.java
@@ -24,6 +24,9 @@ @ApiModelProperty(value = "名称") private String name; @ApiModelProperty(value = "地点") private String address; @ApiModelProperty(value = "状态 0-未开始 1-报名中(进行中) 2-已结束") private Integer state; src/main/java/cc/mrbird/febs/mall/vo/activity/ApiActivityOrderInfoVo.java
New file @@ -0,0 +1,53 @@ 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 = "ApiActivityOrderInfoVo", description = "参数") public class ApiActivityOrderInfoVo { @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 = "票据状态 0-待使用 1-已使用") private Integer state; @ApiModelProperty(value = "实付金额") private BigDecimal price; @ApiModelProperty(value = "订单状态 1-待支付 2-待使用 3-已使用 4-售后") private Integer orderState; } src/main/java/cc/mrbird/febs/mall/vo/activity/ApiActivityOrderListVo.java
New file @@ -0,0 +1,50 @@ 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 = "ApiActivityOrderListVo", description = "参数") public class ApiActivityOrderListVo { private Long id; @ApiModelProperty(value = "订单号") private String orderNo; @ApiModelProperty(value = "单价") private BigDecimal price; @ApiModelProperty(value = "数量") private Integer numCnt; @ApiModelProperty(value = "支付总金额") private BigDecimal amount; @ApiModelProperty(value = "支付状态 0-待支付 1-支付成功 2-支付失败") private Integer payState; @ApiModelProperty(value = "支付方式 1-余额支付 2-微信支付 3-积分支付 0-无需支付(免费)") private Integer payType; @ApiModelProperty(value = "支付时间") private Date payTime; @ApiModelProperty(value = "订单状态 1-待支付 2-待使用 3-已使用 4-售后") private Integer state; @ApiModelProperty(value = "活动名称") private String activityName; @ApiModelProperty(value = "活动开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; @ApiModelProperty(value = "活动结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; @ApiModelProperty(value = "活动地点") private String address; @ApiModelProperty(value = "活动类别") private String categoryName; } src/main/resources/application-test.yml
@@ -70,8 +70,8 @@ # wecharpaySecret: CSxc168888CSxc168888CSxc168888xc xcx: wechar_login_url: https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code xcx_appid: wxad2fdb2fcad10fb21 xcx_secret: 9bb58d655bff419feec3a6d948ca8b8d1 xcx_appid: wxe8454293f5c4c143 xcx_secret: 33c3ad513344cf6c16904e5d528b70ea debug: true wecharPaynotifyUrl: http://blnka.csxuncong.com/api/xcxPay/wxpayCallback wecharActivityPaynotifyUrl: http://blnka.csxuncong.com/api/xcxPay/wxpayCallback src/main/resources/mapper/modules/HappyActivityOptionMapper.xml
@@ -5,6 +5,7 @@ <select id="selectActivityPage" resultType="cc.mrbird.febs.mall.vo.ApiActivityInfoVo"> select a.id, a.address, a.index_img, a.code, a.name,