1.数据报表导出cpu拉高问题修复
2.代客下单相关接口
This commit is contained in:
@@ -257,6 +257,15 @@ public class RedisUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean setNx(String key, Object value) {
|
||||||
|
try {
|
||||||
|
return redisTemplate.opsForValue().setIfAbsent(key, value);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 普通缓存放入并设置时间
|
* 普通缓存放入并设置时间
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -2,10 +2,7 @@ package cn.ysk.cashier.controller.product;
|
|||||||
|
|
||||||
import cn.ysk.cashier.annotation.AnonymousAccess;
|
import cn.ysk.cashier.annotation.AnonymousAccess;
|
||||||
import cn.ysk.cashier.annotation.Log;
|
import cn.ysk.cashier.annotation.Log;
|
||||||
import cn.ysk.cashier.dto.shoptable.AddCartDTO;
|
import cn.ysk.cashier.dto.shoptable.*;
|
||||||
import cn.ysk.cashier.dto.shoptable.ClearCartDTO;
|
|
||||||
import cn.ysk.cashier.dto.shoptable.RemoveCartDTO;
|
|
||||||
import cn.ysk.cashier.dto.shoptable.UpdateCartDTO;
|
|
||||||
import cn.ysk.cashier.pojo.order.TbCashierCart;
|
import cn.ysk.cashier.pojo.order.TbCashierCart;
|
||||||
import cn.ysk.cashier.service.product.TbProductService;
|
import cn.ysk.cashier.service.product.TbProductService;
|
||||||
import cn.ysk.cashier.service.shop.TbShopTableService;
|
import cn.ysk.cashier.service.shop.TbShopTableService;
|
||||||
@@ -63,6 +60,14 @@ public class TbPlaceController {
|
|||||||
return ResponseEntity.ok(tbShopTableService.updateCart(updateCartDTO));
|
return ResponseEntity.ok(tbShopTableService.updateCart(updateCartDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AnonymousAccess
|
||||||
|
@PutMapping("/pack")
|
||||||
|
@Log("代客下单")
|
||||||
|
@ApiOperation("代客下单/shop/table")
|
||||||
|
public ResponseEntity<TbCashierCart> pack(@Valid @RequestBody PackCartDTO packCartDTO) {
|
||||||
|
tbShopTableService.pack(packCartDTO);
|
||||||
|
return ResponseEntity.ok(null);
|
||||||
|
}
|
||||||
|
|
||||||
@AnonymousAccess
|
@AnonymousAccess
|
||||||
@DeleteMapping("/removeCart")
|
@DeleteMapping("/removeCart")
|
||||||
@@ -95,4 +100,27 @@ public class TbPlaceController {
|
|||||||
return ResponseEntity.ok(tbShopTableService.getCart(tableId, page, size, shopId));
|
return ResponseEntity.ok(tbShopTableService.getCart(tableId, page, size, shopId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AnonymousAccess
|
||||||
|
|
||||||
|
@GetMapping("/masterId")
|
||||||
|
@Log("代客下单 查询购物车")
|
||||||
|
@ApiOperation("代客下单 ")
|
||||||
|
public ResponseEntity<Object> getMasterId(
|
||||||
|
@RequestParam Long tableId,
|
||||||
|
@RequestParam Integer shopId
|
||||||
|
) {
|
||||||
|
return ResponseEntity.ok(tbShopTableService.getMasterId(tableId, shopId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@AnonymousAccess
|
||||||
|
|
||||||
|
@PostMapping("/order")
|
||||||
|
@Log("代客下单 查询购物车")
|
||||||
|
@ApiOperation("代客下单 查询购物车 /shop/table")
|
||||||
|
public ResponseEntity<Object> createOrder(
|
||||||
|
@RequestBody CreateOrderDTO createOrderDTO
|
||||||
|
) {
|
||||||
|
return ResponseEntity.ok(tbShopTableService.createOrder(createOrderDTO));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package cn.ysk.cashier.dto.shoptable;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CreateOrderDTO {
|
||||||
|
@NotNull
|
||||||
|
private Integer shopId;
|
||||||
|
@NotEmpty
|
||||||
|
private String tableId;
|
||||||
|
private String note;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package cn.ysk.cashier.dto.shoptable;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Range;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PackCartDTO {
|
||||||
|
@NotNull
|
||||||
|
private Integer shopId;
|
||||||
|
@NotEmpty
|
||||||
|
private String tableId;
|
||||||
|
@NotNull
|
||||||
|
@Range(min = 0, max = 1)
|
||||||
|
private Integer state;
|
||||||
|
}
|
||||||
@@ -37,6 +37,19 @@ public interface TbOrderDetailRepository extends JpaRepository<TbOrderDetail, In
|
|||||||
|
|
||||||
@Query("SELECT cart FROM TbOrderDetail cart WHERE cart.orderId in :ids")
|
@Query("SELECT cart FROM TbOrderDetail cart WHERE cart.orderId in :ids")
|
||||||
List<TbOrderDetail> searchDetailByOrderIds(@Param("ids")List<Integer> ids);
|
List<TbOrderDetail> searchDetailByOrderIds(@Param("ids")List<Integer> ids);
|
||||||
|
@Query(value = "SELECT " +
|
||||||
|
"new cn.ysk.cashier.vo.TbOrderSaleVO(oi.orderNo, od.num, od.price, od.status, 0)\n" +
|
||||||
|
"FROM\n" +
|
||||||
|
"TbOrderInfo oi\n" +
|
||||||
|
"LEFT JOIN TbOrderDetail od ON oi.id = od.orderId \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"od.shopId = :shopId \n" +
|
||||||
|
"AND ( od.status = 'closed' OR od.status = 'refund' ) \n" +
|
||||||
|
"AND od.createTime > :startTime \n" +
|
||||||
|
"AND od.createTime < :endTime \n" +
|
||||||
|
"AND (:productId is null or od.productId = :productId)\n" +
|
||||||
|
"AND (:productId is null or od.productSkuId = :productSkuId)")
|
||||||
|
List<TbOrderSaleVO> querySaleOrderInfo(@Param("startTime") Timestamp startTime, @Param("endTime") Timestamp endTime, @Param("productId") Integer productId, @Param("productSkuId") Integer productSkuId, @Param("shopId") Integer shopId);
|
||||||
|
|
||||||
|
|
||||||
@Query("SELECT new cn.ysk.cashier.vo.TbOrderSalesCountByDayVo(" +
|
@Query("SELECT new cn.ysk.cashier.vo.TbOrderSalesCountByDayVo(" +
|
||||||
|
|||||||
@@ -465,11 +465,14 @@ public class SummaryServiceImpl implements SummaryService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tbOrderSalesCountByDayVos.parallelStream().forEach(all -> {
|
tbOrderSalesCountByDayVos.forEach(all -> {
|
||||||
List<TbOrderSaleVO> tbOrderSaleVOS = saleOrderMap.get(all.getProductSkuId().toString());
|
List<TbOrderSaleVO> tbOrderSaleVOS = saleOrderMap.get(all.getProductSkuId().toString());
|
||||||
if (tbOrderSaleVOS == null) {
|
if (tbOrderSaleVOS == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// List<TbOrderSaleVO> tbOrderSaleVOS = detailRepository.querySaleOrderInfo(new Timestamp(summaryDto.getStartTime().getTime()),
|
||||||
|
// new Timestamp(summaryDto.getEndTime().getTime()), all.getProductId(), all.getProductSkuId(), Integer.valueOf(summaryDto.getShopId()));
|
||||||
|
|
||||||
for (TbOrderSaleVO tbOrderSaleVO : tbOrderSaleVOS) {
|
for (TbOrderSaleVO tbOrderSaleVO : tbOrderSaleVOS) {
|
||||||
Map<String, Object> map = new LinkedHashMap<>();
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
map.put("商品分类", all.getCateName());
|
map.put("商品分类", all.getCateName());
|
||||||
|
|||||||
@@ -17,10 +17,7 @@ package cn.ysk.cashier.service.impl.shopimpl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.ysk.cashier.dto.shoptable.AddCartDTO;
|
import cn.ysk.cashier.dto.shoptable.*;
|
||||||
import cn.ysk.cashier.dto.shoptable.ClearCartDTO;
|
|
||||||
import cn.ysk.cashier.dto.shoptable.RemoveCartDTO;
|
|
||||||
import cn.ysk.cashier.dto.shoptable.UpdateCartDTO;
|
|
||||||
import cn.ysk.cashier.exception.BadRequestException;
|
import cn.ysk.cashier.exception.BadRequestException;
|
||||||
import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper;
|
import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper;
|
||||||
import cn.ysk.cashier.mybatis.mapper.TbProductMapper;
|
import cn.ysk.cashier.mybatis.mapper.TbProductMapper;
|
||||||
@@ -31,8 +28,10 @@ import cn.ysk.cashier.pojo.shop.TbShopTable;
|
|||||||
import cn.ysk.cashier.repository.order.TbCashierCartRepository;
|
import cn.ysk.cashier.repository.order.TbCashierCartRepository;
|
||||||
import cn.ysk.cashier.repository.product.TbProductRepository;
|
import cn.ysk.cashier.repository.product.TbProductRepository;
|
||||||
import cn.ysk.cashier.repository.product.TbProductSkuRepository;
|
import cn.ysk.cashier.repository.product.TbProductSkuRepository;
|
||||||
|
import cn.ysk.cashier.utils.RedisUtils;
|
||||||
import cn.ysk.cashier.utils.ValidationUtil;
|
import cn.ysk.cashier.utils.ValidationUtil;
|
||||||
import cn.ysk.cashier.utils.FileUtil;
|
import cn.ysk.cashier.utils.FileUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.dianguang.cloud.ossservice.model.DateUtils;
|
import com.dianguang.cloud.ossservice.model.DateUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -42,6 +41,7 @@ import cn.ysk.cashier.dto.shop.TbShopTableDto;
|
|||||||
import cn.ysk.cashier.dto.shop.TbShopTableQueryCriteria;
|
import cn.ysk.cashier.dto.shop.TbShopTableQueryCriteria;
|
||||||
import cn.ysk.cashier.mapper.shop.TbShopTableMapper;
|
import cn.ysk.cashier.mapper.shop.TbShopTableMapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -73,6 +73,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||||||
private final TbCashierCartRepository cashierCartRepository;
|
private final TbCashierCartRepository cashierCartRepository;
|
||||||
private final TbProductMapper productMapper;
|
private final TbProductMapper productMapper;
|
||||||
private final TbCashierCartMapper cashierCartMapper;
|
private final TbCashierCartMapper cashierCartMapper;
|
||||||
|
private final RedisUtils redisUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*桌码前缀
|
*桌码前缀
|
||||||
@@ -302,6 +303,22 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||||||
tbCashierCart.setCategoryId(product.getCategoryId());
|
tbCashierCart.setCategoryId(product.getCategoryId());
|
||||||
cashierCartRepository.save(tbCashierCart);
|
cashierCartRepository.save(tbCashierCart);
|
||||||
}else {
|
}else {
|
||||||
|
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice()));
|
||||||
|
|
||||||
|
if (!addCartDTO.isPack()){
|
||||||
|
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||||
|
}else {
|
||||||
|
tbCashierCart.setPackFee(new BigDecimal(addCartDTO.getNum()).multiply(product.getPackFee()));
|
||||||
|
tbCashierCart.setTotalAmount(tbCashierCart.getTotalAmount().add(tbCashierCart.getPackFee()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (addCartDTO.isGift()) {
|
||||||
|
tbCashierCart.setTotalAmount(BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
|
tbCashierCart.setIsPack(String.valueOf(addCartDTO.isPack()));
|
||||||
|
tbCashierCart.setIsGift(String.valueOf(addCartDTO.isGift()));
|
||||||
tbCashierCart.setTotalNumber(addCartDTO.getNum());
|
tbCashierCart.setTotalNumber(addCartDTO.getNum());
|
||||||
tbCashierCart.setNumber(addCartDTO.getNum());
|
tbCashierCart.setNumber(addCartDTO.getNum());
|
||||||
// 数量0删除
|
// 数量0删除
|
||||||
@@ -310,7 +327,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
tbCashierCart.setUpdatedAt(DateUtil.current());
|
tbCashierCart.setUpdatedAt(DateUtil.current());
|
||||||
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice()));
|
|
||||||
cashierCartRepository.save(tbCashierCart);
|
cashierCartRepository.save(tbCashierCart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,4 +375,77 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||||||
}
|
}
|
||||||
return cartPage;
|
return cartPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pack(PackCartDTO packCartDTO) {
|
||||||
|
List<TbCashierCart> tbCashierCarts = cashierCartMapper.selectList(new LambdaQueryWrapper<TbCashierCart>().eq(TbCashierCart::getTableId, packCartDTO.getTableId())
|
||||||
|
.eq(TbCashierCart::getShopId, packCartDTO.getShopId())
|
||||||
|
.eq(TbCashierCart::getStatus, "create"));
|
||||||
|
tbCashierCarts.forEach(item -> {
|
||||||
|
if (packCartDTO.getState().equals(0) && item.getIsPack().equals("true")) {
|
||||||
|
item.setIsPack("false");
|
||||||
|
item.setTotalAmount(item.getTotalAmount().subtract(item.getPackFee()));
|
||||||
|
}else {
|
||||||
|
item.setIsPack("true");
|
||||||
|
item.setTotalAmount(item.getTotalAmount().add(item.getPackFee()));
|
||||||
|
}
|
||||||
|
cashierCartMapper.updateById(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object createOrder(CreateOrderDTO createOrderDTO) {
|
||||||
|
// 生成取餐码
|
||||||
|
String day = DateUtils.getDay();
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized String generateOrderCode(String day, String clientType, String shopId) {
|
||||||
|
String code = redisUtils.get("SHOP:CODE:" + clientType + ":" + shopId + ":" + day)+"";
|
||||||
|
// 使用顺序递增的计数器生成取餐码
|
||||||
|
String orderCode = "";
|
||||||
|
if (StringUtils.isEmpty(code) || "null".equals(code)) {
|
||||||
|
orderCode = "1";
|
||||||
|
redisUtils.set("SHOP:CODE:" + clientType + ":" + shopId + ":" + day,"1");
|
||||||
|
} else {
|
||||||
|
orderCode =String.valueOf(Integer.parseInt(code)+1);
|
||||||
|
}
|
||||||
|
redisUtils.set("SHOP:CODE:" + clientType + ":" + shopId + ":" + day, "#" + Integer.parseInt(code.replace("#", "")) + 2);
|
||||||
|
boolean flag = redisUtils.setNx("SHOP:CODE:SET" + clientType + ":" + shopId + ":" + day, orderCode);
|
||||||
|
if (flag){
|
||||||
|
return generateOrderCode(day,clientType,shopId);
|
||||||
|
}
|
||||||
|
// 增加计数器
|
||||||
|
|
||||||
|
return orderCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public Object getMasterId(Long tableId, Integer shopId) {
|
||||||
|
// String day = DateUtils.getDay();
|
||||||
|
// JSONObject jsonObject = new JSONObject();
|
||||||
|
// String key="SHOP:CODE:USER:pc" + ":" + shopId + ":" + day + userId;
|
||||||
|
// String userCode = redisUtils.get(key)+"";
|
||||||
|
// if ("1".equals(type)) {
|
||||||
|
// String code = "#" + generateOrderCode(day, clientType, shopId);
|
||||||
|
// redisUtil.saveMessage(key, code);
|
||||||
|
// jsonObject.put("code", code);
|
||||||
|
// } else {
|
||||||
|
// if (StringUtils.isEmpty(userCode)||"null".equals(userCode)||"#null".equals(userCode)) {
|
||||||
|
// String code = "#" + generateOrderCode(day, clientType, shopId);
|
||||||
|
// redisUtil.saveMessage(key, code);
|
||||||
|
// jsonObject.put("code", code);
|
||||||
|
// } else {
|
||||||
|
// jsonObject.put("code", userCode);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getMasterId(Long tableId, Integer shopId) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,10 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package cn.ysk.cashier.service.shop;
|
package cn.ysk.cashier.service.shop;
|
||||||
|
|
||||||
import cn.ysk.cashier.dto.shoptable.AddCartDTO;
|
import cn.ysk.cashier.dto.shoptable.*;
|
||||||
import cn.ysk.cashier.dto.shoptable.ClearCartDTO;
|
|
||||||
import cn.ysk.cashier.dto.shoptable.RemoveCartDTO;
|
|
||||||
import cn.ysk.cashier.dto.shoptable.UpdateCartDTO;
|
|
||||||
import cn.ysk.cashier.pojo.order.TbCashierCart;
|
import cn.ysk.cashier.pojo.order.TbCashierCart;
|
||||||
import cn.ysk.cashier.pojo.shop.TbShopTable;
|
import cn.ysk.cashier.pojo.shop.TbShopTable;
|
||||||
import cn.ysk.cashier.dto.shop.TbShopTableDto;
|
import cn.ysk.cashier.dto.shop.TbShopTableDto;
|
||||||
@@ -108,4 +105,10 @@ public interface TbShopTableService {
|
|||||||
Page<TbCashierCart> getCart(Long tableId, Integer page, Integer size, Integer shopId);
|
Page<TbCashierCart> getCart(Long tableId, Integer page, Integer size, Integer shopId);
|
||||||
|
|
||||||
TbCashierCart updateCart(UpdateCartDTO updateCartDTO);
|
TbCashierCart updateCart(UpdateCartDTO updateCartDTO);
|
||||||
|
|
||||||
|
void pack(PackCartDTO packCartDTO);
|
||||||
|
|
||||||
|
Object createOrder(CreateOrderDTO createOrderDTO);
|
||||||
|
|
||||||
|
Object getMasterId(Long tableId, Integer shopId);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user