From a9a2460a0e6980ac0c7e2f61da99bf793e0e3d43 Mon Sep 17 00:00:00 2001 From: zt Date: Tue, 17 Jun 2025 09:24:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activitypay/ActivityPayController.java | 26 +++++- .../activitypay/vo/ActivityPayPageRVO.java | 46 ++++++++++ .../activitypay/vo/ActivityPayPageVO.java | 23 +++++ .../ActivityAwardsUserDO.java | 4 + .../mysql/activitypay/ActivityPayMapper.java | 5 ++ .../service/activity/ActivityServiceImpl.java | 90 ++++++++++--------- .../ActivityAwardsUserServiceImpl.java | 18 ++-- .../activitypay/ActivityPayService.java | 6 +- .../activitypay/ActivityPayServiceImpl.java | 57 +++++++----- .../ActivityVoucherService.java | 12 +-- .../ActivityVoucherServiceImpl.java | 25 +++--- .../ActivityVoucherUserService.java | 6 +- .../ActivityVoucherUserServiceImpl.java | 27 ++++-- .../mapper/activitypay/ActivityPayMapper.xml | 32 ++++++- .../admin/order/vo/PayOrderSubmitReqVO.java | 2 +- .../service/order/PayOrderServiceImpl.java | 2 +- 16 files changed, 275 insertions(+), 106 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageRVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageVO.java diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/ActivityPayController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/ActivityPayController.java index 78606164..51841208 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/ActivityPayController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/ActivityPayController.java @@ -6,9 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayRespVO; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService; import io.swagger.v3.oas.annotations.Operation; @@ -77,6 +75,15 @@ public class ActivityPayController { return success(BeanUtils.toBean(pageResult, ActivityPayRespVO.class)); } + @GetMapping("/pageNew") + @Operation(summary = "获得活动付款分页") + @PreAuthorize("@ss.hasPermission('member:activity-pay:query')") + public CommonResult> getActivityPayPageNew(@Valid ActivityPayPageVO pageReqVO) { + PageResult pageResult = activityPayService.getPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") @Operation(summary = "导出活动付款 Excel") @PreAuthorize("@ss.hasPermission('member:activity-pay:export')") @@ -90,4 +97,17 @@ public class ActivityPayController { BeanUtils.toBean(list, ActivityPayRespVO.class)); } + @GetMapping("/export-excelNew") + @Operation(summary = "导出活动付款 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-pay:export')") + @OperateLog(type = EXPORT) + public void exportActivityPayExcelNew(@Valid ActivityPayPageVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityPayService.getPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动付款.xls", "数据", ActivityPayPageRVO.class, + list); + } + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageRVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageRVO.java new file mode 100644 index 00000000..805ece6e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageRVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 活动付款分页 Request VO") +@Data +@ToString(callSuper = true) +public class ActivityPayPageRVO { + + + @ExcelProperty("编号") + private Long id; + + @ExcelProperty("活动名") + private String activityName; + + @ExcelProperty("商户名称") + private String name; + + @ExcelProperty("桌号") + private String serialNumbers; + + @ExcelProperty("价格") + private BigDecimal price; + + @ExcelProperty("用户昵称") + private String nickName; + + @ExcelProperty("电话") + private String mobile; + + @ExcelProperty("预约就餐时间") + private String reserveTime; + + @ExcelProperty("电话") + private String voucher; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageVO.java new file mode 100644 index 00000000..dc60a3d2 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 活动付款分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ActivityPayPageVO extends PageParam { + + + + @Schema(description = "是否排除加菜") + private Boolean isDish = false; + + private Long merchantId; + + private String reserveTime; +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawardsuser/ActivityAwardsUserDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawardsuser/ActivityAwardsUserDO.java index 9a95ab46..2f060fa0 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawardsuser/ActivityAwardsUserDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawardsuser/ActivityAwardsUserDO.java @@ -53,4 +53,8 @@ public class ActivityAwardsUserDO extends BaseDO { */ private Long awardsId; + private String prize; + + private String awardsName; + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypay/ActivityPayMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypay/ActivityPayMapper.java index 6fe0ba82..6c0ab192 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypay/ActivityPayMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypay/ActivityPayMapper.java @@ -4,7 +4,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageRVO; import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageVO; import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO; import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -36,4 +38,7 @@ public interface ActivityPayMapper extends BaseMapperX { Page getPage(@Param("page") Page page, @Param("reqVO") ActivityPayPageReqVO reqVO); + + + Page getPage1(@Param("page") Page page, @Param("reqVO") ActivityPayPageVO reqVO); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java index da6f9d65..c40b9f3f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java @@ -257,8 +257,8 @@ public class ActivityServiceImpl implements ActivityService { // 查询当天中奖用户 List activityAwardsUserDOList = activityAwardsUserService.getAwardsUserListByActivityId(activityDO.getId()); - - + Set collect = activityAwardsUserDOList.stream().map(ActivityAwardsUserDO::getUserId).collect(Collectors.toSet()); + drawUserPool.removeAll(collect); //统计已中该奖项的人数 // int count = (int) activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId())).count(); // @@ -266,48 +266,48 @@ public class ActivityServiceImpl implements ActivityService { // throw exception(ACTIVITY_AWARDS_EXCEED); // } - //查询整个活动中限制类型为整个活动(1)的奖项 - List limitTypeList = activityAwardsService.getListByActivityIdAndAwardsStatus(activityDO.getId(), "1"); - //优先排除这批中奖人员 - if(CollectionUtil.isNotEmpty(limitTypeList)){ - for (ActivityAwardsDO activityAwardsDO : limitTypeList) { - Map map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwardsDO.getId())) - .collect(Collectors.groupingBy( - ActivityAwardsUserDO::getUserId, - Collectors.counting() - )); - Integer awardsNum = activityAwardsDO.getAwardsNum(); - // 筛选出次数 大于限定次数 的用户ID,存入Set去重 - Set inconsistentUserList = map.entrySet().stream() - .filter(entry -> entry.getValue() >= awardsNum) - .map(Map.Entry::getKey) - .collect(Collectors.toSet()); - // 从抽奖用户池中移除次数大于限定次数的用户 - drawUserPool.removeAll(inconsistentUserList); - } - } - - // 获取该奖项的限制类型 - String limitType = activityAwards.getLimitType(); - - //如果是单个奖项(2)的话,需要排除该奖项次数满的 整个活动(1)的话上面已排除 无限制(3)无需排除 - if ("2".equals(limitType)){ - Map map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId())) - .collect(Collectors.groupingBy( - ActivityAwardsUserDO::getUserId, - Collectors.counting() - )); - - //每个人可中奖次数 - Integer awardsNum = activityAwards.getAwardsNum(); - - // 筛选出次数 大于限定次数 的用户ID,存入Set去重 - Set inconsistentUserList = map.entrySet().stream() - .filter(entry -> entry.getValue() >= awardsNum) - .map(Map.Entry::getKey) - .collect(Collectors.toSet()); - drawUserPool.removeAll(inconsistentUserList); - } +// //查询整个活动中限制类型为整个活动(1)的奖项 +// List limitTypeList = activityAwardsService.getListByActivityIdAndAwardsStatus(activityDO.getId(), "1"); +// //优先排除这批中奖人员 +// if(CollectionUtil.isNotEmpty(limitTypeList)){ +// for (ActivityAwardsDO activityAwardsDO : limitTypeList) { +// Map map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwardsDO.getId())) +// .collect(Collectors.groupingBy( +// ActivityAwardsUserDO::getUserId, +// Collectors.counting() +// )); +// Integer awardsNum = activityAwardsDO.getAwardsNum(); +// // 筛选出次数 大于限定次数 的用户ID,存入Set去重 +// Set inconsistentUserList = map.entrySet().stream() +// .filter(entry -> entry.getValue() >= awardsNum) +// .map(Map.Entry::getKey) +// .collect(Collectors.toSet()); +// // 从抽奖用户池中移除次数大于限定次数的用户 +// drawUserPool.removeAll(inconsistentUserList); +// } +// } +// +// // 获取该奖项的限制类型 +// String limitType = activityAwards.getLimitType(); +// +// //如果是单个奖项(2)的话,需要排除该奖项次数满的 整个活动(1)的话上面已排除 无限制(3)无需排除 +// if ("2".equals(limitType)){ +// Map map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId())) +// .collect(Collectors.groupingBy( +// ActivityAwardsUserDO::getUserId, +// Collectors.counting() +// )); +// +// //每个人可中奖次数 +// Integer awardsNum = activityAwards.getAwardsNum(); +// +// // 筛选出次数 大于限定次数 的用户ID,存入Set去重 +// Set inconsistentUserList = map.entrySet().stream() +// .filter(entry -> entry.getValue() >= awardsNum) +// .map(Map.Entry::getKey) +// .collect(Collectors.toSet()); +// drawUserPool.removeAll(inconsistentUserList); +// } //开始抽奖 List longs = selectRandom(drawUserPool, drawVO.getNum()); @@ -326,6 +326,8 @@ public class ActivityServiceImpl implements ActivityService { activityAwardsUserDO.setMobile(user.getMobile()); activityAwardsUserDO.setAwardsId(activityAwards.getId()); activityAwardsUserDO.setAwardsStatus("0"); + activityAwardsUserDO.setPrize(activityAwards.getPrize()); + activityAwardsUserDO.setAwardsName(activityAwards.getAwardsName()); list.add(activityAwardsUserDO); } activityAwardsUserService.insertBatch(list); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserServiceImpl.java index b14ef111..074b5540 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.member.service.activityawardsuser; +import cn.hutool.core.bean.BeanUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO; @@ -8,11 +9,9 @@ import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.Act import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserSaveReqVO; import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO; import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUserAwardsVO; -import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO; import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; import cn.iocoder.yudao.module.member.dal.mysql.activityawardsuser.ActivityAwardsUserMapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -118,16 +117,13 @@ public class ActivityAwardsUserServiceImpl implements ActivityAwardsUserService @Override public List getListByActivityIdAndUserId(Long activityId, Long userId) { - return activityAwardsUserMapper - .selectJoinList(AppUserAwardsVO.class, - new MPJLambdaWrapper() - .select(ActivityAwardsDO::getPrize, ActivityAwardsDO::getAwardsName) - .select(ActivityAwardsUserDO::getAwardsStatus, ActivityAwardsUserDO::getCreateTime, ActivityAwardsUserDO::getId) - .leftJoin(ActivityAwardsDO.class, ActivityAwardsDO::getId, ActivityAwardsUserDO::getAwardsId) - .eq(ActivityAwardsUserDO::getActivityId, activityId) - .eq(ActivityAwardsUserDO::getUserId, userId) - .orderByAsc(ActivityAwardsUserDO::getCreateTime)); + + List activityAwardsUserDOS = activityAwardsUserMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityAwardsUserDO::getActivityId, activityId) + .eq(ActivityAwardsUserDO::getUserId, userId) + ); + return BeanUtil.copyToList(activityAwardsUserDOS, AppUserAwardsVO.class); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayService.java index d5d9cd8a..79db04c8 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayService.java @@ -1,9 +1,7 @@ package cn.iocoder.yudao.module.member.service.activitypay; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.*; import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO; import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO; import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; @@ -77,4 +75,6 @@ public interface ActivityPayService { ActivityPayDO getOneByActivityIdAndTimeAndNum(Long activityId, LocalDate time, Integer num); void updateOne(ActivityPayDO activityPayDO ); + + PageResult getPage(ActivityPayPageVO pageVO); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java index a252f4b6..bd29fc1e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java @@ -6,9 +6,7 @@ import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.api.activitypay.dto.MenuDTO; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; -import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.*; import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO; import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO; import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; @@ -16,8 +14,6 @@ import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.Activity import cn.iocoder.yudao.module.member.dal.dataobject.activitymenu.ActivityMenuDO; import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO; -import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; -import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucheruser.ActivityVoucherUserDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.activitypay.ActivityPayMapper; import cn.iocoder.yudao.module.member.service.activitymenu.ActivityMenuService; @@ -35,7 +31,6 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; -import java.math.RoundingMode; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; @@ -152,9 +147,13 @@ public class ActivityPayServiceImpl implements ActivityPayService { if (StrUtil.isBlank(createReqVO.getDish())) { List collect = menu.stream().map(MenuDTO::getMenuId).collect(Collectors.toList()); - List listByIds = activityMenuService.getListByIds(collect); - activityPayDO.setMenuIds(listByIds.stream().map(ActivityMenuDO::getId).map(String::valueOf).collect(Collectors.joining(","))); - activityPayDO.setMenuNames(listByIds.stream().map(ActivityMenuDO::getMenuName).collect(Collectors.joining(","))); + activityPayDO.setMenuIds(collect.stream().map(String::valueOf).collect(Collectors.joining(","))); + List menuNames = new ArrayList<>(); + for(MenuDTO menuDTO : createReqVO.getMenu()){ + ActivityMenuDO activityMenu = activityMenuService.getActivityMenu(menuDTO.getMenuId()); + menuNames.add(activityMenu.getMenuName()); + } + activityPayDO.setMenuNames(String.join(",", menuNames)); } if (StrUtil.isNotBlank(createReqVO.getVoucherId())) { @@ -171,9 +170,16 @@ public class ActivityPayServiceImpl implements ActivityPayService { boolean notBlank = StrUtil.isNotBlank(createReqVO.getVoucherId()); + int size = 0; + if(notBlank){ + String voucherId = createReqVO.getVoucherId(); + String[] split = voucherId.split(","); + List list = Arrays.asList(split); + size = list.size(); + } List activityPayTableDOS = new ArrayList<>(); - boolean type2DiscountApplied = false; +// boolean type2DiscountApplied = false; for (MenuDTO menuDTO : menu) { ActivityMenuDO activityMenuDO = menuMap.get(menuDTO.getMenuId()); @@ -181,16 +187,15 @@ public class ActivityPayServiceImpl implements ActivityPayService { activityPayTableDO.setActivityId(activityPayDO.getActivityId()); activityPayTableDO.setSerialNumbers(menuDTO.getSerialNumbers()); activityPayTableDO.setPrice(activityMenuDO.getDishPrice()); - if (notBlank && !type2DiscountApplied) { + if (notBlank ) { BigDecimal dishPrice = activityMenuDO.getDishPrice(); - String voucherId = createReqVO.getVoucherId(); - ActivityVoucherUserDO activityVoucherUser = activityVoucherUserService.getActivityVoucherUser(Long.valueOf(voucherId)); - ActivityVoucherDO activityVoucher = activityVoucherService.getActivityVoucher(activityVoucherUser.getVoucherId()); - if ("1".equals(activityVoucher.getType())) { - dishPrice = dishPrice.multiply(activityVoucher.getNum()).divide(new BigDecimal(10), 2, RoundingMode.HALF_UP); - } else if ("2".equals(activityVoucher.getType())) { - dishPrice = dishPrice.subtract(activityVoucher.getNum()); - type2DiscountApplied = true; + if(size >= 2){ + dishPrice= dishPrice.subtract(new BigDecimal(176)); + size= size-2; + }else if(size == 1){ + dishPrice= dishPrice.subtract(new BigDecimal(88)); + size= 0; + } activityPayTableDO.setPrice(dishPrice); } @@ -222,7 +227,9 @@ public class ActivityPayServiceImpl implements ActivityPayService { if (StrUtil.isNotBlank(createReqVO.getVoucherId())) { String voucherId = createReqVO.getVoucherId(); - activityVoucherUserService.updateByVoucherIdAndUserId(Long.valueOf(voucherId)); + String[] split = voucherId.split(","); + List list = Arrays.asList(split); + activityVoucherUserService.updateByIds(list); } } @@ -310,4 +317,14 @@ public class ActivityPayServiceImpl implements ActivityPayService { public void updateOne(ActivityPayDO activityPayDO) { activityPayMapper.updateById(activityPayDO); } + + @Override + public PageResult getPage(ActivityPayPageVO pageVO) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(pageVO.getPageNo()); + queryDTOPage.setSize(pageVO.getPageSize()); + + Page activityAwardsUserRespVOPage = activityPayMapper.getPage1(queryDTOPage, pageVO); + return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal()); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java index 3289e259..7cda0d70 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java @@ -1,11 +1,12 @@ package cn.iocoder.yudao.module.member.service.activityvoucher; -import java.util.*; -import javax.validation.*; -import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.*; -import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.ActivityVoucherPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.ActivityVoucherSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; + +import javax.validation.Valid; +import java.util.List; /** * 活动代金券 Service 接口 @@ -52,4 +53,5 @@ public interface ActivityVoucherService { */ PageResult getActivityVoucherPage(ActivityVoucherPageReqVO pageReqVO); + List getListByIds(List ids); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java index f0ef4b4f..c47170a6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java @@ -1,21 +1,20 @@ package cn.iocoder.yudao.module.member.service.activityvoucher; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.*; -import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.ActivityVoucherPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.ActivityVoucherSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; import cn.iocoder.yudao.module.member.dal.mysql.activityvoucher.ActivityVoucherMapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_VOUCHER_NOT_EXISTS; /** * 活动代金券 Service 实现类 @@ -71,4 +70,8 @@ public class ActivityVoucherServiceImpl implements ActivityVoucherService { return activityVoucherMapper.selectPage(pageReqVO); } + @Override + public List getListByIds(List ids) { + return activityVoucherMapper.selectList(Wrappers.lambdaQuery().in(ActivityVoucherDO::getId, ids)); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java index aed9818c..6c9a0e47 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java @@ -59,7 +59,11 @@ public interface ActivityVoucherUserService { List getActivityVoucherList(ActivityVoucherUserPageReqVO pageReqVO); - Boolean checkVoucher( ActivityVoucherVO vo); + Boolean checkVoucher(ActivityVoucherVO vo); void updateByVoucherIdAndUserId(Long id); + + void updateByIds(List ids); + + List getListByIds(List ids); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java index d9fe9c98..2c4aa1fb 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java @@ -119,14 +119,16 @@ public class ActivityVoucherUserServiceImpl implements ActivityVoucherUserServic @Override public Boolean checkVoucher(ActivityVoucherVO vo) { List activityVoucherUserDOS = activityVoucherUserMapper.selectList(Wrappers.lambdaQuery(ActivityVoucherUserDO.class) - .eq(ActivityVoucherUserDO::getUserId, vo.getUserId())); + .eq(ActivityVoucherUserDO::getUserId, vo.getUserId()) + .eq(ActivityVoucherUserDO::getStatus, '0') + ); if (activityVoucherUserDOS.isEmpty()) { return false; } - long count = activityVoucherUserDOS.stream().filter(voucher -> "1".equals(voucher.getStatus())).count(); - if (count >= 2) { - return false; - } +// long count = activityVoucherUserDOS.stream().filter(voucher -> "1".equals(voucher.getStatus())).count(); +// if (count >= 2) { +// return false; +// } return true; } @@ -137,4 +139,19 @@ public class ActivityVoucherUserServiceImpl implements ActivityVoucherUserServic .set(ActivityVoucherUserDO::getStatus,"1") ); } + + @Override + public void updateByIds(List ids) { + activityVoucherUserMapper.update(null,Wrappers.lambdaUpdate(ActivityVoucherUserDO.class) + .in(ActivityVoucherUserDO::getId,ids) + .set(ActivityVoucherUserDO::getStatus,"1") + ); + } + + @Override + public List getListByIds(List ids) { + return activityVoucherUserMapper.selectList(Wrappers.lambdaQuery(ActivityVoucherUserDO.class) + .in(ActivityVoucherUserDO::getId,ids) + ); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml index 0bdcb108..9e8a881c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml @@ -24,7 +24,7 @@ + + \ No newline at end of file diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java index 3da83e5d..a19dcfd9 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java @@ -45,7 +45,7 @@ public class PayOrderSubmitReqVO { private String diningPeriod; - private Long voucherId; + private String voucherId; private List menuList; } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java index 365e4894..3d17eaa8 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java @@ -186,7 +186,7 @@ public class PayOrderServiceImpl implements PayOrderService { stringStringHashMap.put("diningPeriod",reqVO.getDiningPeriod()); stringStringHashMap.put("openid",reqVO.getChannelExtras().get("openid")); if(reqVO.getVoucherId()!=null){ - stringStringHashMap.put("voucherId",reqVO.getVoucherId().toString()); + stringStringHashMap.put("voucherId",reqVO.getVoucherId()); } if(reqVO.getSerialNumbers()!=null){ stringStringHashMap.put("serialNumbers",reqVO.getSerialNumbers());