更新了商品类别
This commit is contained in:
parent
1e00e5f6fd
commit
ba104286ef
|
@ -1,13 +0,0 @@
|
||||||
package com.cultural.heritage.constant;
|
|
||||||
|
|
||||||
public interface CouponStatus {
|
|
||||||
|
|
||||||
String IS_NOT_ENABLED = "未启用";
|
|
||||||
|
|
||||||
|
|
||||||
String IS_ENABLED = "可使用";
|
|
||||||
|
|
||||||
|
|
||||||
String IS_OVERDUE = "已过期";
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.cultural.heritage.controller.good;
|
package com.cultural.heritage.controller.good;
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DateTime;
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
@ -10,23 +9,23 @@ import com.cultural.heritage.annotation.AuthCheck;
|
||||||
import com.cultural.heritage.common.BaseResponse;
|
import com.cultural.heritage.common.BaseResponse;
|
||||||
import com.cultural.heritage.common.ErrorCode;
|
import com.cultural.heritage.common.ErrorCode;
|
||||||
import com.cultural.heritage.common.ResultUtils;
|
import com.cultural.heritage.common.ResultUtils;
|
||||||
import com.cultural.heritage.constant.CouponStatus;
|
|
||||||
import com.cultural.heritage.constant.UserConstant;
|
import com.cultural.heritage.constant.UserConstant;
|
||||||
import com.cultural.heritage.exception.BusinessException;
|
import com.cultural.heritage.exception.BusinessException;
|
||||||
import com.cultural.heritage.exception.ThrowUtils;
|
import com.cultural.heritage.exception.ThrowUtils;
|
||||||
|
import com.cultural.heritage.model.dto.CommonBatchRequest;
|
||||||
import com.cultural.heritage.model.dto.CommonRequest;
|
import com.cultural.heritage.model.dto.CommonRequest;
|
||||||
import com.cultural.heritage.model.dto.coupon.CouponAddRequest;
|
import com.cultural.heritage.model.dto.coupon.CouponAddRequest;
|
||||||
import com.cultural.heritage.model.dto.coupon.CouponQueryRequest;
|
import com.cultural.heritage.model.dto.coupon.CouponQueryRequest;
|
||||||
import com.cultural.heritage.model.dto.coupon.CouponShelvesUpdateRequest;
|
|
||||||
import com.cultural.heritage.model.dto.coupon.CouponUpdateRequest;
|
import com.cultural.heritage.model.dto.coupon.CouponUpdateRequest;
|
||||||
import com.cultural.heritage.model.dto.exchange.ExchangeAddRequest;
|
|
||||||
import com.cultural.heritage.model.entity.Coupon;
|
import com.cultural.heritage.model.entity.Coupon;
|
||||||
import com.cultural.heritage.model.entity.Exchange;
|
import com.cultural.heritage.model.entity.Exchange;
|
||||||
import com.cultural.heritage.model.entity.User;
|
import com.cultural.heritage.model.entity.User;
|
||||||
|
import com.cultural.heritage.model.entity.UserCoupon;
|
||||||
import com.cultural.heritage.model.vo.coupon.CouponVO;
|
import com.cultural.heritage.model.vo.coupon.CouponVO;
|
||||||
import com.cultural.heritage.model.vo.exchange.ExchangeVO;
|
import com.cultural.heritage.model.vo.coupon.UserCouponVO;
|
||||||
import com.cultural.heritage.service.good.CouponService;
|
import com.cultural.heritage.service.good.CouponService;
|
||||||
import com.cultural.heritage.service.good.ExchangeService;
|
import com.cultural.heritage.service.good.ExchangeService;
|
||||||
|
import com.cultural.heritage.service.good.UserCouponService;
|
||||||
import com.cultural.heritage.service.user.UserService;
|
import com.cultural.heritage.service.user.UserService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
@ -35,10 +34,10 @@ import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -59,6 +58,10 @@ public class CouponController {
|
||||||
private ExchangeService exchangeService;
|
private ExchangeService exchangeService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserCouponService userCouponService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加优惠券
|
* 添加优惠券
|
||||||
* @param couponAddRequest 优惠券添加请求体
|
* @param couponAddRequest 优惠券添加请求体
|
||||||
|
@ -73,10 +76,22 @@ public class CouponController {
|
||||||
}
|
}
|
||||||
Coupon coupon = new Coupon();
|
Coupon coupon = new Coupon();
|
||||||
BeanUtils.copyProperties(couponAddRequest, coupon);
|
BeanUtils.copyProperties(couponAddRequest, coupon);
|
||||||
|
// 填充优惠券有效开始日期
|
||||||
|
String startTime = DateUtil.format(DateUtil.date(), "yyyy-MM-dd 00:00:00");
|
||||||
|
coupon.setStartTime(startTime);
|
||||||
|
|
||||||
|
// 比较优惠券有效截止日期
|
||||||
|
String endTime = coupon.getEndTime();
|
||||||
|
String currentTime = DateUtil.now();
|
||||||
|
if (endTime.compareTo(currentTime) <= 0) {
|
||||||
|
coupon.setStatus("已过期");
|
||||||
|
} else {
|
||||||
|
coupon.setStatus("可用");
|
||||||
|
}
|
||||||
// 校验
|
// 校验
|
||||||
couponService.validCoupon(coupon, false);
|
couponService.validCoupon(coupon, false);
|
||||||
boolean result = couponService.save(coupon);
|
boolean result = couponService.save(coupon);
|
||||||
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
|
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "优惠券添加失败");
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,12 +109,37 @@ public class CouponController {
|
||||||
if (couponUpdateRequest == null || couponUpdateRequest.getId() <= 0) {
|
if (couponUpdateRequest == null || couponUpdateRequest.getId() <= 0) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
||||||
}
|
}
|
||||||
Coupon coupon = new Coupon();
|
Long id = couponUpdateRequest.getId();
|
||||||
|
Coupon coupon = couponService.getById(id);
|
||||||
|
ThrowUtils.throwIf(coupon == null, ErrorCode.OPERATION_ERROR, "优惠券不存在");
|
||||||
BeanUtils.copyProperties(couponUpdateRequest, coupon);
|
BeanUtils.copyProperties(couponUpdateRequest, coupon);
|
||||||
|
|
||||||
|
// 比较优惠券有效截止日期
|
||||||
|
String endTime = coupon.getEndTime();
|
||||||
|
String currentTime = DateUtil.now();
|
||||||
|
if (endTime.compareTo(currentTime) <= 0) {
|
||||||
|
coupon.setStatus("已过期");
|
||||||
|
} else {
|
||||||
|
coupon.setStatus("可用");
|
||||||
|
}
|
||||||
|
|
||||||
// 校验
|
// 校验
|
||||||
couponService.validCoupon(coupon, true);
|
couponService.validCoupon(coupon, true);
|
||||||
boolean result = couponService.updateById(coupon);
|
boolean result = couponService.saveOrUpdate(coupon);
|
||||||
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
|
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "优惠券更新失败");
|
||||||
|
|
||||||
|
QueryWrapper<UserCoupon> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("couponId", coupon.getId());
|
||||||
|
List<UserCoupon> userCouponList = userCouponService.list(queryWrapper);
|
||||||
|
for (UserCoupon userCoupon : userCouponList) {
|
||||||
|
// 更新用户优惠券中的优惠券信息
|
||||||
|
CouponVO couponVO = new CouponVO();
|
||||||
|
BeanUtils.copyProperties(coupon, couponVO);
|
||||||
|
userCoupon.setCouponVO(couponVO);
|
||||||
|
userCoupon.setStatus(coupon.getStatus());
|
||||||
|
}
|
||||||
|
boolean update = userCouponService.updateBatchById(userCouponList);
|
||||||
|
ThrowUtils.throwIf(!CollectionUtils.isEmpty(userCouponList) && !update, ErrorCode.OPERATION_ERROR, "优惠券更新失败");
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,13 +159,34 @@ public class CouponController {
|
||||||
}
|
}
|
||||||
Long id = couponDeleteRequest.getId();
|
Long id = couponDeleteRequest.getId();
|
||||||
boolean result = couponService.removeById(id);
|
boolean result = couponService.removeById(id);
|
||||||
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
|
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "优惠券删除失败");
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询优惠券列表
|
* 批量删除优惠券
|
||||||
|
* @param commonBatchRequest 优惠券删除请求体
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@PostMapping("/del/Batch")
|
||||||
|
@Operation(summary = "Web端管理员批量删除优惠券", description = "参数:优惠券删除请求体,权限:管理员(admin, boss),方法名:deleteCoupon")
|
||||||
|
@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
|
||||||
|
public BaseResponse<Boolean> deleteCoupon(@RequestBody CommonBatchRequest commonBatchRequest) {
|
||||||
|
if (commonBatchRequest == null || CollectionUtils.isEmpty(commonBatchRequest.getIdList())) {
|
||||||
|
throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数为null或数组为空");
|
||||||
|
}
|
||||||
|
List<Long> idList = commonBatchRequest.getIdList();
|
||||||
|
boolean result = couponService.removeBatchByIds(idList);
|
||||||
|
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "优惠券批量删除失败");
|
||||||
|
return ResultUtils.success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web端管理员分页查询优惠券
|
||||||
* @param couponQueryRequest 优惠券查询请求体
|
* @param couponQueryRequest 优惠券查询请求体
|
||||||
* @return 优惠券列表
|
* @return 优惠券列表
|
||||||
*/
|
*/
|
||||||
|
@ -136,14 +197,31 @@ public class CouponController {
|
||||||
if (couponQueryRequest == null) {
|
if (couponQueryRequest == null) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 对优惠券是否过期预处理
|
||||||
long current = couponQueryRequest.getCurrent();
|
long current = couponQueryRequest.getCurrent();
|
||||||
long pageSize = couponQueryRequest.getPageSize();
|
long pageSize = couponQueryRequest.getPageSize();
|
||||||
Page<Coupon> page = couponService.page(new Page<>(current, pageSize),
|
Page<Coupon> page = couponService.page(new Page<>(current, pageSize),
|
||||||
couponService.getQueryWrapper(couponQueryRequest));
|
couponService.getQueryWrapper(couponQueryRequest));
|
||||||
|
List<Coupon> couponList = page.getRecords();
|
||||||
|
for (Coupon coupon : couponList) {
|
||||||
|
// 比较优惠券有效截止日期
|
||||||
|
String endTime = coupon.getEndTime();
|
||||||
|
String currentTime = DateUtil.now();
|
||||||
|
if (endTime.compareTo(currentTime) <= 0) {
|
||||||
|
coupon.setStatus("已过期");
|
||||||
|
} else {
|
||||||
|
coupon.setStatus("可用");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean update = couponService.updateBatchById(couponList);
|
||||||
|
ThrowUtils.throwIf(!CollectionUtils.isEmpty(couponList) && !update, ErrorCode.OPERATION_ERROR, "优惠券状态更新失败");
|
||||||
|
page.setRecords(couponList);
|
||||||
return ResultUtils.success(page);
|
return ResultUtils.success(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户删除兑换记录
|
* 用户删除兑换记录
|
||||||
* @param commonRequest 兑换记录删除请求体
|
* @param commonRequest 兑换记录删除请求体
|
||||||
|
@ -158,75 +236,66 @@ public class CouponController {
|
||||||
userService.getLoginUser(request);
|
userService.getLoginUser(request);
|
||||||
Long id = commonRequest.getId();
|
Long id = commonRequest.getId();
|
||||||
boolean result = exchangeService.removeById(id);
|
boolean result = exchangeService.removeById(id);
|
||||||
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
|
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "兑换记录删除失败");
|
||||||
return ResultUtils.success(true, "删除兑换记录成功");
|
return ResultUtils.success(true, "删除兑换记录成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 小程序端用户积分兑换优惠券
|
* 小程序端用户积分兑换优惠券
|
||||||
* @param exchangeAddRequest 兑换记录添加请求体
|
* @param commonRequest 兑换记录添加请求体
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/exchange")
|
@PostMapping("/exchange")
|
||||||
@Operation(summary = "小程序端用户积分兑换优惠券", description = "参数:兑换记录添加请求体,权限:所有人,方法名:pointsExchangeCoupon")
|
@Operation(summary = "小程序端用户积分兑换优惠券", description = "参数:兑换记录添加请求体,权限:所有人,方法名:pointsExchangeCoupon")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public BaseResponse<Boolean> pointsExchangeCoupon(@RequestBody ExchangeAddRequest exchangeAddRequest, HttpServletRequest request) {
|
public BaseResponse<Boolean> pointsExchangeCoupon(@RequestBody CommonRequest commonRequest, HttpServletRequest request) {
|
||||||
// 获取当前用户信息
|
// 获取当前用户信息
|
||||||
User loginUser = userService.getLoginUser(request);
|
User loginUser = userService.getLoginUser(request);
|
||||||
Long userId = loginUser.getId();
|
Long userId = loginUser.getId();
|
||||||
Integer points = loginUser.getPoints();
|
Integer points = loginUser.getPoints();
|
||||||
|
|
||||||
// 获取当前优惠券信息
|
// 获取当前优惠券信息
|
||||||
Long couponId = exchangeAddRequest.getCouponId();
|
Long id = commonRequest.getId();
|
||||||
Integer quantity = exchangeAddRequest.getQuantity();
|
Coupon coupon = couponService.getById(id);
|
||||||
Coupon coupon = couponService.getById(couponId);
|
|
||||||
ThrowUtils.throwIf(coupon == null, ErrorCode.OPERATION_ERROR, "优惠券不存在");
|
ThrowUtils.throwIf(coupon == null, ErrorCode.OPERATION_ERROR, "优惠券不存在");
|
||||||
Integer limitNum = coupon.getLimitNum();
|
|
||||||
Integer residueNum = coupon.getResidueNum();
|
|
||||||
|
|
||||||
// 判断优惠券库存是否足够
|
|
||||||
if (quantity > residueNum) {
|
|
||||||
throw new BusinessException(ErrorCode.OPERATION_ERROR, "库存不足");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断用户限领量是否已达标
|
|
||||||
QueryWrapper<Exchange> queryWrapper = new QueryWrapper<>();
|
|
||||||
queryWrapper.eq("userId", userId).eq("couponId", couponId);
|
|
||||||
List<Exchange> exchangeList = exchangeService.list(queryWrapper);
|
|
||||||
int sum = 0;
|
|
||||||
for (int i = 0; i < exchangeList.size(); i ++ ) {
|
|
||||||
Exchange exchange = exchangeList.get(i);
|
|
||||||
sum += exchange.getQuantity();
|
|
||||||
}
|
|
||||||
if (sum + quantity > limitNum) {
|
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "当前优惠券的限领量已达标");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断用户积分是否充足
|
// 判断用户积分是否充足
|
||||||
Integer requirePoints = coupon.getRequirePoints();
|
Integer requirePoints = coupon.getRequirePoints();
|
||||||
if (points < quantity * requirePoints) throw new BusinessException(ErrorCode.OPERATION_ERROR, "积分不足");
|
if (points < requirePoints) throw new BusinessException(ErrorCode.OPERATION_ERROR, "积分不足");
|
||||||
|
|
||||||
// 更新优惠券库存量
|
|
||||||
coupon.setResidueNum(coupon.getResidueNum() - quantity);
|
|
||||||
boolean result = couponService.updateById(coupon);
|
|
||||||
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "更新优惠券库存失败");
|
|
||||||
|
|
||||||
// 插入一条兑换记录
|
// 插入一条兑换记录
|
||||||
CouponVO couponVO = new CouponVO();
|
CouponVO couponVO = new CouponVO();
|
||||||
BeanUtils.copyProperties(coupon, couponVO);
|
BeanUtils.copyProperties(coupon, couponVO);
|
||||||
Exchange exchange = new Exchange();
|
Exchange exchange = new Exchange();
|
||||||
exchange.setUserId(userId);
|
exchange.setUserId(userId);
|
||||||
exchange.setQuantity(quantity);
|
exchange.setCouponVO(couponVO);
|
||||||
exchange.setRestNum(quantity);
|
|
||||||
exchange.setRequirePoints(requirePoints);
|
|
||||||
exchange.setCouponId(couponId);
|
|
||||||
exchange.setCouponDetail(couponVO);
|
|
||||||
boolean save = exchangeService.save(exchange);
|
boolean save = exchangeService.save(exchange);
|
||||||
ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "兑换记录插入失败");
|
ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "兑换记录插入失败");
|
||||||
|
|
||||||
|
// 更新用户优惠券表
|
||||||
|
QueryWrapper<UserCoupon> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("userId", userId).eq("couponId", coupon.getId());
|
||||||
|
UserCoupon userCoupon = userCouponService.getOne(queryWrapper);
|
||||||
|
if (userCoupon == null) {
|
||||||
|
UserCoupon userCouponSave = new UserCoupon();
|
||||||
|
userCouponSave.setUserId(userId);
|
||||||
|
userCouponSave.setCouponId(coupon.getId());
|
||||||
|
userCouponSave.setCouponVO(couponVO);
|
||||||
|
userCouponSave.setQuantity(1);
|
||||||
|
userCouponSave.setStatus("可用");
|
||||||
|
boolean saveSuccess = userCouponService.save(userCouponSave);
|
||||||
|
ThrowUtils.throwIf(!saveSuccess, ErrorCode.OPERATION_ERROR, "用户优惠券插入失败");
|
||||||
|
} else {
|
||||||
|
UpdateWrapper<UserCoupon> updateWrapper = new UpdateWrapper<>();
|
||||||
|
updateWrapper.eq("id", userCoupon.getId()).set("quantity", userCoupon.getQuantity() + 1);
|
||||||
|
boolean update = userCouponService.update(updateWrapper);
|
||||||
|
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "用户优惠券更新失败");
|
||||||
|
}
|
||||||
|
|
||||||
// 更新用户积分
|
// 更新用户积分
|
||||||
loginUser.setPoints(loginUser.getPoints() - quantity * requirePoints);
|
loginUser.setPoints(loginUser.getPoints() - requirePoints);
|
||||||
boolean isSuccess = userService.updateById(loginUser);
|
boolean isSuccess = userService.updateById(loginUser);
|
||||||
ThrowUtils.throwIf(!isSuccess, ErrorCode.OPERATION_ERROR, "更新用户积分信息失败");
|
ThrowUtils.throwIf(!isSuccess, ErrorCode.OPERATION_ERROR, "更新用户积分信息失败");
|
||||||
|
|
||||||
|
@ -243,33 +312,36 @@ public class CouponController {
|
||||||
*/
|
*/
|
||||||
@GetMapping("/list/my")
|
@GetMapping("/list/my")
|
||||||
@Operation(summary = "小程序端用户查看优惠券", description = "参数:无,权限:所有人,方法名:pointsExchangeCoupon")
|
@Operation(summary = "小程序端用户查看优惠券", description = "参数:无,权限:所有人,方法名:pointsExchangeCoupon")
|
||||||
public BaseResponse<List<ExchangeVO>> listMyCoupon(HttpServletRequest request) {
|
public BaseResponse<List<UserCouponVO>> listMyCoupon(HttpServletRequest request) {
|
||||||
User loginUser = userService.getLoginUser(request);
|
User loginUser = userService.getLoginUser(request);
|
||||||
Long userId = loginUser.getId();
|
Long userId = loginUser.getId();
|
||||||
QueryWrapper<Exchange> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<Exchange> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("userId", userId);
|
queryWrapper.eq("userId", userId);
|
||||||
List<Exchange> exchangeList = exchangeService.list(queryWrapper);
|
List<UserCoupon> userCouponList = userCouponService.list();
|
||||||
List<ExchangeVO> exchangeVOS = exchangeList.stream().map(exchange -> {
|
|
||||||
ExchangeVO exchangeVO = new ExchangeVO();
|
|
||||||
BeanUtils.copyProperties(exchange, exchangeVO);
|
|
||||||
String startTime = exchange.getCouponDetail().getStartTime();
|
|
||||||
String endTime = exchange.getCouponDetail().getEndTime();
|
|
||||||
DateTime start = DateUtil.parse(startTime);
|
|
||||||
DateTime end = DateUtil.parse(endTime);
|
|
||||||
DateTime current = DateUtil.date();
|
|
||||||
|
|
||||||
boolean isBefore = current.isBefore(start);
|
for (UserCoupon userCoupon : userCouponList) {
|
||||||
boolean isAfter = current.isAfter(end);
|
CouponVO couponVO = userCoupon.getCouponVO();
|
||||||
boolean isInRange = current.isAfterOrEquals(start) && current.isBeforeOrEquals(end);
|
// 比较优惠券有效截止日期
|
||||||
|
String endTime = couponVO.getEndTime();
|
||||||
|
String currentTime = DateUtil.now();
|
||||||
|
if (endTime.compareTo(currentTime) <= 0) {
|
||||||
|
couponVO.setStatus("已过期");
|
||||||
|
userCoupon.setStatus("已过期");
|
||||||
|
} else {
|
||||||
|
couponVO.setStatus("可用");
|
||||||
|
userCoupon.setStatus("可用");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (isBefore) exchangeVO.setCouponStatus(CouponStatus.IS_NOT_ENABLED);
|
boolean update = userCouponService.updateBatchById(userCouponList);
|
||||||
if (isAfter) exchangeVO.setCouponStatus(CouponStatus.IS_OVERDUE);
|
ThrowUtils.throwIf(!CollectionUtils.isEmpty(userCouponList) && !update, ErrorCode.OPERATION_ERROR, "优惠券状态更新失败");
|
||||||
if (isInRange) exchangeVO.setCouponStatus(CouponStatus.IS_ENABLED);
|
|
||||||
return exchangeVO;
|
List<UserCouponVO> userCouponVOS = userCouponList.stream().map(userCoupon -> {
|
||||||
|
UserCouponVO userCouponVO = new UserCouponVO();
|
||||||
|
BeanUtils.copyProperties(userCoupon, userCouponVO);
|
||||||
|
return userCouponVO;
|
||||||
}).toList();
|
}).toList();
|
||||||
List<ExchangeVO> exchangeVOList = exchangeVOS.stream().filter(exchangeVO -> exchangeVO.getRestNum() != 0)
|
return ResultUtils.success(userCouponVOS);
|
||||||
.collect(Collectors.toList());
|
|
||||||
return ResultUtils.success(exchangeVOList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -278,21 +350,24 @@ public class CouponController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Web端管理员上(下)架优惠券
|
* Web端管理员上(下)架优惠券
|
||||||
* @param couponShelvesUpdateRequest 优惠券上架状态更新请求体
|
* @param commonRequest 优惠券id
|
||||||
* @return 是否更新成功
|
* @return 是否更新成功
|
||||||
*/
|
*/
|
||||||
@PostMapping("/shelves")
|
@PostMapping("/shelves")
|
||||||
@Operation(summary = "Web端管理员上(下)架优惠券", description = "参数:优惠券上架状态更新请求体,权限:管理员(admin, boss),方法名:deleteExchangeRecord")
|
@Operation(summary = "Web端管理员上(下)架优惠券", description = "参数:优惠券上架状态更新请求体,权限:管理员(admin, boss),方法名:deleteExchangeRecord")
|
||||||
@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
|
@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
|
||||||
public BaseResponse<Boolean> updateCouponShelvesStatus(@RequestBody CouponShelvesUpdateRequest couponShelvesUpdateRequest) {
|
public BaseResponse<Boolean> updateCouponShelvesStatus(@RequestBody CommonRequest commonRequest) {
|
||||||
if (couponShelvesUpdateRequest == null || couponShelvesUpdateRequest.getId() <= 0) {
|
if (commonRequest == null || commonRequest.getId() <= 0) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
||||||
}
|
}
|
||||||
Long id = couponShelvesUpdateRequest.getId();
|
Long id = commonRequest.getId();
|
||||||
Integer isShelves = couponShelvesUpdateRequest.getIsShelves();
|
Coupon coupon = couponService.getById(id);
|
||||||
|
ThrowUtils.throwIf(coupon == null, ErrorCode.OPERATION_ERROR, "优惠券不存在");
|
||||||
|
|
||||||
|
Integer status = coupon.getIsShelves() == 0 ? 1 : 0;
|
||||||
UpdateWrapper<Coupon> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<Coupon> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.eq("id", id);
|
updateWrapper.eq("id", id);
|
||||||
updateWrapper.set("isShelves", isShelves);
|
updateWrapper.set("isShelves", status);
|
||||||
boolean update = couponService.update(updateWrapper);
|
boolean update = couponService.update(updateWrapper);
|
||||||
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "上架状态更新失败");
|
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "上架状态更新失败");
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
|
|
|
@ -9,7 +9,7 @@ import java.math.BigDecimal;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "优惠券添加请求体", requiredProperties =
|
@Schema(description = "优惠券添加请求体", requiredProperties =
|
||||||
{"name", "conditionAmount", "requirePoints", "totalNum", "residueNum", "limitNum", "useScope", "startTime", "endTime", "image", "description"})
|
{"name", "conditionAmount", "requirePoints", "content", "startTime", "endTime", "description"})
|
||||||
public class CouponAddRequest implements Serializable {
|
public class CouponAddRequest implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,45 +32,14 @@ public class CouponAddRequest implements Serializable {
|
||||||
@Schema(description = "兑换需要的积分", example = "1000")
|
@Schema(description = "兑换需要的积分", example = "1000")
|
||||||
private Integer requirePoints;
|
private Integer requirePoints;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券简介
|
* 优惠券内容
|
||||||
*/
|
*/
|
||||||
@Schema(description = "优惠券简介", example = "满200减50,超值优惠")
|
@Schema(description = "优惠券简介", example = "满200减50,超值优惠")
|
||||||
private String intro;
|
private String content;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发放数量
|
|
||||||
*/
|
|
||||||
@Schema(description = "发放数量", example = "10")
|
|
||||||
private Integer totalNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 剩余数量
|
|
||||||
*/
|
|
||||||
@Schema(description = "剩余数量", example = "5")
|
|
||||||
private Integer residueNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户限领量
|
|
||||||
*/
|
|
||||||
@Schema(description = "用户限领量", example = "3")
|
|
||||||
private Integer limitNum;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 作用范围
|
|
||||||
*/
|
|
||||||
@Schema(description = "作用范围(商品类别名)", example = "材料包;手持物;头饰")
|
|
||||||
private String useScope;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 有效开始日期
|
|
||||||
*/
|
|
||||||
@Schema(description = "有效开始日期", example = "2024-11-04 15:00:00")
|
|
||||||
private String startTime;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有效截止日期
|
* 有效截止日期
|
||||||
|
@ -79,13 +48,6 @@ public class CouponAddRequest implements Serializable {
|
||||||
private String endTime;
|
private String endTime;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券图片
|
|
||||||
*/
|
|
||||||
@Schema(description = "优惠券图片地址", example = "https://xxx/xxx.jpg")
|
|
||||||
private String image;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用说明
|
* 使用说明
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
package com.cultural.heritage.model.dto.coupon;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@Schema(description = "优惠券上架状态更新请求体", requiredProperties = {"id", "isShelves"})
|
|
||||||
public class CouponShelvesUpdateRequest implements Serializable {
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单id
|
|
||||||
*/
|
|
||||||
@Schema(description = "优惠券id(id > 0)", example = "8")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券上架状态
|
|
||||||
*/
|
|
||||||
@Schema(description = "优惠券上架状态", example = "1")
|
|
||||||
private Integer isShelves;
|
|
||||||
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
}
|
|
|
@ -9,7 +9,7 @@ import java.math.BigDecimal;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "优惠券更新请求体", requiredProperties =
|
@Schema(description = "优惠券更新请求体", requiredProperties =
|
||||||
{"id", "name", "conditionAmount", "requirePoints", "totalNum", "residueNum", "limitNum", "useScope", "startTime", "endTime", "image", "description"})
|
{"id", "name", "conditionAmount", "requirePoints", "content", "startTime", "endTime", "description"})
|
||||||
public class CouponUpdateRequest implements Serializable {
|
public class CouponUpdateRequest implements Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -38,52 +38,12 @@ public class CouponUpdateRequest implements Serializable {
|
||||||
private Integer requirePoints;
|
private Integer requirePoints;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发放数量
|
|
||||||
*/
|
|
||||||
@Schema(description = "发放数量", example = "10")
|
|
||||||
private Integer totalNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 剩余数量
|
|
||||||
*/
|
|
||||||
@Schema(description = "剩余数量", example = "5")
|
|
||||||
private Integer residueNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户限领量
|
|
||||||
*/
|
|
||||||
@Schema(description = "用户限领量", example = "3")
|
|
||||||
private Integer limitNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 有效开始日期
|
|
||||||
*/
|
|
||||||
@Schema(description = "有效开始日期", example = "2024-11-04 15:00:00")
|
|
||||||
private String startTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有效截止日期
|
* 有效截止日期
|
||||||
*/
|
*/
|
||||||
@Schema(description = "有效截止日期", example = "2024-12-04 15:00:00")
|
@Schema(description = "有效截止日期", example = "2024-12-04 15:00:00")
|
||||||
private String endTime;
|
private String endTime;
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券图片
|
|
||||||
*/
|
|
||||||
@Schema(description = "优惠券图片地址", example = "https://xxx/xxx.jpg")
|
|
||||||
private String image;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 作用范围
|
|
||||||
*/
|
|
||||||
@Schema(description = "作用范围(商品类别名)", example = "材料包;手持物;头饰")
|
|
||||||
private String useScope;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用说明
|
* 使用说明
|
||||||
|
@ -92,12 +52,6 @@ public class CouponUpdateRequest implements Serializable {
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否上架
|
|
||||||
*/
|
|
||||||
@Schema(description = "是否上架", example = "1")
|
|
||||||
private Integer isShelves;
|
|
||||||
|
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
package com.cultural.heritage.model.dto.exchange;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 积分兑换优惠券请求
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "积分兑换优惠券请求体", requiredProperties = {"userId", "couponId", "quantity", "requirePoints"})
|
|
||||||
public class ExchangeAddRequest implements Serializable {
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券id
|
|
||||||
*/
|
|
||||||
@Schema(description = "优惠券id(id > 0)", example = "4")
|
|
||||||
private Long couponId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 数量
|
|
||||||
*/
|
|
||||||
@Schema(description = "购买数量", example = "10")
|
|
||||||
private Integer quantity;
|
|
||||||
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
}
|
|
|
@ -27,11 +27,19 @@ public class Coupon implements Serializable {
|
||||||
@TableId(type = IdType.AUTO)
|
@TableId(type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券名称
|
* 优惠券名称
|
||||||
*/
|
*/
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 满减金额
|
* 满减金额
|
||||||
*/
|
*/
|
||||||
|
@ -44,33 +52,6 @@ public class Coupon implements Serializable {
|
||||||
private Integer requirePoints;
|
private Integer requirePoints;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发放数量
|
|
||||||
*/
|
|
||||||
private Integer totalNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 剩余数量
|
|
||||||
*/
|
|
||||||
private Integer residueNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户限领量
|
|
||||||
*/
|
|
||||||
private Integer limitNum;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券简介
|
|
||||||
*/
|
|
||||||
private String intro;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券图片
|
|
||||||
*/
|
|
||||||
private String image;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有效开始日期
|
* 有效开始日期
|
||||||
*/
|
*/
|
||||||
|
@ -82,10 +63,6 @@ public class Coupon implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String endTime;
|
private String endTime;
|
||||||
|
|
||||||
/**
|
|
||||||
* 作用范围
|
|
||||||
*/
|
|
||||||
private String useScope;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用说明
|
* 使用说明
|
||||||
|
@ -113,6 +90,12 @@ public class Coupon implements Serializable {
|
||||||
private Date updateTime;
|
private Date updateTime;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠券状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否删除
|
* 是否删除
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,34 +34,12 @@ public class Exchange implements Serializable {
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券id
|
|
||||||
*/
|
|
||||||
private Long couponId;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券信息
|
* 优惠券信息
|
||||||
*/
|
*/
|
||||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
private CouponVO couponDetail;
|
private CouponVO couponVO;
|
||||||
|
|
||||||
/**
|
|
||||||
* 数量
|
|
||||||
*/
|
|
||||||
private Integer quantity;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 剩余数量
|
|
||||||
*/
|
|
||||||
private Integer restNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券积分价格
|
|
||||||
*/
|
|
||||||
private Integer requirePoints;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package com.cultural.heritage.model.entity;
|
package com.cultural.heritage.model.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||||
|
import com.cultural.heritage.model.vo.coupon.CouponVO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
|
@ -14,7 +17,7 @@ import java.util.Date;
|
||||||
* @TableName user_coupon
|
* @TableName user_coupon
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("user_coupon")
|
@TableName(value = "user_coupon", autoResultMap = true)
|
||||||
public class UserCoupon implements Serializable {
|
public class UserCoupon implements Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,10 +36,24 @@ public class UserCoupon implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Long couponId;
|
private Long couponId;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券状态(0, 1, 2分别代表未使用,已使用,已过期)
|
* 优惠券信息
|
||||||
*/
|
*/
|
||||||
private Integer status;
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
|
private CouponVO couponVO;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购买数量
|
||||||
|
*/
|
||||||
|
private Integer quantity;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠券状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -15,6 +15,13 @@ public class CouponVO implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 满减金额
|
* 满减金额
|
||||||
*/
|
*/
|
||||||
|
@ -22,14 +29,10 @@ public class CouponVO implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券简介
|
* 需要的积分
|
||||||
*/
|
*/
|
||||||
private String intro;
|
private Integer requirePoints;
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券图片
|
|
||||||
*/
|
|
||||||
private String image;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有效开始日期
|
* 有效开始日期
|
||||||
|
@ -42,10 +45,6 @@ public class CouponVO implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String endTime;
|
private String endTime;
|
||||||
|
|
||||||
/**
|
|
||||||
* 作用范围
|
|
||||||
*/
|
|
||||||
private String useScope;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用说明
|
* 使用说明
|
||||||
|
@ -53,6 +52,12 @@ public class CouponVO implements Serializable {
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠券状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.cultural.heritage.model.vo.coupon;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserCouponVO implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠券信息
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
|
private CouponVO couponVO;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拥有数量
|
||||||
|
*/
|
||||||
|
private Integer quantity;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠券状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
|
@ -20,40 +20,11 @@ public class ExchangeVO implements Serializable {
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券id
|
|
||||||
*/
|
|
||||||
private Long couponId;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券信息
|
* 优惠券信息
|
||||||
*/
|
*/
|
||||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
private CouponVO couponDetail;
|
private CouponVO couponVO;
|
||||||
|
|
||||||
/**
|
|
||||||
* 数量
|
|
||||||
*/
|
|
||||||
private Integer quantity;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 剩余数量
|
|
||||||
*/
|
|
||||||
private Integer restNum;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券积分价格
|
|
||||||
*/
|
|
||||||
private Integer requirePoints;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优惠券状态(未开始,可使用,已过期)
|
|
||||||
*/
|
|
||||||
private String couponStatus;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -42,6 +42,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
||||||
return queryWrapper;
|
return queryWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer verifyIsReachTheUpperLimit(Long userId, Long couponId) {
|
public Integer verifyIsReachTheUpperLimit(Long userId, Long couponId) {
|
||||||
return this.baseMapper.verifyIsReachTheUpperLimit(userId, couponId);
|
return this.baseMapper.verifyIsReachTheUpperLimit(userId, couponId);
|
||||||
|
@ -57,15 +58,12 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
||||||
String name = coupon.getName();
|
String name = coupon.getName();
|
||||||
BigDecimal conditionAmount = coupon.getConditionAmount();
|
BigDecimal conditionAmount = coupon.getConditionAmount();
|
||||||
Integer requirePoints = coupon.getRequirePoints();
|
Integer requirePoints = coupon.getRequirePoints();
|
||||||
Integer totalNum = coupon.getTotalNum();
|
|
||||||
Integer residueNum = coupon.getResidueNum();
|
|
||||||
Integer limitNum = coupon.getLimitNum();
|
|
||||||
String useScope = coupon.getUseScope();
|
|
||||||
String startTime = coupon.getStartTime();
|
String startTime = coupon.getStartTime();
|
||||||
String endTime = coupon.getEndTime();
|
String endTime = coupon.getEndTime();
|
||||||
String intro = coupon.getIntro();
|
|
||||||
String image = coupon.getImage();
|
|
||||||
String description = coupon.getDescription();
|
String description = coupon.getDescription();
|
||||||
|
String content = coupon.getContent();
|
||||||
|
String status = coupon.getStatus();
|
||||||
|
|
||||||
if (update) {
|
if (update) {
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数id错误");
|
throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数id错误");
|
||||||
|
@ -77,14 +75,11 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
||||||
if (ObjectUtils.isEmpty(requirePoints) || requirePoints <= 0) {
|
if (ObjectUtils.isEmpty(requirePoints) || requirePoints <= 0) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "积分参数错误");
|
throw new BusinessException(ErrorCode.PARAMS_ERROR, "积分参数错误");
|
||||||
}
|
}
|
||||||
if (ObjectUtils.isEmpty(totalNum) || ObjectUtils.isEmpty(residueNum) || ObjectUtils.isEmpty(limitNum)) {
|
if (StringUtils.isAnyBlank(name, startTime, endTime, description, content, status)) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "优惠券数量参数为null");
|
|
||||||
}
|
|
||||||
if (totalNum <= 0 || residueNum < 0 || residueNum > totalNum || limitNum <= 0 || limitNum > totalNum) {
|
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "优惠券数量参数错误");
|
|
||||||
}
|
|
||||||
if (StringUtils.isAnyBlank(name, useScope, startTime, endTime, intro, image, description)) {
|
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "存在参数为空");
|
throw new BusinessException(ErrorCode.PARAMS_ERROR, "存在参数为空");
|
||||||
}
|
}
|
||||||
|
if (startTime.compareTo(endTime) >= 0) {
|
||||||
|
throw new BusinessException(ErrorCode.PARAMS_ERROR, "有效期开始时间晚于有效期截止时间");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ spring:
|
||||||
# 生产环境
|
# 生产环境
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://154.8.193.216:3306/feiyi?serverTimezone=Asia/Shanghai
|
url: jdbc:mysql://154.8.193.216:3306/feiyi?serverTimezone=Asia/Shanghai
|
||||||
username: feiyi0
|
username: feiyi
|
||||||
password: 123456asd
|
password: 123456asd
|
||||||
hikari:
|
hikari:
|
||||||
maximum-pool-size: 20
|
maximum-pool-size: 20
|
||||||
|
|
18
src/test/java/com/cultural/heritage/test/Main.java
Normal file
18
src/test/java/com/cultural/heritage/test/Main.java
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package com.cultural.heritage.test;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Date date1 = new Date();
|
||||||
|
Date date2 = new Date(date1.getTime() + 1000); // date2 比 date1 晚 1 秒
|
||||||
|
|
||||||
|
if (date1.before(date2)) {
|
||||||
|
System.out.println("date1 早于 date2");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (date1.after(date2)) {
|
||||||
|
System.out.println("date1 晚于 date2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user