peng
2025-10-11 8fd3db7778b3991810d33ac4dffd2f9031b106fc
Merge remote-tracking branch 'origin/user_action' into user_action

# Conflicts:
# framework/src/main/java/cn/lili/modules/lmk/service/GoodsCustomizeTemplateService.java
# framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsCustomizeTemplateServiceImpl.java
14个文件已修改
2个文件已添加
329 ■■■■■ 已修改文件
framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/goods/sku/GoodsSkuBuilder.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsCustomizeTemplate.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/TemplateConstomizeTitle.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/TemplateImgs.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsCustomizeTemplateForm.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsCustomizeTemplateQuery.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsCustomizeTemplateVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/enums/general/TemplateContentTypeEnum.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/GoodsCustomizeTemplateService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsCustomizeTemplateServiceImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/GoodsCustomizeTemplateMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/VideoMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
seller-api/src/main/java/cn/lili/controller/template/GoodsCustomizeTemplateController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
@@ -252,6 +252,13 @@
                sku.remove("couponId");
                sku.remove("couponName");
            }
            Object templateId = sku.get("customizeTemplateId");
            if (templateId == null || StringUtil.isEmpty(templateId.toString())) {
                sku.remove("customizeTemplateId");
                sku.remove("customizeTemplateName");
            }
            sku.values().forEach(i -> {
                if (CharSequenceUtil.isBlank(i.toString())) {
                    throw new ServiceException(ResultCode.MUST_HAVE_GOODS_SKU_VALUE);
framework/src/main/java/cn/lili/modules/goods/sku/GoodsSkuBuilder.java
@@ -7,6 +7,7 @@
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.goods.entity.dos.Goods;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.order.order.entity.enums.CustomizeFlagEnum;
import org.springframework.stereotype.Component;
import java.util.*;
@@ -65,7 +66,7 @@
        Map<String, Object> specMap = new LinkedHashMap<>();
        // 原始规格项
        String[] ignoreOriginKeys = {"id", "sn", "cost", "price", "quantity", "weight", "alertQuantity","couponId","couponName"};
        String[] ignoreOriginKeys = {"id", "sn", "cost", "price", "quantity", "weight", "alertQuantity","couponId","couponName","customizeTemplateId","customizeTemplateName"};
        //获取规格信息
        for (Map.Entry<String, Object> spec : skuInfo.entrySet()) {
            //保存新增规格信息
@@ -87,7 +88,22 @@
        if(StringUtils.isNotBlank(Convert.toStr(skuInfo.get("couponId")))){
            goodsSku.setCouponId(Convert.toStr(skuInfo.get("couponId"),""));
        }
        boolean have = true;
        if(StringUtils.isNotBlank(Convert.toStr(skuInfo.get("customizeTemplateId")))){
            goodsSku.setCustomizeTemplateId(Convert.toStr(skuInfo.get("customizeTemplateId"),""));
        }else{
            have = false;
        }
        if(StringUtils.isNotBlank(Convert.toStr(skuInfo.get("customizeTemplateName")))){
            goodsSku.setCustomizeTemplateName(Convert.toStr(skuInfo.get("customizeTemplateName"),""));
        }else {
            have = false;
        }
        if (have){
            goodsSku.setCustomizeFlag(CustomizeFlagEnum.CUSTOMIZE.name());
        }else{
            goodsSku.setCustomizeFlag(CustomizeFlagEnum.NOT_CUSTOMIZE.name());
        }
        goodsSku.setCouponName(Convert.toStr(skuInfo.get("couponName"),""));
        goodsSku.setId(Convert.toStr(skuInfo.get("id"), ""));
        goodsSku.setSn(Convert.toStr(skuInfo.get("sn")));
framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsCustomizeTemplate.java
@@ -22,7 +22,10 @@
    private String templateName;
    @TableField("status")
    /** 启用状态 */
    /**
     * 启用状态
     * @see cn.lili.modules.lmk.enums.general.EnableStatusEnums
     */
    private String status;
framework/src/main/java/cn/lili/modules/lmk/domain/entity/TemplateConstomizeTitle.java
@@ -3,7 +3,9 @@
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 模板标题
@@ -12,6 +14,8 @@
 * @since 2025-10-09
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("lmk_template_constomize_title")
public class TemplateConstomizeTitle extends BaseEntity {
@@ -27,7 +31,14 @@
    @TableField("content_type")
    /** 标题类型 */
    /**
     * @see cn.lili.modules.lmk.enums.general.TemplateContentTypeEnum
     */
    private String contentType;
    public TemplateConstomizeTitle(String templateTitle,String contentType) {
        this.templateTitle = templateTitle;
        this.contentType = contentType;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/entity/TemplateImgs.java
@@ -3,7 +3,9 @@
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 模板图片
@@ -12,6 +14,8 @@
 * @since 2025-10-09
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("lmk_template_imgs")
public class TemplateImgs extends BaseEntity {
@@ -25,5 +29,8 @@
    /** 图片地址 */
    private String imgUrl;
    public TemplateImgs(String imgUrl) {
        this.imgUrl = imgUrl; // 只赋值imgUrl,其他字段(如templateId)可后续通过业务逻辑补充
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsCustomizeTemplateForm.java
@@ -4,6 +4,8 @@
import cn.lili.group.Add;
import cn.lili.base.AbsForm;
import cn.lili.modules.lmk.domain.entity.GoodsCustomizeTemplate;
import cn.lili.modules.lmk.domain.entity.TemplateConstomizeTitle;
import cn.lili.modules.lmk.domain.entity.TemplateImgs;
import org.springframework.beans.BeanUtils;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@@ -12,6 +14,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * 定制商品模板表单
@@ -31,6 +34,10 @@
    @ApiModelProperty("启用状态")
    private String status;
    private List<TemplateConstomizeTitle> titles;
    private List<TemplateImgs> listImages;
    public static GoodsCustomizeTemplate getEntityByForm(@NonNull GoodsCustomizeTemplateForm form, GoodsCustomizeTemplate entity) {
        if(entity == null) {
          entity = new GoodsCustomizeTemplate();
framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsCustomizeTemplateQuery.java
@@ -18,5 +18,9 @@
@Data
@ApiModel(value = "GoodsCustomizeTemplate查询参数", description = "定制商品模板查询参数")
public class GoodsCustomizeTemplateQuery extends AbsQuery {
    private String templateName;
    private String status;
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsCustomizeTemplateVO.java
@@ -3,6 +3,9 @@
import cn.lili.base.AbsVo;
import cn.lili.modules.lmk.domain.entity.GoodsCustomizeTemplate;
import java.util.List;
import cn.lili.modules.lmk.domain.entity.TemplateConstomizeTitle;
import cn.lili.modules.lmk.domain.entity.TemplateImgs;
import org.springframework.lang.NonNull;
import org.springframework.beans.BeanUtils;
import io.swagger.annotations.ApiModel;
@@ -28,6 +31,9 @@
    @ApiModelProperty("启用状态")
    private String status;
    private List<TemplateImgs> listImages;
    private List<TemplateConstomizeTitle> titles;
    public static GoodsCustomizeTemplateVO getVoByEntity(@NonNull GoodsCustomizeTemplate entity, GoodsCustomizeTemplateVO vo) {
        if(vo == null) {
            vo = new GoodsCustomizeTemplateVO();
framework/src/main/java/cn/lili/modules/lmk/enums/general/TemplateContentTypeEnum.java
New file
@@ -0,0 +1,22 @@
package cn.lili.modules.lmk.enums.general;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * lmk-shop-java
 *
 * @author : zxl
 * @date : 2025-10-10 15:37
 **/
@Getter
@AllArgsConstructor
public enum TemplateContentTypeEnum {
    /**
     * 类型
     */
    TEXT("文本"),
    IMAGE("图片");
    private final String description;
}
framework/src/main/java/cn/lili/modules/lmk/service/GoodsCustomizeTemplateService.java
@@ -1,6 +1,7 @@
package cn.lili.modules.lmk.service;
import cn.lili.modules.lmk.domain.entity.GoodsCustomizeTemplate;
import cn.lili.modules.lmk.domain.vo.GoodsCustomizeTemplateVO;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.form.GoodsCustomizeTemplateForm;
@@ -57,6 +58,8 @@
     */
    Result detail(String id);
    GoodsCustomizeTemplateVO detailById(String id);
    /**
     * 列表
     * @return
@@ -64,4 +67,6 @@
    Result all();
    Result getCustomizeTemplate(String id);
    Result changeStatus(String id);
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsCustomizeTemplateServiceImpl.java
@@ -1,5 +1,10 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.modules.lmk.domain.entity.TemplateConstomizeTitle;
import cn.lili.modules.lmk.domain.entity.TemplateImgs;
import cn.lili.modules.lmk.enums.general.EnableStatusEnums;
import cn.lili.modules.lmk.service.TemplateConstomizeTitleService;
import cn.lili.modules.lmk.service.TemplateImgsService;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.service.GoodsSkuService;
@@ -11,6 +16,7 @@
import cn.lili.modules.lmk.mapper.GoodsCustomizeTemplateMapper;
import cn.lili.modules.lmk.service.GoodsCustomizeTemplateService;
import cn.lili.base.Result;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.lili.modules.lmk.domain.form.GoodsCustomizeTemplateForm;
import cn.lili.modules.lmk.domain.vo.GoodsCustomizeTemplateVO;
@@ -20,6 +26,7 @@
import lombok.RequiredArgsConstructor;
import cn.lili.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.List;
@@ -37,6 +44,8 @@
    private final GoodsCustomizeTemplateMapper goodsCustomizeTemplateMapper;
    private final TemplateImgsService templateImgsService;
    private final TemplateConstomizeTitleService templateConstomizeTitleService;
    private final GoodsSkuService goodsSkuService;
    private final COSUtil cosUtil;
@@ -46,9 +55,24 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result add(GoodsCustomizeTemplateForm form) {
        GoodsCustomizeTemplate entity = GoodsCustomizeTemplateForm.getEntityByForm(form, null);
        entity.setStatus(EnableStatusEnums.ENABLE.name());
        baseMapper.insert(entity);
        String templateId = entity.getId();
        List<TemplateImgs> listImages = form.getListImages();
        for (TemplateImgs templateImgs : listImages) {
            templateImgs.setTemplateId(templateId);
        }
        List<TemplateConstomizeTitle> titles = form.getTitles();
        for (TemplateConstomizeTitle title : titles) {
            title.setTemplateId(templateId);
        }
        templateImgsService.saveBatch(listImages);
        templateConstomizeTitleService.saveBatch(titles);
        return Result.ok("添加成功");
    }
@@ -58,12 +82,47 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result update(GoodsCustomizeTemplateForm form) {
        GoodsCustomizeTemplate entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        //先删除之前的模板信息然后添加新信息
        List<TemplateImgs> templateImgsList = new LambdaQueryChainWrapper<>(templateImgsService.getBaseMapper())
                .eq(TemplateImgs::getTemplateId, entity.getId())
                .eq(TemplateImgs::getDeleteFlag, Boolean.FALSE)
                .list();
        List<String> imgIds = templateImgsList.stream()
                .map(TemplateImgs::getId)
                .collect(Collectors.toList());
        List<TemplateConstomizeTitle> templateConstomizeTitleList = new LambdaQueryChainWrapper<>(templateConstomizeTitleService.getBaseMapper())
                .eq(TemplateConstomizeTitle::getTemplateId, entity.getId())
                .eq(TemplateConstomizeTitle::getDeleteFlag, Boolean.FALSE)
                .list();
        List<String> titleIds = templateConstomizeTitleList.stream()
                .map(TemplateConstomizeTitle::getId)
                .collect(Collectors.toList());
        templateImgsService.removeBatchByIds(imgIds);
        templateConstomizeTitleService.removeBatchByIds(titleIds);
        List<TemplateImgs> listImages = form.getListImages();
        for (TemplateImgs templateImgs : listImages) {
            templateImgs.setTemplateId(entity.getId());
        }
        List<TemplateConstomizeTitle> titles = form.getTitles();
        for (TemplateConstomizeTitle title : titles) {
            title.setTemplateId(entity.getId());
        }
        templateImgsService.saveBatch(listImages);
        templateConstomizeTitleService.saveBatch(titles);
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
@@ -85,8 +144,32 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result removeById(String id) {
        List<TemplateImgs> templateImgsList = new LambdaQueryChainWrapper<>(templateImgsService.getBaseMapper())
                .eq(TemplateImgs::getTemplateId, id)
                .eq(TemplateImgs::getDeleteFlag, Boolean.FALSE)
                .list();
        List<String> imgIds = templateImgsList.stream()
                .map(TemplateImgs::getId)
                .collect(Collectors.toList());
        List<TemplateConstomizeTitle> templateConstomizeTitleList = new LambdaQueryChainWrapper<>(templateConstomizeTitleService.getBaseMapper())
                .eq(TemplateConstomizeTitle::getTemplateId, id)
                .eq(TemplateConstomizeTitle::getDeleteFlag, Boolean.FALSE)
                .list();
        List<String> titleIds = templateConstomizeTitleList.stream()
                .map(TemplateConstomizeTitle::getId)
                .collect(Collectors.toList());
        templateImgsService.removeBatchByIds(imgIds);
        templateConstomizeTitleService.removeBatchByIds(titleIds);
        baseMapper.deleteById(id);
        return Result.ok("删除成功");
    }
@@ -109,9 +192,26 @@
     */
    @Override
    public Result detail(String id) {
        return Result.ok().data(this.detailById(id));
    }
    @Override
    public GoodsCustomizeTemplateVO detailById(String id){
        GoodsCustomizeTemplateVO vo = baseMapper.getById(id);
        Assert.notNull(vo, "记录不存在");
        return Result.ok().data(vo);
        //查询相关模板信息
        List<TemplateImgs> templateImgsList = new LambdaQueryChainWrapper<>(templateImgsService.getBaseMapper())
                .eq(TemplateImgs::getTemplateId, id)
                .eq(TemplateImgs::getDeleteFlag, Boolean.FALSE)
                .list();
        List<TemplateConstomizeTitle> templateConstomizeTitleList = new LambdaQueryChainWrapper<>(templateConstomizeTitleService.getBaseMapper())
                .eq(TemplateConstomizeTitle::getTemplateId, id)
                .eq(TemplateConstomizeTitle::getDeleteFlag, Boolean.FALSE)
                .list();
        vo.setListImages(templateImgsList);
        vo.setTitles(templateConstomizeTitleList);
        return vo;
    }
    /**
@@ -128,6 +228,18 @@
    }
    @Override
    public Result changeStatus(String id) {
        GoodsCustomizeTemplate goodsCustomizeTemplate = baseMapper.selectById(id);
        if (EnableStatusEnums.ENABLE.name().equals(goodsCustomizeTemplate.getStatus())){
            goodsCustomizeTemplate.setStatus(EnableStatusEnums.DISABLE.name());
        }else{
            goodsCustomizeTemplate.setStatus(EnableStatusEnums.ENABLE.name());
        }
        baseMapper.updateById(goodsCustomizeTemplate);
        return Result.ok();
    }
    @Override
    public Result getCustomizeTemplate(String id) {
        GoodsSku goodsSku = goodsSkuService.getById(id);
        String templateId = goodsSku.getCustomizeTemplateId();
framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java
@@ -5,6 +5,7 @@
import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.SnowFlake;
import cn.lili.modules.lmk.domain.vo.GoodsCustomizeTemplateVO;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
import cn.lili.modules.order.cart.entity.vo.CartVO;
@@ -15,12 +16,14 @@
import cn.lili.modules.order.order.entity.enums.RefundStatusEnum;
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Transient;
import java.math.BigDecimal;
import java.util.stream.Collectors;
@@ -139,6 +142,10 @@
    @ApiModelProperty(value = "抽成比例")
    private BigDecimal commission;
    
    @ApiModelProperty(value = "商品定制模板VO")
    @TableField(exist = false)
    private GoodsCustomizeTemplateVO goodsCustomizeTemplateVO;
    public Integer getDeliverNumber() {
        if(deliverNumber == null){
            return 0;
framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java
@@ -2,24 +2,31 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.base.Result;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.lmk.domain.vo.GoodsCustomizeTemplateVO;
import cn.lili.modules.lmk.service.GoodsCustomizeTemplateService;
import cn.lili.modules.order.order.entity.dos.OrderItem;
import cn.lili.modules.order.order.entity.dto.OrderItemOperationDTO;
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import cn.lili.modules.order.order.entity.enums.RefundStatusEnum;
import cn.lili.modules.order.order.entity.enums.*;
import cn.lili.modules.order.order.mapper.OrderItemMapper;
import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 子订单业务层实现
@@ -28,7 +35,11 @@
 * @since 2020/11/17 7:38 下午
 */
@Service
@RequiredArgsConstructor
public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem> implements OrderItemService {
    private final GoodsCustomizeTemplateService goodsCustomizeTemplateService;
    private final GoodsSkuService skuService;
    private final COSUtil cosUtil;
    @Override
    public void updateCommentStatus(String orderItemSn, CommentStatusEnum commentStatusEnum) {
@@ -87,7 +98,30 @@
    public List<OrderItem> getByOrderSn(String orderSn) {
        LambdaQueryWrapper<OrderItem> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(OrderItem::getOrderSn, orderSn);
        return this.list(lambdaQueryWrapper);
        //查询每个 skuId对应的商品 是否是定制商品 ,是则查询出模板信息
        List<OrderItem> list = this.list(lambdaQueryWrapper);
        for (OrderItem orderItem : list) {
            GoodsSku goodsSku = new LambdaQueryChainWrapper<>(skuService.getBaseMapper())
                    .eq(GoodsSku::getId, orderItem.getSkuId())
                    .eq(GoodsSku::getDeleteFlag, Boolean.FALSE)
                    .one();
            if (goodsSku != null && CustomizeFlagEnum.CUSTOMIZE.name().equals(goodsSku.getCustomizeFlag())) {
                if (goodsSku.getCustomizeTemplateId() != null){
                    GoodsCustomizeTemplateVO goodsCustomizeTemplateVO = goodsCustomizeTemplateService.detailById(goodsSku.getCustomizeTemplateId());
                    goodsCustomizeTemplateVO.getListImages().forEach(item ->{
                        if (StringUtils.isNotBlank(item.getImgUrl()) && !item.getImgUrl().contains("http")){
                            item.setImgUrl(cosUtil.getPreviewUrl(item.getImgUrl()));
                        }
                    });
                    orderItem.setGoodsCustomizeTemplateVO(goodsCustomizeTemplateVO);
                }
            }
        }
        return list;
    }
    @Override
framework/src/main/resources/mapper/lmk/GoodsCustomizeTemplateMapper.xml
@@ -9,12 +9,6 @@
        <result column="status" property="status" />
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            LGCT.template_name,
@@ -36,6 +30,12 @@
            lmk_goods_customize_template LGCT
        WHERE
            LGCT.delete_flag = 0
        <if test="query.templateName != null and query.templateName !=''">
            AND LGCT.template_name LIKE CONCAT('%',#{query.templateName},'%')
        </if>
        <if test="query.status != null and query.status !=''">
            AND LGCT.status = #{query.status}
        </if>
    </select>
    <resultMap id="getCustomizeTemplateMap" type="cn.lili.modules.lmk.domain.vo.CustomizeTemplateVO">
        <id property="id" column="id"/>
framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -336,6 +336,7 @@
          AND LV.video_type = #{query.videoType}
          AND LM.id IS NOT NULL
        ORDER BY
            recommend DESC,
            create_time DESC
    </select>
    <select id="recommendVideoByVideoId" resultMap="WxResultMap">
seller-api/src/main/java/cn/lili/controller/template/GoodsCustomizeTemplateController.java
New file
@@ -0,0 +1,55 @@
package cn.lili.controller.template;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.GoodsCustomizeTemplate;
import cn.lili.modules.lmk.domain.form.GoodsCustomizeTemplateForm;
import cn.lili.modules.lmk.domain.query.GoodsCustomizeTemplateQuery;
import cn.lili.modules.lmk.service.GoodsCustomizeTemplateService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*;
/**
 * lmk-shop-java
 * 定制商品模板
 * @author : zxl
 * @date : 2025-10-10 11:46
 **/
@RestController
@RequiredArgsConstructor
@RequestMapping("/store/lmk/goodsCustomizeTemplate")
public class GoodsCustomizeTemplateController {
    private final GoodsCustomizeTemplateService goodsCustomizeTemplateService;
    @GetMapping()
    public Result getPage(GoodsCustomizeTemplateQuery query){
        return goodsCustomizeTemplateService.page(query);
    }
    @GetMapping("/{id}")
    public Result getById(@PathVariable String id){
        return goodsCustomizeTemplateService.detail(id);
    }
    @PostMapping()
    public Result add(@RequestBody GoodsCustomizeTemplateForm form){
        return goodsCustomizeTemplateService.add(form);
    }
    @PutMapping()
    public Result edit(@RequestBody GoodsCustomizeTemplateForm form){
        return goodsCustomizeTemplateService.update(form);
    }
    @PutMapping("/changeStatus/{id}")
    public Result changeStatus(@PathVariable String id){
        return goodsCustomizeTemplateService.changeStatus(id);
    }
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable String id){
        return goodsCustomizeTemplateService.removeById(id);
    }
}