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

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

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

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