feat: 余额充值增加霸王餐选项
This commit is contained in:
@@ -57,7 +57,8 @@ public class NotifyController {
|
|||||||
if("TRADE_SUCCESS".equals(object.get("state").toString())){
|
if("TRADE_SUCCESS".equals(object.get("state").toString())){
|
||||||
String orderNo=object.get("mchOrderNo").toString();
|
String orderNo=object.get("mchOrderNo").toString();
|
||||||
String tradeNo=object.get("payOrderId").toString();
|
String tradeNo=object.get("payOrderId").toString();
|
||||||
return payService.fstMemberInSuccess(orderNo,tradeNo);
|
String payType=object.getStr("payType");
|
||||||
|
return payService.fstMemberInSuccess(orderNo,tradeNo, payType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1078,7 +1078,7 @@ public class PayService {
|
|||||||
String orderNo = DateUtils.getsdfTimesSS();
|
String orderNo = DateUtils.getsdfTimesSS();
|
||||||
PublicResp<WxScanPayResp> publicResp = thirdPayService
|
PublicResp<WxScanPayResp> publicResp = thirdPayService
|
||||||
.scanpay(thirdUrl, thirdApply.getAppId(),
|
.scanpay(thirdUrl, thirdApply.getAppId(),
|
||||||
"会员充值", "会员充值", new BigDecimal(amount).setScale(2, BigDecimal.ROUND_DOWN)
|
"会员充值", "会员充值", payAmount
|
||||||
.multiply(new BigDecimal(100)).longValue(), "WECHAT",
|
.multiply(new BigDecimal(100)).longValue(), "WECHAT",
|
||||||
thirdApply.getSmallAppid(), memberInDTO.getOpenId(), ip, orderNo, thirdApply.getStoreId(),
|
thirdApply.getSmallAppid(), memberInDTO.getOpenId(), ip, orderNo, thirdApply.getStoreId(),
|
||||||
callInBack, null, thirdApply.getAppToken());
|
callInBack, null, thirdApply.getAppToken());
|
||||||
@@ -1168,6 +1168,86 @@ public class PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单支付成功修改订单和子单状态
|
||||||
|
* @param orderInfo 订单信息
|
||||||
|
* @param payType 支付平台
|
||||||
|
* @param payOrderNO 三方支付订单号
|
||||||
|
*/
|
||||||
|
private void orderSuccessPay(TbOrderInfo orderInfo, String payType, String payOrderNO) {
|
||||||
|
int cartCount = mpCashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
|
||||||
|
.eq(TbCashierCart::getOrderId, orderInfo.getId())
|
||||||
|
.eq(TbCashierCart::getUseType, orderInfo.getUseType())
|
||||||
|
.in(TbCashierCart::getStatus, "create", "closed")
|
||||||
|
.set(TbCashierCart::getStatus, "final"));
|
||||||
|
log.info("更新购物车:{}", cartCount);
|
||||||
|
|
||||||
|
//更新子单状态
|
||||||
|
mpOrderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>().eq(TbOrderDetail::getOrderId, orderInfo.getId())
|
||||||
|
.eq(TbOrderDetail::getUseType, orderInfo.getUseType())
|
||||||
|
.in(TbOrderDetail::getStatus, "unpaid")
|
||||||
|
.set(TbOrderDetail::getStatus, "closed"));
|
||||||
|
|
||||||
|
//修改主单状态
|
||||||
|
orderInfo.setStatus("closed");
|
||||||
|
if("alipay".equalsIgnoreCase(payType)){
|
||||||
|
orderInfo.setPayType("ali_lite");
|
||||||
|
}else if("wechat".equalsIgnoreCase(payType)){
|
||||||
|
orderInfo.setPayType("wx_lite");
|
||||||
|
}
|
||||||
|
orderInfo.setPayOrderNo(payOrderNO);
|
||||||
|
orderInfo.setPayAmount(orderInfo.getOrderAmount());
|
||||||
|
orderInfo.setPaidTime(System.currentTimeMillis());
|
||||||
|
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
||||||
|
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("token", 0);
|
||||||
|
jsonObject.put("type", "wxcreate");
|
||||||
|
jsonObject.put("orderId", orderInfo.getId().toString());
|
||||||
|
producer.putOrderCollect(jsonObject.toJSONString());
|
||||||
|
|
||||||
|
log.info("发送订单打印数据");
|
||||||
|
ShopEatTypeInfoDTO shopEatTypeInfoDTO = shopUtils.checkEatModel(orderInfo.getTableId(), orderInfo.getShopId());
|
||||||
|
List<TbOrderDetail> detailList = mpOrderDetailMapper.selectList(new LambdaQueryWrapper<TbOrderDetail>()
|
||||||
|
.eq(TbOrderDetail::getOrderId, orderInfo.getId())
|
||||||
|
.eq(TbOrderDetail::getStatus, "closed"));
|
||||||
|
// 打印消息
|
||||||
|
if (!shopEatTypeInfoDTO.isDineInAfter()) {
|
||||||
|
mQUtils.printDishesTicket(orderInfo.getId(), false, detailList.toArray(new TbOrderDetail[0]));
|
||||||
|
}
|
||||||
|
mQUtils.printPlaceTicket(orderInfo.getId(), false);
|
||||||
|
// producer.printMechine(orderInfo.getId() + "");
|
||||||
|
JSONObject coupons = new JSONObject();
|
||||||
|
coupons.put("type", "buy");
|
||||||
|
coupons.put("orderId", orderInfo.getId().toString());
|
||||||
|
producer.printCoupons(coupons.toJSONString());
|
||||||
|
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());
|
||||||
|
data.put("plat", "miniApp");
|
||||||
|
mQUtils.sendStockSaleMsg(data);
|
||||||
|
|
||||||
|
// 重置台桌状态
|
||||||
|
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
|
||||||
|
TbShopTable shopTable = mpShopTableService.selectByQrcode(orderInfo.getTableId());
|
||||||
|
if (shopTable.getAutoClear() != null && shopTable.getAutoClear() == 1) {
|
||||||
|
mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.IDLE);
|
||||||
|
}else {
|
||||||
|
mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.CLEANING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String callBackPayFST(String payOrderNO,String payType) {
|
public String callBackPayFST(String payOrderNO,String payType) {
|
||||||
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPayOrderNo(payOrderNO);
|
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPayOrderNo(payOrderNO);
|
||||||
@@ -1176,81 +1256,8 @@ public class PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ("paying".equals(orderInfo.getStatus())) {
|
if ("paying".equals(orderInfo.getStatus())) {
|
||||||
|
orderSuccessPay(orderInfo, payType, payOrderNO);
|
||||||
|
|
||||||
|
|
||||||
int cartCount = mpCashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
|
|
||||||
.eq(TbCashierCart::getOrderId, orderInfo.getId())
|
|
||||||
.eq(TbCashierCart::getUseType, orderInfo.getUseType())
|
|
||||||
.in(TbCashierCart::getStatus, "create", "closed")
|
|
||||||
.set(TbCashierCart::getStatus, "final"));
|
|
||||||
log.info("更新购物车:{}", cartCount);
|
|
||||||
|
|
||||||
//更新子单状态
|
|
||||||
|
|
||||||
mpOrderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>().eq(TbOrderDetail::getOrderId, orderInfo.getId())
|
|
||||||
.eq(TbOrderDetail::getUseType, orderInfo.getUseType())
|
|
||||||
.in(TbOrderDetail::getStatus, "unpaid")
|
|
||||||
.set(TbOrderDetail::getStatus, "closed"));
|
|
||||||
|
|
||||||
//修改主单状态
|
|
||||||
orderInfo.setStatus("closed");
|
|
||||||
if("alipay".equalsIgnoreCase(payType)){
|
|
||||||
orderInfo.setPayType("ali_lite");
|
|
||||||
}else if("wechat".equalsIgnoreCase(payType)){
|
|
||||||
orderInfo.setPayType("wx_lite");
|
|
||||||
}
|
|
||||||
orderInfo.setPayOrderNo(payOrderNO);
|
|
||||||
orderInfo.setPayAmount(orderInfo.getOrderAmount());
|
|
||||||
orderInfo.setPaidTime(System.currentTimeMillis());
|
|
||||||
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
|
||||||
|
|
||||||
JSONObject jsonObject = new JSONObject();
|
|
||||||
jsonObject.put("token", 0);
|
|
||||||
jsonObject.put("type", "wxcreate");
|
|
||||||
jsonObject.put("orderId", orderInfo.getId().toString());
|
|
||||||
|
|
||||||
producer.putOrderCollect(jsonObject.toJSONString());
|
|
||||||
|
|
||||||
log.info("发送打印数据");
|
|
||||||
ShopEatTypeInfoDTO shopEatTypeInfoDTO = shopUtils.checkEatModel(orderInfo.getTableId(), orderInfo.getShopId());
|
|
||||||
List<TbOrderDetail> detailList = mpOrderDetailMapper.selectList(new LambdaQueryWrapper<TbOrderDetail>()
|
|
||||||
.eq(TbOrderDetail::getOrderId, orderInfo.getId())
|
|
||||||
.eq(TbOrderDetail::getStatus, "closed"));
|
|
||||||
// 打印消息
|
|
||||||
if (!shopEatTypeInfoDTO.isDineInAfter()) {
|
|
||||||
mQUtils.printDishesTicket(orderInfo.getId(), false, detailList.toArray(new TbOrderDetail[0]));
|
|
||||||
}
|
|
||||||
mQUtils.printPlaceTicket(orderInfo.getId(), false);
|
|
||||||
// producer.printMechine(orderInfo.getId() + "");
|
|
||||||
JSONObject coupons = new JSONObject();
|
|
||||||
coupons.put("type", "buy");
|
|
||||||
coupons.put("orderId", orderInfo.getId().toString());
|
|
||||||
producer.printCoupons(coupons.toJSONString());
|
|
||||||
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());
|
|
||||||
data.put("plat", "miniApp");
|
|
||||||
mQUtils.sendStockSaleMsg(data);
|
|
||||||
|
|
||||||
// 重置台桌状态
|
|
||||||
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
|
|
||||||
TbShopTable shopTable = mpShopTableService.selectByQrcode(orderInfo.getTableId());
|
|
||||||
if (shopTable.getAutoClear() != null && shopTable.getAutoClear() == 1) {
|
|
||||||
mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.IDLE);
|
|
||||||
}else {
|
|
||||||
mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.CLEANING);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "SUCCESS";
|
return "SUCCESS";
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1499,7 +1506,29 @@ public class PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String fstMemberInSuccess(String payOrderNO, String tradeNo) {
|
/**
|
||||||
|
* 检查充值回调是否是霸王餐活动
|
||||||
|
* @param memberIn 充值记录
|
||||||
|
* @param payType 支付平台
|
||||||
|
* @param payOrderNo 三方交易订单号
|
||||||
|
*/
|
||||||
|
private void checkFreeDineForMemberInCallBack(TbMemberIn memberIn, String payType, String payOrderNo) {
|
||||||
|
// 判断是否是霸王餐充值活动
|
||||||
|
if (memberIn.getOrderId() != null) {
|
||||||
|
TbOrderInfo orderInfo = mpOrderInfoMapper.selectById(memberIn.getOrderId());
|
||||||
|
if (orderInfo == null) {
|
||||||
|
log.error("订单信息不存在: orderId: {}", memberIn.getOrderId());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (TableConstant.OrderInfo.Status.CLOSED.getValue().equals(orderInfo.getStatus())) {
|
||||||
|
log.error("订单状态异常: {}", orderInfo);
|
||||||
|
}
|
||||||
|
// 更改订单状态
|
||||||
|
orderSuccessPay(orderInfo, payType, payOrderNo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String fstMemberInSuccess(String payOrderNO, String tradeNo, String payType) {
|
||||||
TbMemberIn memberIn = tbMemberInMapper.selectByOrderNo(payOrderNO);
|
TbMemberIn memberIn = tbMemberInMapper.selectByOrderNo(payOrderNO);
|
||||||
if (ObjectUtil.isEmpty(memberIn)) {
|
if (ObjectUtil.isEmpty(memberIn)) {
|
||||||
return "充值记录不存在";
|
return "充值记录不存在";
|
||||||
@@ -1545,6 +1574,10 @@ public class PayService {
|
|||||||
flow.setRemark(payOrderNO);
|
flow.setRemark(payOrderNO);
|
||||||
flow.setIsReturn("0");
|
flow.setIsReturn("0");
|
||||||
tbShopUserFlowMapper.insert(flow);
|
tbShopUserFlowMapper.insert(flow);
|
||||||
|
|
||||||
|
// 校验霸王餐
|
||||||
|
checkFreeDineForMemberInCallBack(memberIn, payType, payOrderNO);
|
||||||
|
|
||||||
//会员活动
|
//会员活动
|
||||||
BigDecimal awardAmount = giveActivate(tbShopUser, memberIn.getAmount(), flow.getId());
|
BigDecimal awardAmount = giveActivate(tbShopUser, memberIn.getAmount(), flow.getId());
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|||||||
Reference in New Issue
Block a user