优化
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -53,4 +53,8 @@ public class ActivityAwardsUserDO extends BaseDO {
|
||||
*/
|
||||
private Long awardsId;
|
||||
|
||||
private String prize;
|
||||
|
||||
private String awardsName;
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
|
@ -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)
|
||||
.eq(ActivityAwardsUserDO::getActivityId, activityId)
|
||||
.eq(ActivityAwardsUserDO::getUserId, userId)
|
||||
.orderByAsc(ActivityAwardsUserDO::getCreateTime));
|
||||
|
||||
|
||||
List<ActivityAwardsUserDO> activityAwardsUserDOS = activityAwardsUserMapper.selectList(Wrappers.<ActivityAwardsUserDO>lambdaQuery()
|
||||
.eq(ActivityAwardsUserDO::getActivityId, activityId)
|
||||
.eq(ActivityAwardsUserDO::getUserId, userId)
|
||||
);
|
||||
return BeanUtil.copyToList(activityAwardsUserDOS, AppUserAwardsVO.class);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
@ -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));
|
||||
}
|
||||
}
|
@ -59,7 +59,11 @@ public interface ActivityVoucherUserService {
|
||||
|
||||
List<AppActivityVoucherUserRespVO> getActivityVoucherList(ActivityVoucherUserPageReqVO pageReqVO);
|
||||
|
||||
Boolean checkVoucher( ActivityVoucherVO vo);
|
||||
Boolean checkVoucher(ActivityVoucherVO vo);
|
||||
|
||||
void updateByVoucherIdAndUserId(Long id);
|
||||
|
||||
void updateByIds(List<String> ids);
|
||||
|
||||
List<ActivityVoucherUserDO> getListByIds(List<String> ids);
|
||||
}
|
@ -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)
|
||||
);
|
||||
}
|
||||
}
|
@ -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>
|
@ -45,7 +45,7 @@ public class PayOrderSubmitReqVO {
|
||||
|
||||
private String diningPeriod;
|
||||
|
||||
private Long voucherId;
|
||||
private String voucherId;
|
||||
|
||||
private List<MenuVO> menuList;
|
||||
}
|
||||
|
@ -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());
|
||||
|
Reference in New Issue
Block a user