|
@@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springblade.common.cache.ParamCache;
|
|
|
import org.springblade.common.constant.CommonConstant;
|
|
|
import org.springblade.common.utils.CommonUtil;
|
|
|
+import org.springblade.common.utils.RedisTool;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.log.logger.BladeLogger;
|
|
|
import org.springblade.core.redis.cache.BladeRedis;
|
|
@@ -110,6 +111,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
@Resource
|
|
|
private BladeRedis bladeRedis;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ RedisTool redisTool;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
|
|
|
return page.setRecords(baseMapper.selectOrderPage(page, order));
|
|
@@ -250,15 +254,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
while (flag){
|
|
|
//判断用户寄售单是否为空
|
|
|
if(ObjectUtil.isNotNull(consign)){
|
|
|
- //通过寄售id获取redis是否为空
|
|
|
- Object o = bladeRedis.get(String.valueOf(consign.getId()));
|
|
|
- if(ObjectUtil.isNull(o)){//判断redis中是否有其他人在使用
|
|
|
- //将当前订单号放入redis中,防止其他用户抢到同一单号
|
|
|
- bladeRedis.setEx(String.valueOf(consign.getId()), Integer.parseInt("1"), 30L);
|
|
|
- flag = false;//跳出循环,使用当前单号来进行订单创建
|
|
|
- }else{//如果存在则重新获取订单进行创建
|
|
|
+ //通过寄售id获取redis锁
|
|
|
+ boolean scheduleIssueTask = redisTool.getRedisLock(String.valueOf(consign.getId()), "1");
|
|
|
+ //判断时候获取到redis锁
|
|
|
+ if (!scheduleIssueTask) {
|
|
|
+ //未获取到重新获取
|
|
|
consign = consignMapper.randomConsign(request.getConsignConfigId(),request.getUserId());
|
|
|
+ }else{
|
|
|
+ flag = false;//跳出循环,使用当前单号来进行订单创建
|
|
|
}
|
|
|
+// if(ObjectUtil.isNull(o)){//判断redis中是否有其他人在使用
|
|
|
+// //将当前订单号放入redis中,防止其他用户抢到同一单号
|
|
|
+//// bladeRedis.setE
|
|
|
+// bladeRedis.setEx(String.valueOf(consign.getId()), Integer.parseInt("1"), 30L);
|
|
|
+// flag = false;//跳出循环,使用当前单号来进行订单创建
|
|
|
+// }else{//如果存在则重新获取订单进行创建
|
|
|
+// consign = consignMapper.randomConsign(request.getConsignConfigId(),request.getUserId());
|
|
|
+// }
|
|
|
}else{//如果用户寄售单为空那么跳出当前循环重新获取平台单
|
|
|
flag = false;
|
|
|
}
|