|
|
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.sqx.common.constant.RedisKey;
|
|
|
import com.sqx.common.exception.SqxException;
|
|
|
import com.sqx.common.sms.SmsSendResult;
|
|
|
import com.sqx.common.utils.Constant;
|
|
|
@@ -77,9 +78,10 @@ import com.sqx.modules.utils.fieYun.FeiYunUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
+import org.redisson.api.RLock;
|
|
|
+import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
-import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -96,7 +98,6 @@ import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
-import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
@@ -161,107 +162,57 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
@Autowired
|
|
|
private TbIndentSmsTemplateService smsTemplateService;
|
|
|
|
|
|
- private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
|
|
|
-
|
|
|
- @Override
|
|
|
- public Result insertOrder(Long userId, Long shopId, Long goodsId, Integer num, Long skuId, String skuMessage, Integer orderType) {
|
|
|
- reentrantReadWriteLock.writeLock().lock();
|
|
|
- try {
|
|
|
- return addOrder(userId, shopId, goodsId, num, skuId, skuMessage, orderType);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.error("下单异常:" + e.getMessage(), e);
|
|
|
- } finally {
|
|
|
- reentrantReadWriteLock.writeLock().unlock();
|
|
|
- }
|
|
|
- return Result.error("系统繁忙,请稍后再试!");
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 判断店铺当前时间是否营业时间范围内
|
|
|
- * @param shopId 店铺id
|
|
|
- * @return boolean
|
|
|
- */
|
|
|
- private boolean isShopBusinessTime(Long shopId) {
|
|
|
- GoodsShop goodsShop = goodsShopDao.selectById(shopId);
|
|
|
- if (goodsShop == null) {
|
|
|
- throw new SqxException("无效的店铺id");
|
|
|
- }
|
|
|
- String businessHours = goodsShop.getBusinessHours();
|
|
|
- String lockHours = goodsShop.getLockHours();
|
|
|
+ @Autowired
|
|
|
+ private RedissonClient redissonClient;
|
|
|
|
|
|
- // 营业时间和闭店时间有一个为空,则直接返回true,默认全天营业
|
|
|
- if (StringUtils.isEmpty(businessHours) || StringUtils.isEmpty(lockHours)) {
|
|
|
- return true;
|
|
|
- }
|
|
|
+ private static final DateTimeFormatter DTF = DateTimeFormatter.ofPattern(DateUtils.TIME_PATTERN1);
|
|
|
|
|
|
- LocalTime now = LocalTime.now();
|
|
|
|
|
|
- return now.isAfter(LocalTime.parse(businessHours)) && now.isBefore(LocalTime.parse(lockHours));
|
|
|
- }
|
|
|
|
|
|
@Transactional
|
|
|
- public Result addOrder(Long userId, Long shopId, Long goodsId, Integer num, Long skuId, String skuMessage, Integer orderType) {
|
|
|
+ @Override
|
|
|
+ public void insertOrder(Long userId, Long shopId, Long goodsId, Integer num, Long skuId, String skuMessage, Integer orderType) {
|
|
|
// 判断当前时间是否在店铺营业范围内
|
|
|
if (!isShopBusinessTime(shopId)) {
|
|
|
- return Result.error("店铺已打烊!");
|
|
|
+ throw new SqxException("店铺已打烊!");
|
|
|
}
|
|
|
|
|
|
//先判断该商品的库存是否足够
|
|
|
GoodsShopRelevancy goodsShopRelevancy = goodsShopRelevancyDao.selectOne(new QueryWrapper<GoodsShopRelevancy>().eq("shop_id", shopId).eq("goods_id", goodsId));
|
|
|
if (goodsShopRelevancy.getInventory() < num) {
|
|
|
- return Result.error("该商品库存不足!");
|
|
|
+ throw new SqxException("该商品库存不足!");
|
|
|
}
|
|
|
- TbOrder order = new TbOrder();
|
|
|
- order = appOrderDao.selectOne(new QueryWrapper<TbOrder>()
|
|
|
- .eq("user_id", userId).eq("shop_id", shopId).eq("status", 1));
|
|
|
- Goods goods = goodsDao.selectById(goodsId);
|
|
|
- UserEntity userEntity = userDao.selectById(userId);
|
|
|
- TbOrder tbOrder = new TbOrder();
|
|
|
- String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
|
|
- if (order == null) {
|
|
|
- tbOrder.setUserId(userId);
|
|
|
- tbOrder.setUserName(userEntity.getUserName());
|
|
|
- tbOrder.setPhone(userEntity.getPhone());
|
|
|
- tbOrder.setOrderNumber(getGeneralOrder());
|
|
|
- tbOrder.setIsPay(0);
|
|
|
- tbOrder.setDeleteFlag(0);
|
|
|
- tbOrder.setStatus(1);
|
|
|
- tbOrder.setShopId(shopId);
|
|
|
- //创建订单,订单发起人就是该登录用户
|
|
|
- tbOrder.setParentUserId(userId);
|
|
|
- tbOrder.setCreateTime(format);
|
|
|
- tbOrder.setAddGoodsTime(format);
|
|
|
- appOrderDao.insertOrder(tbOrder);
|
|
|
|
|
|
- TbOrder tbOrder1 = new TbOrder();
|
|
|
- tbOrder1.setOrderId(tbOrder.getOrderId());
|
|
|
- tbOrder1.setParentId(tbOrder.getOrderId());
|
|
|
- appOrderDao.updateById(tbOrder1);
|
|
|
- //添加订单-商品表
|
|
|
- Long orderId = tbOrder.getOrderId();
|
|
|
- OrderGoods orderGoods = new OrderGoods();
|
|
|
- orderGoods.setOrderId(orderId);
|
|
|
- orderGoods.setGoodsName(goods.getGoodsName());
|
|
|
- orderGoods.setSkuId(skuId);
|
|
|
- GoodsSku goodsSku = goodsSkuDao.selectById(skuId);
|
|
|
- orderGoods.setGoodsPrice(goodsSku.getSkuPrice());
|
|
|
- orderGoods.setSkuMessage(skuMessage);
|
|
|
- orderGoods.setGoodsNum(num);
|
|
|
- orderGoods.setGoodsPack(goods.getPackMoney());
|
|
|
- orderGoods.setGoodsPicture(goods.getGoodsCover());
|
|
|
- orderGoods.setGoodsId(goods.getGoodsId());
|
|
|
- orderGoods.setUserId(userId);
|
|
|
- orderGoodsDao.insert(orderGoods);
|
|
|
- } else {
|
|
|
- //添加订单-商品表
|
|
|
- Long orderId = order.getOrderId();
|
|
|
- OrderGoods orderGoods = orderGoodsDao.selectOne(new QueryWrapper<OrderGoods>().eq("order_id", orderId).eq("goods_id", goods.getGoodsId()).eq("sku_id", skuId).eq("user_id", userId));
|
|
|
- if (orderGoods != null) {
|
|
|
- orderGoods.setGoodsNum(orderGoods.getGoodsNum() + 1);
|
|
|
- orderGoodsDao.updateById(orderGoods);
|
|
|
- } else {
|
|
|
- orderGoods = new OrderGoods();
|
|
|
+ RLock lock = redissonClient.getLock(String.format(RedisKey.INSERT_ORDER_LOCK, userId, shopId));
|
|
|
+ lock.lock();
|
|
|
+ try {
|
|
|
+ TbOrder order = appOrderDao.selectOne(new QueryWrapper<TbOrder>().eq("user_id", userId).eq("shop_id", shopId).eq("status", 1));
|
|
|
+ Goods goods = goodsDao.selectById(goodsId);
|
|
|
+ String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
|
|
+ if (order == null) {
|
|
|
+ UserEntity userEntity = userDao.selectById(userId);
|
|
|
+ TbOrder tbOrder = new TbOrder();
|
|
|
+ tbOrder.setUserId(userId);
|
|
|
+ tbOrder.setUserName(userEntity.getUserName());
|
|
|
+ tbOrder.setPhone(userEntity.getPhone());
|
|
|
+ tbOrder.setOrderNumber(getGeneralOrder());
|
|
|
+ tbOrder.setIsPay(0);
|
|
|
+ tbOrder.setDeleteFlag(0);
|
|
|
+ tbOrder.setStatus(1);
|
|
|
+ tbOrder.setShopId(shopId);
|
|
|
+ //创建订单,订单发起人就是该登录用户
|
|
|
+ tbOrder.setParentUserId(userId);
|
|
|
+ tbOrder.setCreateTime(format);
|
|
|
+ tbOrder.setAddGoodsTime(format);
|
|
|
+ appOrderDao.insertOrder(tbOrder);
|
|
|
+
|
|
|
+ TbOrder tbOrder1 = new TbOrder();
|
|
|
+ tbOrder1.setOrderId(tbOrder.getOrderId());
|
|
|
+ tbOrder1.setParentId(tbOrder.getOrderId());
|
|
|
+ appOrderDao.updateById(tbOrder1);
|
|
|
+ //添加订单-商品表
|
|
|
+ Long orderId = tbOrder.getOrderId();
|
|
|
+ OrderGoods orderGoods = new OrderGoods();
|
|
|
orderGoods.setOrderId(orderId);
|
|
|
orderGoods.setGoodsName(goods.getGoodsName());
|
|
|
orderGoods.setSkuId(skuId);
|
|
|
@@ -274,16 +225,61 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
orderGoods.setGoodsId(goods.getGoodsId());
|
|
|
orderGoods.setUserId(userId);
|
|
|
orderGoodsDao.insert(orderGoods);
|
|
|
+ } else {
|
|
|
+ //添加订单-商品表
|
|
|
+ Long orderId = order.getOrderId();
|
|
|
+ OrderGoods orderGoods = orderGoodsDao.selectOne(new QueryWrapper<OrderGoods>().eq("order_id", orderId).eq("goods_id", goods.getGoodsId()).eq("sku_id", skuId).eq("user_id", userId));
|
|
|
+ if (orderGoods != null) {
|
|
|
+ orderGoods.setGoodsNum(orderGoods.getGoodsNum() + 1);
|
|
|
+ orderGoodsDao.updateById(orderGoods);
|
|
|
+ } else {
|
|
|
+ orderGoods = new OrderGoods();
|
|
|
+ orderGoods.setOrderId(orderId);
|
|
|
+ orderGoods.setGoodsName(goods.getGoodsName());
|
|
|
+ orderGoods.setSkuId(skuId);
|
|
|
+ GoodsSku goodsSku = goodsSkuDao.selectById(skuId);
|
|
|
+ orderGoods.setGoodsPrice(goodsSku.getSkuPrice());
|
|
|
+ orderGoods.setSkuMessage(skuMessage);
|
|
|
+ orderGoods.setGoodsNum(num);
|
|
|
+ orderGoods.setGoodsPack(goods.getPackMoney());
|
|
|
+ orderGoods.setGoodsPicture(goods.getGoodsCover());
|
|
|
+ orderGoods.setGoodsId(goods.getGoodsId());
|
|
|
+ orderGoods.setUserId(userId);
|
|
|
+ orderGoodsDao.insert(orderGoods);
|
|
|
+ }
|
|
|
+ //修改订单表最后一次添加商品的时间
|
|
|
+ TbOrder tbOrder1 = new TbOrder();
|
|
|
+ tbOrder1.setOrderId(orderId);
|
|
|
+ tbOrder1.setAddGoodsTime(format);
|
|
|
+ appOrderDao.updateById(tbOrder1);
|
|
|
}
|
|
|
- //修改订单表最后一次添加商品的时间
|
|
|
- TbOrder tbOrder1 = new TbOrder();
|
|
|
- tbOrder1.setOrderId(orderId);
|
|
|
- tbOrder1.setAddGoodsTime(format);
|
|
|
- appOrderDao.updateById(tbOrder1);
|
|
|
+ } finally {
|
|
|
+ lock.unlock();
|
|
|
}
|
|
|
- return Result.success();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 判断店铺当前时间是否营业时间范围内
|
|
|
+ * @param shopId 店铺id
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ private boolean isShopBusinessTime(Long shopId) {
|
|
|
+ GoodsShop goodsShop = goodsShopDao.selectById(shopId);
|
|
|
+ if (goodsShop == null) {
|
|
|
+ throw new SqxException("无效的店铺id");
|
|
|
+ }
|
|
|
+ String businessHours = goodsShop.getBusinessHours();
|
|
|
+ String lockHours = goodsShop.getLockHours();
|
|
|
+
|
|
|
+ // 营业时间和闭店时间有一个为空,则直接返回true,默认全天营业
|
|
|
+ if (StringUtils.isEmpty(businessHours) || StringUtils.isEmpty(lockHours)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ LocalTime now = LocalTime.now();
|
|
|
+
|
|
|
+ return now.isAfter(LocalTime.parse(businessHours)) && now.isBefore(LocalTime.parse(lockHours));
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public Result shareTheBill(Long userId, Long shopId) {
|
|
|
@@ -368,8 +364,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
pages = new Page<>();
|
|
|
}
|
|
|
return evaluateDao.getEvaluateList(pages, evaluate);
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -423,8 +417,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
return parentOrder;
|
|
|
}
|
|
|
|
|
|
- private static final DateTimeFormatter DTF = DateTimeFormatter.ofPattern(DateUtils.TIME_PATTERN1);
|
|
|
-
|
|
|
/**
|
|
|
* 校验订单类型
|
|
|
*/
|
|
|
@@ -1447,10 +1439,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public Result updateGoodsNum(Long orderGoodsId, Integer type, Integer num, Long shopId) {
|
|
|
- /*reentrantReadWriteLock.writeLock().lock();
|
|
|
- try{*/
|
|
|
- //type = 1增加商品数 = 2 减少商品数
|
|
|
-
|
|
|
+ // type = 1增加商品数 = 2 减少商品数
|
|
|
OrderGoods orderGoods = orderGoodsDao.selectById(orderGoodsId);
|
|
|
if(orderGoods==null){
|
|
|
return Result.error("系统繁忙,请稍后再试!");
|
|
|
@@ -1477,12 +1466,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
orderGoodsDao.updateById(orderGoods2);
|
|
|
}
|
|
|
}
|
|
|
- /*}catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- log.error("减少购物车商品出错:"+e.getMessage(),e);
|
|
|
- }finally {
|
|
|
- reentrantReadWriteLock.writeLock().unlock();
|
|
|
- }*/
|
|
|
return Result.success();
|
|
|
}
|
|
|
|
|
|
@@ -1758,28 +1741,24 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
|
|
|
@Override
|
|
|
public Result updateOrder(TbOrder order) {
|
|
|
- reentrantReadWriteLock.writeLock().lock();
|
|
|
+ RLock lock = redissonClient.getLock(String.format(RedisKey.UPDATE_ORDER_LOCK, order.getOrderId()));
|
|
|
+ lock.lock();
|
|
|
try {
|
|
|
return updateOrders(order);
|
|
|
- } catch (Exception e) {
|
|
|
- throw e;
|
|
|
} finally {
|
|
|
- reentrantReadWriteLock.writeLock().unlock();
|
|
|
+ lock.unlock();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Result accomplishOrder(Long orderId) {
|
|
|
- reentrantReadWriteLock.writeLock().lock();
|
|
|
+ RLock lock = redissonClient.getLock(String.format(RedisKey.FINISH_ORDER_LOCK, orderId));
|
|
|
+ lock.lock();
|
|
|
try {
|
|
|
return accomplishOrders(orderId,1);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.error("完成订单异常:" + e.getMessage(), e);
|
|
|
} finally {
|
|
|
- reentrantReadWriteLock.writeLock().unlock();
|
|
|
+ lock.unlock();
|
|
|
}
|
|
|
- return Result.error("系统繁忙,请稍后再试!");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1976,52 +1955,52 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
return Result.success();
|
|
|
}
|
|
|
|
|
|
- @Scheduled(cron = "0 */10 * * * ?")
|
|
|
- public void orderEnd() {
|
|
|
- CommonInfo one = commonInfoService.findOne(268);
|
|
|
- DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
- List<TbOrder> orderList = appOrderDao.selectList(new QueryWrapper<TbOrder>().eq("status", 3));
|
|
|
- for (TbOrder tbOrder : orderList) {
|
|
|
- LocalDateTime updateTime = LocalDateTime.parse(tbOrder.getUpdateTime(), df);
|
|
|
- //计算当前订单什么时候超时完成
|
|
|
- LocalDateTime overDateTime = updateTime.plusHours(Integer.parseInt(one.getValue()));
|
|
|
- if (LocalDateTime.now().isAfter(overDateTime)) {
|
|
|
- log.info("操作完成订单6:"+tbOrder.getOrderId());
|
|
|
- accomplishOrders(tbOrder.getOrderId(),2);
|
|
|
- //管理端完成订单,则消息通知用户
|
|
|
- //添加消息记录
|
|
|
- MessageInfo messageInfo = new MessageInfo();
|
|
|
- messageInfo.setState(String.valueOf(5));
|
|
|
- messageInfo.setTitle("订单完成");
|
|
|
- messageInfo.setContent("您的订单已完成,欢迎下次光临");
|
|
|
- messageInfo.setCreateAt(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
- messageInfo.setUserId(tbOrder.getUserId().toString());
|
|
|
- messageInfoDao.insert(messageInfo);
|
|
|
- //设置小程序消息推送
|
|
|
- CommonInfo one1 = commonInfoService.findOne(269);
|
|
|
- List<String> msgList = new ArrayList<>();
|
|
|
- Long shopId = tbOrder.getShopId();
|
|
|
- GoodsShop goodsShop = goodsShopDao.selectById(shopId);
|
|
|
- String orderNum1 = tbOrder.getOrderNumber();
|
|
|
- msgList.add("订单完成");
|
|
|
- msgList.add(orderNum1);
|
|
|
- if (goodsShop != null && goodsShop.getShopName() != null) {
|
|
|
- String shopName = goodsShop.getShopName();
|
|
|
- msgList.add(shopName);
|
|
|
- } else {
|
|
|
- msgList.add("");
|
|
|
- }
|
|
|
- msgList.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
- UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
|
|
|
- if (userEntity != null && userEntity.getOpenId() != null) {
|
|
|
- SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one1.getValue(), msgList, 1);
|
|
|
- userService.pushToSingle("订单完成", "亲爱的用户您好,您的订单已完成,欢迎下次光临!", userEntity.getClientid());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+ // @Scheduled(cron = "0 */10 * * * ?")
|
|
|
+ // public void orderEnd() {
|
|
|
+ // CommonInfo one = commonInfoService.findOne(268);
|
|
|
+ // DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ // List<TbOrder> orderList = appOrderDao.selectList(new QueryWrapper<TbOrder>().eq("status", 3));
|
|
|
+ // for (TbOrder tbOrder : orderList) {
|
|
|
+ // LocalDateTime updateTime = LocalDateTime.parse(tbOrder.getUpdateTime(), df);
|
|
|
+ // //计算当前订单什么时候超时完成
|
|
|
+ // LocalDateTime overDateTime = updateTime.plusHours(Integer.parseInt(one.getValue()));
|
|
|
+ // if (LocalDateTime.now().isAfter(overDateTime)) {
|
|
|
+ // log.info("操作完成订单6:"+tbOrder.getOrderId());
|
|
|
+ // accomplishOrders(tbOrder.getOrderId(),2);
|
|
|
+ // //管理端完成订单,则消息通知用户
|
|
|
+ // //添加消息记录
|
|
|
+ // MessageInfo messageInfo = new MessageInfo();
|
|
|
+ // messageInfo.setState(String.valueOf(5));
|
|
|
+ // messageInfo.setTitle("订单完成");
|
|
|
+ // messageInfo.setContent("您的订单已完成,欢迎下次光临");
|
|
|
+ // messageInfo.setCreateAt(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
+ // messageInfo.setUserId(tbOrder.getUserId().toString());
|
|
|
+ // messageInfoDao.insert(messageInfo);
|
|
|
+ // //设置小程序消息推送
|
|
|
+ // CommonInfo one1 = commonInfoService.findOne(269);
|
|
|
+ // List<String> msgList = new ArrayList<>();
|
|
|
+ // Long shopId = tbOrder.getShopId();
|
|
|
+ // GoodsShop goodsShop = goodsShopDao.selectById(shopId);
|
|
|
+ // String orderNum1 = tbOrder.getOrderNumber();
|
|
|
+ // msgList.add("订单完成");
|
|
|
+ // msgList.add(orderNum1);
|
|
|
+ // if (goodsShop != null && goodsShop.getShopName() != null) {
|
|
|
+ // String shopName = goodsShop.getShopName();
|
|
|
+ // msgList.add(shopName);
|
|
|
+ // } else {
|
|
|
+ // msgList.add("");
|
|
|
+ // }
|
|
|
+ // msgList.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
+ // UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
|
|
|
+ // if (userEntity != null && userEntity.getOpenId() != null) {
|
|
|
+ // SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one1.getValue(), msgList, 1);
|
|
|
+ // userService.pushToSingle("订单完成", "亲爱的用户您好,您的订单已完成,欢迎下次光临!", userEntity.getClientid());
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
@Transactional
|
|
|
@Override
|
|
|
@@ -2063,15 +2042,13 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
|
|
|
@Override
|
|
|
public Result userCancelOrder(Long orderId){
|
|
|
- reentrantReadWriteLock.writeLock().lock();
|
|
|
+ RLock lock = redissonClient.getLock(String.format(RedisKey.CANCEL_ORDER_LOCK, orderId));
|
|
|
+ lock.lock();
|
|
|
try {
|
|
|
return userCancelOrders(orderId);
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }finally {
|
|
|
- reentrantReadWriteLock.writeLock().unlock();
|
|
|
+ } finally {
|
|
|
+ lock.unlock();
|
|
|
}
|
|
|
- return Result.error("系统繁忙,请稍后再试!");
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -2225,18 +2202,15 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
|
|
|
@Override
|
|
|
public Result adminCancelOrder(Long orderId){
|
|
|
- reentrantReadWriteLock.writeLock().lock();
|
|
|
+ RLock lock = redissonClient.getLock(String.format(RedisKey.CANCEL_ORDER_LOCK, orderId));
|
|
|
+ lock.lock();
|
|
|
try {
|
|
|
return adminCancelOrders(orderId);
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }finally {
|
|
|
- reentrantReadWriteLock.writeLock().unlock();
|
|
|
+ } finally {
|
|
|
+ lock.unlock();
|
|
|
}
|
|
|
- return Result.error("系统繁忙,请稍后再试!");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Transactional
|
|
|
public Result adminCancelOrders(Long orderId) {
|
|
|
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
|
|
@@ -2368,23 +2342,16 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
tbOrderList.getRecords().get(i).setOrderGoodsList(list);
|
|
|
}
|
|
|
if (shopId != null && userId != null) {
|
|
|
- reentrantReadWriteLock.writeLock().lock();
|
|
|
- try {
|
|
|
- UserBrowse userBrowse = userBrowseDao.selectOne(new QueryWrapper<UserBrowse>().eq("user_id", userId).eq("by_browse_id", shopId));
|
|
|
- String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
|
|
- if (userBrowse != null) {
|
|
|
- userBrowse.setUpdateTime(format);
|
|
|
- } else {
|
|
|
- userBrowse = new UserBrowse();
|
|
|
- userBrowse.setUserId(userId);
|
|
|
- userBrowse.setByBrowseId(shopId);
|
|
|
- userBrowse.setUpdateTime(format);
|
|
|
- userBrowseDao.insert(userBrowse);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- reentrantReadWriteLock.writeLock().unlock();
|
|
|
+ UserBrowse userBrowse = userBrowseDao.selectOne(new QueryWrapper<UserBrowse>().eq("user_id", userId).eq("by_browse_id", shopId));
|
|
|
+ String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
|
|
+ if (userBrowse != null) {
|
|
|
+ userBrowse.setUpdateTime(format);
|
|
|
+ } else {
|
|
|
+ userBrowse = new UserBrowse();
|
|
|
+ userBrowse.setUserId(userId);
|
|
|
+ userBrowse.setByBrowseId(shopId);
|
|
|
+ userBrowse.setUpdateTime(format);
|
|
|
+ userBrowseDao.insert(userBrowse);
|
|
|
}
|
|
|
}
|
|
|
PageUtils pageUtils = new PageUtils(tbOrderList);
|
|
|
@@ -2402,24 +2369,29 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
}
|
|
|
|
|
|
|
|
|
- @Scheduled(cron = "0 */1 * * * ?")
|
|
|
- public void makeOrders(){
|
|
|
- //自动制作完成订单
|
|
|
- String value = commonInfoService.findOne(418).getValue();
|
|
|
- if("是".equals(value)){
|
|
|
- String minute = commonInfoService.findOne(419).getValue();
|
|
|
- LocalDateTime minusMinutes = LocalDateTime.now().minusMinutes(Long.valueOf(minute));
|
|
|
- List<TbOrder> tbOrders = baseMapper.selectMakeOrdersList(minusMinutes);
|
|
|
- for (TbOrder order:tbOrders){
|
|
|
- try{
|
|
|
- order.setStatus(3);
|
|
|
- updateOrder(order);
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- log.error("自动完成异常:"+e.getMessage(),e);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // @Scheduled(cron = "0 */1 * * * ?")
|
|
|
+ // public void makeOrders(){
|
|
|
+ // //自动制作完成订单
|
|
|
+ // String value = commonInfoService.findOne(418).getValue();
|
|
|
+ // if("是".equals(value)){
|
|
|
+ // String minute = commonInfoService.findOne(419).getValue();
|
|
|
+ // LocalDateTime minusMinutes = LocalDateTime.now().minusMinutes(Long.valueOf(minute));
|
|
|
+ // List<TbOrder> tbOrders = baseMapper.selectMakeOrdersList(minusMinutes);
|
|
|
+ // for (TbOrder order:tbOrders){
|
|
|
+ // try{
|
|
|
+ // order.setStatus(3);
|
|
|
+ // updateOrder(order);
|
|
|
+ // }catch (Exception e){
|
|
|
+ // e.printStackTrace();
|
|
|
+ // log.error("自动完成异常:"+e.getMessage(),e);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<TbOrder> getProdIngOrders(LocalDateTime minusMinutes) {
|
|
|
+ return baseMapper.selectMakeOrdersList(minusMinutes);
|
|
|
}
|
|
|
|
|
|
/**
|