Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
package cn.ysk.cashier.controller.product;
|
package cn.ysk.cashier.controller.product;
|
||||||
|
|
||||||
import cn.ysk.cashier.annotation.AnonymousAccess;
|
|
||||||
import cn.ysk.cashier.annotation.Log;
|
import cn.ysk.cashier.annotation.Log;
|
||||||
import cn.ysk.cashier.dto.product.TbProductSortCriteria;
|
import cn.ysk.cashier.dto.product.TbProductSortCriteria;
|
||||||
import cn.ysk.cashier.vo.TbProductVo;
|
import cn.ysk.cashier.vo.TbProductVo;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class TbShopSongController {
|
|||||||
if(redisUtils.hasKey(CacheKey.SONG_URL + criteria.getShopId())){
|
if(redisUtils.hasKey(CacheKey.SONG_URL + criteria.getShopId())){
|
||||||
code = (String) redisUtils.get(CacheKey.SONG_URL + criteria.getShopId());
|
code = (String) redisUtils.get(CacheKey.SONG_URL + criteria.getShopId());
|
||||||
}else {
|
}else {
|
||||||
code = RandomStringUtils.randomAlphanumeric(8);
|
code = RandomStringUtils.randomAlphanumeric(12);
|
||||||
redisUtils.set(CacheKey.SONG_URL + criteria.getShopId(), code);
|
redisUtils.set(CacheKey.SONG_URL + criteria.getShopId(), code);
|
||||||
redisUtils.set(CacheKey.SONG_URL + code, criteria.getShopId());
|
redisUtils.set(CacheKey.SONG_URL + code, criteria.getShopId());
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ public class TbShopSongController {
|
|||||||
@ApiOperation("更新歌手页地址")
|
@ApiOperation("更新歌手页地址")
|
||||||
@AnonymousPostMapping
|
@AnonymousPostMapping
|
||||||
public ResponseEntity<Object> createUrl(String shopId) {
|
public ResponseEntity<Object> createUrl(String shopId) {
|
||||||
String key = RandomStringUtils.randomAlphanumeric(8);
|
String key = RandomStringUtils.randomAlphanumeric(12);
|
||||||
redisUtils.set(CacheKey.SONG_URL + shopId, key);
|
redisUtils.set(CacheKey.SONG_URL + shopId, key);
|
||||||
redisUtils.set(CacheKey.SONG_URL + key, shopId);
|
redisUtils.set(CacheKey.SONG_URL + key, shopId);
|
||||||
return new ResponseEntity<>(key,HttpStatus.OK);
|
return new ResponseEntity<>(key,HttpStatus.OK);
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ public class TbProductSkuDto implements Serializable {
|
|||||||
/** 进货参考价 */
|
/** 进货参考价 */
|
||||||
private BigDecimal guidePrice;
|
private BigDecimal guidePrice;
|
||||||
|
|
||||||
|
private Integer suit;
|
||||||
|
|
||||||
private BigDecimal strategyPrice;
|
private BigDecimal strategyPrice;
|
||||||
|
|
||||||
/** 库存数量 */
|
/** 库存数量 */
|
||||||
|
|||||||
@@ -1,33 +1,17 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package cn.ysk.cashier.pojo.product;
|
package cn.ysk.cashier.pojo.product;
|
||||||
|
|
||||||
import cn.hutool.json.JSON;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.bean.copier.CopyOptions;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import cn.hutool.core.bean.copier.CopyOptions;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
@@ -85,6 +69,9 @@ public class TbProductSku implements Serializable {
|
|||||||
@ApiModelProperty(value = "进货参考价")
|
@ApiModelProperty(value = "进货参考价")
|
||||||
private BigDecimal guidePrice;
|
private BigDecimal guidePrice;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "起售数量 默认为1")
|
||||||
|
private Integer suit = 1;
|
||||||
|
|
||||||
@Column(name = "`strategy_price`")
|
@Column(name = "`strategy_price`")
|
||||||
@ApiModelProperty(value = "strategyPrice")
|
@ApiModelProperty(value = "strategyPrice")
|
||||||
private BigDecimal strategyPrice;
|
private BigDecimal strategyPrice;
|
||||||
@@ -132,13 +119,17 @@ public class TbProductSku implements Serializable {
|
|||||||
@Column(name = "`updated_at`")
|
@Column(name = "`updated_at`")
|
||||||
@ApiModelProperty(value = "updatedAt")
|
@ApiModelProperty(value = "updatedAt")
|
||||||
private Long updatedAt;
|
private Long updatedAt;
|
||||||
public void copy(TbProductSku source){
|
|
||||||
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
@Column(name = "`is_del`")
|
||||||
}
|
private Integer isDel;
|
||||||
|
|
||||||
@Column(name = "`is_pause_sale`")
|
@Column(name = "`is_pause_sale`")
|
||||||
@ApiModelProperty(value = "是否暂停销售")
|
@ApiModelProperty(value = "是否暂停销售")
|
||||||
private Integer isPauseSale = 0;
|
private Integer isPauseSale = 0;
|
||||||
|
|
||||||
|
public void copy(TbProductSku source){
|
||||||
|
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ import java.util.List;
|
|||||||
**/
|
**/
|
||||||
public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Integer>, JpaSpecificationExecutor<TbProductSku> {
|
public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Integer>, JpaSpecificationExecutor<TbProductSku> {
|
||||||
|
|
||||||
@Query("SELECT sku FROM TbProductSku sku WHERE sku.productId IN :productId")
|
@Query("SELECT sku FROM TbProductSku sku WHERE sku.productId IN :productId and sku.isDel=0")
|
||||||
List<TbProductSku> searchSku(@Param("productId")List<String> productId);
|
List<TbProductSku> searchSku(@Param("productId")List<String> productId);
|
||||||
|
|
||||||
@Query("SELECT sku FROM TbProductSku sku WHERE sku.productId = :productId")
|
@Query("SELECT sku FROM TbProductSku sku WHERE sku.productId = :productId and sku.isDel=0")
|
||||||
List<TbProductSku> searchSku(@Param("productId")String productId);
|
List<TbProductSku> searchSku(@Param("productId")String productId);
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -34,7 +34,12 @@ public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Inte
|
|||||||
@Query("DELETE FROM TbProductSku sku WHERE sku.productId = :productId")
|
@Query("DELETE FROM TbProductSku sku WHERE sku.productId = :productId")
|
||||||
Integer deleteByProductId(@Param("productId") String productId);
|
Integer deleteByProductId(@Param("productId") String productId);
|
||||||
|
|
||||||
@Query("SELECT sku FROM TbProductSku sku WHERE sku.barCode = :barCode")
|
@Transactional
|
||||||
|
@Modifying
|
||||||
|
@Query("update FROM TbProductSku sku set sku.isDel=1 WHERE sku.id = :skuId")
|
||||||
|
Integer deleteBySkuId(@Param("skuId") String skuId);
|
||||||
|
|
||||||
|
@Query("SELECT sku FROM TbProductSku sku WHERE sku.barCode = :barCode and sku.isDel=0")
|
||||||
TbProductSku searchBarCode(@Param("barCode")String barCode);
|
TbProductSku searchBarCode(@Param("barCode")String barCode);
|
||||||
|
|
||||||
@Query("SELECT new cn.ysk.cashier.vo.StockVo(" +
|
@Query("SELECT new cn.ysk.cashier.vo.StockVo(" +
|
||||||
@@ -47,6 +52,7 @@ public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Inte
|
|||||||
"WHERE " +
|
"WHERE " +
|
||||||
"pro.shopId = :shopId " +
|
"pro.shopId = :shopId " +
|
||||||
"AND pro.status = 1 " +
|
"AND pro.status = 1 " +
|
||||||
|
"AND sku.isDel=0 " +
|
||||||
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
||||||
"AND (:num IS NULL OR sku.stockNumber < :num) " +
|
"AND (:num IS NULL OR sku.stockNumber < :num) " +
|
||||||
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
||||||
@@ -65,6 +71,7 @@ public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Inte
|
|||||||
"WHERE " +
|
"WHERE " +
|
||||||
"pro.shopId = :shopId " +
|
"pro.shopId = :shopId " +
|
||||||
"AND pro.status = 1 " +
|
"AND pro.status = 1 " +
|
||||||
|
"AND sku.isDel = 0 " +
|
||||||
"AND (:categoryId IS NULL OR pro.categoryId = :categoryId) " +
|
"AND (:categoryId IS NULL OR pro.categoryId = :categoryId) " +
|
||||||
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
||||||
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
||||||
@@ -87,6 +94,7 @@ public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Inte
|
|||||||
"WHERE " +
|
"WHERE " +
|
||||||
"pro.shopId = :shopId " +
|
"pro.shopId = :shopId " +
|
||||||
"AND pro.status = 1 " +
|
"AND pro.status = 1 " +
|
||||||
|
"AND sku.isDel=0 " +
|
||||||
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
||||||
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
||||||
"group by pro.id " +
|
"group by pro.id " +
|
||||||
@@ -104,6 +112,7 @@ public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Inte
|
|||||||
"left join TbShopUnit unit on pro.unitId = unit.id " +
|
"left join TbShopUnit unit on pro.unitId = unit.id " +
|
||||||
"where " +
|
"where " +
|
||||||
"sku.productId = :productId " +
|
"sku.productId = :productId " +
|
||||||
|
"AND sku.isDel=0 " +
|
||||||
"order by " +
|
"order by " +
|
||||||
"sku.stockNumber desc "
|
"sku.stockNumber desc "
|
||||||
)
|
)
|
||||||
@@ -119,6 +128,7 @@ public interface TbProductSkuRepository extends JpaRepository<TbProductSku, Inte
|
|||||||
"WHERE " +
|
"WHERE " +
|
||||||
"pro.shopId = :shopId " +
|
"pro.shopId = :shopId " +
|
||||||
"AND pro.status = 1 " +
|
"AND pro.status = 1 " +
|
||||||
|
"AND sku.isDel=0 " +
|
||||||
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
"AND (:proName IS NULL OR pro.name LIKE %:proName%) " +
|
||||||
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
"AND (:isStock IS NULL OR pro.isStock = :isStock) " +
|
||||||
"AND (:num IS NULL OR sku.stockNumber < :num) " +
|
"AND (:num IS NULL OR sku.stockNumber < :num) " +
|
||||||
|
|||||||
@@ -458,24 +458,33 @@ public class TbProductServiceImpl implements TbProductService {
|
|||||||
|
|
||||||
//sku
|
//sku
|
||||||
if (resources.getSkuList() != null) {
|
if (resources.getSkuList() != null) {
|
||||||
List<TbProductSku> skuList = new ArrayList<>();
|
// List<TbProductSku> skuList = new ArrayList<>();
|
||||||
for (TbProductSku sku : resources.getSkuList()) {
|
// for (TbProductSku sku : resources.getSkuList()) {
|
||||||
TbProductSku tbProductSku = tbProductSkuRepository.searchBarCode(sku.getBarCode());
|
// TbProductSku tbProductSku = tbProductSkuRepository.searchBarCode(sku.getBarCode());
|
||||||
if (tbProductSku != null) {
|
// if (tbProductSku != null) {
|
||||||
tbProductSkuRepository.updateByBarCode(sku.getBarCode(), sku.getCostPrice(), sku.getCoverImg(), sku.getFirstShared(), sku.getMemberPrice(),
|
// tbProductSkuRepository.updateByBarCode(sku.getBarCode(), sku.getCostPrice(), sku.getCoverImg(), sku.getFirstShared(), sku.getMemberPrice(),
|
||||||
sku.getOriginPrice(), sku.getSalePrice(), sku.getSpecSnap(), tbProductSku.getId());
|
// sku.getOriginPrice(), sku.getSalePrice(), sku.getSpecSnap(), tbProductSku.getId());
|
||||||
} else {
|
// } else {
|
||||||
|
// if ("sku".equals(save.getTypeEnum())) {
|
||||||
|
// tbProductSkuRepository.deleteByProductId(String.valueOf(save.getId()));
|
||||||
|
// }
|
||||||
|
// sku.setProductId(String.valueOf(save.getId()));
|
||||||
|
// sku.setShopId(save.getShopId());
|
||||||
|
// sku.setCreatedAt(Instant.now().toEpochMilli());
|
||||||
|
// sku.setUpdatedAt(Instant.now().toEpochMilli());
|
||||||
|
// skuList.add(sku);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
if ("sku".equals(save.getTypeEnum())) {
|
if ("sku".equals(save.getTypeEnum())) {
|
||||||
tbProductSkuRepository.deleteByProductId(String.valueOf(save.getId()));
|
List<Integer> collect = resources.getSkuList().stream().map(TbProductSku::getId).collect(Collectors.toList());
|
||||||
}
|
List<TbProductSku> tbProductSkus = tbProductSkuRepository.searchSku(resources.getId().toString());
|
||||||
sku.setProductId(String.valueOf(save.getId()));
|
for (TbProductSku productSkus : tbProductSkus) {
|
||||||
sku.setShopId(save.getShopId());
|
if (!collect.contains(productSkus.getId())) {
|
||||||
sku.setCreatedAt(Instant.now().toEpochMilli());
|
tbProductSkuRepository.deleteBySkuId(productSkus.getId().toString());
|
||||||
sku.setUpdatedAt(Instant.now().toEpochMilli());
|
|
||||||
skuList.add(sku);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tbProductSkuRepository.saveAll(skuList);
|
}
|
||||||
|
tbProductSkuRepository.saveAll(resources.getSkuList());
|
||||||
}
|
}
|
||||||
//保存到sku_result
|
//保存到sku_result
|
||||||
if ("sku".equals(resources.getTypeEnum())) {
|
if ("sku".equals(resources.getTypeEnum())) {
|
||||||
|
|||||||
Reference in New Issue
Block a user