提交
This commit is contained in:
@@ -0,0 +1,383 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.chaozhanggui.system.cashierservice.dao.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.dto.ProductCartDto;
|
||||
import com.chaozhanggui.system.cashierservice.entity.vo.CashierCarVo;
|
||||
import com.chaozhanggui.system.cashierservice.exception.MsgException;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisCst;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
|
||||
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
import com.chaozhanggui.system.cashierservice.socket.AppWebSocketServer;
|
||||
import com.chaozhanggui.system.cashierservice.socket.WebSocketServer;
|
||||
import com.chaozhanggui.system.cashierservice.util.DateUtils;
|
||||
import com.chaozhanggui.system.cashierservice.util.JSONUtil;
|
||||
import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author lyf
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CartService {
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
@Autowired
|
||||
private TbOrderInfoMapper orderInfoMapper;
|
||||
@Autowired
|
||||
private TbCashierCartMapper cashierCartMapper;
|
||||
@Autowired
|
||||
private TbProductMapper productMapper;
|
||||
@Autowired
|
||||
private TbProductSkuMapper productSkuMapper;
|
||||
@Autowired
|
||||
private TbMerchantAccountMapper merchantAccountMapper;
|
||||
@Autowired
|
||||
private TbUserInfoMapper userInfoMapper;
|
||||
@Autowired
|
||||
private TbOrderDetailMapper orderDetailMapper;
|
||||
@Autowired
|
||||
private TbShopTableMapper shopTableMapper;
|
||||
|
||||
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
public void createCart(JSONObject jsonObject) throws Exception {
|
||||
try {
|
||||
|
||||
|
||||
String tableId = jsonObject.getString("tableId");
|
||||
String shopId = jsonObject.getString("shopId");
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
BigDecimal amount = BigDecimal.ZERO;
|
||||
boolean exist = redisUtil.exists(RedisCst.PRODUCT + shopId + ":" + jsonObject.getString("skuId"));
|
||||
if (!exist) {
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "fail");
|
||||
jsonObject1.put("msg", "该商品库存已售罄");
|
||||
jsonObject1.put("data", new ArrayList<>());
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, jsonObject.getString("userId"), true);
|
||||
throw new MsgException("该商品库存已售罄");
|
||||
}
|
||||
if (jsonObject.getInteger("num") > 0) {
|
||||
String result = redisUtil.seckill(RedisCst.PRODUCT + shopId + ":" + jsonObject.getString("skuId"), jsonObject.getInteger("num").toString());
|
||||
if (result.equals("0")) {
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "fail");
|
||||
jsonObject1.put("msg", "该商品库存已售罄");
|
||||
jsonObject1.put("data", new ArrayList<>());
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, jsonObject.getString("userId"), true);
|
||||
throw new MsgException("该商品库存已售罄");
|
||||
}
|
||||
} else {
|
||||
String result = redisUtil.seckill(RedisCst.PRODUCT + shopId + ":" + jsonObject.getString("skuId"), jsonObject.getInteger("num").toString());
|
||||
}
|
||||
|
||||
if (redisUtil.exists(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId").concat("-").concat(shopId)))) {
|
||||
JSONArray array = JSON.parseArray(redisUtil.getMessage(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId").concat("-").concat(shopId))));
|
||||
if (Objects.isNull(array) || array.isEmpty() || array.size() < 1) {
|
||||
if (jsonObject.getInteger("num") > 0) {
|
||||
TbCashierCart cashierCart = addCart(jsonObject.getString("productId"), jsonObject.getString("skuId"),
|
||||
jsonObject.getInteger("userId"), jsonObject.getInteger("num"), tableId, jsonObject.getString("shopId"));
|
||||
jsonArray.add(cashierCart);
|
||||
amount = amount.add(new BigDecimal(cashierCart.getNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
|
||||
}
|
||||
} else {
|
||||
boolean flag = true;
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
JSONObject object = array.getJSONObject(i);
|
||||
if (object.getString("skuId").equals(jsonObject.getString("skuId"))) {
|
||||
object.put("totalNumber", object.getIntValue("totalNumber") + jsonObject.getInteger("num"));
|
||||
object.put("number", object.getIntValue("number") + jsonObject.getInteger("num"));
|
||||
flag = false;
|
||||
}
|
||||
TbCashierCart cashierCart = JSONUtil.parseJSONStr2T(object.toJSONString(), TbCashierCart.class);
|
||||
if (cashierCart.getNumber() > 0) {
|
||||
cashierCart.setTotalAmount(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
|
||||
if (StringUtils.isNotEmpty(cashierCart.getStatus())) {
|
||||
cashierCart.setStatus("create");
|
||||
}
|
||||
cashierCartMapper.updateByPrimaryKeySelective(cashierCart);
|
||||
if (cashierCart.getNumber() > 0) {
|
||||
jsonArray.add(cashierCart);
|
||||
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
|
||||
} else {
|
||||
cashierCartMapper.deleteByPrimaryKey(cashierCart.getId());
|
||||
}
|
||||
} else {
|
||||
cashierCartMapper.deleteByPrimaryKey(cashierCart.getId());
|
||||
}
|
||||
}
|
||||
if (flag && jsonObject.getInteger("num") > 0) {
|
||||
TbCashierCart cashierCart = addCart(jsonObject.getString("productId"), jsonObject.getString("skuId"),
|
||||
jsonObject.getInteger("userId"), jsonObject.getInteger("num"), tableId, jsonObject.getString("shopId"));
|
||||
jsonArray.add(cashierCart);
|
||||
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (jsonObject.getInteger("num") > 0) {
|
||||
TbCashierCart cashierCart = addCart(jsonObject.getString("productId"), jsonObject.getString("skuId"),
|
||||
jsonObject.getInteger("userId"), jsonObject.getInteger("num"), tableId, jsonObject.getString("shopId"));
|
||||
jsonArray.add(cashierCart);
|
||||
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
|
||||
}
|
||||
}
|
||||
productSkuMapper.updateStockById(jsonObject.getString("skuId"), jsonObject.getInteger("num"));
|
||||
// AppWebSocketServer.getRecordMap().put(jsonObject.getString("tableId"), returnList);
|
||||
redisUtil.saveMessage(RedisCst.TABLE_CART.concat(tableId).concat("-").concat(shopId), jsonArray.toJSONString());
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "success");
|
||||
jsonObject1.put("msg", "成功");
|
||||
jsonObject1.put("type", jsonObject.getString("type"));
|
||||
jsonObject1.put("data", jsonArray);
|
||||
jsonObject1.put("amount", amount);
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, jsonObject.getString("tableId").concat("-").concat(shopId), false);
|
||||
} catch (Exception e) {
|
||||
e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
private TbCashierCart addCart(String productId, String skuId, Integer userId, Integer num, String tableId, String shopId) throws Exception {
|
||||
TbProduct product = productMapper.selectById(Integer.valueOf(productId));
|
||||
if (Objects.isNull(product)) {
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "fail");
|
||||
jsonObject1.put("msg", "该商品不存在");
|
||||
jsonObject1.put("data", new ArrayList<>());
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, userId.toString(), true);
|
||||
throw new MsgException("该商品不存在");
|
||||
}
|
||||
TbProductSkuWithBLOBs productSku = productSkuMapper.selectByPrimaryKey(Integer.valueOf(skuId));
|
||||
if (Objects.isNull(productSku)) {
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "fail");
|
||||
jsonObject1.put("msg", "该商品规格不存在");
|
||||
jsonObject1.put("data", new ArrayList<>());
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, userId.toString(), true);
|
||||
throw new MsgException("该商品规格不存在");
|
||||
}
|
||||
TbCashierCart cashierCart = new TbCashierCart();
|
||||
cashierCart.setProductId(productId);
|
||||
cashierCart.setSkuId(skuId);
|
||||
cashierCart.setNumber(num);
|
||||
cashierCart.setCoverImg(product.getCoverImg());
|
||||
cashierCart.setName(product.getName());
|
||||
cashierCart.setCategoryId(product.getCategoryId());
|
||||
cashierCart.setShopId(shopId);
|
||||
cashierCart.setUserId(userId);
|
||||
cashierCart.setTableId(tableId);
|
||||
cashierCart.setSkuName(productSku.getSpecSnap());
|
||||
cashierCart.setIsPack("false");
|
||||
cashierCart.setIsGift("false");
|
||||
cashierCart.setUserId(userId);
|
||||
cashierCart.setStatus("create");
|
||||
cashierCart.setType((byte) 0);
|
||||
cashierCart.setSalePrice(productSku.getSalePrice());
|
||||
cashierCart.setCreatedAt(Instant.now().toEpochMilli());
|
||||
cashierCart.setUpdatedAt(Instant.now().toEpochMilli());
|
||||
cashierCart.setTotalNumber(num);
|
||||
cashierCart.setPackFee(BigDecimal.ZERO);
|
||||
cashierCart.setRefundNumber(0);
|
||||
cashierCart.setTotalAmount(new BigDecimal(cashierCart.getTotalNumber()).multiply(productSku.getSalePrice().add(cashierCart.getPackFee())));
|
||||
cashierCartMapper.insert(cashierCart);
|
||||
return cashierCart;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void createOrder(JSONObject jsonObject) throws IOException {
|
||||
try {
|
||||
|
||||
String shopId = jsonObject.getString("shopId");
|
||||
JSONArray array = JSON.parseArray(redisUtil.getMessage(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId").concat("-").concat(shopId))));
|
||||
//总金额
|
||||
List<Integer> ids = new ArrayList<>();
|
||||
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||
BigDecimal packAMount = BigDecimal.ZERO;
|
||||
BigDecimal saleAmount = BigDecimal.ZERO;
|
||||
Map<Integer, TbProductSku> skuMap = new HashMap<>();
|
||||
List<TbOrderDetail> orderDetails = new ArrayList<>();
|
||||
Integer orderId = 0;
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
JSONObject object = array.getJSONObject(i);
|
||||
TbCashierCart cashierCart = JSONUtil.parseJSONStr2T(object.toJSONString(), TbCashierCart.class);
|
||||
TbProductSkuWithBLOBs tbProduct = productSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId()));
|
||||
totalAmount = totalAmount.add(cashierCart.getTotalAmount());
|
||||
packAMount = packAMount.add(cashierCart.getPackFee());
|
||||
if (Objects.nonNull(tbProduct)) {
|
||||
saleAmount = saleAmount.add(tbProduct.getSalePrice());
|
||||
}
|
||||
skuMap.put(tbProduct.getId(), tbProduct);
|
||||
TbOrderDetail orderDetail = new TbOrderDetail();
|
||||
orderDetail.setCreateTime(new Date());
|
||||
orderDetail.setNum(cashierCart.getNumber());
|
||||
orderDetail.setPrice(cashierCart.getSalePrice());
|
||||
if (cashierCart.getIsPack().equals("true")) {
|
||||
orderDetail.setPriceAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee()));
|
||||
} else {
|
||||
orderDetail.setPriceAmount(cashierCart.getTotalAmount());
|
||||
}
|
||||
orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId()));
|
||||
orderDetail.setProductSkuId(Integer.valueOf(cashierCart.getSkuId()));
|
||||
orderDetail.setProductSkuName(tbProduct.getSpecSnap());
|
||||
orderDetail.setProductName(cashierCart.getName());
|
||||
orderDetail.setShopId(jsonObject.getInteger("shopId"));
|
||||
orderDetail.setPackAmount(cashierCart.getPackFee());
|
||||
orderDetail.setProductImg(cashierCart.getCoverImg());
|
||||
orderDetail.setStatus("unpaid");
|
||||
if (StringUtils.isNotEmpty(cashierCart.getOrderId())) {
|
||||
orderId = Integer.valueOf(cashierCart.getOrderId());
|
||||
|
||||
}
|
||||
orderDetails.add(orderDetail);
|
||||
if (StringUtils.isNotEmpty(cashierCart.getOrderId())) {
|
||||
orderId = Integer.valueOf(cashierCart.getOrderId());
|
||||
}
|
||||
}
|
||||
|
||||
TbMerchantAccount tbMerchantAccount = merchantAccountMapper.selectByShopId(jsonObject.getString("shopId"));
|
||||
if (tbMerchantAccount == null) {
|
||||
throw new MsgException("生成订单错误");
|
||||
}
|
||||
|
||||
TbUserInfo tbUserInfo = userInfoMapper.selectByPrimaryKey(jsonObject.getInteger("userId"));
|
||||
if (tbUserInfo == null) {
|
||||
throw new MsgException("生成订单失败");
|
||||
}
|
||||
TbShopTable shopTable = shopTableMapper.selectQRcode(jsonObject.getString("tableId"));
|
||||
//生成订单
|
||||
TbOrderInfo orderInfo = orderInfoMapper.selectByPrimaryKey(orderId);
|
||||
if (Objects.nonNull(orderInfo)) {
|
||||
log.info("订单状态:" + orderInfo.getStatus());
|
||||
if (!"unpaid".equals(orderInfo.getStatus())) {
|
||||
log.info("开始处理订单");
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "fail");
|
||||
jsonObject1.put("msg", "订单正在支付中,请稍后再试");
|
||||
jsonObject1.put("type", jsonObject.getString("type"));
|
||||
jsonObject1.put("data", "");
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, jsonObject.getString("userId"), true);
|
||||
log.info("消息推送");
|
||||
return;
|
||||
}
|
||||
|
||||
orderDetailMapper.deleteByOUrderId(orderId);
|
||||
orderInfo.setUpdatedAt(System.currentTimeMillis());
|
||||
orderInfo.setSettlementAmount(totalAmount);
|
||||
orderInfo.setAmount(totalAmount);
|
||||
orderInfo.setOriginAmount(totalAmount);
|
||||
orderInfo.setOrderAmount(totalAmount.add(packAMount));
|
||||
orderInfo.setFreightAmount(BigDecimal.ZERO);
|
||||
orderInfo.setProductAmount(saleAmount);
|
||||
orderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
||||
} else {
|
||||
|
||||
orderInfo = new TbOrderInfo();
|
||||
String orderNo = generateOrderNumber();
|
||||
orderInfo.setOrderNo(orderNo);
|
||||
orderInfo.setSettlementAmount(totalAmount);
|
||||
orderInfo.setPackFee(packAMount);
|
||||
orderInfo.setOriginAmount(totalAmount);
|
||||
orderInfo.setProductAmount(totalAmount);
|
||||
orderInfo.setAmount(totalAmount);
|
||||
orderInfo.setOrderAmount(totalAmount.add(packAMount));
|
||||
orderInfo.setPayAmount(BigDecimal.ZERO);
|
||||
orderInfo.setRefundAmount(new BigDecimal("0.00"));
|
||||
orderInfo.setTableId(jsonObject.getString("tableId"));
|
||||
orderInfo.setSendType("table");
|
||||
orderInfo.setOrderType("miniapp");
|
||||
orderInfo.setTradeDay(DateUtils.getDay());
|
||||
orderInfo.setStatus("unpaid");
|
||||
orderInfo.setShopId(jsonObject.getString("shopId"));
|
||||
orderInfo.setUserId(jsonObject.getString("userId"));
|
||||
orderInfo.setCreatedAt(Instant.now().toEpochMilli());
|
||||
orderInfo.setSystemTime(Instant.now().toEpochMilli());
|
||||
orderInfo.setUpdatedAt(Instant.now().toEpochMilli());
|
||||
orderInfo.setIsAccepted((byte) 1);
|
||||
if (Objects.nonNull(shopTable)) {
|
||||
orderInfo.setTableName(shopTable.getName());
|
||||
}
|
||||
orderInfo.setMerchantId(String.valueOf(tbMerchantAccount.getId()));
|
||||
orderInfoMapper.insert(orderInfo);
|
||||
orderId = orderInfo.getId();
|
||||
}
|
||||
for (TbOrderDetail orderDetail : orderDetails) {
|
||||
orderDetail.setOrderId(orderId);
|
||||
orderDetailMapper.insert(orderDetail);
|
||||
}
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
JSONObject object = array.getJSONObject(i);
|
||||
TbCashierCart cashierCart = JSONUtil.parseJSONStr2T(object.toJSONString(), TbCashierCart.class);
|
||||
cashierCart.setUpdatedAt(System.currentTimeMillis());
|
||||
cashierCart.setOrderId(orderId + "");
|
||||
cashierCart.setStatus("closed");
|
||||
cashierCartMapper.updateByPrimaryKeySelective(cashierCart);
|
||||
object.put("updatedAt", System.currentTimeMillis());
|
||||
object.put("orderId", orderId + "");
|
||||
}
|
||||
redisUtil.saveMessage(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId")).concat("-").concat(shopId), array.toJSONString());
|
||||
orderInfo.setDetailList(orderDetails);
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "success");
|
||||
jsonObject1.put("msg", "成功");
|
||||
jsonObject1.put("type", jsonObject.getString("type"));
|
||||
jsonObject1.put("data", orderInfo);
|
||||
redisUtil.deleteByKey(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId")).concat("-").concat(shopId));
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, jsonObject.getString("userId"), true);
|
||||
JSONObject jsonObject12 = new JSONObject();
|
||||
jsonObject12.put("status", "success");
|
||||
jsonObject12.put("msg", "成功");
|
||||
jsonObject12.put("type", "order");
|
||||
jsonObject12.put("amount", BigDecimal.ZERO);
|
||||
|
||||
jsonObject12.put("data", new JSONArray());
|
||||
AppWebSocketServer.AppSendInfo(jsonObject12, jsonObject.getString("tableId").concat("-").concat(shopId), false);
|
||||
} catch (Exception e) {
|
||||
e.getMessage();
|
||||
}
|
||||
}
|
||||
public String generateOrderNumber() {
|
||||
String date = DateUtils.getSdfTimes();
|
||||
Random random = new Random();
|
||||
int randomNum = random.nextInt(900) + 100;
|
||||
return "WX" + date + randomNum;
|
||||
}
|
||||
public void clearCart(JSONObject jsonObject) throws IOException {
|
||||
String shopId = jsonObject.getString("shopId");
|
||||
if (redisUtil.exists(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId").concat("-").concat(shopId)))) {
|
||||
JSONArray array = JSON.parseArray(redisUtil.getMessage(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId").concat("-").concat(shopId))));
|
||||
if (Objects.isNull(array) || array.isEmpty() || array.size() < 1) {
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
TbCashierCart cashierCart = JSONUtil.parseJSONStr2T(array.get(i).toString(), TbCashierCart.class);
|
||||
// String result = redisUtil.secAdd(RedisCst.PRODUCT+shopId+":"+jsonObject.getString("skuId"),cashierCart.getNumber().toString());
|
||||
productSkuMapper.updateAddStockById(jsonObject.getString("skuId"), cashierCart.getNumber());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
cashierCartMapper.updateStatusByTableId(jsonObject.getString("tableId"), "closed");
|
||||
redisUtil.saveMessage(RedisCst.TABLE_CART.concat(jsonObject.getString("tableId").concat("-").concat(shopId)), new JSONArray().toJSONString());
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "success");
|
||||
jsonObject1.put("msg", "成功");
|
||||
jsonObject1.put("type", "clearCart");
|
||||
jsonObject1.put("amount", BigDecimal.ZERO);
|
||||
jsonObject1.put("data", new ArrayList<>());
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1, jsonObject.getString("tableId").concat("-").concat(shopId), false);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
//package com.chaozhanggui.system.cashierservice.service;
|
||||
//
|
||||
//import com.chaozhanggui.system.cashierservice.dao.TbCashierCartMapper;
|
||||
//import com.chaozhanggui.system.cashierservice.dao.TbProductMapper;
|
||||
//import com.chaozhanggui.system.cashierservice.dao.TbProductSkuMapper;
|
||||
//import com.chaozhanggui.system.cashierservice.entity.TbCashierCart;
|
||||
//import com.chaozhanggui.system.cashierservice.entity.TbProduct;
|
||||
//import com.chaozhanggui.system.cashierservice.entity.TbProductSku;
|
||||
//import com.chaozhanggui.system.cashierservice.entity.dto.ProductCartDto;
|
||||
//import com.chaozhanggui.system.cashierservice.entity.vo.CashierCarVo;
|
||||
//import com.chaozhanggui.system.cashierservice.exception.MsgException;
|
||||
//import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
//import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.beans.BeanUtils;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//import org.springframework.transaction.annotation.Transactional;
|
||||
//
|
||||
//import javax.annotation.Resource;
|
||||
//import java.math.BigDecimal;
|
||||
//import java.time.Instant;
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.HashMap;
|
||||
//import java.util.List;
|
||||
//
|
||||
///**
|
||||
// * @author lyf
|
||||
// */
|
||||
//@Service
|
||||
//@Slf4j
|
||||
//public class CashierCartService {
|
||||
// @Resource
|
||||
// private TbCashierCartMapper cashierCartMapper;
|
||||
// @Resource
|
||||
// private TbProductMapper productMapper;
|
||||
// @Resource
|
||||
// private TbProductSkuMapper productSkuMapper;
|
||||
//
|
||||
// /**
|
||||
// * 增加购物车
|
||||
// * @param productCartDto
|
||||
// * @return
|
||||
// */
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public Result batchAdd(ProductCartDto productCartDto){
|
||||
// //首先确认金额
|
||||
// TbProduct tbProduct = productMapper.selectById(Integer.valueOf(productCartDto.getProductId()));
|
||||
// if (tbProduct == null){
|
||||
// return Result.fail("商品信息不存在");
|
||||
// }
|
||||
//
|
||||
// TbCashierCart cashierCart = cashierCartMapper.selectByProduct(productCartDto.getProductId(), productCartDto.getTableId());
|
||||
// if (cashierCart != null){
|
||||
// if ("add".equals(productCartDto.getType())){
|
||||
// TbCashierCart cashierCartNow = new TbCashierCart();
|
||||
// cashierCartNow.setNumber(cashierCart.getNumber()+1F);
|
||||
// cashierCartNow.setId(cashierCart.getId());
|
||||
// cashierCartMapper.updateByPrimaryKeySelective(cashierCartNow);
|
||||
// return Result.success(CodeEnum.ENCRYPT);
|
||||
// }else if ("minus".equals(productCartDto.getType())){
|
||||
// TbCashierCart cashierCartNow = new TbCashierCart();
|
||||
// cashierCartNow.setNumber(cashierCart.getNumber()-1F);
|
||||
// cashierCartNow.setId(cashierCart.getId());
|
||||
// if (cashierCartNow.getNumber() == 0F){
|
||||
// cashierCartNow.setStatus("clear");
|
||||
// cashierCartMapper.updateByPrimaryKeySelective(cashierCartNow);
|
||||
// return Result.success(CodeEnum.ENCRYPT);
|
||||
// }
|
||||
// cashierCartMapper.updateByPrimaryKeySelective(cashierCartNow);
|
||||
// return Result.success(CodeEnum.ENCRYPT);
|
||||
// }else {
|
||||
// throw new MsgException("添加购物车失败");
|
||||
// }
|
||||
// }
|
||||
// //增加新的购物车
|
||||
// TbCashierCart tbCashierCart = new TbCashierCart();
|
||||
// BeanUtils.copyProperties(productCartDto,tbCashierCart);
|
||||
// tbCashierCart.setSalePrice(tbProduct.getLowPrice());
|
||||
// tbCashierCart.setCreatedAt(Instant.now().toEpochMilli());
|
||||
// tbCashierCart.setUpdatedAt(Instant.now().toEpochMilli());
|
||||
// tbCashierCart.setTotalNumber(0.00F);
|
||||
// tbCashierCart.setRefundNumber(0.00F);
|
||||
// tbCashierCart.setType((byte) 0);
|
||||
// tbCashierCart.setSkuId(productCartDto.getSkuInfo());
|
||||
// //购物车状态打开
|
||||
// tbCashierCart.setStatus("open");
|
||||
//
|
||||
// int insert = cashierCartMapper.insertSelective(tbCashierCart);
|
||||
// if (insert>0){
|
||||
// return Result.success(CodeEnum.SUCCESS);
|
||||
// }
|
||||
// throw new MsgException("添加购物车失败");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public Result cartList(Integer tableId){
|
||||
// HashMap<String, Object> map = new HashMap<>();
|
||||
// List<TbCashierCart> tbCashierCarts = cashierCartMapper.selectByTableId(tableId);
|
||||
// BigDecimal total = new BigDecimal("0.00");
|
||||
// for (TbCashierCart date :tbCashierCarts) {
|
||||
// Float number = date.getNumber();
|
||||
// BigDecimal bigDecimalValue = new BigDecimal(number.toString());
|
||||
// total=total.add(bigDecimalValue.multiply(date.getSalePrice()));
|
||||
// }
|
||||
//
|
||||
// map.put("cartList",tbCashierCarts);
|
||||
// map.put("total",total);
|
||||
//
|
||||
// return Result.success(CodeEnum.ENCRYPT,map);
|
||||
//
|
||||
// }
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public Result updateNumber(Integer tableId,String type){
|
||||
// TbCashierCart cashierCart = cashierCartMapper.selectByPrimaryKey(tableId);
|
||||
// if (cashierCart == null){
|
||||
// return Result.fail("商品不存在");
|
||||
// }
|
||||
// if ("add".equals(type)){
|
||||
// TbCashierCart cashierCartNow = new TbCashierCart();
|
||||
// cashierCartNow.setNumber(cashierCart.getNumber()+1F);
|
||||
// cashierCartNow.setId(cashierCart.getId());
|
||||
// cashierCartMapper.updateByPrimaryKeySelective(cashierCartNow);
|
||||
// return Result.success(CodeEnum.ENCRYPT);
|
||||
// }else if ("minus".equals(type)){
|
||||
// TbCashierCart cashierCartNow = new TbCashierCart();
|
||||
// cashierCartNow.setNumber(cashierCart.getNumber()-1F);
|
||||
// cashierCartNow.setId(cashierCart.getId());
|
||||
// if (cashierCartNow.getNumber() == 0F){
|
||||
// cashierCartNow.setStatus("clear");
|
||||
// cashierCartMapper.updateByPrimaryKeySelective(cashierCartNow);
|
||||
// return Result.success(CodeEnum.ENCRYPT);
|
||||
// }
|
||||
// cashierCartMapper.updateByPrimaryKeySelective(cashierCartNow);
|
||||
// return Result.success(CodeEnum.ENCRYPT);
|
||||
// }else {
|
||||
// throw new MsgException("更改商品失败");
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public Result clearCart(Integer tableId){
|
||||
// List<CashierCarVo> cashierCarVos = cashierCartMapper.selectByTableIdOpen(tableId);
|
||||
// if (cashierCarVos.isEmpty()){
|
||||
// return Result.fail("购物车内无商品");
|
||||
// }
|
||||
// List<Integer> ids = new ArrayList<>();
|
||||
// for (CashierCarVo date :cashierCarVos) {
|
||||
// ids.add(date.getId());
|
||||
// }
|
||||
// int i = cashierCartMapper.updateByIdsStatus(ids, Instant.now().toEpochMilli());
|
||||
// if (i != ids.size()){
|
||||
// throw new MsgException("清空购物车失败");
|
||||
// }
|
||||
// return Result.success(CodeEnum.ENCRYPT);
|
||||
// }
|
||||
//}
|
||||
@@ -0,0 +1,268 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.chaozhanggui.system.cashierservice.dao.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.*;
|
||||
import com.chaozhanggui.system.cashierservice.model.CategoryInfo;
|
||||
import com.chaozhanggui.system.cashierservice.model.OrderDetailPO;
|
||||
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
import com.chaozhanggui.system.cashierservice.util.DateUtils;
|
||||
import com.chaozhanggui.system.cashierservice.util.FeieyunPrintUtil;
|
||||
import com.chaozhanggui.system.cashierservice.util.JSONUtil;
|
||||
import com.chaozhanggui.system.cashierservice.util.PrinterUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CloudPrinterService {
|
||||
|
||||
|
||||
TbShopUserMapper tbShopUserMapper;
|
||||
@Autowired
|
||||
private TbOrderInfoMapper tbOrderInfoMapper;
|
||||
@Autowired
|
||||
private TbPrintMachineMapper tbPrintMachineMapper;
|
||||
@Autowired
|
||||
private TbCashierCartMapper tbCashierCartMapper;
|
||||
@Autowired
|
||||
private TbProductSkuMapper tbProductSkuMapper;
|
||||
@Autowired
|
||||
private TbShopInfoMapper tbShopInfoMapper;
|
||||
|
||||
@Autowired
|
||||
private TbProductMapper tbProductMapper;
|
||||
|
||||
|
||||
|
||||
|
||||
public Result printReceipt(String type,String orderId,Boolean ispre){
|
||||
|
||||
try {
|
||||
|
||||
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
|
||||
if (ObjectUtil.isEmpty(orderInfo)) {
|
||||
log.error("没有对应的订单信息");
|
||||
return Result.fail("没有对应的订单信息");
|
||||
}
|
||||
TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId()));
|
||||
if (ObjectUtil.isEmpty(shopInfo)) {
|
||||
log.error("店铺信息不存在");
|
||||
return Result.fail("店铺信息不存在");
|
||||
}
|
||||
|
||||
|
||||
List<TbPrintMachineWithBLOBs> list = tbPrintMachineMapper.selectByShopId(orderInfo.getShopId());
|
||||
|
||||
if (ObjectUtil.isEmpty(list) || list.size() <= 0) {
|
||||
log.error("此店铺没有对应的打印机设备");
|
||||
return Result.fail("此店铺没有对应的打印机设备");
|
||||
}
|
||||
|
||||
list.parallelStream().forEach(tbPrintMachineWithBLOBs->{
|
||||
if (!"network".equals(tbPrintMachineWithBLOBs.getConnectionType())) {
|
||||
log.error("非网络打印机");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!"1".equals(tbPrintMachineWithBLOBs.getStatus().toString())) {
|
||||
log.error("打印机状态异常");
|
||||
return;
|
||||
}
|
||||
|
||||
JSONObject config = JSONObject.parseObject(tbPrintMachineWithBLOBs.getConfig());
|
||||
String model = config.getString("model");
|
||||
|
||||
String printerNum = config.getString("printerNum");
|
||||
|
||||
String feet = config.getString("feet");
|
||||
|
||||
String autoCut = config.getString("autoCut");
|
||||
|
||||
List<CategoryInfo> categoryInfos=JSONUtil.parseJSONStr2TList(config.getJSONArray("categoryList").toString(),CategoryInfo.class);
|
||||
|
||||
switch (tbPrintMachineWithBLOBs.getContentType()){
|
||||
case "yxyPrinter":
|
||||
yxyPrinter(tbPrintMachineWithBLOBs,model,orderInfo,shopInfo,printerNum,categoryInfos);
|
||||
break;
|
||||
case "fePrinter":
|
||||
fePrinter(tbPrintMachineWithBLOBs,model,orderInfo,shopInfo,printerNum,categoryInfos);
|
||||
break;
|
||||
}
|
||||
});
|
||||
return Result.success(CodeEnum.SUCCESS);
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return Result.fail("系统异常");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 博时结云打印机
|
||||
* @param tbPrintMachineWithBLOBs
|
||||
* @param model
|
||||
* @param orderInfo
|
||||
* @param shopInfo
|
||||
* @param printerNum
|
||||
*/
|
||||
private void yxyPrinter(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs,String model,TbOrderInfo orderInfo,TbShopInfo shopInfo,String printerNum, List<CategoryInfo> categoryInfos){
|
||||
String orderId=orderInfo.getId().toString();
|
||||
|
||||
|
||||
switch (tbPrintMachineWithBLOBs.getSubType()) {
|
||||
case "label": //标签打印机
|
||||
break;
|
||||
case "cash": //小票打印机
|
||||
switch (model) {
|
||||
case "normal": //普通出单
|
||||
List<TbCashierCart> cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(),"final");
|
||||
if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) {
|
||||
List<OrderDetailPO.Detail> detailList = new ArrayList<>();
|
||||
cashierCarts.parallelStream().forEach(it -> {
|
||||
String categoryId;
|
||||
if(ObjectUtil.isEmpty(it.getCategoryId())){
|
||||
categoryId= tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId();
|
||||
} else {
|
||||
categoryId = it.getCategoryId();
|
||||
}
|
||||
|
||||
|
||||
Long count= categoryInfos.stream().filter(c->
|
||||
c.getId().toString().equals(categoryId)
|
||||
).count();
|
||||
|
||||
if(count>0){
|
||||
TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId()));
|
||||
String remark = "";
|
||||
if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) {
|
||||
remark = tbProductSkuWithBLOBs.getSpecSnap();
|
||||
}
|
||||
|
||||
OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), it.getTotalAmount().toPlainString(), remark);
|
||||
detailList.add(detail);
|
||||
}
|
||||
});
|
||||
|
||||
String balance = "0";
|
||||
|
||||
if ("deposit".equals(orderInfo.getPayType())) {
|
||||
TbShopUser user = tbShopUserMapper.selectByPrimaryKey(orderInfo.getMemberId());
|
||||
if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getAmount())) {
|
||||
balance = user.getAmount().toPlainString();
|
||||
}
|
||||
}
|
||||
if(ObjectUtil.isNotEmpty(detailList)&&detailList.size()>0){
|
||||
|
||||
OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getTableName(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList);
|
||||
String data= PrinterUtils.getCashPrintData(detailPO,"结算单");
|
||||
PrinterUtils.printTickets(1, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
case "one": //一菜一品
|
||||
cashierCarts = tbCashierCartMapper.selectByOrderId(orderId,"final");
|
||||
if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) {
|
||||
|
||||
cashierCarts.parallelStream().forEach(it -> {
|
||||
|
||||
String categoryId;
|
||||
if(ObjectUtil.isEmpty(it.getCategoryId())){
|
||||
categoryId= tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId();
|
||||
} else {
|
||||
categoryId = it.getCategoryId();
|
||||
}
|
||||
|
||||
|
||||
Long count= categoryInfos.stream().filter(c->
|
||||
c.getId().toString().equals(categoryId)
|
||||
).count();
|
||||
|
||||
if(count>0){
|
||||
TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId()));
|
||||
String remark = "";
|
||||
if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) {
|
||||
remark = tbProductSkuWithBLOBs.getSpecSnap();
|
||||
}
|
||||
String data = PrinterUtils.getPrintData(orderInfo.getTableName(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark);
|
||||
PrinterUtils.printTickets(1, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data);
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
case "category": //分类出单
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case "kitchen": //出品打印机
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void fePrinter(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs,String model,TbOrderInfo orderInfo,TbShopInfo shopInfo,String printerNum, List<CategoryInfo> categoryInfos){
|
||||
String orderId=orderInfo.getId().toString();
|
||||
switch (tbPrintMachineWithBLOBs.getSubType()) {
|
||||
case "label": //标签打印机
|
||||
List<TbCashierCart> cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(),"final");
|
||||
if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) {
|
||||
cashierCarts.parallelStream().forEach(it->{
|
||||
|
||||
String categoryId;
|
||||
if(ObjectUtil.isEmpty(it.getCategoryId())){
|
||||
categoryId= tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId();
|
||||
} else {
|
||||
categoryId = it.getCategoryId();
|
||||
}
|
||||
|
||||
|
||||
Long count= categoryInfos.stream().filter(c->
|
||||
c.getId().toString().equals(categoryId)
|
||||
).count();
|
||||
|
||||
|
||||
if(count>0) {
|
||||
TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId()));
|
||||
String remark = "";
|
||||
if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) {
|
||||
remark = tbProductSkuWithBLOBs.getSpecSnap();
|
||||
}
|
||||
|
||||
for(int i=0;i<it.getNumber();i++){
|
||||
FeieyunPrintUtil.printLabelMsg(tbPrintMachineWithBLOBs.getAddress(), orderInfo.getTableName(), it.getName(), 1, DateUtils.getTimes(new Date(orderInfo.getCreatedAt())), it.getSalePrice().toPlainString(), remark);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
break;
|
||||
case "cash": //小票打印机
|
||||
break;
|
||||
case "kitchen": //出品打印机
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,219 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.chaozhanggui.system.cashierservice.dao.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.*;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisCst;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
|
||||
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
import com.chaozhanggui.system.cashierservice.util.TokenUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class LoginService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private TbUserInfoMapper tbUserInfoMapper;
|
||||
|
||||
@Autowired
|
||||
private TbShopUserMapper tbShopUserMapper;
|
||||
|
||||
@Autowired
|
||||
private TbShopTableMapper tbShopTableMapper;
|
||||
|
||||
@Autowired
|
||||
private TbShopInfoMapper tbShopInfoMapper;
|
||||
|
||||
|
||||
@Value("${ysk.default}")
|
||||
private String defaultPhone;
|
||||
|
||||
|
||||
@Autowired
|
||||
TbTokenMapper tbTokenMapper;
|
||||
|
||||
|
||||
|
||||
@Autowired
|
||||
RedisUtil redisUtil;
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Result wxCustomLogin(String openId,String headImage,String nickName,String telephone,String qrCode,String ip) throws Exception {
|
||||
|
||||
TbUserInfo userInfo= tbUserInfoMapper.selectByOpenId(openId);
|
||||
if(ObjectUtil.isNull(userInfo)){
|
||||
userInfo=new TbUserInfo();
|
||||
|
||||
userInfo.setAmount(BigDecimal.ZERO);
|
||||
userInfo.setChargeAmount(BigDecimal.ZERO);
|
||||
userInfo.setLineOfCredit(BigDecimal.ZERO);
|
||||
userInfo.setConsumeNumber(0);
|
||||
userInfo.setConsumeAmount(BigDecimal.ZERO);
|
||||
userInfo.setTotalScore(0);
|
||||
userInfo.setLockScore(0);
|
||||
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage)?headImage:"");
|
||||
userInfo.setNickName(ObjectUtil.isNotNull(nickName)?nickName:"微信用户");
|
||||
userInfo.setTelephone(ObjectUtil.isNotNull(telephone)?telephone:"");
|
||||
userInfo.setMiniAppOpenId(openId);
|
||||
userInfo.setStatus(Byte.parseByte("1"));
|
||||
userInfo.setParentType("PERSON");
|
||||
userInfo.setIsResource(Byte.parseByte("0"));
|
||||
userInfo.setIsOnline(Byte.parseByte("0"));
|
||||
userInfo.setIsVip(Byte.parseByte("0"));
|
||||
userInfo.setSourcePath("WECHAT-APP");
|
||||
userInfo.setIsAttentionMp(Byte.parseByte("0"));
|
||||
userInfo.setSearchWord("||微信用户");
|
||||
userInfo.setLastLogInAt(System.currentTimeMillis());
|
||||
userInfo.setCreatedAt(System.currentTimeMillis());
|
||||
userInfo.setUpdatedAt(System.currentTimeMillis());
|
||||
tbUserInfoMapper.insert(userInfo);
|
||||
|
||||
}else {
|
||||
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage)?headImage:"");
|
||||
userInfo.setNickName(ObjectUtil.isNotNull(nickName)?nickName:"微信用户");
|
||||
userInfo.setTelephone(ObjectUtil.isNotNull(telephone)?telephone:"");
|
||||
tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
|
||||
}
|
||||
|
||||
|
||||
TbShopInfo tbShopInfo=null;
|
||||
if(ObjectUtil.isEmpty(qrCode)){
|
||||
tbShopInfo=tbShopInfoMapper.selectByPhone(defaultPhone);
|
||||
|
||||
|
||||
}else {
|
||||
tbShopInfo= tbShopInfoMapper.selectByQrCode(qrCode);
|
||||
}
|
||||
|
||||
|
||||
|
||||
TbShopUser tbShopUser=null;
|
||||
Map<String,String> shopMap=new HashMap<>();
|
||||
if(ObjectUtil.isNotEmpty(tbShopInfo)){
|
||||
tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(userInfo.getId().toString(),tbShopInfo.getId().toString());
|
||||
if(ObjectUtil.isEmpty(tbShopUser)){
|
||||
tbShopUser=new TbShopUser();
|
||||
tbShopUser.setAmount(BigDecimal.ZERO);
|
||||
tbShopUser.setCreditAmount(BigDecimal.ZERO);
|
||||
tbShopUser.setConsumeAmount(BigDecimal.ZERO);
|
||||
tbShopUser.setConsumeNumber(0);
|
||||
tbShopUser.setLevelConsume(BigDecimal.ZERO);
|
||||
tbShopUser.setStatus(Byte.parseByte("1"));
|
||||
tbShopUser.setShopId(tbShopInfo.getId().toString());
|
||||
tbShopUser.setUserId(userInfo.getId().toString());
|
||||
tbShopUser.setMiniOpenId(openId);
|
||||
tbShopUser.setCreatedAt(System.currentTimeMillis());
|
||||
tbShopUserMapper.insert(tbShopUser);
|
||||
}
|
||||
shopMap.put("shopId",tbShopUser.getShopId());
|
||||
shopMap.put("name",tbShopInfo.getShopName());
|
||||
shopMap.put("amount",BigDecimal.ZERO.toPlainString());
|
||||
shopMap.put("levelConsume",BigDecimal.ZERO.toPlainString());
|
||||
|
||||
}
|
||||
|
||||
|
||||
//生成token 信息
|
||||
String token = TokenUtil.generateToken(userInfo.getId(), userInfo.getMiniAppOpenId(), userInfo.getTelephone(),userInfo.getNickName());
|
||||
|
||||
|
||||
//存储登录记录
|
||||
TbToken tbToken = new TbToken(tbShopInfo.getId(), userInfo.getId(),"wx_lite", token, ip, "1", new Date());
|
||||
tbTokenMapper.insert(tbToken);
|
||||
|
||||
|
||||
|
||||
Map<String,Object> map=new HashMap<>();
|
||||
try {
|
||||
map.put("token",token);
|
||||
map.put("userInfo",userInfo);
|
||||
map.put("shopUser",shopMap);
|
||||
map.put("shopInfo",tbShopInfo);
|
||||
redisUtil.saveMessage(RedisCst.ONLINE_USER.concat(openId), JSON.toJSONString(map));
|
||||
return Result.success(CodeEnum.SUCCESS,map);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return Result.fail("登录失败");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Result createCardNo(String id,String openId){
|
||||
if(ObjectUtil.isEmpty(id)||ObjectUtil.isEmpty(openId)){
|
||||
return Result.fail("head 信息不允许为空");
|
||||
}
|
||||
|
||||
|
||||
TbUserInfo userInfo= tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
|
||||
if(userInfo==null||ObjectUtil.isEmpty(userInfo)){
|
||||
userInfo=tbUserInfoMapper.selectByOpenId(openId);
|
||||
}
|
||||
|
||||
if(userInfo==null||ObjectUtil.isEmpty(userInfo)){
|
||||
return Result.fail("用户信息不存在");
|
||||
}
|
||||
|
||||
String cardNo= RandomUtil.randomNumbers(10);
|
||||
userInfo.setCardNo(cardNo);
|
||||
userInfo.setUpdatedAt(System.currentTimeMillis());
|
||||
tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
|
||||
|
||||
return Result.success(CodeEnum.SUCCESS,cardNo) ;
|
||||
}
|
||||
|
||||
|
||||
public Result userInfo(Integer userId,String shopId){
|
||||
TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPrimaryKey(userId);
|
||||
|
||||
if (tbUserInfo == null){
|
||||
return Result.success(CodeEnum.ENCRYPT,new ArrayList());
|
||||
}
|
||||
|
||||
|
||||
TbShopInfo tbShopInfo=null;
|
||||
if(ObjectUtil.isEmpty(shopId)){
|
||||
tbShopInfo=tbShopInfoMapper.selectByPhone(defaultPhone);
|
||||
}else {
|
||||
tbShopInfo=tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
|
||||
}
|
||||
|
||||
TbShopUser tbShopUser=null;
|
||||
Map<String,String> shopMap=new HashMap<>();
|
||||
if(ObjectUtil.isNotEmpty(tbShopInfo)){
|
||||
tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(tbUserInfo.getId().toString(),tbShopInfo.getId().toString());
|
||||
shopMap.put("shopId",tbShopUser.getShopId());
|
||||
shopMap.put("name",tbShopInfo.getShopName());
|
||||
shopMap.put("amount",BigDecimal.ZERO.toPlainString());
|
||||
shopMap.put("levelConsume",BigDecimal.ZERO.toPlainString());
|
||||
}
|
||||
|
||||
Map<String,Object> map=new HashMap<>();
|
||||
map.put("userInfo",tbUserInfo);
|
||||
map.put("shopUser",shopMap);
|
||||
map.put("shopInfo",tbShopInfo);
|
||||
|
||||
|
||||
return Result.success(CodeEnum.ENCRYPT,map);
|
||||
}
|
||||
public static void main(String[] args){
|
||||
for(int i =0;i<10;i++){
|
||||
System.out.println(RandomUtil.randomNumbers(10));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
|
||||
|
||||
import com.chaozhanggui.system.cashierservice.entity.dto.OnlineUserDto;
|
||||
import com.chaozhanggui.system.cashierservice.entity.dto.SecurityProperties;
|
||||
import com.chaozhanggui.system.cashierservice.exception.MsgException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.chaozhanggui.system.cashierservice.util.RedisUtils;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Date;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class OnlineUserService {
|
||||
@Resource
|
||||
private RedisUtils redisUtils;
|
||||
|
||||
// 令牌有效期(默认30分钟)
|
||||
protected static final long MILLIS_MINUTE = 30 * 60 *1000;
|
||||
/**
|
||||
* 保存在线用户信息
|
||||
* @param name
|
||||
* @param account
|
||||
* @param shopId
|
||||
* @param token
|
||||
*/
|
||||
public OnlineUserDto save(String name,String account, Integer shopId, String token,Integer status){
|
||||
OnlineUserDto onlineUserDto = null;
|
||||
|
||||
onlineUserDto = new OnlineUserDto();
|
||||
onlineUserDto.setAccount(account);
|
||||
onlineUserDto.setName(name);
|
||||
onlineUserDto.setStatus(status);
|
||||
onlineUserDto.setToken(token);
|
||||
onlineUserDto.setLoginTime(new Date());
|
||||
onlineUserDto.setShopId(shopId);
|
||||
try {
|
||||
redisUtils.set("online-token-"+token, onlineUserDto, MILLIS_MINUTE);
|
||||
}catch (Exception e){
|
||||
throw new MsgException("登录错误");
|
||||
}
|
||||
|
||||
return onlineUserDto;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.chaozhanggui.system.cashierservice.dao.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.vo.CashierCarVo;
|
||||
import com.chaozhanggui.system.cashierservice.entity.vo.OrderVo;
|
||||
import com.chaozhanggui.system.cashierservice.exception.MsgException;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisCst;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
|
||||
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
import com.chaozhanggui.system.cashierservice.socket.AppWebSocketServer;
|
||||
import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.awt.print.Pageable;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author 12847
|
||||
*/
|
||||
@Service
|
||||
public class OrderService {
|
||||
|
||||
@Resource
|
||||
private TbCashierCartMapper cashierCartMapper;
|
||||
|
||||
@Resource
|
||||
private TbOrderInfoMapper orderInfoMapper;
|
||||
|
||||
@Resource
|
||||
private TbShopInfoMapper tbShopInfoMapper;
|
||||
|
||||
@Resource
|
||||
private TbShopTableMapper shopTableMapper;
|
||||
@Resource
|
||||
private TbProductSkuMapper productSkuMapper;
|
||||
|
||||
@Resource
|
||||
private TbUserInfoMapper userInfoMapper;
|
||||
|
||||
@Resource
|
||||
private TbOrderDetailMapper tbOrderDetailMapper;
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
/**
|
||||
* 创建订单
|
||||
* @param tableId
|
||||
* @return
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Result createOrder(Integer tableId,Integer shopId,Integer userId){
|
||||
// //查询该台桌是否还有开启的购物车
|
||||
// List<CashierCarVo> cashierCarVoList = cashierCartMapper.selectByTableIdOpen(tableId);
|
||||
// if (cashierCarVoList.isEmpty()){
|
||||
// return Result.fail("该桌已清台");
|
||||
// }
|
||||
// //总金额
|
||||
// BigDecimal total = new BigDecimal("0.00");
|
||||
// List<Integer> ids = new ArrayList<>();
|
||||
// for (CashierCarVo date :cashierCarVoList) {
|
||||
// total=total.add(date.getNumber().multiply(date.getSalePrice()));
|
||||
// ids.add(date.getId());
|
||||
// }
|
||||
//
|
||||
// TbMerchantAccount tbMerchantAccount = merchantAccountMapper.selectByShopId(shopId.toString());
|
||||
// if (tbMerchantAccount == null){
|
||||
// return Result.fail("生成订单错误");
|
||||
// }
|
||||
//
|
||||
// TbUserInfo tbUserInfo = userInfoMapper.selectByPrimaryKey(userId);
|
||||
// if (tbUserInfo == null){
|
||||
// return Result.fail("生成订单失败");
|
||||
// }
|
||||
// //生成订单
|
||||
// TbOrderInfo orderInfo = new TbOrderInfo();
|
||||
// String orderNo = SnowFlakeUtil.generateOrderNo();
|
||||
// orderInfo.setOrderNo(orderNo);
|
||||
// orderInfo.setSettlementAmount(new BigDecimal("0.00"));
|
||||
// orderInfo.setPackFee(new BigDecimal("0.00"));
|
||||
// orderInfo.setOriginAmount(total);
|
||||
// orderInfo.setProductAmount(new BigDecimal("0.00"));
|
||||
// orderInfo.setAmount(total);
|
||||
// orderInfo.setPayAmount(total);
|
||||
// orderInfo.setRefundAmount(new BigDecimal("0.00"));
|
||||
// orderInfo.setCashPaidAmount(new BigDecimal("0.00"));
|
||||
// orderInfo.setTableId(tableId.toString());
|
||||
// orderInfo.setSendType("table");
|
||||
// orderInfo.setOrderType("miniapp");
|
||||
// orderInfo.setStatus("unpaid");
|
||||
// orderInfo.setShopId(shopId.toString());
|
||||
// orderInfo.setUserId(userId.toString());
|
||||
// orderInfo.setCreatedAt(Instant.now().toEpochMilli());
|
||||
// orderInfo.setSystemTime(Instant.now().toEpochMilli());
|
||||
// orderInfo.setUpdatedAt(Instant.now().toEpochMilli());
|
||||
// orderInfo.setIsAccepted((byte) 1);
|
||||
// orderInfo.setMerchantId(String.valueOf(tbMerchantAccount.getId()));
|
||||
// int i = orderInfoMapper.insertSelective(orderInfo);
|
||||
// //添加订单扩展
|
||||
// TbOrderExtendWithBLOBs orderExtendWithBLOBs = new TbOrderExtendWithBLOBs();
|
||||
// orderExtendWithBLOBs.setCartList(JSON.toJSONString(cashierCarVoList));
|
||||
// orderExtendWithBLOBs.setId(orderInfo.getId());
|
||||
// int i1 = orderExtendMapper.insertSelective(orderExtendWithBLOBs);
|
||||
// if (i1<1){
|
||||
// throw new MsgException("创建订单失败");
|
||||
// }
|
||||
// if (i<1){
|
||||
// throw new MsgException("创建订单失败");
|
||||
// }
|
||||
// int update = cashierCartMapper.updateByIds(ids,orderInfo.getId().toString(),Instant.now().toEpochMilli());
|
||||
// if (update<1){
|
||||
// throw new MsgException("创建订单失败");
|
||||
// }
|
||||
// //返回显示数据
|
||||
// TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(shopId);
|
||||
// if (tbShopInfo == null){
|
||||
// throw new MsgException("创建订单失败");
|
||||
// }
|
||||
// TbShopTable shopTable = shopTableMapper.selectByPrimaryKey(tableId);
|
||||
//
|
||||
OrderVo orderVo = new OrderVo();
|
||||
// orderVo.setName(tbShopInfo.getShopName());
|
||||
// orderVo.setStatus(orderInfo.getStatus());
|
||||
// orderVo.setCartList(cashierCarVoList);
|
||||
// orderVo.setOrderNo(orderNo);
|
||||
// orderVo.setTime(Instant.now().toEpochMilli());
|
||||
// orderVo.setPayAmount(total);
|
||||
// orderVo.setTableName(shopTable.getName());
|
||||
// orderVo.setOrderType(orderInfo.getOrderType());
|
||||
// orderVo.setOrderId(orderInfo.getId());
|
||||
// orderVo.setSendType(orderInfo.getSendType());
|
||||
return Result.success(CodeEnum.ENCRYPT,orderVo);
|
||||
}
|
||||
|
||||
public Result orderInfo(Integer orderId){
|
||||
TbOrderInfo orderInfo = orderInfoMapper.selectByPrimaryKey(orderId);
|
||||
if (orderInfo == null){
|
||||
return Result.fail("未找到订单");
|
||||
}
|
||||
|
||||
|
||||
|
||||
TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId()));
|
||||
if (tbShopInfo == null){
|
||||
return Result.fail("未找到订单");
|
||||
}
|
||||
TbShopTable tbShopTable = shopTableMapper.selectQRcode(orderInfo.getTableId());
|
||||
|
||||
|
||||
List<TbOrderDetail> details= tbOrderDetailMapper.selectAllByOrderId(orderId);
|
||||
if(ObjectUtil.isEmpty(details)||details.size()<=0){
|
||||
return Result.fail("未找到订单");
|
||||
}
|
||||
|
||||
OrderVo orderVo = new OrderVo();
|
||||
orderVo.setName(tbShopInfo.getShopName());
|
||||
orderVo.setStatus(orderInfo.getStatus());
|
||||
|
||||
orderVo.setDetails(details);
|
||||
orderVo.setOrderNo(orderInfo.getOrderNo());
|
||||
orderVo.setTime(orderInfo.getCreatedAt());
|
||||
orderVo.setPayAmount(orderInfo.getOrderAmount());
|
||||
orderVo.setTableName(tbShopTable == null?"":tbShopTable.getName());
|
||||
orderVo.setOrderType(orderInfo.getOrderType());
|
||||
orderVo.setOrderId(orderInfo.getId());
|
||||
orderVo.setSendType(orderInfo.getSendType());
|
||||
|
||||
return Result.success(CodeEnum.ENCRYPT,orderVo);
|
||||
}
|
||||
|
||||
|
||||
public Result orderList(Integer userId,Integer page,Integer size,String status){
|
||||
TbUserInfo tbUserInfo = userInfoMapper.selectByPrimaryKey(userId);
|
||||
if (tbUserInfo == null){
|
||||
return Result.fail("生成订单失败");
|
||||
}
|
||||
//获取页码号
|
||||
int beginNo;
|
||||
if(page <=0){
|
||||
beginNo = 0;
|
||||
}else{
|
||||
beginNo = (page - 1) * size;
|
||||
}
|
||||
List<TbOrderInfo> tbOrderInfos = orderInfoMapper.selectByUserId(userId, beginNo, size,status);
|
||||
|
||||
for (TbOrderInfo orderInfo:tbOrderInfos){
|
||||
List<TbOrderDetail> list = tbOrderDetailMapper.selectAllByOrderId(orderInfo.getId());
|
||||
int num = 0;
|
||||
for (TbOrderDetail orderDetail:list){
|
||||
num = num+orderDetail.getNum();
|
||||
}
|
||||
orderInfo.setDetailList(list);
|
||||
orderInfo.setTotalNumber(num);
|
||||
}
|
||||
//
|
||||
// for (OrderVo date :tbOrderInfos) {
|
||||
// if (date.getCartListString() !=null) {
|
||||
// date.setCartList(JSON.parseArray(date.getCartListString(), CashierCarVo.class));
|
||||
// date.setCartListString("");
|
||||
// BigDecimal number = new BigDecimal("0.00");
|
||||
// for (CashierCarVo o : date.getCartList()) {
|
||||
// number = number.add(o.getNumber());
|
||||
// }
|
||||
// //总个数
|
||||
// date.setTotalNumber(number);
|
||||
// }
|
||||
// }
|
||||
return Result.success(CodeEnum.ENCRYPT,tbOrderInfos);
|
||||
|
||||
}
|
||||
|
||||
public void testMessage(String tableId, String message) throws IOException {
|
||||
// AppWebSocketServer.AppSendInfo(message,tableId);
|
||||
// redisUtil.seckill(tableId,message);
|
||||
// AppWebSocketServer.onClosed(tableId);
|
||||
List<TbProductSku> list = productSkuMapper.selectAll();
|
||||
for (TbProductSku productSku:list){
|
||||
// productSku.setStockNumber(200.00);
|
||||
redisUtil.saveMessage("PRODUCT:"+productSku.getShopId()+":"+productSku.getId(),productSku.getStockNumber().intValue()+"");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,480 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.chaozhanggui.system.cashierservice.dao.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.*;
|
||||
import com.chaozhanggui.system.cashierservice.model.PayReq;
|
||||
import com.chaozhanggui.system.cashierservice.model.TradeQueryReq;
|
||||
import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisCst;
|
||||
import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
|
||||
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
import com.chaozhanggui.system.cashierservice.socket.AppWebSocketServer;
|
||||
import com.chaozhanggui.system.cashierservice.util.BeanUtil;
|
||||
import com.chaozhanggui.system.cashierservice.util.MD5Util;
|
||||
import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PayService {
|
||||
|
||||
|
||||
|
||||
@Autowired
|
||||
TbOrderInfoMapper tbOrderInfoMapper;
|
||||
|
||||
@Autowired
|
||||
TbShopInfoMapper tbShopInfoMapper;
|
||||
|
||||
@Autowired
|
||||
TbMerchantThirdApplyMapper tbMerchantThirdApplyMapper;
|
||||
|
||||
@Autowired
|
||||
TbOrderPaymentMapper tbOrderPaymentMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
TbOrderDetailMapper tbOrderDetailMapper;
|
||||
|
||||
|
||||
@Value("${ysk.url}")
|
||||
private String url;
|
||||
|
||||
@Value("${ysk.callBackurl}")
|
||||
private String callBackurl;
|
||||
|
||||
@Value("${ysk.callBackIn}")
|
||||
private String callBackIn;
|
||||
|
||||
|
||||
|
||||
|
||||
@Autowired
|
||||
private TbCashierCartMapper tbCashierCartMapper;
|
||||
|
||||
@Autowired
|
||||
TbMemberInMapper tbMemberInMapper;
|
||||
|
||||
@Autowired
|
||||
TbShopUserMapper tbShopUserMapper;
|
||||
|
||||
@Resource
|
||||
RestTemplate restTemplate;
|
||||
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
|
||||
@Autowired
|
||||
RabbitProducer producer;
|
||||
|
||||
@Autowired
|
||||
TbShopUserFlowMapper tbShopUserFlowMapper;
|
||||
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Result payOrder(String openId,String orderId,String ip) throws Exception {
|
||||
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
|
||||
|
||||
if(!"unpaid".equals(orderInfo.getStatus())&&!"paying".equals(orderInfo.getStatus())){
|
||||
return Result.fail("订单状态异常,不允许支付");
|
||||
}
|
||||
|
||||
if(ObjectUtil.isNull(orderInfo.getMerchantId())||ObjectUtil.isEmpty(orderInfo.getMerchantId())){
|
||||
return Result.fail("没有对应的商户");
|
||||
}
|
||||
|
||||
|
||||
TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId()));
|
||||
|
||||
if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){
|
||||
return Result.fail("支付通道不存在");
|
||||
}
|
||||
|
||||
TbOrderPayment payment=tbOrderPaymentMapper.selectByOrderId(orderId);
|
||||
if(ObjectUtil.isEmpty(payment)||payment==null){
|
||||
payment=new TbOrderPayment();
|
||||
payment.setPayTypeId("ysk");
|
||||
payment.setAmount(orderInfo.getOrderAmount());
|
||||
payment.setPaidAmount(orderInfo.getPayAmount());
|
||||
payment.setHasRefundAmount(BigDecimal.ZERO);
|
||||
payment.setPayName("微信支付");
|
||||
payment.setPayType("wechatPay");
|
||||
payment.setReceived(payment.getAmount());
|
||||
payment.setChangeFee(BigDecimal.ZERO);
|
||||
payment.setMemberId(orderInfo.getMemberId());
|
||||
payment.setShopId(orderInfo.getShopId());
|
||||
payment.setOrderId(orderInfo.getId().toString());
|
||||
payment.setCreatedAt(System.currentTimeMillis());
|
||||
tbOrderPaymentMapper.insert(payment);
|
||||
}else {
|
||||
payment.setUpdatedAt(System.currentTimeMillis());
|
||||
tbOrderPaymentMapper.updateByPrimaryKey(payment);
|
||||
}
|
||||
|
||||
PayReq req=new PayReq();
|
||||
|
||||
req.setAppId(thirdApply.getAppId());
|
||||
req.setTimestamp(System.currentTimeMillis());
|
||||
req.setIp(ip);
|
||||
req.setMercOrderNo(orderInfo.getOrderNo());
|
||||
req.setNotifyUrl(callBackurl);
|
||||
req.setPayAmt(payment.getAmount().setScale(2,BigDecimal.ROUND_DOWN).toPlainString());
|
||||
req.setPayType("03");
|
||||
req.setPayWay("WXZF");
|
||||
req.setSubject("扫码点餐");
|
||||
req.setUserId(openId);
|
||||
|
||||
|
||||
Map<String,Object> map= BeanUtil.transBeanMap(req);
|
||||
req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
|
||||
|
||||
ResponseEntity<String> response= restTemplate.postForEntity(url.concat("trans/pay"),req,String.class);
|
||||
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
|
||||
JSONObject object=JSONObject.parseObject(response.getBody());
|
||||
if(object.get("code").equals("0")){
|
||||
|
||||
payment.setTradeNumber(object.getJSONObject("data").get("orderNumber").toString());
|
||||
payment.setUpdatedAt(System.currentTimeMillis());
|
||||
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
|
||||
orderInfo.setStatus("paying");
|
||||
orderInfo.setPayOrderNo(payment.getTradeNumber());
|
||||
|
||||
tbOrderInfoMapper.updateByPrimaryKey(orderInfo);
|
||||
String key= RedisCst.TABLE_CART.concat(orderInfo.getTableId()).concat("-").concat(orderInfo.getShopId());
|
||||
//清除缓存购物车数据
|
||||
redisUtil.deleteByKey(key);
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("status", "success");
|
||||
jsonObject1.put("msg", "成功");
|
||||
jsonObject1.put("type", "");
|
||||
jsonObject1.put("data", new JSONArray());
|
||||
jsonObject1.put("amount", 0);
|
||||
AppWebSocketServer.AppSendInfo(jsonObject1,key, false);
|
||||
tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),"final");
|
||||
return Result.success(CodeEnum.SUCCESS,object.getJSONObject("data"));
|
||||
}else {
|
||||
return Result.fail(object.getString("msg"));
|
||||
}
|
||||
}
|
||||
|
||||
return Result.fail("失败");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Result modifyOrderStatus(Integer orderId) throws IOException {
|
||||
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
|
||||
if(ObjectUtil.isEmpty(orderInfo)){
|
||||
return Result.fail("订单信息不存在");
|
||||
}
|
||||
|
||||
if("paying".equals(orderInfo.getStatus())){
|
||||
|
||||
TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(orderInfo.getId().toString());
|
||||
if(ObjectUtil.isNotEmpty(payment)&&ObjectUtil.isNotEmpty(payment.getTradeNumber())){
|
||||
|
||||
TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId()));
|
||||
|
||||
if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){
|
||||
return Result.fail("支付通道不存在");
|
||||
}
|
||||
|
||||
|
||||
TradeQueryReq req=new TradeQueryReq();
|
||||
req.setAppId(thirdApply.getAppId());
|
||||
req.setTimestamp(System.currentTimeMillis());
|
||||
req.setOrderNumber(payment.getTradeNumber());
|
||||
Map<String,Object> map= BeanUtil.transBeanMap(req);
|
||||
|
||||
req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
|
||||
|
||||
ResponseEntity<String> response= restTemplate.postForEntity(url.concat("merchantOrder/tradeQuery"),req,String.class);
|
||||
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
|
||||
JSONObject object=JSONObject.parseObject(response.getBody());
|
||||
|
||||
if(object.get("code").equals("0")){
|
||||
JSONObject data=object.getJSONObject("data");
|
||||
String status=data.getString("status");
|
||||
String cartStatus="";
|
||||
switch (status){
|
||||
case "0": //交易失败
|
||||
break;
|
||||
case "1": //交易成功
|
||||
|
||||
//修改数据库中购物车数据
|
||||
int cartCount= tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),"final");
|
||||
|
||||
log.info("更新购物车:{}",cartCount);
|
||||
|
||||
//更新子单状态
|
||||
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed");
|
||||
|
||||
//修改主单状态
|
||||
orderInfo.setStatus("closed");
|
||||
orderInfo.setPayType("wx_lite");
|
||||
orderInfo.setPayOrderNo(payment.getTradeNumber());
|
||||
orderInfo.setPayAmount(orderInfo.getOrderAmount());
|
||||
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("发送打印数据");
|
||||
producer.printMechine(orderInfo.getId() + "");
|
||||
|
||||
return Result.success(CodeEnum.SUCCESS,orderId);
|
||||
case "2": //退款成功
|
||||
cartStatus="refund";
|
||||
orderInfo.setStatus("refund");
|
||||
break;
|
||||
case "3": //退款失败
|
||||
break;
|
||||
case "4": //退款中
|
||||
cartStatus="refunding";
|
||||
orderInfo.setStatus("refunding");
|
||||
break;
|
||||
}
|
||||
|
||||
tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),cartStatus);
|
||||
orderInfo.setUpdatedAt(System.currentTimeMillis());
|
||||
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.success(CodeEnum.SUCCESS,orderId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public Result memberIn(String openId,String userId,String amount,String shopId,String ip){
|
||||
if(ObjectUtil.isEmpty(openId)||ObjectUtil.isEmpty(userId)){
|
||||
return Result.fail("用户信息允许为空");
|
||||
}
|
||||
|
||||
|
||||
TbShopUser tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(userId,shopId);
|
||||
if(ObjectUtil.isEmpty(tbShopUser)){
|
||||
return Result.fail("对应的用户信息不存在");
|
||||
}
|
||||
|
||||
|
||||
TbShopInfo shopInfo= tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
|
||||
if(ObjectUtil.isEmpty(shopInfo)){
|
||||
return Result.fail("对应的店铺信息不存在");
|
||||
}
|
||||
|
||||
|
||||
|
||||
TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(shopInfo.getMerchantId()));
|
||||
|
||||
if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){
|
||||
return Result.fail("支付通道不存在");
|
||||
}
|
||||
|
||||
BigDecimal payAmount= new BigDecimal(amount).setScale(2,BigDecimal.ROUND_DOWN);
|
||||
|
||||
TbMemberIn memberIn=new TbMemberIn();
|
||||
memberIn.setAmount(payAmount);
|
||||
memberIn.setUserId(Integer.valueOf(tbShopUser.getId()));
|
||||
memberIn.setCode(tbShopUser.getCode());
|
||||
memberIn.setStatus("7");
|
||||
memberIn.setMerchantId(Integer.valueOf(shopInfo.getMerchantId()));
|
||||
memberIn.setCreateTime(new Date());
|
||||
tbMemberInMapper.insert(memberIn);
|
||||
|
||||
|
||||
|
||||
PayReq req=new PayReq();
|
||||
|
||||
req.setAppId(thirdApply.getAppId());
|
||||
req.setTimestamp(System.currentTimeMillis());
|
||||
req.setIp(ip);
|
||||
req.setMercOrderNo(SnowFlakeUtil.generateOrderNo());
|
||||
req.setNotifyUrl(callBackIn);
|
||||
req.setPayAmt(amount);
|
||||
req.setPayType("03");
|
||||
req.setPayWay("WXZF");
|
||||
req.setSubject("充值");
|
||||
req.setUserId(openId);
|
||||
|
||||
|
||||
Map<String,Object> map= BeanUtil.transBeanMap(req);
|
||||
req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
|
||||
|
||||
ResponseEntity<String> response= restTemplate.postForEntity(url.concat("trans/pay"),req,String.class);
|
||||
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
|
||||
JSONObject object=JSONObject.parseObject(response.getBody());
|
||||
if(object.get("code").equals("0")){
|
||||
|
||||
memberIn.setOrderNo(object.getJSONObject("data").get("orderNumber").toString());
|
||||
memberIn.setUpdateTime(new Date());
|
||||
tbMemberInMapper.updateByPrimaryKeySelective(memberIn);
|
||||
|
||||
return Result.success(CodeEnum.SUCCESS,object.getJSONObject("data"));
|
||||
}else {
|
||||
return Result.fail(object.getString("msg"));
|
||||
}
|
||||
}
|
||||
return Result.fail("失败");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String callBackPay(String payOrderNO) {
|
||||
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPayOrderNo(payOrderNO);
|
||||
if (ObjectUtil.isEmpty(orderInfo)) {
|
||||
return "订单信息不存在";
|
||||
}
|
||||
|
||||
if ("paying".equals(orderInfo.getStatus())) {
|
||||
int cartCount = tbCashierCartMapper.updateStatusByOrderId(orderInfo.getId().toString(), "final");
|
||||
|
||||
log.info("更新购物车:{}", cartCount);
|
||||
|
||||
//更新子单状态
|
||||
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(orderInfo.getId(), "closed");
|
||||
|
||||
//修改主单状态
|
||||
orderInfo.setStatus("closed");
|
||||
orderInfo.setPayType("wx_lite");
|
||||
orderInfo.setPayOrderNo(payOrderNO);
|
||||
orderInfo.setPayAmount(orderInfo.getOrderAmount());
|
||||
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("发送打印数据");
|
||||
producer.printMechine(orderInfo.getId() + "");
|
||||
|
||||
return "SUCCESS";
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String minsuccess(String payOrderNO,String tradeNo){
|
||||
|
||||
TbMemberIn memberIn= tbMemberInMapper.selectByOrderNo(payOrderNO);
|
||||
if(ObjectUtil.isEmpty(memberIn)){
|
||||
return "充值记录不存在";
|
||||
}
|
||||
|
||||
memberIn.setTradeNo(tradeNo);
|
||||
memberIn.setStatus("0");
|
||||
memberIn.setUpdateTime(new Date());
|
||||
tbMemberInMapper.updateByPrimaryKeySelective(memberIn);
|
||||
|
||||
TbShopUser tbShopUser= tbShopUserMapper.selectByUserId(memberIn.getUserId().toString());
|
||||
if(ObjectUtil.isEmpty(tbShopUser)){
|
||||
return "用户信息不存在";
|
||||
}
|
||||
|
||||
//修改客户资金
|
||||
tbShopUser.setAmount(tbShopUser.getAmount().add(memberIn.getAmount()));
|
||||
tbShopUser.setUpdatedAt(System.currentTimeMillis());
|
||||
tbShopUserMapper.updateByPrimaryKeySelective(tbShopUser);
|
||||
|
||||
TbShopUserFlow flow=new TbShopUserFlow();
|
||||
flow.setShopUserId(Integer.valueOf(tbShopUser.getId()));
|
||||
flow.setBizCode("scanMemberIn");
|
||||
flow.setBizName("会员扫码充值");
|
||||
flow.setAmount(memberIn.getAmount());
|
||||
flow.setBalance(tbShopUser.getAmount());
|
||||
flow.setCreateTime(new Date());
|
||||
tbShopUserFlowMapper.insert(flow);
|
||||
return "success";
|
||||
}
|
||||
|
||||
|
||||
// public Result returnOrder(){
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
public static void main(String[] args){
|
||||
|
||||
RestTemplate restTemplate1= new RestTemplate();
|
||||
JSONObject param=new JSONObject();
|
||||
|
||||
String priv="MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIqNqTqhN8zE7eFZnwKcyBTENce2wdAtl/gaDHNuNVgg33dS27Jx0fKl9QSHXyzyxbAdG8F94niYbRBstrMymFRjuO72jH+rIH62Ym1k7l8JSLVK2dKHXt8lHDaQGUP10q0EEocnDQ9cL93oBNG1ttsV6vOAu1TPvRK9TGihRAe1AgMBAAECgYBmI8KCl0DkcrSOsRvYuC2DqZWf8el1B3eFjeZp3e/zVOCIPYv6Q5ArWg6DVSxjnWEA0KSagqvGjU+xkQMqnXzPcPMhsIS+1wyR/pP+pwiatO2ioHaQpEqHg9eXhxrgA477/xuKVw9zl5GNqaIgd++2NDXnqLh0Y6OR73f0OB5eDQJBAPihEm+UWLOam/Q/k2+k4Lm2dvxJTBur1fslBiJpgMhgcz/PlwRwpL7aPD0AuPv0NqLouuoTiKpq9icnUv12tgsCQQCOqTANw0IErCHUNdinjXewmG3ui1j9XgM41rSn5ZeTrPL4GhZc2zbS/pZT4PBKUL6NLGkfPHmw4rOmNL/Xc5E/AkBqAwQBX5eSvVHSC2mqKPtJNGv3lqlFAzfyJg8/jQzEY5vAkZsq4Xzdg+A7gptdkvvY6rMIK9wSDhl3CGVyfbORAkA1N+g1OiHmnFACWhP4bU25EyPvWQxZeDi7e1zpRTzGWj5JT3IIMb7B9zcdE0yQbI6pG2gbvvOmiOt7lTH7raEBAkBas2gugvR3f0aGqQcqMpyM627pyRppQ2h58/7KBylP3oR2BReqMUcXeiJ8TuBXzbRXpeVQ0DWOva5CWZJmBMdz";
|
||||
|
||||
PayReq req=new PayReq();
|
||||
|
||||
req.setAppId("M8002023120892f1e4");
|
||||
req.setTimestamp(System.currentTimeMillis());
|
||||
req.setIp("127.0.0.1");
|
||||
req.setMercOrderNo(System.currentTimeMillis()+"");
|
||||
req.setNotifyUrl("https");
|
||||
req.setPayAmt("0.01");
|
||||
req.setPayType("03");
|
||||
req.setPayWay("WXZF");
|
||||
req.setSubject("ddd");
|
||||
req.setUserId("or1l864NBOoJZhC5x_yeziZ26j6c");
|
||||
|
||||
Map<String,Object> map= BeanUtil.transBeanMap(req);
|
||||
|
||||
req.setSign(MD5Util.encrypt(map,priv,true));
|
||||
|
||||
|
||||
ResponseEntity<String> response= restTemplate1.postForEntity("https://gatewaytestapi.sxczgkj.cn/gate-service/trans/pay",req,String.class);
|
||||
|
||||
|
||||
|
||||
// TradeQueryReq req=new TradeQueryReq();
|
||||
// req.setAppId("M800202305094c170c");
|
||||
// req.setTimestamp(System.currentTimeMillis());
|
||||
// req.setOrderNumber("SXF_W_MERC_20240205182102491");
|
||||
// Map<String,Object> map= BeanUtil.transBeanMap(req);
|
||||
//
|
||||
// req.setSign(MD5Util.encrypt(map,priv,true));
|
||||
//
|
||||
// ResponseEntity<String> response= restTemplate1.postForEntity("https://gateway.api.sxczgkj.cn/gate-service/merchantOrder/tradeQuery",req,String.class);
|
||||
//
|
||||
//
|
||||
System.out.println(">>>>>>>>>>>>>>>"+response.getBody());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.chaozhanggui.system.cashierservice.dao.*;
|
||||
import com.chaozhanggui.system.cashierservice.entity.*;
|
||||
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
import com.chaozhanggui.system.cashierservice.socket.AppWebSocketServer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ProductService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private TbProductGroupMapper tbProductGroupMapper;
|
||||
|
||||
@Autowired
|
||||
private TbProductMapper tbProductMapper;
|
||||
|
||||
@Autowired
|
||||
private TbShopInfoMapper tbShopInfoMapper;
|
||||
|
||||
@Autowired
|
||||
private TbProductSkuResultMapper tbProductSkuResultMapper;
|
||||
|
||||
@Autowired
|
||||
private TbShopTableMapper tbShopTableMapper;
|
||||
|
||||
|
||||
|
||||
@Autowired
|
||||
TbProductSkuMapper tbProductSkuMapper;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public Result queryProduct(String code,String productGroupId){
|
||||
|
||||
ConcurrentMap<String,Object> concurrentMap=new ConcurrentHashMap<>();
|
||||
|
||||
TbShopTable tbShopTable= tbShopTableMapper.selectQRcode(code);
|
||||
if(ObjectUtil.isEmpty(tbShopTable)||ObjectUtil.isNull(tbShopTable)){
|
||||
return Result.fail("台桌信息不存在");
|
||||
}
|
||||
|
||||
|
||||
Integer id= ObjectUtil.isNotEmpty(productGroupId)?Integer.valueOf(productGroupId):null;
|
||||
List<TbProductGroup> groupList=tbProductGroupMapper.selectByQrcode(code,id);
|
||||
if(ObjectUtil.isNotEmpty(groupList)&&groupList.size()>0){
|
||||
|
||||
TbProductGroup group= groupList.get(0);
|
||||
TbShopInfo shopInfo= tbShopInfoMapper.selectByPrimaryKey(group.getShopId()) ;
|
||||
concurrentMap.put("shopTableInfo",tbShopTable);
|
||||
concurrentMap.put("storeInfo",shopInfo);
|
||||
groupList.parallelStream().forEach(g->{
|
||||
String in=g.getProductIds().substring(1,g.getProductIds().length()-1);
|
||||
|
||||
|
||||
if(ObjectUtil.isNotEmpty(in)&&ObjectUtil.isNotNull(in)){
|
||||
log.info("请求参数:{}",in);
|
||||
List<TbProduct> products= tbProductMapper.selectByIdIn(in);
|
||||
if(ObjectUtil.isNotEmpty(products)&&products.size()>0){
|
||||
products.parallelStream().forEach(it->{
|
||||
Integer sum = 0;
|
||||
if (AppWebSocketServer.userMap.containsKey(code)){
|
||||
Set<String> userSet = AppWebSocketServer.userMap.get(code);
|
||||
if (userSet.isEmpty()){
|
||||
sum= tbProductMapper.selectByQcode(code,it.getId(),it.getShopId());
|
||||
}else {
|
||||
List<String> userList = new ArrayList<>(userSet);
|
||||
sum= tbProductMapper.selectByNewQcode(code,it.getId(),it.getShopId(),userList);
|
||||
}
|
||||
}else {
|
||||
sum= tbProductMapper.selectByQcode(code,it.getId(),it.getShopId());
|
||||
}
|
||||
it.setCartNumber(sum==null?"0":String.valueOf(sum));
|
||||
TbProductSkuResult skuResult= tbProductSkuResultMapper.selectByPrimaryKey(it.getId());
|
||||
it.setProductSkuResult(skuResult);
|
||||
});
|
||||
g.setProducts(products);
|
||||
}else {
|
||||
g.setProducts(new ArrayList<>());
|
||||
}
|
||||
|
||||
}else {
|
||||
g.setProducts(new ArrayList<>());
|
||||
}
|
||||
});
|
||||
|
||||
concurrentMap.put("productInfo",groupList);
|
||||
}
|
||||
|
||||
return Result.success(CodeEnum.SUCCESS,concurrentMap);
|
||||
}
|
||||
|
||||
|
||||
public Result queryProductSku(String shopId, String productId, String spec_tag){
|
||||
if(ObjectUtil.isEmpty(shopId)||ObjectUtil.isEmpty(productId)){
|
||||
return Result.fail("参数错误");
|
||||
}
|
||||
|
||||
TbProductSkuWithBLOBs tbProductSkuWithBLOBs= tbProductSkuMapper.selectByShopIdAndProductIdAndSpec(shopId,productId,spec_tag);
|
||||
return Result.success(CodeEnum.SUCCESS,tbProductSkuWithBLOBs);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.chaozhanggui.system.cashierservice.service;
|
||||
import com.chaozhanggui.system.cashierservice.annotation.ResultCode;
|
||||
import com.chaozhanggui.system.cashierservice.dao.TbShopAreaMapper;
|
||||
import com.chaozhanggui.system.cashierservice.dao.TbShopTableMapper;
|
||||
import com.chaozhanggui.system.cashierservice.entity.TbShopArea;
|
||||
import com.chaozhanggui.system.cashierservice.entity.TbShopTable;
|
||||
import com.chaozhanggui.system.cashierservice.exception.MsgException;
|
||||
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
|
||||
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lyf
|
||||
*/
|
||||
@Service
|
||||
public class ShopTableService {
|
||||
|
||||
private final String QRCODEFRONT = "https://kysh.sxczgkj.cn/codeplate?code=";
|
||||
@Resource
|
||||
private TbShopTableMapper shopTableMapper;
|
||||
@Resource
|
||||
private TbShopAreaMapper shopAreaMapper;
|
||||
|
||||
public Result bindingQrcode(TbShopTable shopTable){
|
||||
TbShopTable shopTableId = shopTableMapper.selectByPrimaryKey(shopTable.getId());
|
||||
if (shopTableId == null){
|
||||
return Result.fail("找不到台桌");
|
||||
}
|
||||
int i = shopTableMapper.updateByPrimaryKeySelective(shopTable);
|
||||
if (i>0){
|
||||
return Result.success(CodeEnum.ENCRYPT);
|
||||
}else {
|
||||
return Result.fail("添加失败");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public Result tableList(Integer shopId,Integer areaId){
|
||||
if (shopId == null){
|
||||
return Result.fail("参数有误");
|
||||
}
|
||||
if (areaId == 0){
|
||||
areaId =null;
|
||||
}
|
||||
List<TbShopTable> tbShopTablesList = shopTableMapper.selectShopTableById(shopId,areaId);
|
||||
for (TbShopTable date :tbShopTablesList) {
|
||||
if (!"".equals(date.getQrcode())){
|
||||
date.setQrcode(QRCODEFRONT+date.getQrcode());
|
||||
}
|
||||
}
|
||||
return Result.success(CodeEnum.ENCRYPT,tbShopTablesList);
|
||||
}
|
||||
|
||||
|
||||
public Result areaList(Integer shopId){
|
||||
List<TbShopArea> tbShopArea = shopAreaMapper.selectByShopId(shopId);
|
||||
return Result.success(CodeEnum.ENCRYPT,tbShopArea);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user