Merge remote-tracking branch 'origin/dev' into hph
This commit is contained in:
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1 +1,11 @@
|
|||||||
/target/
|
### IDEA ###
|
||||||
|
/target/**/*
|
||||||
|
/log/*
|
||||||
|
.idea/*
|
||||||
|
*.iml
|
||||||
|
*/target/*
|
||||||
|
*/*.iml
|
||||||
|
/.gradle/
|
||||||
|
/application.pid
|
||||||
|
/target/*
|
||||||
|
**.jar
|
||||||
@@ -46,6 +46,9 @@ public interface TbProductMapper {
|
|||||||
@Update("update tb_product set stock_number=stock_number+#{num} WHERE id=#{id}")
|
@Update("update tb_product set stock_number=stock_number+#{num} WHERE id=#{id}")
|
||||||
int incrStock(String id, int num);
|
int incrStock(String id, int num);
|
||||||
|
|
||||||
@Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id} and stock_number-#{num} > 0")
|
@Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id} and stock_number-#{num} >= 0")
|
||||||
int decrStock(String id, int num);
|
int decrStock(String id, int num);
|
||||||
|
|
||||||
|
@Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id}")
|
||||||
|
int decrStockUnCheck(String id, int num);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ public interface TbProductSkuMapper {
|
|||||||
@Update("update tb_product_sku set stock_number=stock_number+#{num} WHERE id=#{id}")
|
@Update("update tb_product_sku set stock_number=stock_number+#{num} WHERE id=#{id}")
|
||||||
int incrStock(String skuId, int addNum);
|
int incrStock(String skuId, int addNum);
|
||||||
|
|
||||||
@Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id} and stock_number-#{num} > 0")
|
@Update("update tb_product_sku set stock_number=stock_number-#{num} WHERE id=#{id} and stock_number-#{num} >= 0")
|
||||||
int decrStock(String id, int num);
|
int decrStock(String id, int num);
|
||||||
|
|
||||||
|
@Update("update tb_product_sku set stock_number=stock_number-#{num} WHERE id=#{id} ")
|
||||||
|
int decrStockUnCheck(String id, int num);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,14 +113,17 @@ public class OrderService {
|
|||||||
return Result.fail(CodeEnum.PRODUCTSKUERROR);
|
return Result.fail(CodeEnum.PRODUCTSKUERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cartId);
|
||||||
|
|
||||||
if("1".equals(product.getIsStock().toString())){
|
if("1".equals(product.getIsStock().toString())){
|
||||||
if ("1".equals(product.getIsDistribute().toString())) {
|
if ("1".equals(product.getIsDistribute().toString())) {
|
||||||
if(product.getStockNumber()-number<0){
|
if((message == null && product.getStockNumber()-number<0) ||
|
||||||
|
(product.getStockNumber()-number<0 && message != null && Integer.parseInt(message) < number)){
|
||||||
return Result.fail(CodeEnum.STOCKERROR);
|
return Result.fail(CodeEnum.STOCKERROR);
|
||||||
}
|
}
|
||||||
} else if (product.getId().intValue()==Integer.valueOf(skuWithBLOBs.getProductId()).intValue()){
|
} else if (product.getId().intValue()==Integer.valueOf(skuWithBLOBs.getProductId()).intValue()){
|
||||||
if(skuWithBLOBs.getStockNumber()-number<0){
|
if((message == null && skuWithBLOBs.getStockNumber()-number<0) ||
|
||||||
|
(skuWithBLOBs.getStockNumber()-number<0 && message != null && Integer.parseInt(message) < number)){
|
||||||
return Result.fail(CodeEnum.STOCKERROR);
|
return Result.fail(CodeEnum.STOCKERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -223,7 +226,8 @@ public class OrderService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
skuWithBLOBs.setStockNumber(skuWithBLOBs.getStockNumber()-number);
|
|
||||||
|
// skuWithBLOBs.setStockNumber(skuWithBLOBs.getStockNumber()-number);
|
||||||
skuWithBLOBs.setUpdatedAt(System.currentTimeMillis());
|
skuWithBLOBs.setUpdatedAt(System.currentTimeMillis());
|
||||||
tbProductSkuMapper.updateByPrimaryKey(skuWithBLOBs);
|
tbProductSkuMapper.updateByPrimaryKey(skuWithBLOBs);
|
||||||
|
|
||||||
@@ -338,15 +342,15 @@ public class OrderService {
|
|||||||
if(ObjectUtil.isEmpty(product)){
|
if(ObjectUtil.isEmpty(product)){
|
||||||
return Result.fail(CodeEnum.PRODUCTINFOERROR);
|
return Result.fail(CodeEnum.PRODUCTINFOERROR);
|
||||||
}
|
}
|
||||||
if("1".equals(product.getIsStock().toString())){
|
// if("1".equals(product.getIsStock().toString())){
|
||||||
TbProductSkuWithBLOBs skuWithBLOBs= tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId()));
|
// TbProductSkuWithBLOBs skuWithBLOBs= tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId()));
|
||||||
if(ObjectUtil.isEmpty(skuWithBLOBs)){
|
// if(ObjectUtil.isEmpty(skuWithBLOBs)){
|
||||||
return Result.fail(CodeEnum.PRODUCTSKUERROR);
|
// return Result.fail(CodeEnum.PRODUCTSKUERROR);
|
||||||
}
|
// }
|
||||||
skuWithBLOBs.setStockNumber(skuWithBLOBs.getStockNumber()+cashierCart.getTotalNumber());
|
// skuWithBLOBs.setStockNumber(skuWithBLOBs.getStockNumber()+cashierCart.getTotalNumber());
|
||||||
skuWithBLOBs.setUpdatedAt(System.currentTimeMillis());
|
// skuWithBLOBs.setUpdatedAt(System.currentTimeMillis());
|
||||||
tbProductSkuMapper.updateByPrimaryKey(skuWithBLOBs);
|
// tbProductSkuMapper.updateByPrimaryKey(skuWithBLOBs);
|
||||||
}
|
// }
|
||||||
|
|
||||||
List<String> skuIds=new ArrayList<>();
|
List<String> skuIds=new ArrayList<>();
|
||||||
skuIds.add(cashierCart.getSkuId());
|
skuIds.add(cashierCart.getSkuId());
|
||||||
@@ -789,6 +793,12 @@ public class OrderService {
|
|||||||
List<ProductSkuPo> productSkuPos=new ArrayList<>();
|
List<ProductSkuPo> productSkuPos=new ArrayList<>();
|
||||||
List<String> skuIds=new ArrayList<>();
|
List<String> skuIds=new ArrayList<>();
|
||||||
for (TbCashierCart cashierCart : list) {
|
for (TbCashierCart cashierCart : list) {
|
||||||
|
// 数量减少, 返还库存
|
||||||
|
String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId());
|
||||||
|
|
||||||
|
if (message != null) {
|
||||||
|
productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), Integer.parseInt(message));
|
||||||
|
}
|
||||||
if (StringUtils.isNotEmpty(cashierCart.getOrderId())) {
|
if (StringUtils.isNotEmpty(cashierCart.getOrderId())) {
|
||||||
orderId = Integer.valueOf(cashierCart.getOrderId());
|
orderId = Integer.valueOf(cashierCart.getOrderId());
|
||||||
|
|
||||||
@@ -817,6 +827,8 @@ public class OrderService {
|
|||||||
tbProductSkuMapper.batchStockNum(productSkuPos);
|
tbProductSkuMapper.batchStockNum(productSkuPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return Result.success(CodeEnum.SUCCESS);
|
return Result.success(CodeEnum.SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -956,13 +956,12 @@ public class PayService {
|
|||||||
tbProductStockDetail.setIsStock(product.getIsStock());
|
tbProductStockDetail.setIsStock(product.getIsStock());
|
||||||
tbProductStockDetail.setStockSnap(product.getSelectSpec());
|
tbProductStockDetail.setStockSnap(product.getSelectSpec());
|
||||||
tbProductStockDetail.setUnitName(shopUnit.getName());
|
tbProductStockDetail.setUnitName(shopUnit.getName());
|
||||||
|
tbProductStockDetail.setProductId(product.getId().toString());
|
||||||
|
|
||||||
if (product.getIsDistribute() == 1) {
|
if (product.getIsDistribute() == 1) {
|
||||||
// redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":product" + product.getId().toString(), String.valueOf(detail.getReturnNum() + product.getStockNumber().intValue()));
|
// redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":product" + product.getId().toString(), String.valueOf(detail.getReturnNum() + product.getStockNumber().intValue()));
|
||||||
productMapper.updateStockById(product.getId(), detail.getReturnNum() * -1);
|
productMapper.updateStockById(product.getId(), detail.getReturnNum() * -1);
|
||||||
|
|
||||||
tbProductStockDetail.setProductId(product.getId().toString());
|
|
||||||
tbProductStockDetail.setUnitName(product.getUnitId());
|
|
||||||
tbProductStockDetail.setLeftNumber(product.getStockNumber());
|
tbProductStockDetail.setLeftNumber(product.getStockNumber());
|
||||||
tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum()));
|
tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum()));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -136,12 +136,20 @@ public class ProductService {
|
|||||||
public void decrStock(String productId, String skuId, int decrNum) {
|
public void decrStock(String productId, String skuId, int decrNum) {
|
||||||
TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId));
|
TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId));
|
||||||
if (product.getIsDistribute() == 1) {
|
if (product.getIsDistribute() == 1) {
|
||||||
if (tbProductMapper.decrStock(productId, decrNum) < 1) {
|
if (product.getIsStock() == 1) {
|
||||||
throw new MsgException("库存不足,下单失败");
|
if (tbProductMapper.decrStock(productId, decrNum) < 1) {
|
||||||
|
throw new MsgException("库存不足,下单失败");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
tbProductMapper.decrStockUnCheck(productId, decrNum);
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
if (tbProductSkuMapper.decrStock(String.valueOf(skuId), decrNum) < 1) {
|
if (product.getIsStock() == 1) {
|
||||||
throw new MsgException("库存不足,下单失败");
|
if (tbProductSkuMapper.decrStock(String.valueOf(skuId), decrNum) < 1) {
|
||||||
|
throw new MsgException("库存不足,下单失败");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
tbProductSkuMapper.decrStockUnCheck(String.valueOf(skuId), decrNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,11 +20,11 @@ logging:
|
|||||||
file:
|
file:
|
||||||
# 切记,该文件表示正在产出日志的日志文件。并不会打包,当文件大于max-file-size,会根据file-name-pattern格式打包
|
# 切记,该文件表示正在产出日志的日志文件。并不会打包,当文件大于max-file-size,会根据file-name-pattern格式打包
|
||||||
# 名称为log/cashier-client.log文件夹会在项目根目录下,打包后会在启动包同目录下;名称为/log/cashier-client.log的文件夹会在项目所在磁盘的跟目录下
|
# 名称为log/cashier-client.log文件夹会在项目根目录下,打包后会在启动包同目录下;名称为/log/cashier-client.log的文件夹会在项目所在磁盘的跟目录下
|
||||||
name: log/cashier-client.log
|
name: cashier-client.log
|
||||||
logback:
|
logback:
|
||||||
rollingpolicy:
|
rollingpolicy:
|
||||||
# 单文件的大小,默认10M, 超过之后打包成一个日志文件
|
# 单文件的大小,默认10M, 超过之后打包成一个日志文件
|
||||||
max-file-size: 1MB
|
max-file-size: 10MB
|
||||||
# 日志保存的天数
|
# 日志保存的天数
|
||||||
max-history: 30
|
max-history: 30
|
||||||
# 打包文件格式,默认: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz,书写格式为:文件路径/文件名.%i.文件后缀,其中%i不可省去,否则无日志显示
|
# 打包文件格式,默认: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz,书写格式为:文件路径/文件名.%i.文件后缀,其中%i不可省去,否则无日志显示
|
||||||
@@ -32,6 +32,7 @@ logging:
|
|||||||
# 如果是压缩包,里面会多一个名log/ota.2021-11-05.0的日志文件
|
# 如果是压缩包,里面会多一个名log/ota.2021-11-05.0的日志文件
|
||||||
# 如下面的例子,打包之后为: log/2021-11/cashier-client.2020-11-5.0.log,这是一个日志文件
|
# 如下面的例子,打包之后为: log/2021-11/cashier-client.2020-11-5.0.log,这是一个日志文件
|
||||||
file-name-pattern: log/%d{yyyy-MM}/cashier-client.%d{yyyy-MM-dd}.%i.log
|
file-name-pattern: log/%d{yyyy-MM}/cashier-client.%d{yyyy-MM-dd}.%i.log
|
||||||
|
# file-name-pattern: log/%d{yyyy-MM}/cashier-client.%d{yyyy-MM-dd}.%i.log.gz
|
||||||
|
|
||||||
|
|
||||||
gateway:
|
gateway:
|
||||||
|
|||||||
Reference in New Issue
Block a user