1.创建订单同步保存用户id

2.代客下单订单不重复出票
3.订单支付完毕清楚当前台桌缓存订单号
This commit is contained in:
2024-08-31 16:47:12 +08:00
parent 1ee3c33fa0
commit 7be5d2354f
6 changed files with 85 additions and 39 deletions

View File

@@ -103,6 +103,8 @@ public class TbOrderInfo implements Serializable {
private String isWinner; private String isWinner;
private String shopName; private String shopName;
private String useType;
//根据状态返回 需付款 已付款 未付款 已退 //根据状态返回 需付款 已付款 未付款 已退
private String description; private String description;

View File

@@ -1,6 +1,8 @@
package com.chaozhanggui.system.cashierservice.rabbit; package com.chaozhanggui.system.cashierservice.rabbit;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.dao.*;
import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.*;
@@ -18,6 +20,7 @@ import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -74,6 +77,9 @@ public class PrintMechineConsumer {
return; return;
} }
log.info("打印机列表,{}", ArrayUtil.toString(list));
log.info("待打印订单信息, {}", orderInfo);
list.parallelStream().forEach(tbPrintMachineWithBLOBs->{ list.parallelStream().forEach(tbPrintMachineWithBLOBs->{
if (!"network".equals(tbPrintMachineWithBLOBs.getConnectionType())) { if (!"network".equals(tbPrintMachineWithBLOBs.getConnectionType())) {
log.error("非网络打印机:{},{}",tbPrintMachineWithBLOBs.getAddress(),tbPrintMachineWithBLOBs.getConnectionType()); log.error("非网络打印机:{},{}",tbPrintMachineWithBLOBs.getAddress(),tbPrintMachineWithBLOBs.getConnectionType());
@@ -184,6 +190,10 @@ public class PrintMechineConsumer {
cashierCarts = tbCashierCartMapper.selectByOrderId(orderId,"final"); cashierCarts = tbCashierCartMapper.selectByOrderId(orderId,"final");
if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) {
// 取餐号不为空为代客下单
if ("postPay".equals(orderInfo.getUseType())) {
return;
}
cashierCarts.parallelStream().forEach(it -> { cashierCarts.parallelStream().forEach(it -> {
String categoryId; String categoryId;

View File

@@ -26,4 +26,11 @@ public class RedisCst {
public static final String CREATE_ORDER_LOCK = "CREATE_ORDER_LOCK:"; public static final String CREATE_ORDER_LOCK = "CREATE_ORDER_LOCK:";
public static final String SEND_STOCK_WARN_MSG = "SEND_STOCK_WARN_MSG:"; public static final String SEND_STOCK_WARN_MSG = "SEND_STOCK_WARN_MSG:";
public static final String SONG_PAY_LOCK = "song_pay_lock:"; public static final String SONG_PAY_LOCK = "song_pay_lock:";
static String CURRENT_TABLE_ORDER = "CURRENT_TABLE_ORDER:";
public static String getCurrentOrderKey(String tableId, String shopId) {
return CURRENT_TABLE_ORDER + shopId + ":" + tableId;
}
} }

View File

@@ -25,6 +25,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -93,6 +94,8 @@ public class CartService {
private final RedisTemplate<String, Object> redisTemplate; private final RedisTemplate<String, Object> redisTemplate;
private final StringRedisTemplate stringRedisTemplate;
@Autowired @Autowired
private TbProskuConMapper tbProskuConMapper; private TbProskuConMapper tbProskuConMapper;
@@ -100,7 +103,7 @@ public class CartService {
@Autowired @Autowired
TbConsInfoMapper tbConsInfoMapper; TbConsInfoMapper tbConsInfoMapper;
public CartService(TbUserShopMsgMapper tbUserShopMsgMapper, WechatUtil wechatUtil, WxAccountUtil wxAccountUtil, TbShopOpenIdMapper shopOpenIdMapper, ProductService productService, TbProductMapper tbProductMapper, RedisTemplate<String, Object> redisTemplate) { public CartService(TbUserShopMsgMapper tbUserShopMsgMapper, WechatUtil wechatUtil, WxAccountUtil wxAccountUtil, TbShopOpenIdMapper shopOpenIdMapper, ProductService productService, TbProductMapper tbProductMapper, RedisTemplate<String, Object> redisTemplate, StringRedisTemplate stringRedisTemplate) {
this.tbUserShopMsgMapper = tbUserShopMsgMapper; this.tbUserShopMsgMapper = tbUserShopMsgMapper;
this.wechatUtil = wechatUtil; this.wechatUtil = wechatUtil;
this.wxAccountUtil = wxAccountUtil; this.wxAccountUtil = wxAccountUtil;
@@ -108,6 +111,7 @@ public class CartService {
this.productService = productService; this.productService = productService;
this.tbProductMapper = tbProductMapper; this.tbProductMapper = tbProductMapper;
this.redisTemplate = redisTemplate; this.redisTemplate = redisTemplate;
this.stringRedisTemplate = stringRedisTemplate;
} }
public void initCart(JSONObject jsonObject) { public void initCart(JSONObject jsonObject) {
@@ -708,6 +712,7 @@ public class CartService {
orderInfo.setIsBuyCoupon(isBuyYhq); orderInfo.setIsBuyCoupon(isBuyYhq);
orderInfo.setIsUseCoupon(isuseYhq); orderInfo.setIsUseCoupon(isuseYhq);
orderInfo.setRemark(remark); orderInfo.setRemark(remark);
orderInfo.setUserId(userId);
orderInfoMapper.updateByPrimaryKeySelective(orderInfo); orderInfoMapper.updateByPrimaryKeySelective(orderInfo);
} else { } else {
@@ -719,6 +724,7 @@ public class CartService {
orderInfo.setIsUseCoupon(isuseYhq); orderInfo.setIsUseCoupon(isuseYhq);
orderInfo.setUserCouponAmount(couponAmount); orderInfo.setUserCouponAmount(couponAmount);
orderInfo.setRemark(remark); orderInfo.setRemark(remark);
orderInfo.setUserId(userId);
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
String outNumber = redisUtil.getMessage(RedisCst.OUT_NUMBER.concat(jsonObject.getString("shopId"))); String outNumber = redisUtil.getMessage(RedisCst.OUT_NUMBER.concat(jsonObject.getString("shopId")));

View File

@@ -31,6 +31,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -158,6 +159,8 @@ public class PayService {
private final TbShopSongOrderService shopSongOrderService; private final TbShopSongOrderService shopSongOrderService;
@Autowired @Autowired
private MQUtils mQUtils; private MQUtils mQUtils;
@Autowired
private StringRedisTemplate stringRedisTemplate;
public PayService(@Qualifier("tbShopSongOrderServiceImpl") TbShopSongOrderService shopSongOrderService) { public PayService(@Qualifier("tbShopSongOrderServiceImpl") TbShopSongOrderService shopSongOrderService) {
this.shopSongOrderService = shopSongOrderService; this.shopSongOrderService = shopSongOrderService;
@@ -330,6 +333,7 @@ public class PayService {
if (ObjectUtil.isEmpty(orderInfo)) { if (ObjectUtil.isEmpty(orderInfo)) {
return Result.fail("订单信息不存在"); return Result.fail("订单信息不存在");
} }
if (System.currentTimeMillis() - orderInfo.getCreatedAt() > 60 * 15 * 1000) { if (System.currentTimeMillis() - orderInfo.getCreatedAt() > 60 * 15 * 1000) {
return Result.fail("订单十五分钟内有效,当前已超时,请重新下单。"); return Result.fail("订单十五分钟内有效,当前已超时,请重新下单。");
} }
@@ -432,10 +436,12 @@ public class PayService {
baObj.put("time",flow.getCreateTime()); baObj.put("time",flow.getCreateTime());
producer.balance(baObj.toString()); producer.balance(baObj.toString());
// 为代客下单清楚当前台桌最新订单
String currentOrderKey = RedisCst.getCurrentOrderKey(orderInfo.getTableId(), orderInfo.getShopId());
String currentOrderId = stringRedisTemplate.opsForValue().get(currentOrderKey);
if (currentOrderId != null && currentOrderId.equals(orderId)) {
stringRedisTemplate.delete(currentOrderKey);
}
return Result.success(CodeEnum.SUCCESS, "1"); return Result.success(CodeEnum.SUCCESS, "1");
} }
@@ -916,6 +922,13 @@ public class PayService {
sendOrderToClient(orderInfo); sendOrderToClient(orderInfo);
redisUtil.deleteByKey(RedisCst.ORDER_EXPIRED.concat(orderInfo.getId().toString())); redisUtil.deleteByKey(RedisCst.ORDER_EXPIRED.concat(orderInfo.getId().toString()));
// 为代客下单清除当前台桌最新订单
String currentOrderKey = RedisCst.getCurrentOrderKey(orderInfo.getTableId(), orderInfo.getShopId());
String currentOrderId = stringRedisTemplate.opsForValue().get(currentOrderKey);
if (currentOrderId != null && currentOrderId.equals(orderInfo.getId().toString())) {
stringRedisTemplate.delete(currentOrderKey);
}
// 发送mq消息并保存库存记录 // 发送mq消息并保存库存记录
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
data.put("orderId", orderInfo.getId()); data.put("orderId", orderInfo.getId());
@@ -967,6 +980,13 @@ public class PayService {
sendOrderToClient(orderInfo); sendOrderToClient(orderInfo);
redisUtil.deleteByKey(RedisCst.ORDER_EXPIRED.concat(orderInfo.getId().toString())); redisUtil.deleteByKey(RedisCst.ORDER_EXPIRED.concat(orderInfo.getId().toString()));
// 为代客下单清楚当前台桌最新订单
String currentOrderKey = RedisCst.getCurrentOrderKey(orderInfo.getTableId(), orderInfo.getShopId());
String currentOrderId = stringRedisTemplate.opsForValue().get(currentOrderKey);
if (currentOrderId != null && currentOrderId.equals(orderInfo.getId().toString())) {
stringRedisTemplate.delete(currentOrderKey);
}
// 发送mq消息并保存库存记录 // 发送mq消息并保存库存记录
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
data.put("orderId", orderInfo.getId()); data.put("orderId", orderInfo.getId());

View File

@@ -61,7 +61,7 @@
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List"/> *
from tb_order_info from tb_order_info
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</select> </select>
@@ -486,9 +486,10 @@
<if test="isBuyCoupon != null"> <if test="isBuyCoupon != null">
is_buy_coupon = #{isBuyCoupon,jdbcType=VARCHAR}, is_buy_coupon = #{isBuyCoupon,jdbcType=VARCHAR},
</if> </if>
<if test="isUseCoupon != null"> <if test="userId != null">
is_use_coupon = #{isUseCoupon,jdbcType=VARCHAR}, user_id = #{userId,jdbcType=VARCHAR},
</if> </if>
</set> </set>
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</update> </update>