Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
韩鹏辉
2024-07-10 17:26:06 +08:00
6 changed files with 57 additions and 46 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -56,6 +56,8 @@ public class TbProductSkuDto implements Serializable {
/** 进货参考价 */ /** 进货参考价 */
private BigDecimal guidePrice; private BigDecimal guidePrice;
private Integer suit;
private BigDecimal strategyPrice; private BigDecimal strategyPrice;
/** 库存数量 */ /** 库存数量 */

View File

@@ -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));
}
} }

View File

@@ -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) " +

View File

@@ -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())) {