This commit is contained in:
zt
2025-06-12 17:14:33 +08:00
parent a698d53742
commit 57dfb3f316
11 changed files with 82 additions and 27 deletions

View File

@ -44,4 +44,5 @@ public class ActivityPayDTO {
private String voucherId; private String voucherId;
private String transactionId;
} }

View File

@ -37,4 +37,5 @@ public class ActivityPaySaveReqVO {
private String voucherId; private String voucherId;
private String transactionId;
} }

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.member.controller.app.activity; package cn.iocoder.yudao.module.member.controller.app.activity;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
@ -270,13 +271,17 @@ public class AppActivityDrawController {
if(!"0".equals(activityPay.getStatus())){ if(!"0".equals(activityPay.getStatus())){
throw exception(ACTIVITY_PAY_USE); throw exception(ACTIVITY_PAY_USE);
} }
//获取当天日期
LocalDate now = LocalDate.now(); if(StrUtil.isEmpty(activityPay.getDish())){
//比较日期是否相等 //获取当天日期
if(! now.isEqual(activityPay.getReserveTime())){ LocalDate now = LocalDate.now();
throw exception(ACTIVITY_PAY_EXPIRE); //比较日期是否相等
if(! now.isEqual(activityPay.getReserveTime())){
throw exception(ACTIVITY_PAY_EXPIRE);
}
} }
ActivityDO activity = activityService.getActivity(activityPay.getActivityId()); ActivityDO activity = activityService.getActivity(activityPay.getActivityId());
AppReserveQrCodeVO appReserveQrCodeVO = new AppReserveQrCodeVO(); AppReserveQrCodeVO appReserveQrCodeVO = new AppReserveQrCodeVO();
@ -285,6 +290,9 @@ public class AppActivityDrawController {
appReserveQrCodeVO.setMobile(activityPay.getMobile()); appReserveQrCodeVO.setMobile(activityPay.getMobile());
appReserveQrCodeVO.setActivityName(activity.getActivityName()); appReserveQrCodeVO.setActivityName(activity.getActivityName());
appReserveQrCodeVO.setSerialNumbers(activityPay.getSerialNumbers()); appReserveQrCodeVO.setSerialNumbers(activityPay.getSerialNumbers());
if(StrUtil.isNotBlank(activityPay.getDish())){
appReserveQrCodeVO.setDish(activityPay.getDish());
}
appReserveQrCodeVO.setType("2"); appReserveQrCodeVO.setType("2");
String qrCode = QRCodeWithJWTUtil.generateQRCode(JSONUtil.toJsonStr(appReserveQrCodeVO), 350, 350, null);// 生 String qrCode = QRCodeWithJWTUtil.generateQRCode(JSONUtil.toJsonStr(appReserveQrCodeVO), 350, 350, null);// 生
return success(qrCode); return success(qrCode);
@ -381,9 +389,16 @@ public class AppActivityDrawController {
} }
List<Integer> collect = listByActivityIdAndMerchantId.stream().map(ActivityTableDishDO::getSerialNumber).collect(Collectors.toList()); List<Integer> collect = listByActivityIdAndMerchantId.stream().map(ActivityTableDishDO::getSerialNumber).collect(Collectors.toList());
pageReqVO.setSerialNumberList(collect); pageReqVO.setSerialNumberList(collect);
PageResult<AppActivityPayRespVO> pageResult = activityPayService.getUserActivityPayPage(pageReqVO); PageResult<AppActivityPayRespVO> pageResult = activityPayService.getMerchantActivityPayPage(pageReqVO);
return success(pageResult); return success(pageResult);
} }
@GetMapping("/merchant")
@Operation(summary = "获得商家")
public CommonResult<ActivityMerchantDO> getMerchantByMobile(@Valid String mobile) {
return success(activityMerchantService.getByMobile(mobile));
}
} }

View File

@ -8,4 +8,6 @@ public class AppCancelVO {
private Long activityAwardsUserId; private Long activityAwardsUserId;
private Long activityPayId; private Long activityPayId;
private Boolean isAddDish = false;
} }

View File

@ -16,4 +16,6 @@ public class AppReserveQrCodeVO {
private String nickName; private String nickName;
private String type; private String type;
private String dish;
} }

View File

@ -60,4 +60,6 @@ public class ActivityPayDO extends BaseDO {
private String diningPeriod; private String diningPeriod;
private String voucher; private String voucher;
private String transactionId;
} }

View File

@ -1,11 +1,11 @@
package cn.iocoder.yudao.module.member.service.activitymerchant; package cn.iocoder.yudao.module.member.service.activitymerchant;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO;
import javax.validation.Valid;
/** /**
* 活动商家 Service 接口 * 活动商家 Service 接口
@ -52,4 +52,6 @@ public interface ActivityMerchantService {
*/ */
PageResult<ActivityMerchantDO> getActivityMerchantPage(ActivityMerchantPageReqVO pageReqVO); PageResult<ActivityMerchantDO> getActivityMerchantPage(ActivityMerchantPageReqVO pageReqVO);
ActivityMerchantDO getByMobile(String mobile);
} }

View File

@ -1,21 +1,20 @@
package cn.iocoder.yudao.module.member.service.activitymerchant; package cn.iocoder.yudao.module.member.service.activitymerchant;
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.activitymerchant.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO;
import cn.iocoder.yudao.module.member.dal.mysql.activitymerchant.ActivityMerchantMapper; import cn.iocoder.yudao.module.member.dal.mysql.activitymerchant.ActivityMerchantMapper;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 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_MERCHANT_NOT_EXISTS;
/** /**
* 活动商家 Service 实现类 * 活动商家 Service 实现类
@ -71,4 +70,11 @@ public class ActivityMerchantServiceImpl implements ActivityMerchantService {
return activityMerchantMapper.selectPage(pageReqVO); return activityMerchantMapper.selectPage(pageReqVO);
} }
@Override
public ActivityMerchantDO getByMobile(String mobile) {
return activityMerchantMapper.selectOne(Wrappers.<ActivityMerchantDO>lambdaQuery()
.eq(ActivityMerchantDO::getMobile, mobile).last(MemberConstants.LIMIT_ONE));
}
} }

View File

@ -63,6 +63,8 @@ public interface ActivityPayService {
PageResult<AppActivityPayRespVO> getUserActivityPayPage(ActivityPayPageReqVO pageReqVO); PageResult<AppActivityPayRespVO> getUserActivityPayPage(ActivityPayPageReqVO pageReqVO);
PageResult<AppActivityPayRespVO> getMerchantActivityPayPage(ActivityPayPageReqVO pageReqVO);
Boolean reserveCancel(AppCancelVO vo); Boolean reserveCancel(AppCancelVO vo);
List<ActivityPayDO> getListByTime(); List<ActivityPayDO> getListByTime();

View File

@ -172,23 +172,44 @@ public class ActivityPayServiceImpl implements ActivityPayService {
.eq(pageReqVO.getActivityId() != null, ActivityAwardsUserDO::getActivityId, pageReqVO.getActivityId()) .eq(pageReqVO.getActivityId() != null, ActivityAwardsUserDO::getActivityId, pageReqVO.getActivityId())
.eq(pageReqVO.getUserId() != null, ActivityPayDO::getUserId, pageReqVO.getUserId()) .eq(pageReqVO.getUserId() != null, ActivityPayDO::getUserId, pageReqVO.getUserId())
.isNotNull(pageReqVO.getIsDish(), ActivityPayDO::getDish) .isNotNull(pageReqVO.getIsDish(), ActivityPayDO::getDish)
.eq(pageReqVO.getStatus() != null, ActivityPayDO::getStatus, pageReqVO.getStatus())
.in(CollectionUtil.isNotEmpty(pageReqVO.getSerialNumberList()), ActivityPayDO::getSerialNumbers,pageReqVO.getSerialNumberList()) .in(CollectionUtil.isNotEmpty(pageReqVO.getSerialNumberList()), ActivityPayDO::getSerialNumbers,pageReqVO.getSerialNumberList())
.orderByDesc(ActivityPayDO::getCreateTime) .orderByDesc(ActivityPayDO::getCreateTime)
); );
return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal()); return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal());
} }
@Override
public PageResult<AppActivityPayRespVO> getMerchantActivityPayPage(ActivityPayPageReqVO pageReqVO) {
Page<AppActivityPayRespVO> activityAwardsUserRespVOPage = activityPayMapper.selectJoinPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), AppActivityPayRespVO.class,
new MPJLambdaWrapper<ActivityPayDO>()
.selectAll(ActivityPayDO.class)
.select(ActivityDO::getActivityName)
.leftJoin(ActivityDO.class, ActivityDO::getId, ActivityAwardsUserDO::getActivityId)
.isNotNull(pageReqVO.getIsDish(), ActivityPayDO::getDish)
.isNull(!pageReqVO.getIsDish(), ActivityPayDO::getDish)
.eq(pageReqVO.getStatus() != null, ActivityPayDO::getStatus, pageReqVO.getStatus())
.in(CollectionUtil.isNotEmpty(pageReqVO.getSerialNumberList()), ActivityPayDO::getSerialNumbers,pageReqVO.getSerialNumberList())
.orderByAsc(ActivityPayDO::getStatus)
.orderByAsc(ActivityPayDO::getReserveTime)
);
return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal());
}
@Override @Override
public Boolean reserveCancel(AppCancelVO vo) { public Boolean reserveCancel(AppCancelVO vo) {
ActivityPayDO activityPayDO = activityPayMapper.selectById(vo.getActivityPayId()); ActivityPayDO activityPayDO = activityPayMapper.selectById(vo.getActivityPayId());
if(!"0".equals(activityPayDO.getStatus())){ if(!"0".equals(activityPayDO.getStatus())){
throw exception(ACTIVITY_PAY_USE); throw exception(ACTIVITY_PAY_USE);
} }
//获取当天日期
LocalDate now = LocalDate.now(); if(StrUtil.isEmpty(activityPayDO.getDish())){
//比较日期是否相等 //获取当天日期
if(! now.isEqual(activityPayDO.getReserveTime())){ LocalDate now = LocalDate.now();
throw exception(ACTIVITY_PAY_EXPIRE); //比较日期是否相等
if(! now.isEqual(activityPayDO.getReserveTime())){
throw exception(ACTIVITY_PAY_EXPIRE);
}
} }
activityPayDO.setStatus("1"); activityPayDO.setStatus("1");
int i = activityPayMapper.updateById(activityPayDO); int i = activityPayMapper.updateById(activityPayDO);

View File

@ -151,6 +151,7 @@ public class PayNotifyController {
activityPayDTO.setDish( deserializedMap.get("dish")); activityPayDTO.setDish( deserializedMap.get("dish"));
activityPayDTO.setDiningPeriod( deserializedMap.get("diningPeriod")); activityPayDTO.setDiningPeriod( deserializedMap.get("diningPeriod"));
activityPayDTO.setVoucherId( deserializedMap.get("voucherId")); activityPayDTO.setVoucherId( deserializedMap.get("voucherId"));
activityPayDTO.setTransactionId( notify.getChannelOrderNo());
activityApi.createActivityPay(activityPayDTO); activityApi.createActivityPay(activityPayDTO);
notifyRedisTemplate.delete("RESERVED" + notify.getOutTradeNo()); notifyRedisTemplate.delete("RESERVED" + notify.getOutTradeNo());