This commit is contained in:
zt
2025-06-17 09:24:48 +08:00
parent 5dbe070640
commit a9a2460a0e
16 changed files with 275 additions and 106 deletions

View File

@ -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<PageResult<ActivityPayPageRVO>> getActivityPayPageNew(@Valid ActivityPayPageVO pageReqVO) {
PageResult<ActivityPayPageRVO> 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<ActivityPayPageRVO> list = activityPayService.getPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动付款.xls", "数据", ActivityPayPageRVO.class,
list);
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -53,4 +53,8 @@ public class ActivityAwardsUserDO extends BaseDO {
*/
private Long awardsId;
private String prize;
private String awardsName;
}

View File

@ -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<ActivityPayDO> {
Page<AppActivityPayRespVO> getPage(@Param("page") Page<ActivityPayPageReqVO> page, @Param("reqVO") ActivityPayPageReqVO reqVO);
Page<ActivityPayPageRVO> getPage1(@Param("page") Page<ActivityPayPageVO> page, @Param("reqVO") ActivityPayPageVO reqVO);
}

View File

@ -257,8 +257,8 @@ public class ActivityServiceImpl implements ActivityService {
// 查询当天中奖用户
List<ActivityAwardsUserDO> activityAwardsUserDOList = activityAwardsUserService.getAwardsUserListByActivityId(activityDO.getId());
Set<Long> 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<ActivityAwardsDO> limitTypeList = activityAwardsService.getListByActivityIdAndAwardsStatus(activityDO.getId(), "1");
//优先排除这批中奖人员
if(CollectionUtil.isNotEmpty(limitTypeList)){
for (ActivityAwardsDO activityAwardsDO : limitTypeList) {
Map<Long, Long> map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwardsDO.getId()))
.collect(Collectors.groupingBy(
ActivityAwardsUserDO::getUserId,
Collectors.counting()
));
Integer awardsNum = activityAwardsDO.getAwardsNum();
// 筛选出次数 大于限定次数 的用户ID存入Set去重
Set<Long> 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<Long, Long> map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId()))
.collect(Collectors.groupingBy(
ActivityAwardsUserDO::getUserId,
Collectors.counting()
));
//每个人可中奖次数
Integer awardsNum = activityAwards.getAwardsNum();
// 筛选出次数 大于限定次数 的用户ID存入Set去重
Set<Long> inconsistentUserList = map.entrySet().stream()
.filter(entry -> entry.getValue() >= awardsNum)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
drawUserPool.removeAll(inconsistentUserList);
}
// //查询整个活动中限制类型为整个活动1的奖项
// List<ActivityAwardsDO> limitTypeList = activityAwardsService.getListByActivityIdAndAwardsStatus(activityDO.getId(), "1");
// //优先排除这批中奖人员
// if(CollectionUtil.isNotEmpty(limitTypeList)){
// for (ActivityAwardsDO activityAwardsDO : limitTypeList) {
// Map<Long, Long> map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwardsDO.getId()))
// .collect(Collectors.groupingBy(
// ActivityAwardsUserDO::getUserId,
// Collectors.counting()
// ));
// Integer awardsNum = activityAwardsDO.getAwardsNum();
// // 筛选出次数 大于限定次数 的用户ID存入Set去重
// Set<Long> 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<Long, Long> map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId()))
// .collect(Collectors.groupingBy(
// ActivityAwardsUserDO::getUserId,
// Collectors.counting()
// ));
//
// //每个人可中奖次数
// Integer awardsNum = activityAwards.getAwardsNum();
//
// // 筛选出次数 大于限定次数 的用户ID存入Set去重
// Set<Long> inconsistentUserList = map.entrySet().stream()
// .filter(entry -> entry.getValue() >= awardsNum)
// .map(Map.Entry::getKey)
// .collect(Collectors.toSet());
// drawUserPool.removeAll(inconsistentUserList);
// }
//开始抽奖
List<Long> 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);

View File

@ -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<AppUserAwardsVO> getListByActivityIdAndUserId(Long activityId, Long userId) {
return activityAwardsUserMapper
.selectJoinList(AppUserAwardsVO.class,
new MPJLambdaWrapper<ActivityAwardsUserDO>()
.select(ActivityAwardsDO::getPrize, ActivityAwardsDO::getAwardsName)
.select(ActivityAwardsUserDO::getAwardsStatus, ActivityAwardsUserDO::getCreateTime, ActivityAwardsUserDO::getId)
.leftJoin(ActivityAwardsDO.class, ActivityAwardsDO::getId, ActivityAwardsUserDO::getAwardsId)
List<ActivityAwardsUserDO> activityAwardsUserDOS = activityAwardsUserMapper.selectList(Wrappers.<ActivityAwardsUserDO>lambdaQuery()
.eq(ActivityAwardsUserDO::getActivityId, activityId)
.eq(ActivityAwardsUserDO::getUserId, userId)
.orderByAsc(ActivityAwardsUserDO::getCreateTime));
);
return BeanUtil.copyToList(activityAwardsUserDOS, AppUserAwardsVO.class);
}

View File

@ -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<ActivityPayPageRVO> getPage(ActivityPayPageVO pageVO);
}

View File

@ -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<Long> collect = menu.stream().map(MenuDTO::getMenuId).collect(Collectors.toList());
List<ActivityMenuDO> 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<String> 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<String> list = Arrays.asList(split);
size = list.size();
}
List<ActivityPayTableDO> 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<String> 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<ActivityPayPageRVO> getPage(ActivityPayPageVO pageVO) {
Page<ActivityPayPageVO> queryDTOPage = new Page<>();
queryDTOPage.setCurrent(pageVO.getPageNo());
queryDTOPage.setSize(pageVO.getPageSize());
Page<ActivityPayPageRVO> activityAwardsUserRespVOPage = activityPayMapper.getPage1(queryDTOPage, pageVO);
return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal());
}
}

View File

@ -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<ActivityVoucherDO> getActivityVoucherPage(ActivityVoucherPageReqVO pageReqVO);
List<ActivityVoucherDO> getListByIds(List<Long> ids);
}

View File

@ -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<ActivityVoucherDO> getListByIds(List<Long> ids) {
return activityVoucherMapper.selectList(Wrappers.<ActivityVoucherDO>lambdaQuery().in(ActivityVoucherDO::getId, ids));
}
}

View File

@ -62,4 +62,8 @@ public interface ActivityVoucherUserService {
Boolean checkVoucher(ActivityVoucherVO vo);
void updateByVoucherIdAndUserId(Long id);
void updateByIds(List<String> ids);
List<ActivityVoucherUserDO> getListByIds(List<String> ids);
}

View File

@ -119,14 +119,16 @@ public class ActivityVoucherUserServiceImpl implements ActivityVoucherUserServic
@Override
public Boolean checkVoucher(ActivityVoucherVO vo) {
List<ActivityVoucherUserDO> 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<String> ids) {
activityVoucherUserMapper.update(null,Wrappers.lambdaUpdate(ActivityVoucherUserDO.class)
.in(ActivityVoucherUserDO::getId,ids)
.set(ActivityVoucherUserDO::getStatus,"1")
);
}
@Override
public List<ActivityVoucherUserDO> getListByIds(List<String> ids) {
return activityVoucherUserMapper.selectList(Wrappers.lambdaQuery(ActivityVoucherUserDO.class)
.in(ActivityVoucherUserDO::getId,ids)
);
}
}

View File

@ -24,7 +24,7 @@
<select id="getPage" resultType="cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO">
select p.*,a.activity_name from member_activity_pay p left join member_activity a on p.activity_id = a.id
WHERE 1=1
WHERE p.deleted = false
<if test="reqVO.isDish">
and p.dish is not null
</if>
@ -42,6 +42,36 @@
</foreach>
)
</if>
order by p.id desc
</select>
<select id="getPage1" resultType="cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageRVO">
select t.id,
a.activity_name ,
m.name ,
t.serial_numbers ,
t.price ,
t.nick_name ,
t.mobile ,
t.voucher,
DATE_FORMAT(t.reserve_time, '%Y-%m-%d') as reserve_time,
t.create_time
from (select * from member_activity_pay where deleted =false) t
left join member_activity_table_dish d on t.activity_id = d.activity_id and SUBSTRING_INDEX(t.serial_numbers, ',', 1) = d.serial_number
left join member_activity_merchant m on d.merchant_id = m.id and d.deleted = false
left join member_activity a on a.id = t.activity_id
where 1=1
<if test="reqVO.merchantId !=null and reqVO.merchantId!='' ">
and d.merchant_id = #{reqVO.merchantId}
</if>
<if test="reqVO.reserveTime !=null and reqVO.reserveTime!='' ">
and DATE_FORMAT(t.reserve_time, '%Y-%m-%d') = #{reqVO.reserveTime}
</if>
<if test="reqVO.isDish">
and p.dish is null
</if>
order by t.id desc
</select>
</mapper>

View File

@ -45,7 +45,7 @@ public class PayOrderSubmitReqVO {
private String diningPeriod;
private Long voucherId;
private String voucherId;
private List<MenuVO> menuList;
}

View File

@ -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());