Commit 3dd6ceb8 by 查志伟

Merge branch 'feature/买券订单支持走非码付' into qa

parents d55059de d5627814
...@@ -21,6 +21,7 @@ import cn.freemud.entities.vo.*; ...@@ -21,6 +21,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo; import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo; import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.entities.vo.order.*; import cn.freemud.entities.vo.order.*;
import cn.freemud.enums.ResponseResult;
import cn.freemud.handler.CouponOrderAutoRefundHandler; import cn.freemud.handler.CouponOrderAutoRefundHandler;
import cn.freemud.handler.OrderReportJobHandler; import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.service.EncircleOrderService; import cn.freemud.service.EncircleOrderService;
...@@ -38,6 +39,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -38,6 +39,7 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -71,6 +73,13 @@ public class OrderController { ...@@ -71,6 +73,13 @@ public class OrderController {
/** /**
* 还没有切换到新版本小程序的商户,多个用;分隔
* 不在该列表里的商户,不允许从旧小程序里下单(用户小程序缓存是老小程序情况)
*/
@Value("${config.oldVersionPartner:}")
private String oldVersionPartner;
/**
* 废弃,不在使用 * 废弃,不在使用
* 创建订单之前校验前面排队的订单数 * 创建订单之前校验前面排队的订单数
*/ */
...@@ -87,6 +96,9 @@ public class OrderController { ...@@ -87,6 +96,9 @@ public class OrderController {
@ApiAnnotation(logMessage = "createOrder") @ApiAnnotation(logMessage = "createOrder")
@PostMapping("/createOrder") @PostMapping("/createOrder")
public BaseResponse createOrder(@Validated @LogParams @RequestBody CreateOrderVo createOrderVo) { public BaseResponse createOrder(@Validated @LogParams @RequestBody CreateOrderVo createOrderVo) {
if (StringUtils.isNotBlank(oldVersionPartner) && !oldVersionPartner.contains(createOrderVo.getPartnerId())) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "小程序版本过低, 请升级版本!");
}
return orderAdapterService.createOrderNew(createOrderVo); return orderAdapterService.createOrderNew(createOrderVo);
} }
......
package cn.freemud.manager;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.redis.RedisCache;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* @author freemud
* @title: BuyProductOnceManager
* @projectName order-group
* @description: 618活动一元秒杀抢18元券包活动专属manager
* @date 2021/6/10上午9:53
*/
@Component
public class BuyProductOnceManager {
// @Autowired
// protected RedisTemplate redisTemplate;
@Autowired
private RedisCache redisCache;
//用户限购:每人每单限购一次 / 禁用
public ResponseResult checkBuyProductOnce(List<ProductInfo> products, String partnerId, String userId) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
List<ProductInfo> productsCheck = products.stream().filter(product -> product.getIsLimitNumProduct() == 1).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(productsCheck)) {
//每人每单限购一次
if (productsCheck.size() > 1) {
return ResponseResult.USER_BUY_PRODUCT_MORE_THAN_THE_NUMBER;
}
String key = this.getCheckBuyProductOnceKey(partnerId, userId,productsCheck.get(0).getPid());
if (redisTemplate.hasKey(key)) {
return ResponseResult.USER_BUY_PRODUCT_ALREADY;
}
redisTemplate.opsForValue().set(key, "Y");
//活动时间10天,防止redis脏数据,设置过期时间
redisTemplate.expire(key,10, TimeUnit.DAYS);
}
return ResponseResult.SUCCESS;
}
public String getCheckBuyProductOnceKey(String partnerId, String userId,String pid) {
StringBuilder key = new StringBuilder(RedisKeyConstant.USER_BUY_PRODUCT_ONCE)
.append(partnerId)
.append(":")
.append(userId)
.append(":")
.append(pid);
return key.toString();
}
//清掉key
public boolean removeCheckBuyProductOnceKey(String partnerId, String userId,String pid) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
String key = this.getCheckBuyProductOnceKey(partnerId, userId,pid);
redisTemplate.delete(key);
return true;
}
}
package cn.freemud.manager;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.utils.ResponseUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.List;
/**
* @author freemud
* @title: BuyProductOnceTest
* @projectName order-group
* @description: TODO
* @date 2021/6/10下午2:52
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class BuyProductOnceTest {
@Autowired
private BuyProductOnceManager buyProductOnceManager;
@Test
public void buyProductOnceTest(){
List<ProductInfo> products = new ArrayList<>();
ProductInfo productInfo = new ProductInfo();
productInfo.setIsLimitNumProduct(1);
products.add(productInfo);
ResponseResult re = buyProductOnceManager.checkBuyProductOnce(products,"1864","wanghanghang");
System.out.println(re.getCode() + " " + re.getMessage());
}
}
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