From 905a759e99de944e4a13c2b1dbb23ef0c4506533 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Thu, 30 Oct 2025 23:21:22 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E7=B3=BB=E7=BB=9F=E8=B0=83?= =?UTF-8?q?=E4=BC=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xkt/migartion/GtAndFhbBizController.java | 5 +- .../xkt/migartion/GtAndTyBiz2Controller.java | 4 +- .../xkt/migartion/GtAndTyBizController.java | 4 +- .../migartion/GtOtherBizAfterController.java | 69 ++- .../migartion/TYOtherBizAfterController.java | 413 +++++++++++++++++- .../vo/tyBizAfter/TyBizAfterImportVO.java | 21 + .../com/ruoyi/common/constant/Constants.java | 4 +- .../core/domain/entity/SysDictData.java | 2 + sql/ry_20240629.sql | 212 ++++++--- 9 files changed, 611 insertions(+), 123 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/tyBizAfter/TyBizAfterImportVO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java index c35472693..93048941b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java @@ -412,8 +412,9 @@ public class GtAndFhbBizController extends BaseController { + String.format("%05d", smivo.getSupplierSkuId()) + Constants.SIZE_LIST.get(j); prodColorSizeList.add(new StoreProductColorSize().setSize(Constants.SIZE_LIST.get(j)).setStoreColorId(storeColor.getId()) .setStoreProdId(storeProd.getId()).setStandard(gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)) ? 1 : 0) - // 销售价格以FHB价格为准 - .setPrice(smivo.getSalePrice()) + // 销售价格以FHB价格为准 非标尺码价格需要加价 + .setPrice(gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)) ? smivo.getSalePrice() + : smivo.getSalePrice().add(ObjectUtils.defaultIfNull(initVO.getAddOverPrice(), BigDecimal.ZERO))) .setOtherSnPrefix(otherSnPrefix).setNextSn(0)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java index 5516b64bf..12b61395f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java @@ -326,7 +326,9 @@ public class GtAndTyBiz2Controller extends BaseController { // TY系统条码前缀 final String otherSnPrefix = tyProdImportVO.getSn() + Constants.SIZE_LIST.get(j); prodColorSizeList.add(new StoreProductColorSize().setSize(Constants.SIZE_LIST.get(j)).setStoreColorId(storeColor.getId()) - .setStoreProdId(storeProd.getId()).setPrice(tyProdImportVO.getPrice()).setOtherSnPrefix(otherSnPrefix).setNextSn(0) + .setStoreProdId(storeProd.getId()).setOtherSnPrefix(otherSnPrefix).setNextSn(0) + .setPrice(gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)) ? tyProdImportVO.getPrice() + : tyProdImportVO.getPrice().add(ObjectUtils.defaultIfNull(initVO.getAddOverPrice(), BigDecimal.ZERO))) .setStandard(gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)) ? 1 : 0)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java index e3e9deacc..2726a6e50 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java @@ -374,7 +374,9 @@ public class GtAndTyBizController extends BaseController { // TY系统条码前缀 final String otherSnPrefix = tyProdImportVO.getSn() + Constants.SIZE_LIST.get(j); prodColorSizeList.add(new StoreProductColorSize().setSize(Constants.SIZE_LIST.get(j)).setStoreColorId(storeColor.getId()) - .setStoreProdId(storeProd.getId()).setPrice(tyProdImportVO.getPrice()).setOtherSnPrefix(otherSnPrefix).setNextSn(0) + .setStoreProdId(storeProd.getId()).setOtherSnPrefix(otherSnPrefix).setNextSn(0) + .setPrice(gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)) ? tyProdImportVO.getPrice() + : tyProdImportVO.getPrice().add(ObjectUtils.defaultIfNull(initVO.getAddOverPrice(), BigDecimal.ZERO))) .setStandard(gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)) ? 1 : 0)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java index 7bc61a31a..5a9e1bf0f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java @@ -171,7 +171,9 @@ public class GtOtherBizAfterController extends BaseController { .collect(Collectors.toList()); // 从数据库查询最新数据 List storeProdList = this.storeProdMapper.selectList(new LambdaQueryWrapper() - .eq(StoreProduct::getStoreId, storeId).eq(StoreProduct::getDelFlag, Constants.UNDELETED)); + .eq(StoreProduct::getStoreId, storeId).eq(StoreProduct::getDelFlag, Constants.UNDELETED) + // TODO 特殊处理,只保留GT单独处理的部分 important important important + .in(StoreProduct::getProdArtNum, gtAfterArtNumList)); List storeColorList = this.storeColorMapper.selectList(new LambdaQueryWrapper() .eq(StoreColor::getStoreId, storeId).eq(StoreColor::getDelFlag, Constants.UNDELETED)); Map storeColorMap = storeColorList.stream().collect(Collectors.toMap(StoreColor::getColorName, x -> x, (v1, v2) -> v2)); @@ -183,40 +185,37 @@ public class GtOtherBizAfterController extends BaseController { // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); List prodColorSizeList = new ArrayList<>(); - storeProdList.stream() - // TODO 特殊处理,只保留GT单独处理的部分 important important important - .filter(storeProd -> gtAfterArtNumList.contains(storeProd.getProdArtNum())) - .forEach(storeProd -> { - // 获取GT匹配的商品sku列表 - List gtMatchSkuList = gtProdSkuMap.get(storeProd.getProdArtNum()); - // 当前货号在GT的所有尺码,作为标准尺码 - List gtStandardSizeList = gtMatchSkuList.stream().map(sku -> (int) Math.floor(Double.parseDouble(sku.getSize()))).collect(Collectors.toList()); - Map prodColorMap = gtMatchSkuList.stream().collect(Collectors.toMap(GtProdSkuVO::getColor, GtProdSkuVO::getColor, (s1, s2) -> s2)); - // GT颜色下尺码价格map - Map> colorSizePriceMap = gtMatchSkuList.stream().collect(Collectors - .groupingBy(GtProdSkuVO::getColor, Collectors.toMap(x -> (int) Math.floor(Double.parseDouble(x.getSize())), GtProdSkuVO::getPrice, (v1, v2) -> v2))); - AtomicInteger orderNum = new AtomicInteger(); - prodColorMap.forEach((color, gtColor) -> { - StoreColor storeColor = Optional.ofNullable(storeColorMap.get(gtColor)) - .orElseThrow(() -> new ServiceException("没有GT商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); - // 该商品的颜色 - prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) - .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); - Map sizePriceMap = Optional.ofNullable(colorSizePriceMap.get(gtColor)) - .orElseThrow(() -> new ServiceException("没有GT商品颜色尺码价格!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); - // 该颜色最低价格 - BigDecimal minPrice = sizePriceMap.values().stream().min(BigDecimal::compareTo).orElse(BigDecimal.ZERO); - // 该颜色所有的尺码 - for (int j = 0; j < Constants.SIZE_LIST.size(); j++) { - final boolean isStandard = gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)); - prodColorSizeList.add(new StoreProductColorSize().setSize(Constants.SIZE_LIST.get(j)).setStoreColorId(storeColor.getId()) - .setStoreProdId(storeProd.getId()).setStandard(isStandard ? 1 : 0).setNextSn(0) - // 销售价格以FHB价格为准 - .setPrice(sizePriceMap.getOrDefault(Constants.SIZE_LIST.get(j), minPrice) - .add(ObjectUtils.defaultIfNull(addOverPrice, BigDecimal.ZERO)))); - } - }); - }); + storeProdList.forEach(storeProd -> { + // 获取GT匹配的商品sku列表 + List gtMatchSkuList = gtProdSkuMap.get(storeProd.getProdArtNum()); + // 当前货号在GT的所有尺码,作为标准尺码 + List gtStandardSizeList = gtMatchSkuList.stream().map(sku -> (int) Math.floor(Double.parseDouble(sku.getSize()))).collect(Collectors.toList()); + Map prodColorMap = gtMatchSkuList.stream().collect(Collectors.toMap(GtProdSkuVO::getColor, GtProdSkuVO::getColor, (s1, s2) -> s2)); + // GT颜色下尺码价格map + Map> colorSizePriceMap = gtMatchSkuList.stream().collect(Collectors + .groupingBy(GtProdSkuVO::getColor, Collectors.toMap(x -> (int) Math.floor(Double.parseDouble(x.getSize())), GtProdSkuVO::getPrice, (v1, v2) -> v2))); + AtomicInteger orderNum = new AtomicInteger(); + prodColorMap.forEach((color, gtColor) -> { + StoreColor storeColor = Optional.ofNullable(storeColorMap.get(gtColor)) + .orElseThrow(() -> new ServiceException("没有GT商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 该商品的颜色 + prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) + .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + Map sizePriceMap = Optional.ofNullable(colorSizePriceMap.get(gtColor)) + .orElseThrow(() -> new ServiceException("没有GT商品颜色尺码价格!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 该颜色最低价格 + BigDecimal minPrice = sizePriceMap.values().stream().min(BigDecimal::compareTo).orElse(BigDecimal.ZERO); + // 该颜色所有的尺码 + for (int j = 0; j < Constants.SIZE_LIST.size(); j++) { + final boolean isStandard = gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)); + prodColorSizeList.add(new StoreProductColorSize().setSize(Constants.SIZE_LIST.get(j)).setStoreColorId(storeColor.getId()) + .setStoreProdId(storeProd.getId()).setStandard(isStandard ? 1 : 0).setNextSn(0) + // 销售价格以GT价格为准 能取到的价格,则取,否则视为非标尺码 需要加价 + .setPrice(sizePriceMap.containsKey(Constants.SIZE_LIST.get(j)) ? sizePriceMap.get(Constants.SIZE_LIST.get(j)) + : minPrice.add(ObjectUtils.defaultIfNull(addOverPrice, BigDecimal.ZERO)))); + } + }); + }); // 插入商品颜色及颜色对应的尺码,档口服务承诺 this.prodColorMapper.insert(prodColorList); prodColorSizeList.sort(Comparator.comparing(StoreProductColorSize::getStoreProdId).thenComparing(StoreProductColorSize::getSize)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java index 148bf34ff..fa0957ca4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java @@ -1,26 +1,21 @@ package com.ruoyi.web.controller.xkt.migartion; -import co.elastic.clients.elasticsearch.core.BulkResponse; -import co.elastic.clients.elasticsearch.core.bulk.BulkOperation; -import co.elastic.clients.elasticsearch.core.bulk.BulkResponseItem; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.es.EsClientWrapper; import com.ruoyi.framework.notice.fs.FsNotice; -import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtCateVO; -import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtProdSkuVO; -import com.ruoyi.web.controller.xkt.migartion.vo.gtOnly.GtOnlyInitVO; +import com.ruoyi.system.mapper.SysDictDataMapper; +import com.ruoyi.web.controller.xkt.migartion.vo.ty.TyProdImportVO; +import com.ruoyi.web.controller.xkt.migartion.vo.tyBizAfter.TyBizAfterImportVO; import com.ruoyi.xkt.domain.*; -import com.ruoyi.xkt.dto.es.ESProductDTO; -import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdMinPriceDTO; import com.ruoyi.xkt.enums.EProductStatus; import com.ruoyi.xkt.enums.ListingType; import com.ruoyi.xkt.mapper.*; @@ -30,21 +25,24 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; -import static com.ruoyi.common.constant.Constants.WEIGHT_DEFAULT_ZERO; - /** - * 只有GT处理 相关 + * 只有TY处理 相关 * * @author ruoyi */ @@ -67,8 +65,393 @@ public class TYOtherBizAfterController extends BaseController { final EsClientWrapper esClientWrapper; final IPictureService pictureService; final FsNotice fsNotice; + final StoreCustomerMapper storeCusMapper; + final SysDictDataMapper dictDataMapper; + + // 系统枚举 鞋面材质 + private static final String DICT_TYPE_SHAFT_MATERIAL = "shaft_material"; + // 系统枚举 鞋面内里材质 + private static final String DICT_TYPE_SHOE_UPPER_LINING_MATERIAL = "shoe_upper_lining_material"; + + /** + * step1 + * 颜色、客户、商品初始化(包含类目属性及服务等) + */ + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PostMapping("/init-prod") + @Transactional + public R initProd(@RequestParam(value = "storeId") Long storeId, @RequestParam(value = "userId") Integer userId, MultipartFile file) throws IOException { + Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper().eq(Store::getId, storeId).eq(Store::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); + ExcelUtil util = new ExcelUtil<>(TyBizAfterImportVO.class); + List tyAfterImportVOList = util.importExcel(file.getInputStream()); + // 待处理的TY独有的货号 + List tyAfterArtNumList = tyAfterImportVOList.stream().map(TyBizAfterImportVO::getTyAfterArtNum).map(String::trim) + .filter(StringUtils::isNotBlank).map(item -> item.contains("(") ? item.substring(0, item.indexOf("(")) : item) + .collect(Collectors.toList()); + // 绒里货号map + Map waitMatchMap = tyAfterArtNumList.stream().filter(x -> x.contains("R")).collect(Collectors.toMap(x -> x, x -> x)); + // 按照货号 和 单里绒里匹配关系进行分组 + Map> tyAfterArtNumGroupMap = new HashMap<>(); + tyAfterArtNumList.stream().filter(x -> !x.contains("R")).distinct().forEach(x -> { + List matchList = new ArrayList<>(Collections.singletonList(x)); + if (waitMatchMap.containsKey(x + "R")) { + matchList.add(waitMatchMap.get(x + "R")); + } else if (waitMatchMap.containsKey(x + "-R")) { + matchList.add(waitMatchMap.get(x + "-R")); + } + tyAfterArtNumGroupMap.put(x, matchList); + }); + // 找到TY对应的商品 + List tyProdList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.MIGRATION_TY_PROD_KEY + userId), new ArrayList<>()); + + // 步骤1: 颜色初始化 + this.initStoreColorList(storeId, tyProdList, tyAfterArtNumList); + + // 步骤2: 新增商品 + List storeProdList = new ArrayList<>(); + // 当天 + final Date voucherDate = java.sql.Date.valueOf(LocalDate.now()); + // 默认为 单鞋下 弹力靴/袜靴 分类 + final Long prodCateId = 13L; + Map tyProdMap = tyProdList.stream().collect(Collectors.toMap(TyProdImportVO::getProdArtNum, x -> x, (v1, v2) -> v2)); + tyAfterArtNumGroupMap.forEach((tyArtNum, matchList) -> { + // 初始化档口商品 默认为私款,只能打印条码出库等,不可在平台展示 + StoreProduct storeProd = new StoreProduct().setStoreId(storeId).setProdCateId(prodCateId).setPrivateItem(1) + .setProdArtNum(tyArtNum).setProdTitle("上架大卖").setListingWay(ListingType.RIGHT_NOW.getValue()) + .setVoucherDate(voucherDate).setProdStatus(EProductStatus.ON_SALE.getValue()).setRecommendWeight(0L).setSaleWeight(0L).setPopularityWeight(0L); + storeProdList.add(storeProd); + }); + this.storeProdMapper.insert(storeProdList); + + // 找到枚举的 鞋面材质 和 鞋面内里材质 + List attrList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .in(SysDictData::getDictType, Arrays.asList(DICT_TYPE_SHAFT_MATERIAL, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL)) + .eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("系统枚举 鞋面材质及鞋面内里材质 不存在!", HttpStatus.ERROR)); + Map shaftMaterialMap = attrList.stream().filter(x -> Objects.equals(x.getDictType(), DICT_TYPE_SHAFT_MATERIAL)) + .collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + Map shoeUpperLiningMaterialMap = attrList.stream().filter(x -> Objects.equals(x.getDictType(), DICT_TYPE_SHOE_UPPER_LINING_MATERIAL)) + .collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + List prodCateAttrList = new ArrayList<>(); + List prodSvcList = new ArrayList<>(); + Map newShaftMaterialMap = new HashMap<>(); + Map newShoeUpperLiningMaterialMap = new HashMap<>(); + storeProdList.forEach(storeProd -> { + TyProdImportVO tyProdVO = Optional.ofNullable(tyProdMap.get(storeProd.getProdArtNum())) + .orElseThrow(() -> new ServiceException("TY独有商品,未找到TY对应的商品!", HttpStatus.ERROR)); + // 鞋面材质 为数据库不存在的属性,则新增 + if (StringUtils.isNotBlank(tyProdVO.getShaftMaterial()) && !shaftMaterialMap.containsKey(tyProdVO.getShaftMaterial())) { + newShaftMaterialMap.put(tyProdVO.getShaftMaterial(), tyProdVO.getShaftMaterial()); + + } + if (StringUtils.isNotBlank(tyProdVO.getShoeUpperLiningMaterial()) && !shoeUpperLiningMaterialMap.containsKey(tyProdVO.getShoeUpperLiningMaterial())) { + newShoeUpperLiningMaterialMap.put(tyProdVO.getShoeUpperLiningMaterial(), tyProdVO.getShoeUpperLiningMaterial()); + + } + // 只设置鞋面材质 和 鞋面内里材质 + prodCateAttrList.add(new StoreProductCategoryAttribute().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()) + .setShaftMaterial(tyProdVO.getShaftMaterial()).setShoeUpperLiningMaterial(tyProdVO.getShoeUpperLiningMaterial())); + // 初始化商品服务承诺 + prodSvcList.add(new StoreProductService().setStoreProdId(storeProd.getId()).setCustomRefund("0") + .setThirtyDayRefund("0").setOneBatchSale("1").setRefundWithinThreeDay("0")); + }); + + List newDictDataList = new ArrayList<>(); + if (MapUtils.isNotEmpty(newShaftMaterialMap)) { + newShaftMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k).setDictType(DICT_TYPE_SHAFT_MATERIAL).setStatus("0").setDictSort(100L))); + } + if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { + newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) + .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); + } + if (CollectionUtils.isNotEmpty(newDictDataList)) { + this.dictDataMapper.insert(newDictDataList); + } + this.prodCateAttrMapper.insert(prodCateAttrList); + this.prodSvcMapper.insert(prodSvcList); + return R.ok(); + } + + /** + * step2 + * 商品颜色及商品颜色尺码 + */ + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PostMapping("/init-color") + @Transactional + public R initColor(@RequestParam(value = "storeId") Long storeId, @RequestParam(value = "userId") Integer userId, + @RequestParam(value = "addOverPrice") BigDecimal addOverPrice, MultipartFile file) throws IOException { + ExcelUtil util = new ExcelUtil<>(TyBizAfterImportVO.class); + List tyAfterImportVOList = util.importExcel(file.getInputStream()); + // 待处理的TY独有的货号 + List tyAfterArtNumList = tyAfterImportVOList.stream().map(TyBizAfterImportVO::getTyAfterArtNum).map(String::trim) + .filter(StringUtils::isNotBlank).map(item -> item.contains("(") ? item.substring(0, item.indexOf("(")) : item) + .collect(Collectors.toList()); + // 绒里货号map + Map waitMatchMap = tyAfterArtNumList.stream().filter(x -> x.contains("R")).collect(Collectors.toMap(x -> x, x -> x)); + // 按照货号 和 单里绒里匹配关系进行分组 + Map> tyAfterArtNumGroupMap = new HashMap<>(); + tyAfterArtNumList.stream().filter(x -> !x.contains("R")).distinct().forEach(x -> { + List matchList = new ArrayList<>(Collections.singletonList(x)); + if (waitMatchMap.containsKey(x + "R")) { + matchList.add(waitMatchMap.get(x + "R")); + } else if (waitMatchMap.containsKey(x + "-R")) { + matchList.add(waitMatchMap.get(x + "-R")); + } + tyAfterArtNumGroupMap.put(x, matchList); + }); + + // 从数据库查询最新数据 + List storeProdList = this.storeProdMapper.selectList(new LambdaQueryWrapper() + .eq(StoreProduct::getStoreId, storeId).eq(StoreProduct::getDelFlag, Constants.UNDELETED) + // TODO 特殊处理,只保留GT单独处理的部分 important important important + .in(StoreProduct::getProdArtNum, tyAfterArtNumGroupMap.keySet())); + List storeColorList = this.storeColorMapper.selectList(new LambdaQueryWrapper() + .eq(StoreColor::getStoreId, storeId).eq(StoreColor::getDelFlag, Constants.UNDELETED)); + Map storeColorMap = storeColorList.stream().collect(Collectors.toMap(StoreColor::getColorName, x -> x, (v1, v2) -> v2)); + + // 找到TY对应的商品 + List tyProdList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.MIGRATION_TY_PROD_KEY + userId), new ArrayList<>()); + Map> tyProdSkuMap = tyProdList.stream().collect(Collectors.groupingBy(TyProdImportVO::getProdArtNum)); + // 商品所有颜色 尺码 颜色库存初始化 + List prodColorList = new ArrayList<>(); + List prodColorSizeList = new ArrayList<>(); + storeProdList.forEach(storeProd -> { + Optional.ofNullable(tyAfterArtNumGroupMap.get(storeProd.getProdArtNum())) + .orElseThrow(() -> new ServiceException("没有TY[独有]商品货号!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 单里绒里匹配到的所有颜色 + List tyMatchColorList = tyAfterArtNumGroupMap.get(storeProd.getProdArtNum()).stream() + .map(tyProdSkuMap::get).filter(Objects::nonNull).flatMap(List::stream).collect(Collectors.toList()); + AtomicInteger orderNum = new AtomicInteger(); + tyMatchColorList.forEach(tyProdColor -> { + StoreColor storeColor = Optional.ofNullable(storeColorMap.get(tyProdColor.getColorName())) + .orElseThrow(() -> new ServiceException("没有TY[独有]商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 该商品的颜色 + prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) + .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + // 该颜色最低价格 + BigDecimal minPrice = ObjectUtils.defaultIfNull(tyProdColor.getPrice(), BigDecimal.ZERO); + // 该颜色所有的尺码 默认34-40为标准尺码 + for (int j = 0; j < Constants.SIZE_LIST.size(); j++) { + // TY系统条码前缀 + final String otherSnPrefix = tyProdColor.getSn() + Constants.SIZE_LIST.get(j); + prodColorSizeList.add(new StoreProductColorSize().setSize(Constants.SIZE_LIST.get(j)).setStoreColorId(storeColor.getId()) + .setStoreProdId(storeProd.getId()).setOtherSnPrefix(otherSnPrefix).setNextSn(0) + .setStandard(Constants.STANDARD_SIZE_LIST.contains(Constants.SIZE_LIST.get(j)) ? 1 : 0) + // 销售价格以TY价格为准 + .setPrice(Constants.STANDARD_SIZE_LIST.contains(Constants.SIZE_LIST.get(j)) ? minPrice + : minPrice.add(ObjectUtils.defaultIfNull(addOverPrice, BigDecimal.ZERO)))); + } + }); + }); + // 插入商品颜色及颜色对应的尺码,档口服务承诺 + this.prodColorMapper.insert(prodColorList); + // 按照货号颜色尺码升序排列 + prodColorSizeList.sort(Comparator.comparing(StoreProductColorSize::getStoreProdId) + .thenComparing(StoreProductColorSize::getStoreColorId).thenComparing(StoreProductColorSize::getSize)); + this.prodColorSizeMapper.insert(prodColorSizeList); + // 还要更新步橘系统的条码前缀 + prodColorSizeList.forEach(x -> x.setSnPrefix(storeId + String.format("%08d", x.getId()))); + this.prodColorSizeMapper.updateById(prodColorSizeList); + return R.ok(); + } + + /** + * step4 + */ + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PostMapping("/init-cus-disc") + @Transactional + public R initCusDisc(@RequestParam(value = "storeId") Long storeId, @RequestParam(value = "userId") Integer userId, MultipartFile file) throws IOException { + /* ExcelUtil util = new ExcelUtil<>(TyBizAfterImportVO.class); + List tyAfterImportVOList = util.importExcel(file.getInputStream()); + // 待处理的TY独有的货号 + List tyAfterArtNumList = tyAfterImportVOList.stream().map(TyBizAfterImportVO::getTyAfterArtNum).map(String::trim) + .filter(StringUtils::isNotBlank).map(item -> item.contains("(") ? item.substring(0, item.indexOf("(")) : item) + .collect(Collectors.toList()); + + List storeProdList = this.storeProdMapper.selectList(new LambdaQueryWrapper() + .eq(StoreProduct::getStoreId, storeId).eq(StoreProduct::getDelFlag, Constants.UNDELETED) + // TODO 特殊处理,只保留GT单独处理的部分 important important important + .in(StoreProduct::getProdArtNum, tyAfterArtNumList)); + List prodColorList = this.prodColorMapper.selectList(new LambdaQueryWrapper() + .eq(StoreProductColor::getStoreId, storeId).eq(StoreProductColor::getDelFlag, Constants.UNDELETED)); + List storeCusList = this.storeCusMapper.selectList(new LambdaQueryWrapper() + .eq(StoreCustomer::getStoreId, storeId).eq(StoreCustomer::getDelFlag, Constants.UNDELETED)); + + // 找到TY对应的商品 + List tyProdList = redisCache.getCacheObject(CacheConstants.MIGRATION_TY_PROD_KEY + userId); + if (CollectionUtils.isEmpty(tyProdList)) { + throw new ServiceException("TY商品列表为空", HttpStatus.ERROR); + } + + // 从redis中获取已存在的客户优惠数据 + List tyCusDiscCacheList = redisCache.getCacheObject(CacheConstants.MIGRATION_TY_CUS_DISCOUNT_KEY + userId); + if (CollectionUtils.isEmpty(tyCusDiscCacheList)) { + throw new ServiceException("ty供应商客户优惠列表为空!" + userId, HttpStatus.ERROR); + } + // 增加一重保险,客户优惠必须大于0 + tyCusDiscCacheList = tyCusDiscCacheList.stream().filter(x -> x.getDiscount() > 0).collect(Collectors.toList()); + + // 从redis中获取已存在的商品库存数据 + List tyStockList = redisCache.getCacheObject(CacheConstants.MIGRATION_TY_PROD_STOCK_KEY + userId); + if (CollectionUtils.isEmpty(tyStockList)) { + throw new ServiceException("ty供应商商品库存列表为空!" + userId, HttpStatus.ERROR); + } + // TY 货号颜色的库存对应关系 + Map> tyProdStockMap = tyStockList.stream().collect(Collectors + .groupingBy(TyProdStockVO::getProdArtNum, Collectors.toMap(TyProdStockVO::getColorName, x -> x))); + // TY 货号颜色优惠对应关系 + Map>> tyCusDiscGroupMap = tyCusDiscCacheList.stream().collect(Collectors + .groupingBy(TyCusDiscImportVO::getProdArtNum, Collectors.groupingBy(TyCusDiscImportVO::getColorName))); + // 步橘系统商品所有颜色maps + Map> prodColorGroupMap = prodColorList.stream().collect(Collectors + .groupingBy(StoreProductColor::getStoreProdId, Collectors.toMap(StoreProductColor::getColorName, x -> x))); + // 步橘系统客户名称map + Map buJuStoreCusMap = storeCusList.stream().collect(Collectors.toMap(StoreCustomer::getCusName, x -> x)); + List prodCusDiscList = new ArrayList<>(); + List prodStockList = new ArrayList<>(); + // 依次遍历商品列表,找到货号和FHB货号对应关系,然后用颜色进行匹配,建立客户优惠关系 + storeProdList.forEach(storeProd -> { + // 当前商品颜色列表 key 颜色中文名称 + Map buJuProdColorMap = Optional.ofNullable(prodColorGroupMap.get(storeProd.getId())).orElseThrow(() -> new ServiceException("没有商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 根据步橘货号 找到TY对应的货号,可能是列表 + List tyAtrNoList = Optional.ofNullable(gtMatchTyArtNoMap.get(storeProd.getProdArtNum())).orElseThrow(() -> new ServiceException("没有TY货号!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 处理档口商品库存 + this.handleProdStock(tyAtrNoList, tyProdStockMap, buJuProdColorMap, storeProd.getStoreId(), storeProd.getId(), storeProd.getProdArtNum(), prodStockList); + + + tyAtrNoList.forEach(tyAtrNo -> { + // 处理客户优惠 + this.handleCusDisc(tyAtrNo, tyExistArtNoColorMap, tyCusDiscGroupMap, buJuProdColorMap, buJuStoreCusMap, prodCusDiscList, storeProd.getStoreId(), storeProd.getId()); + }); + + + }); + + + + + + + + + + + // 处理的思路,以GT为主,根据GT的货号 去匹配TY的货号,有些档口写的比较规范,这种就比较好处理 + List gtOnSaleList = ObjectUtils.defaultIfNull(redisCache.getCacheObject(CacheConstants.MIGRATION_GT_SALE_BASIC_KEY + initVO.getUserId()), new ArrayList<>()); + // gt所有在售的货号列表 + List gtArtNoList = gtOnSaleList.stream().map(GtProdSkuVO::getArticle_number).map(String::trim).distinct().collect(Collectors.toList()); + + + // ty货号正在生效的颜色map,因为客户优惠有些是删除的颜色,需要通过这里去过滤 + Map> tyExistArtNoColorMap = tyProdList.stream().collect(Collectors + .groupingBy(TyProdImportVO::getProdArtNum, Collectors.mapping(TyProdImportVO::getColorName, Collectors.toSet()))); + // TY货号下颜色的map + Map tyArtNoColorMap = tyProdList.stream().collect(Collectors.groupingBy(TyProdImportVO::getProdArtNum, + Collectors.collectingAndThen(Collectors.mapping(TyProdImportVO::getColorName, Collectors.toList()), + list -> "(" + list.stream().distinct().collect(Collectors.joining(",")) + ")"))); + // GT和TY匹配的货号map + Map> gtMatchTyArtNoMap = new HashMap<>(); + // 以GT为准在,找TY匹配的货号 + gtArtNoList.forEach(gtOnSaleArtNo -> tyArtNoColorMap.forEach((tyArtNo, tyArtNoColorStr) -> { + // 3种情况 1:1 货号 2:货号R 3:货号-R + if (Objects.equals(tyArtNo, gtOnSaleArtNo) || Objects.equals(tyArtNo, gtOnSaleArtNo + "R") || Objects.equals(tyArtNo, gtOnSaleArtNo + "-R")) { + List existMatchArtNoList = gtMatchTyArtNoMap.getOrDefault(gtOnSaleArtNo, new ArrayList<>()); + existMatchArtNoList.add(tyArtNo); + gtMatchTyArtNoMap.put(gtOnSaleArtNo, existMatchArtNoList); + } + })); + + // 从redis中获取已存在的客户优惠数据 + List tyCusDiscCacheList = redisCache.getCacheObject(CacheConstants.MIGRATION_TY_CUS_DISCOUNT_KEY + initVO.getUserId()); + if (CollectionUtils.isEmpty(tyCusDiscCacheList)) { + throw new ServiceException("ty供应商客户优惠列表为空!" + initVO.getUserId(), HttpStatus.ERROR); + } + // 增加一重保险,客户优惠必须大于0 + tyCusDiscCacheList = tyCusDiscCacheList.stream().filter(x -> x.getDiscount() > 0).collect(Collectors.toList()); + + // 从redis中获取已存在的商品库存数据 + List tyStockList = redisCache.getCacheObject(CacheConstants.MIGRATION_TY_PROD_STOCK_KEY + initVO.getUserId()); + if (CollectionUtils.isEmpty(tyStockList)) { + throw new ServiceException("ty供应商商品库存列表为空!" + initVO.getUserId(), HttpStatus.ERROR); + } + // TY 货号颜色的库存对应关系 + Map> tyProdStockMap = tyStockList.stream().collect(Collectors + .groupingBy(TyProdStockVO::getProdArtNum, Collectors.toMap(TyProdStockVO::getColorName, x -> x))); + // TY 货号颜色优惠对应关系 + Map>> tyCusDiscGroupMap = tyCusDiscCacheList.stream().collect(Collectors + .groupingBy(TyCusDiscImportVO::getProdArtNum, Collectors.groupingBy(TyCusDiscImportVO::getColorName))); + // 步橘系统商品所有颜色maps + Map> prodColorGroupMap = prodColorList.stream().collect(Collectors + .groupingBy(StoreProductColor::getStoreProdId, Collectors.toMap(StoreProductColor::getColorName, x -> x))); + // 步橘系统客户名称map + Map buJuStoreCusMap = storeCusList.stream().collect(Collectors.toMap(StoreCustomer::getCusName, x -> x)); + List prodCusDiscList = new ArrayList<>(); + List prodStockList = new ArrayList<>(); + // 依次遍历商品列表,找到货号和FHB货号对应关系,然后用颜色进行匹配,建立客户优惠关系 + storeProdList.forEach(storeProd -> { + // 当前商品颜色列表 key 颜色中文名称 + Map buJuProdColorMap = Optional.ofNullable(prodColorGroupMap.get(storeProd.getId())).orElseThrow(() -> new ServiceException("没有商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 根据步橘货号 找到TY对应的货号,可能是列表 + List tyAtrNoList = Optional.ofNullable(gtMatchTyArtNoMap.get(storeProd.getProdArtNum())).orElseThrow(() -> new ServiceException("没有TY货号!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 处理档口商品库存 + this.handleProdStock(tyAtrNoList, tyProdStockMap, buJuProdColorMap, storeProd.getStoreId(), storeProd.getId(), storeProd.getProdArtNum(), prodStockList); + + + tyAtrNoList.forEach(tyAtrNo -> { + // 处理客户优惠 + this.handleCusDisc(tyAtrNo, tyExistArtNoColorMap, tyCusDiscGroupMap, buJuProdColorMap, buJuStoreCusMap, prodCusDiscList, storeProd.getStoreId(), storeProd.getId()); + }); + + + }); + // 档口客户优惠 + this.storeCusProdDiscMapper.insert(prodCusDiscList); + // 档口客户库存 + this.prodStockMapper.insert(prodStockList);*/ + return R.ok(); + } + + + + + + + + + + /** + * 初始化档口颜色 + * + * @param tyProdList TY所有商品sku + * @param tyAfterArtNumList TY独有商品商品列表 + */ + private void initStoreColorList(Long storeId, List tyProdList, List tyAfterArtNumList) { + // 先查询当前档口所有的颜色,如果没有剩余的颜色,则新增导入 + List existColorList = this.storeColorMapper.selectList(new LambdaQueryWrapper() + .eq(StoreColor::getDelFlag, Constants.UNDELETED).eq(StoreColor::getStoreId, storeId)); + List existColorNameList = existColorList.stream().map(StoreColor::getColorName).collect(Collectors.toList()); + // 当前最大的排序 + int maxOrderNum = existColorList.stream().mapToInt(StoreColor::getOrderNum).max().orElse(0) + 1; + // TY单独处理的货品颜色 + List gtAfterColorList = tyProdList.stream().filter(tyProd -> tyAfterArtNumList.contains(tyProd.getProdArtNum())) + .map(TyProdImportVO::getColorName).filter(color -> !existColorNameList.contains(color)).distinct().collect(Collectors.toList()); + if (CollectionUtils.isEmpty(gtAfterColorList)) { + return; + } + List storeColorList = new ArrayList<>(); + for (int i = 0; i < gtAfterColorList.size(); i++) { + storeColorList.add(new StoreColor().setStoreId(storeId).setColorName(gtAfterColorList.get(i)).setOrderNum(maxOrderNum + i + 1)); + } + this.storeColorMapper.insert(storeColorList); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/tyBizAfter/TyBizAfterImportVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/tyBizAfter/TyBizAfterImportVO.java new file mode 100644 index 000000000..6bfe22df3 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/tyBizAfter/TyBizAfterImportVO.java @@ -0,0 +1,21 @@ +package com.ruoyi.web.controller.xkt.migartion.vo.tyBizAfter; + +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel +@Data +@Accessors(chain = true) +public class TyBizAfterImportVO { + + @Excel(name = "货号对比结果") + private String tyAfterArtNum; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 6499db99e..cac129eb8 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -196,6 +196,8 @@ public class Constants // 系统所有的尺码 public static final List SIZE_LIST = new ArrayList<>(Arrays .asList(SIZE_30, SIZE_31, SIZE_32, SIZE_33, SIZE_34, SIZE_35, SIZE_36, SIZE_37, SIZE_38, SIZE_39, SIZE_40, SIZE_41, SIZE_42, SIZE_43)); + // 系统标准尺码 34-40 + public static final List STANDARD_SIZE_LIST = new ArrayList<>(Arrays.asList(SIZE_34, SIZE_35, SIZE_36, SIZE_37, SIZE_38, SIZE_39, SIZE_40)); /** * 平台内部账户ID @@ -331,7 +333,7 @@ public class Constants public static final String SHAFT_LINING_MATERIAL = "shaftLiningMaterial"; public static final String SHAFT_LINING_MATERIAL_NAME = "靴筒内里材质"; public static final String SHAFT_MATERIAL = "shaftMaterial"; - public static final String SHAFT_MATERIAL_NAME = "靴筒面材质"; + public static final String SHAFT_MATERIAL_NAME = "鞋面材质"; public static final String SHOE_UPPER_LINING_MATERIAL = "shoeUpperLiningMaterial"; public static final String SHOE_UPPER_LINING_MATERIAL_NAME = "鞋面内里材质"; public static final String SHOE_STYLE_NAME = "shoeStyleName"; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java index 1f8d0bdd7..80c7bddfa 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java @@ -8,6 +8,7 @@ import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.XktBaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -21,6 +22,7 @@ import javax.validation.constraints.Size; */ @EqualsAndHashCode(callSuper = true) @Data +@Accessors(chain = true) public class SysDictData extends XktBaseEntity { private static final long serialVersionUID = 1L; diff --git a/sql/ry_20240629.sql b/sql/ry_20240629.sql index 081e152e1..bea0a8ed9 100644 --- a/sql/ry_20240629.sql +++ b/sql/ry_20240629.sql @@ -660,71 +660,40 @@ create table sys_dict_type unique (dict_type) ) engine=innodb auto_increment=200 comment = '字典类型表'; -INSERT INTO `sys_dict_type` -VALUES (1, '用户性别', 'sys_user_sex', '0', '用户性别列表', '0', '0', 'admin', '2025-03-26 21:35:36', 'admin', - '2025-06-28 11:05:55'); -INSERT INTO `sys_dict_type` -VALUES (2, '菜单状态', 'sys_show_hide', '0', '菜单状态列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (3, '系统开关', 'sys_normal_disable', '0', '系统开关列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (4, '任务状态', 'sys_job_status', '0', '任务状态列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (5, '任务分组', 'sys_job_group', '0', '任务分组列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (6, '系统是否', 'sys_yes_no', '0', '系统是否列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (7, '通知类型', 'sys_notice_type', '0', '通知类型列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (8, '通知状态', 'sys_notice_status', '0', '通知状态列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (9, '操作类型', 'sys_oper_type', '0', '操作类型列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (10, '系统状态', 'sys_common_status', '0', '登录状态列表', '0', '0', 'admin', '2025-03-26 21:35:36', '', NULL); -INSERT INTO `sys_dict_type` -VALUES (203, '帮面材质', 'upper_material', '0', '', '0', '0', 'admin', '2025-07-03 19:42:28', '', '2025-07-03 19:42:28'); -INSERT INTO `sys_dict_type` -VALUES (204, '内里材质', 'lining_material', '0', '', '0', '0', 'admin', '2025-07-03 19:45:31', '', '2025-07-03 19:45:31'); -INSERT INTO `sys_dict_type` -VALUES (205, '鞋垫材质', 'insole_material', '0', '', '0', '0', 'admin', '2025-07-03 19:45:41', '', '2025-07-03 19:45:41'); -INSERT INTO `sys_dict_type` -VALUES (206, '后跟高', 'heel_height', '0', '', '0', '0', 'admin', '2025-07-03 19:45:52', '', '2025-07-03 19:45:52'); -INSERT INTO `sys_dict_type` -VALUES (207, '跟底款式', 'heel_type', '0', '', '0', '0', 'admin', '2025-07-03 19:46:03', '', '2025-07-03 19:46:03'); -INSERT INTO `sys_dict_type` -VALUES (208, '鞋头款式', 'toe_style', '0', '', '0', '0', 'admin', '2025-07-03 19:46:20', '', '2025-07-03 19:46:20'); -INSERT INTO `sys_dict_type` -VALUES (209, '适合季节', 'suitable_season', '0', '', '0', '0', 'admin', '2025-07-03 19:46:29', '', '2025-07-03 19:46:29'); -INSERT INTO `sys_dict_type` -VALUES (210, '开口深度', 'collar_depth', '0', '', '0', '0', 'admin', '2025-07-03 19:46:39', '', '2025-07-03 19:46:39'); -INSERT INTO `sys_dict_type` -VALUES (211, '鞋底材质', 'outsole_material', '0', '', '0', '0', 'admin', '2025-07-03 19:46:48', '', '2025-07-03 19:46:48'); -INSERT INTO `sys_dict_type` -VALUES (212, '风格', 'style', '0', '', '0', '0', 'admin', '2025-07-03 19:46:58', '', '2025-07-03 19:46:58'); -INSERT INTO `sys_dict_type` -VALUES (213, '款式', 'design', '0', '', '0', '0', 'admin', '2025-07-03 19:47:11', '', '2025-07-03 19:47:11'); -INSERT INTO `sys_dict_type` -VALUES (214, '皮质特征', 'leather_features', '0', '', '0', '0', 'admin', '2025-07-03 19:47:30', '', '2025-07-03 19:47:30'); -INSERT INTO `sys_dict_type` -VALUES (215, '制作工艺', 'manufacturing_process', '0', '', '0', '0', 'admin', '2025-07-03 19:47:38', '', - '2025-07-03 19:47:38'); -INSERT INTO `sys_dict_type` -VALUES (216, '图案', 'pattern', '0', '', '0', '0', 'admin', '2025-07-03 19:47:45', '', '2025-07-03 19:47:45'); -INSERT INTO `sys_dict_type` -VALUES (217, '闭合方式', 'closure_type', '0', '', '0', '0', 'admin', '2025-07-03 19:47:53', '', '2025-07-03 19:47:53'); -INSERT INTO `sys_dict_type` -VALUES (218, '适用场景', 'occasion', '0', '', '0', '0', 'admin', '2025-07-03 19:48:04', '', '2025-07-03 19:48:04'); -INSERT INTO `sys_dict_type` -VALUES (219, '适用年龄', 'suitable_age', '0', '', '0', '0', 'admin', '2025-07-03 19:48:11', '', '2025-07-03 19:48:11'); -INSERT INTO `sys_dict_type` -VALUES (220, '厚薄', 'thickness', '0', '', '0', '0', 'admin', '2025-07-03 19:48:20', '', '2025-07-03 19:48:20'); -INSERT INTO `sys_dict_type` -VALUES (221, '流行元素', 'fashion_elements', '0', '', '0', '0', 'admin', '2025-07-03 19:48:29', '', '2025-07-03 19:48:29'); -INSERT INTO `sys_dict_type` -VALUES (222, '退货原因', 'refund_reason', '0', NULL, '0', '0', 'admin', '2025-07-18 22:56:58', '', '2025-07-18 22:57:00'); -INSERT INTO `sys_dict_type` -VALUES (223, '季节年份', 'release_year_season', '0', '', '0', '0', 'admin', '2025-08-03 20:51:28', 'admin', - '2025-08-03 20:51:28'); +INSERT INTO `sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', '用户性别列表', 0, '0', 'admin', '2025-03-26 21:35:36', 'admin', '2025-06-28 11:05:55'); +INSERT INTO `sys_dict_type` VALUES (2, '菜单状态', 'sys_show_hide', '0', '菜单状态列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (3, '系统开关', 'sys_normal_disable', '0', '系统开关列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (4, '任务状态', 'sys_job_status', '0', '任务状态列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (5, '任务分组', 'sys_job_group', '0', '任务分组列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (6, '系统是否', 'sys_yes_no', '0', '系统是否列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (7, '通知类型', 'sys_notice_type', '0', '通知类型列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (8, '通知状态', 'sys_notice_status', '0', '通知状态列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', '操作类型列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', '登录状态列表', 0, '0', 'admin', '2025-03-26 21:35:36', '', NULL); +INSERT INTO `sys_dict_type` VALUES (203, '帮面材质', 'upper_material', '0', '', 0, '0', 'admin', '2025-07-03 19:42:28', '', '2025-07-03 19:42:28'); +INSERT INTO `sys_dict_type` VALUES (204, '内里材质', 'lining_material', '0', '', 0, '0', 'admin', '2025-07-03 19:45:31', '', '2025-07-03 19:45:31'); +INSERT INTO `sys_dict_type` VALUES (205, '鞋垫材质', 'insole_material', '0', '', 0, '0', 'admin', '2025-07-03 19:45:41', '', '2025-07-03 19:45:41'); +INSERT INTO `sys_dict_type` VALUES (206, '后跟高', 'heel_height', '0', '', 0, '0', 'admin', '2025-07-03 19:45:52', '', '2025-07-03 19:45:52'); +INSERT INTO `sys_dict_type` VALUES (207, '跟底款式', 'heel_type', '0', '', 0, '0', 'admin', '2025-07-03 19:46:03', '', '2025-07-03 19:46:03'); +INSERT INTO `sys_dict_type` VALUES (208, '鞋头款式', 'toe_style', '0', '', 0, '0', 'admin', '2025-07-03 19:46:20', '', '2025-07-03 19:46:20'); +INSERT INTO `sys_dict_type` VALUES (209, '适合季节', 'suitable_season', '0', '', 0, '0', 'admin', '2025-07-03 19:46:29', '', '2025-07-03 19:46:29'); +INSERT INTO `sys_dict_type` VALUES (210, '开口深度', 'collar_depth', '0', '', 0, '0', 'admin', '2025-07-03 19:46:39', '', '2025-07-03 19:46:39'); +INSERT INTO `sys_dict_type` VALUES (211, '鞋底材质', 'outsole_material', '0', '', 0, '0', 'admin', '2025-07-03 19:46:48', '', '2025-07-03 19:46:48'); +INSERT INTO `sys_dict_type` VALUES (212, '风格', 'style', '0', '', 0, '0', 'admin', '2025-07-03 19:46:58', '', '2025-07-03 19:46:58'); +INSERT INTO `sys_dict_type` VALUES (213, '款式', 'design', '0', '', 0, '0', 'admin', '2025-07-03 19:47:11', '', '2025-07-03 19:47:11'); +INSERT INTO `sys_dict_type` VALUES (214, '皮质特征', 'leather_features', '0', '', 0, '0', 'admin', '2025-07-03 19:47:30', '', '2025-07-03 19:47:30'); +INSERT INTO `sys_dict_type` VALUES (215, '制作工艺', 'manufacturing_process', '0', '', 0, '0', 'admin', '2025-07-03 19:47:38', '', '2025-07-03 19:47:38'); +INSERT INTO `sys_dict_type` VALUES (216, '图案', 'pattern', '0', '', 0, '0', 'admin', '2025-07-03 19:47:45', '', '2025-07-03 19:47:45'); +INSERT INTO `sys_dict_type` VALUES (217, '闭合方式', 'closure_type', '0', '', 0, '0', 'admin', '2025-07-03 19:47:53', '', '2025-07-03 19:47:53'); +INSERT INTO `sys_dict_type` VALUES (218, '适用场景', 'occasion', '0', '', 0, '0', 'admin', '2025-07-03 19:48:04', '', '2025-07-03 19:48:04'); +INSERT INTO `sys_dict_type` VALUES (219, '适用年龄', 'suitable_age', '0', '', 0, '0', 'admin', '2025-07-03 19:48:11', '', '2025-07-03 19:48:11'); +INSERT INTO `sys_dict_type` VALUES (220, '厚薄', 'thickness', '0', '', 0, '0', 'admin', '2025-07-03 19:48:20', '', '2025-07-03 19:48:20'); +INSERT INTO `sys_dict_type` VALUES (221, '流行元素', 'fashion_elements', '0', '', 0, '0', 'admin', '2025-07-03 19:48:29', '', '2025-07-03 19:48:29'); +INSERT INTO `sys_dict_type` VALUES (222, '退货原因', 'refund_reason', '0', NULL, 0, '0', 'admin', '2025-07-18 22:56:58', '', '2025-07-18 22:57:00'); +INSERT INTO `sys_dict_type` VALUES (223, '季节年份', 'release_year_season', '0', '', 0, '0', 'admin', '2025-08-03 20:51:28', 'admin', '2025-08-03 20:51:28'); +INSERT INTO `sys_dict_type` VALUES (224, '鞋面材质', 'shaft_material', '0', '', 0, '0', 'admin', '2025-10-30 20:09:55', '', '2025-10-30 20:09:55'); +INSERT INTO `sys_dict_type` VALUES (225, '鞋面内里材质', 'shoe_upper_lining_material', '0', '', 0, '0', 'admin', '2025-10-30 21:55:41', '', '2025-10-30 21:55:41'); + -- ---------------------------- @@ -2085,6 +2054,113 @@ INSERT INTO `sys_dict_data` VALUES (1096, 4, '商品破损,已拒收', '商品 INSERT INTO `sys_dict_data` VALUES (1097, 6, '物流状态异常', '物流状态异常', 'refund_reason', '0', 'admin', '2025-09-21 13:28:12', '', '2025-09-21 13:28:12', '', 0, '0'); INSERT INTO `sys_dict_data` VALUES (1098, 7, '商品质量问题', '商品质量问题', 'refund_reason', '0', 'admin', '2025-09-21 13:28:28', '', '2025-09-21 13:28:28', '', 0, '0'); INSERT INTO `sys_dict_data` VALUES (1099, 8, '其他', '其他', 'refund_reason', '0', 'admin', '2025-09-21 13:28:34', '', '2025-09-21 13:28:34', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1100, 1, '头层牛皮', '头层牛皮', 'shaft_material', '0', 'admin', '2025-10-30 21:41:37', '', '2025-10-30 21:41:37', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1101, 2, '牛二层皮覆膜', '牛二层皮覆膜', 'shaft_material', '0', 'admin', '2025-10-30 21:41:44', '', '2025-10-30 21:41:44', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1102, 3, '羊皮(除羊反绒/羊猄)', '羊皮(除羊反绒/羊猄)', 'shaft_material', '0', 'admin', '2025-10-30 21:41:50', '', '2025-10-30 21:41:50', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1103, 4, '超细纤维', '超细纤维', 'shaft_material', '0', 'admin', '2025-10-30 21:41:56', '', '2025-10-30 21:41:56', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1104, 5, '牛反绒(磨砂皮)', '牛反绒(磨砂皮)', 'shaft_material', '0', 'admin', '2025-10-30 21:42:03', '', '2025-10-30 21:42:03', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1105, 6, '绒面', '绒面', 'shaft_material', '0', 'admin', '2025-10-30 21:42:15', '', '2025-10-30 21:42:15', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1106, 7, '羊反绒(羊猄)', '羊反绒(羊猄)', 'shaft_material', '0', 'admin', '2025-10-30 21:42:23', '', '2025-10-30 21:42:23', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1107, 8, 'PU', 'PU', 'shaft_material', '0', 'admin', '2025-10-30 21:42:29', '', '2025-10-30 21:42:29', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1108, 9, '弹力布', '弹力布', 'shaft_material', '0', 'admin', '2025-10-30 21:42:36', '', '2025-10-30 21:42:36', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1109, 10, '牛皮革', '牛皮革', 'shaft_material', '0', 'admin', '2025-10-30 21:42:43', '', '2025-10-30 21:42:43', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1110, 11, '裘皮', '裘皮', 'shaft_material', '0', 'admin', '2025-10-30 21:42:49', '', '2025-10-30 21:42:49', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1111, 12, '混合材质', '混合材质', 'shaft_material', '0', 'admin', '2025-10-30 21:42:57', '', '2025-10-30 21:42:57', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1112, 13, '羊毛皮革', '羊毛皮革', 'shaft_material', '0', 'admin', '2025-10-30 21:43:05', '', '2025-10-30 21:43:05', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1113, 14, '珍珠鱼皮', '珍珠鱼皮', 'shaft_material', '0', 'admin', '2025-10-30 21:43:13', '', '2025-10-30 21:43:13', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1114, 15, '羊剖层革', '羊剖层革', 'shaft_material', '0', 'admin', '2025-10-30 21:43:20', '', '2025-10-30 21:43:20', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1115, 16, '织物', '织物', 'shaft_material', '0', 'admin', '2025-10-30 21:43:28', '', '2025-10-30 21:43:28', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1116, 17, '塑胶', '塑胶', 'shaft_material', '0', 'admin', '2025-10-30 21:43:39', '', '2025-10-30 21:43:39', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1117, 18, '乙纶', '乙纶', 'shaft_material', '0', 'admin', '2025-10-30 21:43:46', '', '2025-10-30 21:43:46', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1118, 19, '马皮', '马皮', 'shaft_material', '0', 'admin', '2025-10-30 21:43:54', '', '2025-10-30 21:43:54', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1119, 20, '毛线', '毛线', 'shaft_material', '0', 'admin', '2025-10-30 21:44:01', '', '2025-10-30 21:44:01', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1120, 21, '山羊绒', '山羊绒', 'shaft_material', '0', 'admin', '2025-10-30 21:44:08', '', '2025-10-30 21:44:08', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1121, 22, '漆皮', '漆皮', 'shaft_material', '0', 'admin', '2025-10-30 21:44:26', '', '2025-10-30 21:44:26', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1122, 23, '羊皮革', '羊皮革', 'shaft_material', '0', 'admin', '2025-10-30 21:44:33', '', '2025-10-30 21:44:33', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1123, 24, '布', '布', 'shaft_material', '0', 'admin', '2025-10-30 21:44:49', '', '2025-10-30 21:44:49', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1124, 25, '马毛', '马毛', 'shaft_material', '0', 'admin', '2025-10-30 21:44:56', '', '2025-10-30 21:44:56', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1125, 26, '牛仔布', '牛仔布', 'shaft_material', '0', 'admin', '2025-10-30 21:45:03', '', '2025-10-30 21:45:03', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1126, 27, '人造革', '人造革', 'shaft_material', '0', 'admin', '2025-10-30 21:45:11', '', '2025-10-30 21:45:11', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1127, 28, '聚酯纤维', '聚酯纤维', 'shaft_material', '0', 'admin', '2025-10-30 21:45:20', '', '2025-10-30 21:45:20', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1128, 29, '绸缎', '绸缎', 'shaft_material', '0', 'admin', '2025-10-30 21:45:27', '', '2025-10-30 21:45:27', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1129, 30, '猪皮', '猪皮', 'shaft_material', '0', 'admin', '2025-10-30 21:45:37', '', '2025-10-30 21:45:37', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1130, 31, '皮布拼接', '皮布拼接', 'shaft_material', '0', 'admin', '2025-10-30 21:45:47', '', '2025-10-30 21:45:47', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1131, 32, '羊皮革/羊剖层革', '羊皮革/羊剖层革', 'shaft_material', '0', 'admin', '2025-10-30 21:45:57', '', '2025-10-30 21:45:57', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1132, 33, '牛绒面革', '牛绒面革', 'shaft_material', '0', 'admin', '2025-10-30 21:46:05', '', '2025-10-30 21:46:05', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1133, 34, '牛剖层革', '牛剖层革', 'shaft_material', '0', 'admin', '2025-10-30 21:46:14', '', '2025-10-30 21:46:14', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1134, 35, '牛皮剖层反绒面革', '牛皮剖层反绒面革', 'shaft_material', '0', 'admin', '2025-10-30 21:46:21', '', '2025-10-30 21:46:21', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1135, 36, '格利特皮革', '格利特皮革', 'shaft_material', '0', 'admin', '2025-10-30 21:46:32', '', '2025-10-30 21:46:32', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1136, 37, '羊驼皮', '羊驼皮', 'shaft_material', '0', 'admin', '2025-10-30 21:46:43', '', '2025-10-30 21:46:43', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1137, 38, '鳄鱼皮', '鳄鱼皮', 'shaft_material', '0', 'admin', '2025-10-30 21:47:00', '', '2025-10-30 21:47:00', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1138, 39, '亮片布', '亮片布', 'shaft_material', '0', 'admin', '2025-10-30 21:47:09', '', '2025-10-30 21:47:09', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1139, 40, '氯纶', '氯纶', 'shaft_material', '0', 'admin', '2025-10-30 21:47:17', '', '2025-10-30 21:47:17', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1140, 41, '西施绒', '西施绒', 'shaft_material', '0', 'admin', '2025-10-30 21:47:26', '', '2025-10-30 21:47:26', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1141, 42, '牛毛皮', '牛毛皮', 'shaft_material', '0', 'admin', '2025-10-30 21:47:35', '', '2025-10-30 21:47:35', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1142, 43, '合成材料', '合成材料', 'shaft_material', '0', 'admin', '2025-10-30 21:47:43', '', '2025-10-30 21:47:43', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1143, 44, '袋鼠皮', '袋鼠皮', 'shaft_material', '0', 'admin', '2025-10-30 21:47:54', '', '2025-10-30 21:47:54', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1144, 45, '灯芯绒', '灯芯绒', 'shaft_material', '0', 'admin', '2025-10-30 21:48:03', '', '2025-10-30 21:48:03', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1145, 46, '蛇皮', '蛇皮', 'shaft_material', '0', 'admin', '2025-10-30 21:48:11', '', '2025-10-30 21:48:11', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1147, 48, '牛剖层移膜革', '牛剖层移膜革', 'shaft_material', '0', 'admin', '2025-10-30 21:48:25', '', '2025-10-30 21:48:25', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1148, 49, '树脂', '树脂', 'shaft_material', '0', 'admin', '2025-10-30 21:48:32', '', '2025-10-30 21:48:32', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1149, 50, '羊皮毛一体', '羊皮毛一体', 'shaft_material', '0', 'admin', '2025-10-30 21:48:39', '', '2025-10-30 21:48:39', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1150, 51, '鹿皮', '鹿皮', 'shaft_material', '0', 'admin', '2025-10-30 21:48:48', '', '2025-10-30 21:48:48', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1151, 52, '羊绒面革', '羊绒面革', 'shaft_material', '0', 'admin', '2025-10-30 21:48:55', '', '2025-10-30 21:48:55', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1152, 53, '网布', '网布', 'shaft_material', '0', 'admin', '2025-10-30 21:49:03', '', '2025-10-30 21:49:03', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1153, 54, '牛皮革/织物', '牛皮革/织物', 'shaft_material', '0', 'admin', '2025-10-30 21:49:11', '', '2025-10-30 21:49:11', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1154, 55, '橡胶', '橡胶', 'shaft_material', '0', 'admin', '2025-10-30 21:49:18', '', '2025-10-30 21:49:18', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1155, 56, '鳗鱼皮', '鳗鱼皮', 'shaft_material', '0', 'admin', '2025-10-30 21:49:26', '', '2025-10-30 21:49:26', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1156, 57, '牛皮剖层绒面革', '牛皮剖层绒面革', 'shaft_material', '0', 'admin', '2025-10-30 21:49:39', '', '2025-10-30 21:49:39', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1157, 58, '织物+PU', '织物+PU', 'shaft_material', '0', 'admin', '2025-10-30 21:49:46', '', '2025-10-30 21:49:46', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1158, 59, '呢子', '呢子', 'shaft_material', '0', 'admin', '2025-10-30 21:49:54', '', '2025-10-30 21:49:54', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1159, 60, '二层猪皮', '二层猪皮', 'shaft_material', '0', 'admin', '2025-10-30 21:50:01', '', '2025-10-30 21:50:01', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1160, 61, '棉', '棉', 'shaft_material', '0', 'admin', '2025-10-30 21:50:09', '', '2025-10-30 21:50:09', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1161, 62, '粒纹皮', '粒纹皮', 'shaft_material', '0', 'admin', '2025-10-30 21:50:17', '', '2025-10-30 21:50:17', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1162, 63, '羊皮剖层绒面革', '羊皮剖层绒面革', 'shaft_material', '0', 'admin', '2025-10-30 21:50:23', '', '2025-10-30 21:50:23', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1163, 64, 'EVA', 'EVA', 'shaft_material', '0', 'admin', '2025-10-30 21:50:32', '', '2025-10-30 21:50:32', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1164, 65, '蜥蜴皮', '蜥蜴皮', 'shaft_material', '0', 'admin', '2025-10-30 21:50:38', '', '2025-10-30 21:50:38', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1166, 67, '橡塑', '橡塑', 'shaft_material', '0', 'admin', '2025-10-30 21:50:52', '', '2025-10-30 21:50:52', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1167, 68, '藤草', '藤草', 'shaft_material', '0', 'admin', '2025-10-30 21:50:59', '', '2025-10-30 21:50:59', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1168, 69, '皮革', '皮革', 'shaft_material', '0', 'admin', '2025-10-30 21:51:06', '', '2025-10-30 21:51:06', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1169, 70, '麂皮', '麂皮', 'shaft_material', '0', 'admin', '2025-10-30 21:51:14', '', '2025-10-30 21:51:14', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1170, 71, '羊毛皮', '羊毛皮', 'shaft_material', '0', 'admin', '2025-10-30 21:51:23', '', '2025-10-30 21:51:23', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1171, 72, '鸵鸟皮', '鸵鸟皮', 'shaft_material', '0', 'admin', '2025-10-30 21:51:32', '', '2025-10-30 21:51:32', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1172, 73, '牛皮革/牛剖层革', '牛皮革/牛剖层革', 'shaft_material', '0', 'admin', '2025-10-30 21:51:42', '', '2025-10-30 21:51:42', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1173, 74, '孔雀皮', '孔雀皮', 'shaft_material', '0', 'admin', '2025-10-30 21:51:49', '', '2025-10-30 21:51:49', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1174, 1, '头层猪皮', '头层猪皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:55:54', 'admin', '2025-10-30 21:58:06', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1175, 2, '超细纤维', '超细纤维', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:00', 'admin', '2025-10-30 21:58:10', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1176, 3, '布', '布', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:05', 'admin', '2025-10-30 21:58:14', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1177, 4, '人造短毛绒', '人造短毛绒', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:11', 'admin', '2025-10-30 21:58:17', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1178, 5, '二层猪皮', '二层猪皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:16', 'admin', '2025-10-30 21:58:20', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1179, 6, '羊皮', '羊皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:21', 'admin', '2025-10-30 21:58:25', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1180, 7, '混合材质', '混合材质', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:26', 'admin', '2025-10-30 21:58:28', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1181, 8, '头层牛皮', '头层牛皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:34', 'admin', '2025-10-30 21:58:31', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1182, 9, '织物', '织物', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:41', 'admin', '2025-10-30 21:58:34', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1183, 10, '羊皮革', '羊皮革', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:47', 'admin', '2025-10-30 21:58:37', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1184, 11, '织物+PU合成革', '织物+PU合成革', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:56:55', 'admin', '2025-10-30 21:58:40', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1185, 12, 'PU', 'PU', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:02', 'admin', '2025-10-30 21:58:44', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1186, 13, '网纱', '网纱', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:09', 'admin', '2025-10-30 21:58:47', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1187, 14, '人造长毛绒', '人造长毛绒', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:16', 'admin', '2025-10-30 21:59:23', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1188, 15, '无内里', '无内里', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:24', 'admin', '2025-10-30 21:59:27', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1189, 16, '绒面', '绒面', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:31', 'admin', '2025-10-30 21:59:30', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1190, 17, '反毛皮', '反毛皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:41', 'admin', '2025-10-30 21:59:32', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1191, 18, '皮革', '皮革', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:48', 'admin', '2025-10-30 21:59:35', '', 1, '0'); +INSERT INTO `sys_dict_data` VALUES (1192, 19, '纯羊毛', '纯羊毛', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:57:54', 'admin', '2025-10-30 21:59:37', '', 2, '0'); +INSERT INTO `sys_dict_data` VALUES (1193, 20, '二层牛皮', '二层牛皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:59:48', '', '2025-10-30 21:59:48', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1194, 21, '牛皮革', '牛皮革', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 21:59:54', '', '2025-10-30 21:59:54', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1195, 22, '羊皮毛一体', '羊皮毛一体', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:00:01', '', '2025-10-30 22:00:01', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1196, 23, '棉', '棉', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:00:08', '', '2025-10-30 22:00:08', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1197, 24, '羊毛羊绒混纺', '羊毛羊绒混纺', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:01:09', '', '2025-10-30 22:01:09', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1198, 25, '马皮', '马皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:01:17', '', '2025-10-30 22:01:17', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1199, 26, '弹力绒布', '弹力绒布', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:01:24', '', '2025-10-30 22:01:24', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1200, 27, '羊毛混纺', '羊毛混纺', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:01:32', '', '2025-10-30 22:01:32', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1201, 28, '乙纶', '乙纶', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:01:38', '', '2025-10-30 22:01:38', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1202, 29, '胎牛皮', '胎牛皮', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:01:47', '', '2025-10-30 22:01:47', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1203, 30, '鹿纤绒', '鹿纤绒', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:01:53', '', '2025-10-30 22:01:53', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1204, 31, '涤沦', '涤沦', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:02:05', '', '2025-10-30 22:02:05', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1205, 32, '山羊绒', '山羊绒', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:02:12', '', '2025-10-30 22:02:12', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1206, 33, '聚酯纤维', '聚酯纤维', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:02:19', '', '2025-10-30 22:02:19', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1207, 34, '兔毛', '兔毛', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:02:26', '', '2025-10-30 22:02:26', '', 0, '0'); +INSERT INTO `sys_dict_data` VALUES (1208, 35, '狐狸毛', '狐狸毛', 'shoe_upper_lining_material', '0', 'admin', '2025-10-30 22:02:34', '', '2025-10-30 22:02:34', '', 0, '0'); -- ---------------------------- @@ -3457,9 +3533,9 @@ DROP TABLE IF EXISTS `store_product_color`; CREATE TABLE `store_product_color` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '档口商品颜色ID', - `store_color_id` bigint UNSIGNED NOT NULL COMMENT '档口颜色ID', - `store_prod_id` bigint UNSIGNED NOT NULL COMMENT '档口商品ID', `store_id` bigint UNSIGNED NOT NULL COMMENT '档口ID', + `store_prod_id` bigint UNSIGNED NOT NULL COMMENT '档口商品ID', + `store_color_id` bigint UNSIGNED NOT NULL COMMENT '档口颜色ID', `color_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '颜色名称', `order_num` int UNSIGNED NOT NULL COMMENT '排序', `prod_status` tinyint UNSIGNED NULL DEFAULT NULL COMMENT '档口商品状态', @@ -3483,8 +3559,8 @@ DROP TABLE IF EXISTS `store_product_color_size`; CREATE TABLE `store_product_color_size` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '档口商品颜色尺码ID', - `store_color_id` bigint UNSIGNED NOT NULL COMMENT '档口商品颜色ID', `store_prod_id` bigint UNSIGNED NOT NULL COMMENT '档口商品ID', + `store_color_id` bigint UNSIGNED NOT NULL COMMENT '档口商品颜色ID', `size` int UNSIGNED NOT NULL COMMENT '商品尺码', `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '档口商品定价', `sn_prefix` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '档口商品颜色尺码的前缀',