diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java index 3f34ec1..8a08964 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java @@ -103,6 +103,8 @@ public class TbOrderInfo implements Serializable { private String isWinner; private String shopName; + private String useType; + //根据状态返回 需付款 已付款 未付款 已退 private String description; @@ -188,4 +190,4 @@ public class TbOrderInfo implements Serializable { this.createdAt = System.currentTimeMillis(); this.isAccepted = 1; } -} \ No newline at end of file +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java index 1657918..0844c1f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -1,6 +1,8 @@ package com.chaozhanggui.system.cashierservice.rabbit; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; @@ -18,6 +20,7 @@ import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -74,6 +77,9 @@ public class PrintMechineConsumer { return; } + log.info("打印机列表,{}", ArrayUtil.toString(list)); + log.info("待打印订单信息, {}", orderInfo); + list.parallelStream().forEach(tbPrintMachineWithBLOBs->{ if (!"network".equals(tbPrintMachineWithBLOBs.getConnectionType())) { log.error("非网络打印机:{},{}",tbPrintMachineWithBLOBs.getAddress(),tbPrintMachineWithBLOBs.getConnectionType()); @@ -184,6 +190,10 @@ public class PrintMechineConsumer { cashierCarts = tbCashierCartMapper.selectByOrderId(orderId,"final"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { + // 取餐号不为空为代客下单 + if ("postPay".equals(orderInfo.getUseType())) { + return; + } cashierCarts.parallelStream().forEach(it -> { String categoryId; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java b/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java index d305be3..e83e9c2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java @@ -26,4 +26,11 @@ public class RedisCst { 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 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; + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java index 833db96..2e65900 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -93,6 +94,8 @@ public class CartService { private final RedisTemplate redisTemplate; + private final StringRedisTemplate stringRedisTemplate; + @Autowired private TbProskuConMapper tbProskuConMapper; @@ -100,7 +103,7 @@ public class CartService { @Autowired TbConsInfoMapper tbConsInfoMapper; - public CartService(TbUserShopMsgMapper tbUserShopMsgMapper, WechatUtil wechatUtil, WxAccountUtil wxAccountUtil, TbShopOpenIdMapper shopOpenIdMapper, ProductService productService, TbProductMapper tbProductMapper, RedisTemplate redisTemplate) { + public CartService(TbUserShopMsgMapper tbUserShopMsgMapper, WechatUtil wechatUtil, WxAccountUtil wxAccountUtil, TbShopOpenIdMapper shopOpenIdMapper, ProductService productService, TbProductMapper tbProductMapper, RedisTemplate redisTemplate, StringRedisTemplate stringRedisTemplate) { this.tbUserShopMsgMapper = tbUserShopMsgMapper; this.wechatUtil = wechatUtil; this.wxAccountUtil = wxAccountUtil; @@ -108,6 +111,7 @@ public class CartService { this.productService = productService; this.tbProductMapper = tbProductMapper; this.redisTemplate = redisTemplate; + this.stringRedisTemplate = stringRedisTemplate; } public void initCart(JSONObject jsonObject) { @@ -708,6 +712,7 @@ public class CartService { orderInfo.setIsBuyCoupon(isBuyYhq); orderInfo.setIsUseCoupon(isuseYhq); orderInfo.setRemark(remark); + orderInfo.setUserId(userId); orderInfoMapper.updateByPrimaryKeySelective(orderInfo); } else { @@ -719,6 +724,7 @@ public class CartService { orderInfo.setIsUseCoupon(isuseYhq); orderInfo.setUserCouponAmount(couponAmount); orderInfo.setRemark(remark); + orderInfo.setUserId(userId); JSONObject object = new JSONObject(); String outNumber = redisUtil.getMessage(RedisCst.OUT_NUMBER.concat(jsonObject.getString("shopId"))); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 0b2b1cc..3e832ae 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -31,6 +31,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -158,6 +159,8 @@ public class PayService { private final TbShopSongOrderService shopSongOrderService; @Autowired private MQUtils mQUtils; + @Autowired + private StringRedisTemplate stringRedisTemplate; public PayService(@Qualifier("tbShopSongOrderServiceImpl") TbShopSongOrderService shopSongOrderService) { this.shopSongOrderService = shopSongOrderService; @@ -330,6 +333,7 @@ public class PayService { if (ObjectUtil.isEmpty(orderInfo)) { return Result.fail("订单信息不存在"); } + if (System.currentTimeMillis() - orderInfo.getCreatedAt() > 60 * 15 * 1000) { return Result.fail("订单十五分钟内有效,当前已超时,请重新下单。"); } @@ -432,10 +436,12 @@ public class PayService { baObj.put("time",flow.getCreateTime()); 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"); } @@ -916,6 +922,13 @@ public class PayService { sendOrderToClient(orderInfo); 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消息并保存库存记录 JSONObject data = new JSONObject(); data.put("orderId", orderInfo.getId()); @@ -967,6 +980,13 @@ public class PayService { sendOrderToClient(orderInfo); 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消息并保存库存记录 JSONObject data = new JSONObject(); data.put("orderId", orderInfo.getId()); diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index 5ee9c7d..97196ca 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -51,17 +51,17 @@ - id, order_no, settlement_amount, pack_fee, origin_amount, product_amount, amount, - refund_amount, pay_type, pay_amount, order_amount, freight_amount, discount_ratio, - discount_amount, table_id, small_change, send_type, order_type, product_type, status, - billing_id, merchant_id, shop_id, is_vip, member_id, user_id, product_score, deduct_score, - user_coupon_id, user_coupon_amount, refund_able, paid_time, is_effect, is_group, + id, order_no, settlement_amount, pack_fee, origin_amount, product_amount, amount, + refund_amount, pay_type, pay_amount, order_amount, freight_amount, discount_ratio, + discount_amount, table_id, small_change, send_type, order_type, product_type, status, + billing_id, merchant_id, shop_id, is_vip, member_id, user_id, product_score, deduct_score, + user_coupon_id, user_coupon_amount, refund_able, paid_time, is_effect, is_group, updated_at, `system_time`, created_at, is_accepted, pay_order_no,trade_day,`source`, remark,master_id,`table_name`,is_buy_coupon,is_use_coupon,out_number @@ -72,32 +72,32 @@ - insert into tb_order_info (id, order_no, settlement_amount, - pack_fee, origin_amount, product_amount, - amount, refund_amount, pay_type, - pay_amount, order_amount, freight_amount, - discount_ratio, discount_amount, table_id, - small_change, send_type, order_type, - product_type, status, billing_id, - merchant_id, shop_id, is_vip, - member_id, user_id, product_score, - deduct_score, user_coupon_id, user_coupon_amount, - refund_able, paid_time, is_effect, - is_group, updated_at, system_time, + insert into tb_order_info (id, order_no, settlement_amount, + pack_fee, origin_amount, product_amount, + amount, refund_amount, pay_type, + pay_amount, order_amount, freight_amount, + discount_ratio, discount_amount, table_id, + small_change, send_type, order_type, + product_type, status, billing_id, + merchant_id, shop_id, is_vip, + member_id, user_id, product_score, + deduct_score, user_coupon_id, user_coupon_amount, + refund_able, paid_time, is_effect, + is_group, updated_at, system_time, created_at, is_accepted, pay_order_no,trade_day,source,remark,master_id,table_name,is_buy_coupon,is_use_coupon,out_number ) - values (#{id,jdbcType=INTEGER}, #{orderNo,jdbcType=VARCHAR}, #{settlementAmount,jdbcType=DECIMAL}, - #{packFee,jdbcType=DECIMAL}, #{originAmount,jdbcType=DECIMAL}, #{productAmount,jdbcType=DECIMAL}, - #{amount,jdbcType=DECIMAL}, #{refundAmount,jdbcType=DECIMAL}, #{payType,jdbcType=VARCHAR}, - #{payAmount,jdbcType=DECIMAL}, #{orderAmount,jdbcType=DECIMAL}, #{freightAmount,jdbcType=DECIMAL}, - #{discountRatio,jdbcType=DECIMAL}, #{discountAmount,jdbcType=DECIMAL}, #{tableId,jdbcType=VARCHAR}, - #{smallChange,jdbcType=DECIMAL}, #{sendType,jdbcType=VARCHAR}, #{orderType,jdbcType=VARCHAR}, - #{productType,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{billingId,jdbcType=VARCHAR}, - #{merchantId,jdbcType=VARCHAR}, #{shopId,jdbcType=VARCHAR}, #{isVip,jdbcType=TINYINT}, - #{memberId,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{productScore,jdbcType=INTEGER}, - #{deductScore,jdbcType=INTEGER}, #{userCouponId,jdbcType=VARCHAR}, #{userCouponAmount,jdbcType=DECIMAL}, - #{refundAble,jdbcType=TINYINT}, #{paidTime,jdbcType=BIGINT}, #{isEffect,jdbcType=TINYINT}, - #{isGroup,jdbcType=TINYINT}, #{updatedAt,jdbcType=BIGINT}, #{systemTime,jdbcType=BIGINT}, + values (#{id,jdbcType=INTEGER}, #{orderNo,jdbcType=VARCHAR}, #{settlementAmount,jdbcType=DECIMAL}, + #{packFee,jdbcType=DECIMAL}, #{originAmount,jdbcType=DECIMAL}, #{productAmount,jdbcType=DECIMAL}, + #{amount,jdbcType=DECIMAL}, #{refundAmount,jdbcType=DECIMAL}, #{payType,jdbcType=VARCHAR}, + #{payAmount,jdbcType=DECIMAL}, #{orderAmount,jdbcType=DECIMAL}, #{freightAmount,jdbcType=DECIMAL}, + #{discountRatio,jdbcType=DECIMAL}, #{discountAmount,jdbcType=DECIMAL}, #{tableId,jdbcType=VARCHAR}, + #{smallChange,jdbcType=DECIMAL}, #{sendType,jdbcType=VARCHAR}, #{orderType,jdbcType=VARCHAR}, + #{productType,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{billingId,jdbcType=VARCHAR}, + #{merchantId,jdbcType=VARCHAR}, #{shopId,jdbcType=VARCHAR}, #{isVip,jdbcType=TINYINT}, + #{memberId,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{productScore,jdbcType=INTEGER}, + #{deductScore,jdbcType=INTEGER}, #{userCouponId,jdbcType=VARCHAR}, #{userCouponAmount,jdbcType=DECIMAL}, + #{refundAble,jdbcType=TINYINT}, #{paidTime,jdbcType=BIGINT}, #{isEffect,jdbcType=TINYINT}, + #{isGroup,jdbcType=TINYINT}, #{updatedAt,jdbcType=BIGINT}, #{systemTime,jdbcType=BIGINT}, #{createdAt,jdbcType=BIGINT}, #{isAccepted,jdbcType=TINYINT}, #{payOrderNo,jdbcType=VARCHAR}, #{tradeDay,jdbcType=VARCHAR}, #{source,jdbcType=INTEGER}, #{remark,jdbcType=VARCHAR}, #{masterId,jdbcType=VARCHAR}, #{tableName,jdbcType=VARCHAR}, #{isBuyCoupon,jdbcType=VARCHAR}, #{isUseCoupon,jdbcType=VARCHAR},#{outNumber,jdbcType=VARCHAR} @@ -486,9 +486,10 @@ is_buy_coupon = #{isBuyCoupon,jdbcType=VARCHAR}, - - is_use_coupon = #{isUseCoupon,jdbcType=VARCHAR}, + + user_id = #{userId,jdbcType=VARCHAR}, + where id = #{id,jdbcType=INTEGER} @@ -576,4 +577,4 @@ left join tb_user_info tui on tui.id = toi.user_id where toi.user_id = #{userId} - \ No newline at end of file +