记得上下班打卡 | git大法好,push需谨慎

Commit e5363362 authored by 张国柄's avatar 张国柄

+API:店铺券:代领券+返回可用券信息;

parent fb1e48f8
......@@ -68,7 +68,7 @@ public class GoblinStoreMgtGoodsAddParam implements Serializable {
private List<String> tagList;
@ApiModelProperty(position = 20, required = true, value = "商品图片列表")
private List<String> imageList;
@ApiModelProperty(position = 21, required = false, value = "商品视频地址")
@ApiModelProperty(position = 21, required = false, value = "商品图片封面")
private String coverPic;
@ApiModelProperty(position = 22, required = false, value = "商品视频地址")
private String video;
......
......@@ -23,6 +23,8 @@ import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Slf4j
@Api(tags = "店铺券")
......@@ -76,7 +78,6 @@ public class GoblinCouponController {
@PostMapping("receive")
@ApiOperation("领取券")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "storeCouponId", value = "平台券ID"),
// @ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "number", value = "数量"),
......@@ -84,28 +85,45 @@ public class GoblinCouponController {
public ResponseDto<Boolean> receive(@NotBlank(message = "平台券ID不能为空") @RequestParam("storeCouponId") String storeCouponId) {
// public ResponseDto<Boolean> checkOrderResult(@RequestParam("storeCouponId") @Valid String storeCouponId,
// @RequestParam("number") @Valid Integer number) {
return this.receiveFetchedProcessing(CurrentUtil.getCurrentUid(), storeCouponId, null);
String uid = CurrentUtil.getCurrentUid();
GoblinStoreCouponVo storeCouponVo = goblinRedisUtils.getStoreCouponVo(storeCouponId);
if (null == storeCouponVo) {
log.warn("商城:用户领取优惠券:优惠券不存在:[uid={},storeCouponId={}]", uid, storeCouponId);
return ResponseDto.failure(ErrorMapping.get("140050"));
}
if (!storeCouponVo.getState().equals("1")) {
return ResponseDto.failure(ErrorMapping.get("140051"));
}
List<GoblinUserCouponVo> userCouponVos = goblinRedisUtils.getUserCouponVos(uid);
if (!CollectionUtils.isEmpty(userCouponVos)) {
int beforeSize = userCouponVos.size();
userCouponVos.removeIf(vo -> vo.getStoreCouponId().equals(storeCouponId));
if ((beforeSize - userCouponVos.size()) >= storeCouponVo.getReceiveLimit()) {
return ResponseDto.failure(ErrorMapping.get("140052"));
}
}
if (storeCouponVo.getStock().equals(0) || goblinRedisUtils.getStoreCouponStock(storeCouponId) > 0) {
Boolean resultFlg = goblinCouponService.receiveCoupon(uid, userCouponVos, storeCouponVo);
return resultFlg ? ResponseDto.success() : ResponseDto.failure();
}
return ResponseDto.failure(ErrorMapping.get("140053"));
}
@PostMapping("fetched")
@ApiOperation("POS机代领券")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiOperation(value = "POS机代领券", notes = "返回当前领取的可用券信息")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "storeId", value = "店铺ID"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "storeCouponId", value = "平台券ID"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "UID"),
})
public ResponseDto<Boolean> fetched(@NotBlank(message = "店铺ID不能为空") @RequestParam("storeId") String storeId,
public ResponseDto<GoblinUserCouponVo> fetched(@NotBlank(message = "店铺ID不能为空") @RequestParam("storeId") String storeId,
@NotBlank(message = "平台券ID不能为空") @RequestParam("storeCouponId") String storeCouponId,
@NotBlank(message = "UID不能为空")@RequestParam("uid") String uid) {
if (!goblinRedisUtils.hasStoreId(CurrentUtil.getCurrentUid(), storeId)) {
return ResponseDto.failure(ErrorMapping.get("149002"));
}
// TODO: 2022/3/5 ==zhanggb.UID校验真实性
return receiveFetchedProcessing(uid, storeCouponId, storeId);
}
private ResponseDto<Boolean> receiveFetchedProcessing(String uid, String storeCouponId, String storeId) {
GoblinStoreCouponVo storeCouponVo = goblinRedisUtils.getStoreCouponVo(storeCouponId);
if (null == storeCouponVo) {
log.warn("商城:用户领取优惠券:优惠券不存在:[uid={},storeCouponId={}]", uid, storeCouponId);
......@@ -120,15 +138,19 @@ public class GoblinCouponController {
}
List<GoblinUserCouponVo> userCouponVos = goblinRedisUtils.getUserCouponVos(uid);
if (!CollectionUtils.isEmpty(userCouponVos)) {
int beforeSize = userCouponVos.size();
userCouponVos.removeIf(vo -> vo.getStoreCouponId().equals(storeCouponId));
if ((beforeSize - userCouponVos.size()) >= storeCouponVo.getReceiveLimit()) {
return ResponseDto.failure(ErrorMapping.get("140052"));
List<GoblinUserCouponVo> userCouponVoList = userCouponVos.stream().filter(vo -> vo.getStoreCouponId().equals(storeCouponId)).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(userCouponVoList) && userCouponVoList.size() >= storeCouponVo.getReceiveLimit()) {
Optional<GoblinUserCouponVo> userCouponVoOptional = userCouponVoList.stream().filter(vo -> vo.getState().equals(1)).findAny();
return userCouponVoOptional.map(ResponseDto::success).orElseGet(() -> ResponseDto.failure(ErrorMapping.get("140054")));
}
}
if (storeCouponVo.getStock().equals(0) || goblinRedisUtils.getStoreCouponStock(storeCouponId) > 0) {
Boolean resultFlg = goblinCouponService.receiveCoupon(uid, userCouponVos, storeCouponVo);
return resultFlg ? ResponseDto.success() : ResponseDto.failure();
if (goblinCouponService.receiveCoupon(uid, userCouponVos, storeCouponVo)) {
List<GoblinUserCouponVo> userCouponVoList = userCouponVos.stream()
.filter(vo -> vo.getStoreCouponId().equals(storeCouponId) && vo.getState().equals(1)).collect(Collectors.toList());
return ResponseDto.success(userCouponVoList.get(0));
}
return ResponseDto.failure(ErrorMapping.get("140053"));
}
return ResponseDto.failure(ErrorMapping.get("140053"));
}
......
......@@ -10,10 +10,11 @@
140050=优惠券不存在
140050=该活动优惠券不存在
140051=非活动时间不允许领取
140052=该活动优惠券为限量领取
140053=该活动优惠券被抢关了
140054=该活动优惠券已被使用
......
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