Commit 3f17a7bd authored by zhangfeng's avatar zhangfeng

feature-reward:礼品管理完善

parent 14f0ca3e
package cn.iocoder.yudao.module.reward.enums;
public enum QuantitativeRelationSymbolEnum {
GT(1, "大于"),
EQ(2, "等于"),
LT(3, "小于");
private final int value;
private final String name;
QuantitativeRelationSymbolEnum(int value, String name) {
this.value = value;
this.name = name;
}
public int getValue() {
return value;
}
public String getName() {
return name;
}
}
package cn.iocoder.yudao.module.reward.enums; package cn.iocoder.yudao.module.reward.enums;
public enum RewardPickMethedEnum { public enum RewardPickMethedEnum {
PICKUP(1, "上门领取"), SELF_PICKUP(1, "上门领取"),
SEND_HOME_FREE(2, "包邮到家"), SEND_HOME_FREE(2, "包邮到家"),
SEND_HOME_PAY(3, "邮寄到付") SEND_HOME_PAY(3, "邮寄到付")
; ;
......
package cn.iocoder.yudao.module.reward.enums;
public enum RewardStatusEnum {
ENABLED(1, "已启用"),
DISABLED(2, "未启用"),
CLOSED(3, "已关闭"),
EXPIRED(4, "已过期");
private final int value;
private final String name;
RewardStatusEnum(int value, String name) {
this.value = value;
this.name = name;
}
public int getValue() {
return value;
}
public String getName() {
return name;
}
}
...@@ -62,9 +62,6 @@ public class RedeemRewardApiImpl implements RedeemRewardApi { ...@@ -62,9 +62,6 @@ public class RedeemRewardApiImpl implements RedeemRewardApi {
throw exception(REWARD_COUNT_NOT_ENOUGH); throw exception(REWARD_COUNT_NOT_ENOUGH);
} }
// 兑换方式不匹配 // 兑换方式不匹配
// if (!Objects.equals(rewardDO.getPickMethod(), redeemRewardReqVO.getRedeemType())) {
// throw exception(REWARD_PICK_METHOD_NOT_ALLOW_CREATE);
// }
String pickMethod = rewardDO.getPickMethod(); String pickMethod = rewardDO.getPickMethod();
String[] split = pickMethod.split(","); String[] split = pickMethod.split(",");
if (!Arrays.asList(split).contains(String.valueOf(redeemRewardReqVO.getRedeemType()))) { if (!Arrays.asList(split).contains(String.valueOf(redeemRewardReqVO.getRedeemType()))) {
...@@ -91,15 +88,15 @@ public class RedeemRewardApiImpl implements RedeemRewardApi { ...@@ -91,15 +88,15 @@ public class RedeemRewardApiImpl implements RedeemRewardApi {
return null; return null;
} }
private void redeemReward(RewardDO rewardDO, Integer rewardCount) { private void redeemReward(RewardDO reward, Integer rewardCount) {
// 更新时校验礼品数量是否足够 // 更新时校验礼品数量是否足够
RewardDO rewardDO1 = rewardMapper.selectById(rewardDO.getId()); RewardDO rewardDO = rewardMapper.selectById(reward.getId());
if (rewardDO1.getQuantityRemain() < rewardCount) { if (rewardDO.getQuantityRemain() < rewardCount) {
throw exception(REWARD_COUNT_NOT_ENOUGH); throw exception(REWARD_COUNT_NOT_ENOUGH);
} }
rewardDO.setExchangeCount(rewardDO.getExchangeCount() + 1); reward.setExchangeCount(reward.getExchangeCount() + 1);
rewardDO.setQuantityRemain(rewardDO.getQuantityRemain() - rewardCount); reward.setQuantityRemain(reward.getQuantityRemain() - rewardCount);
rewardMapper.updateById(rewardDO); rewardMapper.updateById(reward);
} }
private void updateMemberScore(RedeemRewardReqVO redeemRewardReqVO, RewardDO rewardDO, Long redeemId) { private void updateMemberScore(RedeemRewardReqVO redeemRewardReqVO, RewardDO rewardDO, Long redeemId) {
...@@ -139,9 +136,6 @@ public class RedeemRewardApiImpl implements RedeemRewardApi { ...@@ -139,9 +136,6 @@ public class RedeemRewardApiImpl implements RedeemRewardApi {
for (RedeemRewardReqVO redeemRewardReqVO : redeemRewardReqVOList) { for (RedeemRewardReqVO redeemRewardReqVO : redeemRewardReqVOList) {
// 每个兑换VO校验一遍 // 每个兑换VO校验一遍
// 兑换方式不匹配 // 兑换方式不匹配
// if (!Objects.equals(rewardDO.getPickMethod(), redeemRewardReqVO.getRedeemType())) {
// throw exception(REWARD_PICK_METHOD_NOT_ALLOW_CREATE);
// }
String pickMethod = rewardDO.getPickMethod(); String pickMethod = rewardDO.getPickMethod();
String[] split = pickMethod.split(","); String[] split = pickMethod.split(",");
if (!Arrays.asList(split).contains(String.valueOf(redeemRewardReqVO.getRedeemType()))) { if (!Arrays.asList(split).contains(String.valueOf(redeemRewardReqVO.getRedeemType()))) {
......
...@@ -8,9 +8,9 @@ import cn.iocoder.yudao.module.reward.api.reward.dto.RedeemRewardRespDTO; ...@@ -8,9 +8,9 @@ import cn.iocoder.yudao.module.reward.api.reward.dto.RedeemRewardRespDTO;
import cn.iocoder.yudao.module.reward.service.redeem.RewardRedeemService; import cn.iocoder.yudao.module.reward.service.redeem.RewardRedeemService;
import cn.iocoder.yudao.module.reward.vo.reward.RewardRedeemPageReqVO; import cn.iocoder.yudao.module.reward.vo.reward.RewardRedeemPageReqVO;
import cn.iocoder.yudao.module.reward.vo.reward.RewardRedeemPageRespVO; import cn.iocoder.yudao.module.reward.vo.reward.RewardRedeemPageRespVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -19,7 +19,6 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -19,7 +19,6 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
...@@ -45,14 +44,14 @@ public class RedeemRewardController { ...@@ -45,14 +44,14 @@ public class RedeemRewardController {
@PostMapping("/single") @PostMapping("/single")
@ApiOperation("兑换礼品") @ApiOperation("兑换礼品")
//@PreAuthorize("@ss.hasPermission('reward::redeem')") @PreAuthorize("@ss.hasPermission('ecw:giftManagement:exchange')")
public CommonResult<RedeemRewardRespDTO> redeemReward(@Valid @RequestBody RedeemRewardReqVO redeemRewardReqVO) { public CommonResult<RedeemRewardRespDTO> redeemReward(@Valid @RequestBody RedeemRewardReqVO redeemRewardReqVO) {
return success(redeemRewardApi.redeemReward(redeemRewardReqVO)); return success(redeemRewardApi.redeemReward(redeemRewardReqVO));
} }
@PostMapping("/batch") @PostMapping("/batch")
@ApiOperation("批量兑换礼品") @ApiOperation("批量兑换礼品")
//@PreAuthorize("@ss.hasPermission('reward::redeem')") @PreAuthorize("@ss.hasPermission('ecw:giftManagement:exchange')")
public CommonResult<List<RedeemRewardRespDTO>> redeemRewards(@Valid @RequestBody List<RedeemRewardReqVO> redeemRewardReqVOList) { public CommonResult<List<RedeemRewardRespDTO>> redeemRewards(@Valid @RequestBody List<RedeemRewardReqVO> redeemRewardReqVOList) {
return success(redeemRewardApi.redeemRewards(redeemRewardReqVOList)); return success(redeemRewardApi.redeemRewards(redeemRewardReqVOList));
} }
......
...@@ -9,10 +9,10 @@ import cn.iocoder.yudao.module.reward.convert.reward.RewardConvert; ...@@ -9,10 +9,10 @@ import cn.iocoder.yudao.module.reward.convert.reward.RewardConvert;
import cn.iocoder.yudao.module.reward.dal.dataobject.reward.RewardDO; import cn.iocoder.yudao.module.reward.dal.dataobject.reward.RewardDO;
import cn.iocoder.yudao.module.reward.service.reward.RewardService; import cn.iocoder.yudao.module.reward.service.reward.RewardService;
import cn.iocoder.yudao.module.reward.vo.reward.*; import cn.iocoder.yudao.module.reward.vo.reward.*;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -38,14 +38,14 @@ public class RewardController { ...@@ -38,14 +38,14 @@ public class RewardController {
@PostMapping("/create") @PostMapping("/create")
@ApiOperation("创建礼品") @ApiOperation("创建礼品")
//@PreAuthorize("@ss.hasPermission('reward::create')") @PreAuthorize("@ss.hasPermission('ecw:giftManagement:add')")
public CommonResult<Long> create(@Valid @RequestBody RewardCreateReqVO createReqVO) { public CommonResult<Long> create(@Valid @RequestBody RewardCreateReqVO createReqVO) {
return success(rewardService.create(createReqVO)); return success(rewardService.create(createReqVO));
} }
@PostMapping("/update") @PostMapping("/update")
@ApiOperation("更新礼品") @ApiOperation("更新礼品")
//@PreAuthorize("@ss.hasPermission('reward::update')") @PreAuthorize("@ss.hasPermission('ecw:giftManagement:edit')")
public CommonResult<Boolean> update(@Valid @RequestBody RewardUpdateReqVO updateReqVO) { public CommonResult<Boolean> update(@Valid @RequestBody RewardUpdateReqVO updateReqVO) {
rewardService.update(updateReqVO); rewardService.update(updateReqVO);
return success(true); return success(true);
...@@ -54,7 +54,7 @@ public class RewardController { ...@@ -54,7 +54,7 @@ public class RewardController {
@DeleteMapping("/delete") @DeleteMapping("/delete")
@ApiOperation("删除礼品") @ApiOperation("删除礼品")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
//@PreAuthorize("@ss.hasPermission('reward::delete')") @PreAuthorize("@ss.hasPermission('ecw:giftManagement:delete')")
public CommonResult<Boolean> delete(@RequestParam("id") Long id) { public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
rewardService.delete(id); rewardService.delete(id);
return success(true); return success(true);
...@@ -63,7 +63,7 @@ public class RewardController { ...@@ -63,7 +63,7 @@ public class RewardController {
@GetMapping("/get") @GetMapping("/get")
@ApiOperation("获得礼品详情") @ApiOperation("获得礼品详情")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
//@PreAuthorize("@ss.hasPermission('reward::query')") @PreAuthorize("@ss.hasPermission('ecw:giftManagement:check')")
public CommonResult<RewardBackVO> get(@RequestParam("id") Long id) { public CommonResult<RewardBackVO> get(@RequestParam("id") Long id) {
RewardDO rewardDO = rewardService.get(id); RewardDO rewardDO = rewardService.get(id);
RewardBackVO rewardBackVO = RewardConvert.INSTANCE.convert(rewardDO); RewardBackVO rewardBackVO = RewardConvert.INSTANCE.convert(rewardDO);
...@@ -91,7 +91,7 @@ public class RewardController { ...@@ -91,7 +91,7 @@ public class RewardController {
@PostMapping("/status") @PostMapping("/status")
@ApiOperation("礼品状态变更") @ApiOperation("礼品状态变更")
//@PreAuthorize("@ss.hasPermission('reward::query')") @PreAuthorize("@ss.hasPermission('ecw:giftManagement:close')")
public CommonResult<Boolean> updateStatus(@Valid @RequestBody RewardStatusReqVO statusVO) { public CommonResult<Boolean> updateStatus(@Valid @RequestBody RewardStatusReqVO statusVO) {
rewardService.updateStatus(statusVO); rewardService.updateStatus(statusVO);
return success(true); return success(true);
...@@ -99,12 +99,14 @@ public class RewardController { ...@@ -99,12 +99,14 @@ public class RewardController {
@PostMapping("/copy/{id}") @PostMapping("/copy/{id}")
@ApiOperation("复制礼品") @ApiOperation("复制礼品")
@PreAuthorize("@ss.hasPermission('ecw:giftManagement:copy')")
public CommonResult<Long> copyReward(@NotNull @PathVariable Long id) { public CommonResult<Long> copyReward(@NotNull @PathVariable Long id) {
return success(rewardService.copyReward(id)); return success(rewardService.copyReward(id));
} }
@PostMapping("/delay") @PostMapping("/delay")
@ApiOperation("礼品延期") @ApiOperation("礼品延期")
@PreAuthorize("@ss.hasPermission('ecw:giftManagement:postpone')")
public CommonResult<Boolean> delayReward(@Valid @RequestBody RewardDelayReqVO delayVO) { public CommonResult<Boolean> delayReward(@Valid @RequestBody RewardDelayReqVO delayVO) {
rewardService.delayReward(delayVO); rewardService.delayReward(delayVO);
return success(true); return success(true);
......
...@@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; ...@@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.module.reward.convert.reward.RewardConvert; import cn.iocoder.yudao.module.reward.convert.reward.RewardConvert;
import cn.iocoder.yudao.module.reward.dal.dataobject.reward.RewardDO; import cn.iocoder.yudao.module.reward.dal.dataobject.reward.RewardDO;
import cn.iocoder.yudao.module.reward.dal.mysql.reward.RewardMapper; import cn.iocoder.yudao.module.reward.dal.mysql.reward.RewardMapper;
import cn.iocoder.yudao.module.reward.enums.QuantitativeRelationSymbolEnum;
import cn.iocoder.yudao.module.reward.enums.RewardStatusEnum;
import cn.iocoder.yudao.module.reward.vo.reward.*; import cn.iocoder.yudao.module.reward.vo.reward.*;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
...@@ -49,13 +51,9 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -49,13 +51,9 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
throw exception(REWARD_START_OR_END_TIME_NOT_ALLOW_CREATE); throw exception(REWARD_START_OR_END_TIME_NOT_ALLOW_CREATE);
} }
// 创建的礼品状态只能是启用或未启用 // 创建的礼品状态只能是启用或未启用
if (createReqVO.getStatus() != 1 && createReqVO.getStatus() != 2) { if (createReqVO.getStatus() != RewardStatusEnum.ENABLED.getValue() && createReqVO.getStatus() != RewardStatusEnum.DISABLED.getValue()) {
throw exception(REWARD_STATUS_NOT_ALLOW_CREATE); throw exception(REWARD_STATUS_NOT_ALLOW_CREATE);
} }
//领取方式只能是1,2,3
// if (createReqVO.getPickMethod() != 1 && createReqVO.getPickMethod() != 2 && createReqVO.getPickMethod() != 3) {
// throw exception(REWARD_PICK_METHOD_NOT_ALLOW_CREATE);
// }
// 插入 // 插入
RewardDO rewardDO = RewardConvert.INSTANCE.convert(createReqVO); RewardDO rewardDO = RewardConvert.INSTANCE.convert(createReqVO);
rewardDO.setCode(generateRewardCode()); rewardDO.setCode(generateRewardCode());
...@@ -75,7 +73,6 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -75,7 +73,6 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
} }
@Override @Override
// TODO :完善校验
public void update(RewardUpdateReqVO updateReqVO) { public void update(RewardUpdateReqVO updateReqVO) {
// 校验存在 // 校验存在
RewardDO rewardDO = rewardMapper.selectById(updateReqVO.getId()); RewardDO rewardDO = rewardMapper.selectById(updateReqVO.getId());
...@@ -84,7 +81,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -84,7 +81,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
} }
RewardDO updateObj = new RewardDO(); RewardDO updateObj = new RewardDO();
//未启用可编辑所有内容 //未启用可编辑所有内容
if (rewardDO.getStatus() == 2) { if (rewardDO.getStatus() == RewardStatusEnum.DISABLED.getValue()) {
if (ObjectUtils.allNotNull(updateReqVO.getStartTime(), updateReqVO.getEndTime())) { if (ObjectUtils.allNotNull(updateReqVO.getStartTime(), updateReqVO.getEndTime())) {
if (updateReqVO.getStartTime().after((updateReqVO.getEndTime())) || updateReqVO.getEndTime().before(Date.from(Instant.now()))) { if (updateReqVO.getStartTime().after((updateReqVO.getEndTime())) || updateReqVO.getEndTime().before(Date.from(Instant.now()))) {
throw exception(REWARD_START_OR_END_TIME_NOT_ALLOW_CREATE); throw exception(REWARD_START_OR_END_TIME_NOT_ALLOW_CREATE);
...@@ -93,12 +90,8 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -93,12 +90,8 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
} else { } else {
throw exception(REWARD_START_OR_END_TIME_NOT_ALLOW_CREATE); throw exception(REWARD_START_OR_END_TIME_NOT_ALLOW_CREATE);
} }
//领取方式只能是1,2,3
// if (updateReqVO.getPickMethod() != 1 && updateReqVO.getPickMethod() != 2 && updateReqVO.getPickMethod() != 3) {
// throw exception(REWARD_PICK_METHOD_NOT_ALLOW_CREATE);
// }
updateObj = RewardConvert.INSTANCE.convert(updateReqVO); updateObj = RewardConvert.INSTANCE.convert(updateReqVO);
} else if (rewardDO.getStatus() == 1) { //已启用可编辑剩余数量和备注 } else if (rewardDO.getStatus() == RewardStatusEnum.ENABLED.getValue()) { //已启用可编辑剩余数量和备注
updateObj.setQuantityRemain(updateReqVO.getQuantityRemain()); updateObj.setQuantityRemain(updateReqVO.getQuantityRemain());
updateObj.setRemarkEn(updateReqVO.getRemarkEn()); updateObj.setRemarkEn(updateReqVO.getRemarkEn());
updateObj.setRemarkFr(updateReqVO.getRemarkFr()); updateObj.setRemarkFr(updateReqVO.getRemarkFr());
...@@ -117,7 +110,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -117,7 +110,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
throw exception(REWARD_NOT_EXISTS); throw exception(REWARD_NOT_EXISTS);
} }
//只有未启用可以删除 //只有未启用可以删除
if (rewardDO.getStatus() != 2) { if (rewardDO.getStatus() != RewardStatusEnum.DISABLED.getValue()) {
throw exception(REWARD_STATUS_NOT_ALLOW_DELETE); throw exception(REWARD_STATUS_NOT_ALLOW_DELETE);
} }
// 删除 // 删除
...@@ -166,9 +159,9 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -166,9 +159,9 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
} }
//兑换积分 //兑换积分
if (query.getPointsRequireSymbol() != null && query.getPointsRequire() != null) { if (query.getPointsRequireSymbol() != null && query.getPointsRequire() != null) {
lambdaQuery.gt(query.getPointsRequireSymbol() == 1, RewardDO::getPointsRequire, query.getPointsRequire()) lambdaQuery.gt(query.getPointsRequireSymbol() == QuantitativeRelationSymbolEnum.GT.getValue(), RewardDO::getPointsRequire, query.getPointsRequire())
.eq(query.getPointsRequireSymbol() == 2, RewardDO::getPointsRequire, query.getPointsRequire()) .eq(query.getPointsRequireSymbol() == QuantitativeRelationSymbolEnum.EQ.getValue(), RewardDO::getPointsRequire, query.getPointsRequire())
.lt(query.getPointsRequireSymbol() == 3, RewardDO::getPointsRequire, query.getPointsRequire()); .lt(query.getPointsRequireSymbol() == QuantitativeRelationSymbolEnum.LT.getValue(), RewardDO::getPointsRequire, query.getPointsRequire());
} }
//兑换网点id,领取方式,状态 //兑换网点id,领取方式,状态
lambdaQuery.eqIfPresent(RewardDO::getNodeId, query.getNodeId()) lambdaQuery.eqIfPresent(RewardDO::getNodeId, query.getNodeId())
...@@ -186,9 +179,9 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -186,9 +179,9 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
} }
//剩余数量 //剩余数量
if (query.getQuantityRemainSymbol() != null && query.getQuantityRemain() != null) { if (query.getQuantityRemainSymbol() != null && query.getQuantityRemain() != null) {
lambdaQuery.gt(query.getQuantityRemainSymbol() == 1, RewardDO::getQuantityRemain, query.getQuantityRemain()) lambdaQuery.gt(query.getQuantityRemainSymbol() == QuantitativeRelationSymbolEnum.GT.getValue(), RewardDO::getQuantityRemain, query.getQuantityRemain())
.eq(query.getQuantityRemainSymbol() == 2, RewardDO::getQuantityRemain, query.getQuantityRemain()) .eq(query.getQuantityRemainSymbol() == QuantitativeRelationSymbolEnum.EQ.getValue(), RewardDO::getQuantityRemain, query.getQuantityRemain())
.lt(query.getQuantityRemainSymbol() == 3, RewardDO::getQuantityRemain, query.getQuantityRemain()); .lt(query.getQuantityRemainSymbol() == QuantitativeRelationSymbolEnum.LT.getValue(), RewardDO::getQuantityRemain, query.getQuantityRemain());
} }
//创建时间 //创建时间
lambdaQuery.betweenIfPresent(RewardDO::getCreateTime, query.getBeginCreateTime(), query.getEndCreateTime()) lambdaQuery.betweenIfPresent(RewardDO::getCreateTime, query.getBeginCreateTime(), query.getEndCreateTime())
...@@ -213,7 +206,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -213,7 +206,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
//重新生成礼品ID //重新生成礼品ID
reward.setCode(generateRewardCode()); reward.setCode(generateRewardCode());
//设置为未启用 //设置为未启用
reward.setStatus(2); reward.setStatus(RewardStatusEnum.DISABLED.getValue());
reward.setId(null); reward.setId(null);
reward.setCreateTime(null); reward.setCreateTime(null);
...@@ -235,7 +228,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -235,7 +228,7 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
throw exception(REWARD_NOT_EXISTS); throw exception(REWARD_NOT_EXISTS);
} }
//只允许延期已启用状态礼品 //只允许延期已启用状态礼品
if (reward.getStatus() != 1) { if (reward.getStatus() != RewardStatusEnum.ENABLED.getValue()) {
throw exception(REWARD_STATUS_NOT_ALLOW_DELAY); throw exception(REWARD_STATUS_NOT_ALLOW_DELAY);
} }
Instant now = Instant.now(); Instant now = Instant.now();
...@@ -253,15 +246,17 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -253,15 +246,17 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
Integer oldStatus = rewardDO.getStatus(); Integer oldStatus = rewardDO.getStatus();
Integer newStatus = statusVO.getStatus(); Integer newStatus = statusVO.getStatus();
switch (newStatus) { switch (newStatus) {
case 3://关闭:未启用情况下,不可进行关闭;点击关闭需要有二次弹窗提示;关闭后状态为已关闭,不支持兑换 //关闭:未启用情况下,不可进行关闭;关闭后状态为已关闭,不支持兑换
if (oldStatus == 2) { case 3:
if (oldStatus == RewardStatusEnum.DISABLED.getValue()) {
throw exception(REWARD_STATUS_NOT_ALLOW_ClOSE); throw exception(REWARD_STATUS_NOT_ALLOW_ClOSE);
} else { } else {
rewardMapper.updateById(RewardConvert.INSTANCE.convertStatusReqVO(statusVO)); rewardMapper.updateById(RewardConvert.INSTANCE.convertStatusReqVO(statusVO));
} }
break; break;
case 1://启用:有效期有效且未启用可进行点击启用,需要有二次确认弹窗 //启用:有效期有效且未启用可进行点击启用
if (oldStatus == 2) { case 1:
if (oldStatus == RewardStatusEnum.DISABLED.getValue()) {
if (rewardDO.getEndTime().toInstant().isBefore(Instant.now())) { if (rewardDO.getEndTime().toInstant().isBefore(Instant.now())) {
throw exception(REWARD_STATUS_NOT_ALLOW_ENABLE); throw exception(REWARD_STATUS_NOT_ALLOW_ENABLE);
} }
...@@ -273,19 +268,23 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i ...@@ -273,19 +268,23 @@ public class RewardServiceImpl extends AbstractService<RewardMapper, RewardDO> i
} }
} }
//生成礼品ID /**
* 生成礼品ID
*/
private String generateRewardCode() { private String generateRewardCode() {
return RandomStringUtils.randomAlphanumeric(12).toUpperCase(); return RandomStringUtils.randomAlphanumeric(12).toUpperCase();
} }
//校验礼品是否过期并修改礼品状态 /**
//TODO:异步更新礼品状态 * 校验礼品是否过期并修改礼品状态
*/
private void validateExpire(RewardDO rewardDO) { private void validateExpire(RewardDO rewardDO) {
if (rewardDO.getEndTime() != null){ //TODO:异步更新礼品状态
if (rewardDO.getStatus() == 1 && rewardDO.getEndTime().toInstant().isBefore(Instant.now())) { if (rewardDO.getEndTime() != null) {
if (rewardDO.getStatus() == RewardStatusEnum.DISABLED.getValue() && rewardDO.getEndTime().toInstant().isBefore(Instant.now())) {
RewardDO expireReward = new RewardDO(); RewardDO expireReward = new RewardDO();
expireReward.setId(rewardDO.getId()); expireReward.setId(rewardDO.getId());
expireReward.setStatus(4); expireReward.setStatus(RewardStatusEnum.EXPIRED.getValue());
rewardMapper.updateById(expireReward); rewardMapper.updateById(expireReward);
} }
} }
......
...@@ -10,7 +10,6 @@ import javax.validation.constraints.Min; ...@@ -10,7 +10,6 @@ import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.util.Date; import java.util.Date;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
...@@ -20,7 +19,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ ...@@ -20,7 +19,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
public class RewardUpdateReqVO { public class RewardUpdateReqVO {
@ApiModelProperty(value = "", required = true) @ApiModelProperty(value = "", required = true)
@NotNull(message = "不能为空") @NotNull(message = "id不能为空")
private Long id; private Long id;
@ApiModelProperty(value = "中文名称") @ApiModelProperty(value = "中文名称")
...@@ -52,7 +51,6 @@ public class RewardUpdateReqVO { ...@@ -52,7 +51,6 @@ public class RewardUpdateReqVO {
private Integer nodeId; private Integer nodeId;
@ApiModelProperty(value = "剩余数量") @ApiModelProperty(value = "剩余数量")
@NotNull(message = "剩余数量不能为空")
@Min(value = 0) @Min(value = 0)
private Integer quantityRemain; private Integer quantityRemain;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment