6个文件已修改
29个文件已添加
1260 ■■■■■ 已修改文件
buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consumer/src/main/resources/apiclient_cert.p12 补丁 | 查看 | 原始文档 | blame | 历史
consumer/src/main/resources/apiclient_cert.pem 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consumer/src/main/resources/apiclient_key.pem 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/Tag.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/TagType.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/TagForm.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/TagTypeForm.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagTypeQuery.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/WxKitchenVideoQuery.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagTypeVO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagVO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/enums/general/TagTypeKeyEnum.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/TagMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/TagTypeMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/TagService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/TagTypeService.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/TagServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/TagTypeServiceImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/TagMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/TagTypeMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/VideoMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/TagController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/TagTypeController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/resources/apiclient_cert.p12 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/resources/apiclient_cert.pem 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/resources/apiclient_key.pem 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
seller-api/src/main/resources/apiclient_cert.p12 补丁 | 查看 | 原始文档 | blame | 历史
seller-api/src/main/resources/apiclient_cert.pem 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
seller-api/src/main/resources/apiclient_key.pem 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java
@@ -5,9 +5,7 @@
import cn.lili.modules.lmk.domain.form.VideoFootPrintForm;
import cn.lili.modules.lmk.domain.form.VideoHomePageInfoForm;
import cn.lili.modules.lmk.domain.form.WxVideoForm;
import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
import cn.lili.modules.lmk.domain.query.HealthVideoQuery;
import cn.lili.modules.lmk.domain.query.WxHealthVideoQuery;
import cn.lili.modules.lmk.domain.query.*;
import org.springframework.validation.annotation.Validated;
import lombok.RequiredArgsConstructor;
import java.util.List;
@@ -16,7 +14,6 @@
import io.swagger.annotations.ApiOperation;
import cn.lili.modules.lmk.service.VideoService;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.query.VideoQuery;
import org.springframework.web.bind.annotation.*;
/**
@@ -80,7 +77,17 @@
    public Result healthRecommendVideo(WxHealthVideoQuery query) {
        return videoService.healthRecommendVideo(query);
    }
    @GetMapping("/kitchen/type")
    @ApiOperation(value = "厨神视频类型列表", notes = "厨神视频类型列表")
    public Result kitchenTypeList() {
        return videoService.kitchenTypeList();
    }
    @GetMapping("/kitchen/recommend")
    @ApiOperation(value = "厨神视频推荐", notes = "厨神视频推荐")
    public Result kitchenRecommendVideo(WxKitchenVideoQuery query) {
        return videoService.kitchenRecommendVideo(query);
    }
    @GetMapping("/goods/detail/{videoId}")
    @ApiOperation(value = "视频商品查看", notes = "视频商品查看")
    public Result getGoodsDetail(@PathVariable("videoId") String videoId) {
consumer/src/main/resources/apiclient_cert.p12
Binary files differ
consumer/src/main/resources/apiclient_cert.pem
New file
@@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEKzCCAxOgAwIBAgIUQI+FRbtTLFAdR9seUI0sqtgzEHcwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjUwNDAxMDU0NDU0WhcNMzAwMzMxMDU0NDU0WjCBhDETMBEGA1UEAwwK
MTcxMjU3NzU5MDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL
DCfmt7HlnLPnvo7nm4rnrZDlhpzkuJrnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV
BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMpJI0pxouUDKZGtpIytAnLQSZMgltCGEmfuuFaMRN0eqiPJHbo0
EUiRfJNUCBcFsf71iW5bSA2oxyPxh1oljalUDagBWng+3zaXBoFOHrWoswd0B9u1
GdTX/9LEBiLu3MqENckHxI/hx22HuK0vEg2VFroj+5IBIf+KnJoyAkfCH5e8Ea+t
FCHlsZa5GqC3iAIB+JTmdSHTRKVfjWHGfGLmhHZt/intLDstlKP8IRbtTR9CRXE3
Q5mVYURGzQ0VOe9zPGZE2CQ5Zd4ETOHwLRJy78nls4Eqn1D1UOZD88uSSi65MM86
msjnH1u3upH1yeTT1Gr4Zvjz8FTjzVAzjL8CAwEAAaOBuTCBtjAJBgNVHRMEAjAA
MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2
Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD
MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC
MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQAf
BTOdG7IOxZGUujH83E0RULUcAFy/fIhwM15ZgI7dflCNO3n3Vlx3Q/NuHEKS70hH
kdmNCjusIMVDr8vixYwD3rQ6Dw5oi0DNWihLyj99JdqZlcxHSYsmuFXXWAzpvl1q
wwAqF1RrrBkoK8T1L3SzZsBRwJcjPZAtQmdaYyZ2wc0RN0LmJQ26Kr+AWTsQ/4NK
QC2dlIhRRCQzurBt4Y9s75iDnkckDZx82vJ2pCYAIgcPJRLTQ+06wRnMXajaEicN
lXknSrML7I4jM5zOHzuj7RkviFpTdXep1Tk+4E0pN6pXxLyR7uNJ0YuJqnqcdlTY
Di0KGtJMK0iUNMKQnFGA
-----END CERTIFICATE-----
consumer/src/main/resources/apiclient_key.pem
New file
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKSSNKcaLlAymR
raSMrQJy0EmTIJbQhhJn7rhWjETdHqojyR26NBFIkXyTVAgXBbH+9YluW0gNqMcj
8YdaJY2pVA2oAVp4Pt82lwaBTh61qLMHdAfbtRnU1//SxAYi7tzKhDXJB8SP4cdt
h7itLxINlRa6I/uSASH/ipyaMgJHwh+XvBGvrRQh5bGWuRqgt4gCAfiU5nUh00Sl
X41hxnxi5oR2bf4p7Sw7LZSj/CEW7U0fQkVxN0OZlWFERs0NFTnvczxmRNgkOWXe
BEzh8C0Scu/J5bOBKp9Q9VDmQ/PLkkouuTDPOprI5x9bt7qR9cnk09Rq+Gb48/BU
481QM4y/AgMBAAECggEAdJoeFp5USHA/OPL/4/siay43CvEBHif6WiCX74Ohelhf
uIsIcLnssIj0ZzRMCYFF7fJ5CrzhVsZQLB7gZ404EEAcMxi8no2XOy9pF4YBW7Nn
p0cx9Gp6/l6X31UROHe5m58EJeItYsbBnxhZ0rJMVLn4xMlTDQFMKLIsvRFQkS2F
ZHIFqklDP4kFMmpRlCdoLSTldYmFJ5AtepyXYimGA2dpYooDDhgR1FAudrybQFDh
A2h0iZTTmhABnbW3elL6PydjY4yszvM6I15a/eiynevXKVLyVYBHTV39XUOjJp6f
XpOW3nuxhkCK2xUfRgOgepxS+3/dauROtM4SQeo56QKBgQDsAoZwYRI0yeTYA0lo
m+QAwYGcbTaccKOghc6taIJi4xAOH5WloB6Uv+Wx3gn1DufOJt3yeF4/1+2W1oH6
9ZBZwNo98VqMg2oa4DxhX3Oa6v7VTqelFccGGZ+/Lim5bdMfcfapxlv8MB77OPJW
fCAA514hp2ydkkPprFtcPU1z9QKBgQDba1xyHpKmFuz7kju9OWLBq1x8v2GnOqW6
4ypfNob2ljYTK7BfldPupYF7VC4F6dZqqKlyJqe2rhgRWs49J772AHcGovEHaRsT
Pi63/EA3ASfi58MmuWI5Y/hFSnM6q14ZTnpD9ZKiInK8HFHjVCrCrfAE1G13/s+R
K+YpawTBYwKBgQCoqSlQWF69cObk5HxqkLWBQMiSdI4JgIm+5sELtdswNhq8LSAx
q9sO7JCG6ynsgklwTuBgLlsUfwhguk1LfoA5VBPjHn9aWXPTXxpnb+Ja/MM+xyYR
WR3RIzDBXIke5fhxyWzAaWxFLlKFsG2nFq98Vdw0asS5WtTDwpPLuFeInQKBgHHG
nv4x6jsjgikE7+Mz4YipUeEB4CI14AAjkTIj9SHiTBHuwpsd9vI1cgnAYckBMwTF
hm/BqY+pgKNnIbBGbtfi79VKIo+EKdz1joYq0CV1fPhE00W+NTerJe7QJyYR/E5F
ClM5AJsAH9x5FuE5IJ8oUGBAwq7JO1p8l/F8I9AfAoGBAMvLmGi36QRzv9VjQO1Z
S0yG9OjLqdexYl7ogZYW/ys1yZg9mYiFv1wjqkDhegiGM8QyNoUFq2d7cIFZtfz6
3wrcFn4JDW1l9VaB+IM2G4GEsgrZ4wLalKdCRR83KRvuTyjUKZYVvWNNrNzv0gp/
51l5UctJTdE2v4+9OTvpo8b2
-----END PRIVATE KEY-----
framework/src/main/java/cn/lili/modules/lmk/domain/entity/Tag.java
New file
@@ -0,0 +1,29 @@
package cn.lili.modules.lmk.domain.entity;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
 * @author zxl
 * @since 2025-05-14
 */
@Data
@TableName("lmk_tag")
public class Tag extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @TableField("tag_name")
    private String tagName;
    @TableField("tag_type_id")
    private String tagTypeId;
    @TableField("sort_num")
    private Integer sortNum;
}
framework/src/main/java/cn/lili/modules/lmk/domain/entity/TagType.java
New file
@@ -0,0 +1,29 @@
package cn.lili.modules.lmk.domain.entity;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
 * @author zxl
 * @since 2025-05-14
 */
@Data
@TableName("lmk_tag_type")
public class TagType extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @TableField("tag_type_name")
    private String tagTypeName;
    @TableField("type_key")
    private String typeKey;
    @TableField("parent_id")
    private String parentId;
    @TableField("sort_num")
    private Integer sortNum;
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/TagForm.java
New file
@@ -0,0 +1,47 @@
package cn.lili.modules.lmk.domain.form;
import cn.lili.base.AbsForm;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.entity.Tag;
import cn.lili.modules.lmk.domain.entity.VideoTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * 视频标签表单
 *
 * @author xp
 * @since 2025-05-13
 */
@Data
@ApiModel(value = "VideoTag表单", description = "视频标签表单")
public class TagForm extends AbsForm {
    @NotBlank(message = "标签名称不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签名称")
    private String tagName;
    @NotNull(message = "标签分类不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签分类")
    private String tagTypeId;
    @NotNull(message = "序号不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("序号")
    private Integer sortNum;
    public static Tag getEntityByForm(@NonNull TagForm form, Tag entity) {
        if (entity == null) {
            entity = new Tag();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/TagTypeForm.java
New file
@@ -0,0 +1,52 @@
package cn.lili.modules.lmk.domain.form;
import cn.lili.base.AbsForm;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.entity.TagType;
import cn.lili.modules.lmk.domain.entity.VideoTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * 视频标签表单
 *
 * @author xp
 * @since 2025-05-13
 */
@Data
@ApiModel(value = "VideoTag表单", description = "视频标签表单")
public class TagTypeForm extends AbsForm {
    @NotBlank(message = "标签名称不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签名称")
    private String tagTypeName;
    @NotNull(message = "分类标识不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("分类标识")
    private String typeKey;
    @NotNull(message = "父节点不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("父节点")
    private String parentId;
    @NotNull(message = "序号不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("序号")
    private Integer sortNum;
    public static TagType getEntityByForm(@NonNull TagTypeForm form, TagType entity) {
        if (entity == null) {
            entity = new TagType();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java
New file
@@ -0,0 +1,31 @@
package cn.lili.modules.lmk.domain.query;
import cn.lili.base.AbsQuery;
import cn.lili.group.Add;
import cn.lili.group.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * 视频标签查询
 *
 * @author xp
 * @since 2025-05-13
 */
@Data
@ApiModel(value = "Tag查询参数", description = "标签查询参数")
public class TagQuery extends AbsQuery {
    @ApiModelProperty("标签名称")
    private String tagName;
    @ApiModelProperty("标签分类")
    private String tagTypeId;
}
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagTypeQuery.java
New file
@@ -0,0 +1,33 @@
package cn.lili.modules.lmk.domain.query;
import cn.lili.base.AbsQuery;
import cn.lili.group.Add;
import cn.lili.group.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * 视频标签查询
 *
 * @author xp
 * @since 2025-05-13
 */
@Data
@ApiModel(value = "Tag分类查询参数", description = "标签分类查询参数")
public class TagTypeQuery extends AbsQuery {
    @ApiModelProperty("标签名称")
    private String tagTypeName;
    @ApiModelProperty("分类标识")
    private String typeKey;
    @ApiModelProperty("父节点")
    private String parentId;
}
framework/src/main/java/cn/lili/modules/lmk/domain/query/WxKitchenVideoQuery.java
New file
@@ -0,0 +1,28 @@
package cn.lili.modules.lmk.domain.query;
import cn.lili.base.AbsQuery;
import cn.lili.modules.lmk.enums.general.VideoTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 微信小程序大健康查询参数
 *
 * @author wp
 * @since 2025-05-16
 */
@Data
@ApiModel(value = "微信小程序大健康查询参数", description = "微信小程序大健康查询参数")
public class WxKitchenVideoQuery extends AbsQuery {
    /**
     * @see VideoTypeEnum
     */
    @ApiModelProperty("视频类型:视频、大健康、神厨,默认不传查视频")
    private String videoType = VideoTypeEnum.COOK.getValue();
    @ApiModelProperty("厨神视频标签id")
    private String kitchenTypeId;
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagTypeVO.java
New file
@@ -0,0 +1,50 @@
package cn.lili.modules.lmk.domain.vo;
import cn.lili.base.AbsVo;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.entity.TagType;
import cn.lili.modules.lmk.domain.entity.VideoTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
 * 视频标签展示
 *
 * @author xp
 * @since 2025-05-13
 */
@Data
@ApiModel(value = "标签分类响应数据", description = "标签分类响应数据")
public class TagTypeVO extends AbsVo {
    @ApiModelProperty("标签名称")
    private String tagTypeName;
    @ApiModelProperty("分类标识")
    private String typeKey;
    @ApiModelProperty("父节点")
    private String parentId;
    @ApiModelProperty("序号")
    private Integer sortNum;
    private List<TagVO> children;
    public static TagTypeVO getVoByEntity(@NonNull TagType entity, TagTypeVO vo) {
        if (vo == null) {
            vo = new TagTypeVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagVO.java
New file
@@ -0,0 +1,48 @@
package cn.lili.modules.lmk.domain.vo;
import cn.lili.base.AbsVo;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.entity.Tag;
import cn.lili.modules.lmk.domain.entity.VideoTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * 视频标签展示
 *
 * @author xp
 * @since 2025-05-13
 */
@Data
@ApiModel(value = "标签响应数据", description = "标签响应数据")
public class TagVO extends AbsVo {
    @ApiModelProperty("标签名称")
    private String tagName;
    @ApiModelProperty("标签分类")
    private String tagTypeId;
    @ApiModelProperty("标签分类")
    private String tagTypeName;
    @ApiModelProperty("序号")
    private Integer sortNum;
    public static TagVO getVoByEntity(@NonNull Tag entity, TagVO vo) {
        if (vo == null) {
            vo = new TagVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
}
framework/src/main/java/cn/lili/modules/lmk/enums/general/TagTypeKeyEnum.java
New file
@@ -0,0 +1,55 @@
package cn.lili.modules.lmk.enums.general;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Getter
public enum TagTypeKeyEnum {
    USER("USER", "用户"),
    GOODS("GOODS", "商品");
    private final String value;
    private final String desc;
    TagTypeKeyEnum(String value, String desc) {
        this.value = value;
        this.desc = desc;
    }
    /**
     * 获取含义
     *
     * @param value
     * @return
     */
    public static String getDescByValue(String value) {
        if (StringUtils.isBlank(value)) {
            return null;
        }
        for (TagTypeKeyEnum e : TagTypeKeyEnum.values()) {
            if (value.equals(e.getValue())) {
                return e.getDesc();
            }
        }
        return null;
    }
    public static List<Map<String, Object>> getList() {
        return Arrays.stream(TagTypeKeyEnum.values())
                .map(e -> {
                    Map<String, Object> map = new LinkedHashMap<>();
                    map.put("value", e.getValue());
                    map.put("label", e.getDesc());
                    return map;
                })
                .collect(Collectors.toList());
    }
}
framework/src/main/java/cn/lili/modules/lmk/mapper/TagMapper.java
New file
@@ -0,0 +1,21 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.Tag;
import cn.lili.modules.lmk.domain.query.TagQuery;
import cn.lili.modules.lmk.domain.vo.TagVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * 视频标签 Mapper 接口
 *
 * @author xp
 * @since 2025-05-13
 */
@Mapper
public interface TagMapper extends BaseMapper<Tag> {
    IPage<TagVO> getPage(IPage<TagVO> page, @Param("query") TagQuery query);
}
framework/src/main/java/cn/lili/modules/lmk/mapper/TagTypeMapper.java
New file
@@ -0,0 +1,24 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.TagType;
import cn.lili.modules.lmk.domain.vo.TagTypeVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 视频标签 Mapper 接口
 *
 * @author xp
 * @since 2025-05-13
 */
@Mapper
public interface TagTypeMapper extends BaseMapper<TagType> {
    List<TagTypeVO> getTree(@Param("typeKey") String typeKey, @Param("tagTypeName") String tagTypeName);
    List<TagTypeVO> getByParentId(@Param("id") String id);
}
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
@@ -48,6 +48,9 @@
    IPage recommendHealthVideo(IPage page, @Param("query") WxHealthVideoQuery query);
    IPage wxKitchenVideoQuery(IPage page, @Param("query") WxKitchenVideoQuery query);
    /**
     * 批量更新视频收藏数量
     *
framework/src/main/java/cn/lili/modules/lmk/service/TagService.java
New file
@@ -0,0 +1,67 @@
package cn.lili.modules.lmk.service;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.Tag;
import cn.lili.modules.lmk.domain.form.TagForm;
import cn.lili.modules.lmk.domain.query.TagQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * 标签 服务类
 *
 * @author xp
 * @since 2025-05-13
 */
public interface TagService extends IService<Tag> {
    /**
     * 添加
     *
     * @param form
     * @return
     */
    Result add(TagForm form);
    /**
     * 修改
     *
     * @param form
     * @return
     */
    Result update(TagForm form);
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    Result remove(List<String> ids);
    /**
     * id删除
     *
     * @param id
     * @return
     */
    Result removeById(String id);
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    Result page(TagQuery query);
    /**
     * 列表
     *
     * @param tagName
     * @return
     */
    Result all(String tagName);
}
framework/src/main/java/cn/lili/modules/lmk/service/TagTypeService.java
New file
@@ -0,0 +1,60 @@
package cn.lili.modules.lmk.service;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.TagType;
import cn.lili.modules.lmk.domain.form.TagTypeForm;
import cn.lili.modules.lmk.domain.query.TagTypeQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * 标签分类 服务类
 *
 * @author xp
 * @since 2025-05-13
 */
public interface TagTypeService extends IService<TagType> {
    /**
     * 添加
     *
     * @param form
     * @return
     */
    Result add(TagTypeForm form);
    /**
     * 修改
     *
     * @param form
     * @return
     */
    Result update(TagTypeForm form);
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    Result remove(List<String> ids);
    /**
     * id删除
     *
     * @param id
     * @return
     */
    Result removeById(String id);
    /**
     * 列表
     *
     * @param tagTypeName
     * @return
     */
    Result getTree(String keyType, String tagTypeName);
}
framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
@@ -126,6 +126,10 @@
    Result healthRecommendVideo(WxHealthVideoQuery query);
    Result kitchenTypeList();
    Result kitchenRecommendVideo(WxKitchenVideoQuery query);
    /**
     * 批量更新视频收藏数量
     *
framework/src/main/java/cn/lili/modules/lmk/service/impl/TagServiceImpl.java
New file
@@ -0,0 +1,129 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.Tag;
import cn.lili.modules.lmk.domain.form.TagForm;
import cn.lili.modules.lmk.domain.query.TagQuery;
import cn.lili.modules.lmk.domain.vo.TagVO;
import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
import cn.lili.modules.lmk.mapper.TagMapper;
import cn.lili.modules.lmk.service.TagService;
import cn.lili.utils.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 视频标签 服务实现类
 *
 * @author xp
 * @since 2025-05-13
 */
@Service
@RequiredArgsConstructor
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {
    /**
     * 添加
     *
     * @param form
     * @return
     */
    @Override
    public Result add(TagForm form) {
        Tag entity = TagForm.getEntityByForm(form, null);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
    /**
     * 修改
     *
     * @param form
     * @return
     */
    @Override
    public Result update(TagForm form) {
        Tag entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @Override
    public Result remove(List<String> ids) {
        baseMapper.deleteBatchIds(ids);
        return Result.ok("删除成功");
    }
    /**
     * id删除
     *
     * @param id
     * @return
     */
    @Override
    public Result removeById(String id) {
        baseMapper.deleteById(id);
        return Result.ok("删除成功");
    }
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    @Override
    public Result page(TagQuery query) {
        IPage<TagVO> page = PageUtil.getPage(query, TagVO.class);
        page = baseMapper.getPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
     * 列表
     *
     * @param tagName
     * @return
     */
    @Override
    public Result all(String tagName) {
//        List<Tag> entities = new LambdaQueryChainWrapper<>(baseMapper)
//                .select(Tag::getId, Tag::getTagName)
//                .like(StringUtils.isNotBlank(tagName), Tag::getTagName, tagName)
//                .orderByDesc(Tag::getUseNum)
//                .list();
//        List<SimpleTagVO> vos = entities.stream()
//                .map(entity -> {
//                    SimpleTagVO vo = new SimpleTagVO();
//                    BeanUtils.copyProperties(entity, vo);
//                    return vo;
//                })
//                .collect(Collectors.toList());
//        return Result.ok().data(vos);
        return Result.ok().data(new ArrayList<>());
    }
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/TagTypeServiceImpl.java
New file
@@ -0,0 +1,108 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.TagType;
import cn.lili.modules.lmk.domain.form.TagForm;
import cn.lili.modules.lmk.domain.form.TagTypeForm;
import cn.lili.modules.lmk.domain.query.TagQuery;
import cn.lili.modules.lmk.domain.query.TagTypeQuery;
import cn.lili.modules.lmk.domain.vo.TagTypeVO;
import cn.lili.modules.lmk.domain.vo.TagVO;
import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
import cn.lili.modules.lmk.mapper.TagMapper;
import cn.lili.modules.lmk.mapper.TagTypeMapper;
import cn.lili.modules.lmk.service.TagService;
import cn.lili.modules.lmk.service.TagTypeService;
import cn.lili.utils.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 视频标签 服务实现类
 *
 * @author xp
 * @since 2025-05-13
 */
@Service
@RequiredArgsConstructor
public class TagTypeServiceImpl extends ServiceImpl<TagTypeMapper, TagType> implements TagTypeService {
    /**
     * 添加
     *
     * @param form
     * @return
     */
    @Override
    public Result add(TagTypeForm form) {
        TagType entity = TagTypeForm.getEntityByForm(form, null);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
    /**
     * 修改
     *
     * @param form
     * @return
     */
    @Override
    public Result update(TagTypeForm form) {
        TagType entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @Override
    public Result remove(List<String> ids) {
        baseMapper.deleteBatchIds(ids);
        return Result.ok("删除成功");
    }
    /**
     * id删除
     *
     * @param id
     * @return
     */
    @Override
    public Result removeById(String id) {
        baseMapper.deleteById(id);
        return Result.ok("删除成功");
    }
    /**
     * 列表
     *
     * @param tagTypeName
     * @return
     */
    @Override
    public Result getTree(String keyType, String tagTypeName) {
        List<TagTypeVO> list = baseMapper.getTree(keyType, tagTypeName);
        return Result.ok().data(list);
    }
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -56,7 +56,7 @@
    private final VideoAccountService videoAccountService;
    private final KitchenVideoTypeRefService kitchenVideoTypeRefService;
    private final VideoGoodsService videoGoodsService;
    private final KitchenTypeService kitchenTypeService;
    /**
     * 添加
@@ -419,6 +419,25 @@
    }
    @Override
    public Result kitchenTypeList() {
        List<KitchenType> list = kitchenTypeService.list(Wrappers.<KitchenType>lambdaQuery().orderByAsc(KitchenType::getSortNum));
        return Result.ok().data(list);
    }
    @Override
    public Result kitchenRecommendVideo(WxKitchenVideoQuery query) {
        IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
         baseMapper.wxKitchenVideoQuery(page, query);
         page.getRecords().forEach(v -> {
             if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) {
                 v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
                 v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey()));
             }
         });
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateCollectNumBatch(List<CollectTypeNumVO> numList) {
        // 按500条数据进行拆分
framework/src/main/resources/mapper/lmk/TagMapper.xml
New file
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.lili.modules.lmk.mapper.TagMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.TagVO">
        <id column="id" property="id"/>
        <result column="tag_type_id" property="tagTypeId"/>
        <result column="tag_type_name" property="tagTypeName"/>
        <result column="tag_name" property="tagName"/>
        <result column="sort_num" property="sortNum"/>
    </resultMap>
    <select id="getPage" resultMap="BaseResultMap">
        select t.id,t.tag_type_id,t.tag_name,t.sort_num,tt.tag_type_name as tag_type_name
        from lmk_tag t
        left join lmk_tag_type tt on t.tag_type_id = tt.id
        where t.delete_flag = false
        <if test="query.tagName != null and query.tagName  != ''">
            and t.tag_name like concat('%',#{query.tagName},'%')
        </if>
        <if test="query.tagTypeId != null and query.tagTypeId  != ''">
            and t.tag_type_id like concat('%',#{query.tagTypeId},'%')
        </if>
        order by t.sort_num
    </select>
</mapper>
framework/src/main/resources/mapper/lmk/TagTypeMapper.xml
New file
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.lili.modules.lmk.mapper.TagTypeMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.TagTypeVO">
        <id column="id" property="id"/>
        <result column="tag_type_name" property="tagTypeName"/>
        <result column="type_key" property="typeKey"/>
        <result column="parent_id" property="parentId"/>
        <result column="sort_num" property="sortNum"/>
        <collection property="children" ofType="cn.lili.modules.lmk.domain.vo.TagVO"
                    select="cn.lili.modules.lmk.mapper.TagTypeMapper.getByParentId" column="id">
        </collection>
    </resultMap>
    <select id="getByParentId" resultMap="BaseResultMap">
        select *
        from lmk_tag_type
        where delete_flag = false
          and parent_id = #{id}
        order by sort_num asc
    </select>
    <select id="getTree" resultMap="BaseResultMap">
        select *
        from lmk_tag_type
        where delete_flag = false
        <if test="tagTypeName != null and tagTypeName!=''">
            and tag_type_name like concat('%',#{tagTypeName},'%')
        </if>
        <if test="tagTypeName == null or tagTypeName==''">
            and parent_id = 0
        </if>
        <if test="typeKey != null">
            and type_key = #{typeKey}
        </if>
        order by sort_num asc
    </select>
</mapper>
framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -263,6 +263,41 @@
        AND LV.video_content_type = 'video'
    </select>
    <select id="wxKitchenVideoQuery" resultMap="WxResultMap">
        SELECT
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.comment_num,
            LV.collect_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LAU.nick_name AS authorName,
            LAU.avatar AS authorAvatar
        FROM
            lmk_video LV
            LEFT JOIN li_admin_user LAU ON LV.author_id = LAU.id
        <if test="query.kitchenTypeId !=null and query.kitchenTypeId !=''">
            JOIN (SELECT DISTINCT video_id FROM lmk_kitchen_video_type_ref WHERE kitchen_type_id = #{query.kitchenTypeId}) VT ON VT.video_id = LV.id
        </if>
        WHERE
            LV.delete_flag = 0 AND LV.status = '1' AND LV.video_type = #{query.videoType}
        AND LV.video_content_type = 'video'
    </select>
    <update id="updateCollectNumBatch">
        UPDATE lmk_video
manager-api/src/main/java/cn/lili/controller/lmk/TagController.java
New file
@@ -0,0 +1,63 @@
package cn.lili.controller.lmk;
import cn.lili.base.Result;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.form.TagForm;
import cn.lili.modules.lmk.domain.query.TagQuery;
import cn.lili.modules.lmk.service.TagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
 * 视频标签 前端控制器
 *
 * @author xp
 * @since 2025-05-13
 */
@Validated
@RequiredArgsConstructor
@Api(value = "标签", tags = "标签管理")
@RestController
@RequestMapping("/manager/lmk/tag")
public class TagController {
    private final TagService tagService;
    @PostMapping
    @ApiOperation(value = "添加", notes = "添加")
    public Result add(@RequestBody @Validated(Add.class) TagForm form) {
        return tagService.add(form);
    }
    @PutMapping
    @ApiOperation(value = "修改", notes = "修改")
    public Result update(@RequestBody @Validated(Update.class) TagForm form) {
        return tagService.update(form);
    }
    @DeleteMapping("/{id}")
    @ApiOperation(value = "ID删除", notes = "ID删除")
    public Result removeById(@PathVariable("id") String id) {
        return tagService.removeById(id);
    }
    @DeleteMapping("/batch")
    @ApiOperation(value = "批量删除", notes = "批量删除")
    public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) {
        return tagService.remove(ids);
    }
    @GetMapping("/page")
    @ApiOperation(value = "分页", notes = "分页")
    public Result page(TagQuery query) {
        return tagService.page(query);
    }
}
manager-api/src/main/java/cn/lili/controller/lmk/TagTypeController.java
New file
@@ -0,0 +1,71 @@
package cn.lili.controller.lmk;
import cn.lili.base.Result;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.form.TagTypeForm;
import cn.lili.modules.lmk.domain.query.TagTypeQuery;
import cn.lili.modules.lmk.enums.general.TagTypeKeyEnum;
import cn.lili.modules.lmk.service.TagTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
 * 视频标签 前端控制器
 *
 * @author xp
 * @since 2025-05-13
 */
@Validated
@RequiredArgsConstructor
@Api(value = "标签分类", tags = "标签分类管理")
@RestController
@RequestMapping("/manager/lmk/tag-type")
public class TagTypeController {
    private final TagTypeService tagTypeService;
    @PostMapping
    @ApiOperation(value = "添加", notes = "添加")
    public Result add(@RequestBody @Validated(Add.class) TagTypeForm form) {
        return tagTypeService.add(form);
    }
    @PutMapping
    @ApiOperation(value = "修改", notes = "修改")
    public Result update(@RequestBody @Validated(Update.class) TagTypeForm form) {
        return tagTypeService.update(form);
    }
    @DeleteMapping("/{id}")
    @ApiOperation(value = "ID删除", notes = "ID删除")
    public Result removeById(@PathVariable("id") String id) {
        return tagTypeService.removeById(id);
    }
    @DeleteMapping("/batch")
    @ApiOperation(value = "批量删除", notes = "批量删除")
    public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) {
        return tagTypeService.remove(ids);
    }
    @GetMapping("/list")
    @ApiOperation(value = "列表", notes = "列表")
    public Result list(String tagTypeName) {
        return tagTypeService.getTree(null, tagTypeName);
    }
    @GetMapping("/key/list")
    @ApiOperation(value = "keyType列表", notes = "keyType列表")
    public Result keyList() {
        return Result.ok().data(TagTypeKeyEnum.getList());
    }
}
manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java
@@ -13,6 +13,7 @@
import cn.lili.modules.order.order.entity.dto.OrderSearchParams;
import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
import cn.lili.modules.order.order.entity.vo.OrderSimpleVO;
import cn.lili.modules.order.order.service.OrderPackageService;
import cn.lili.modules.order.order.service.OrderPriceService;
import cn.lili.modules.order.order.service.OrderService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -48,6 +49,9 @@
     */
    @Autowired
    private OrderPriceService orderPriceService;
    @Autowired
    private OrderPackageService orderPackageService;
    @ApiOperation(value = "查询订单列表分页")
@@ -128,6 +132,10 @@
        return ResultUtil.data(orderService.getTraces(orderSn));
    }
    @GetMapping(value = "/getPackage/{orderSn}")
    public ResultMessage<Object> getPackage(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
        return ResultUtil.data(orderPackageService.getOrderPackageVOList(orderSn));
    }
    @ApiOperation(value = "卖家订单备注")
    @PutMapping("/{orderSn}/sellerRemark")
    public ResultMessage<Object> sellerRemark(@PathVariable String orderSn, @RequestParam String sellerRemark) {
manager-api/src/main/resources/apiclient_cert.p12
Binary files differ
manager-api/src/main/resources/apiclient_cert.pem
New file
@@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEKzCCAxOgAwIBAgIUQI+FRbtTLFAdR9seUI0sqtgzEHcwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjUwNDAxMDU0NDU0WhcNMzAwMzMxMDU0NDU0WjCBhDETMBEGA1UEAwwK
MTcxMjU3NzU5MDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL
DCfmt7HlnLPnvo7nm4rnrZDlhpzkuJrnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV
BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMpJI0pxouUDKZGtpIytAnLQSZMgltCGEmfuuFaMRN0eqiPJHbo0
EUiRfJNUCBcFsf71iW5bSA2oxyPxh1oljalUDagBWng+3zaXBoFOHrWoswd0B9u1
GdTX/9LEBiLu3MqENckHxI/hx22HuK0vEg2VFroj+5IBIf+KnJoyAkfCH5e8Ea+t
FCHlsZa5GqC3iAIB+JTmdSHTRKVfjWHGfGLmhHZt/intLDstlKP8IRbtTR9CRXE3
Q5mVYURGzQ0VOe9zPGZE2CQ5Zd4ETOHwLRJy78nls4Eqn1D1UOZD88uSSi65MM86
msjnH1u3upH1yeTT1Gr4Zvjz8FTjzVAzjL8CAwEAAaOBuTCBtjAJBgNVHRMEAjAA
MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2
Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD
MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC
MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQAf
BTOdG7IOxZGUujH83E0RULUcAFy/fIhwM15ZgI7dflCNO3n3Vlx3Q/NuHEKS70hH
kdmNCjusIMVDr8vixYwD3rQ6Dw5oi0DNWihLyj99JdqZlcxHSYsmuFXXWAzpvl1q
wwAqF1RrrBkoK8T1L3SzZsBRwJcjPZAtQmdaYyZ2wc0RN0LmJQ26Kr+AWTsQ/4NK
QC2dlIhRRCQzurBt4Y9s75iDnkckDZx82vJ2pCYAIgcPJRLTQ+06wRnMXajaEicN
lXknSrML7I4jM5zOHzuj7RkviFpTdXep1Tk+4E0pN6pXxLyR7uNJ0YuJqnqcdlTY
Di0KGtJMK0iUNMKQnFGA
-----END CERTIFICATE-----
manager-api/src/main/resources/apiclient_key.pem
New file
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKSSNKcaLlAymR
raSMrQJy0EmTIJbQhhJn7rhWjETdHqojyR26NBFIkXyTVAgXBbH+9YluW0gNqMcj
8YdaJY2pVA2oAVp4Pt82lwaBTh61qLMHdAfbtRnU1//SxAYi7tzKhDXJB8SP4cdt
h7itLxINlRa6I/uSASH/ipyaMgJHwh+XvBGvrRQh5bGWuRqgt4gCAfiU5nUh00Sl
X41hxnxi5oR2bf4p7Sw7LZSj/CEW7U0fQkVxN0OZlWFERs0NFTnvczxmRNgkOWXe
BEzh8C0Scu/J5bOBKp9Q9VDmQ/PLkkouuTDPOprI5x9bt7qR9cnk09Rq+Gb48/BU
481QM4y/AgMBAAECggEAdJoeFp5USHA/OPL/4/siay43CvEBHif6WiCX74Ohelhf
uIsIcLnssIj0ZzRMCYFF7fJ5CrzhVsZQLB7gZ404EEAcMxi8no2XOy9pF4YBW7Nn
p0cx9Gp6/l6X31UROHe5m58EJeItYsbBnxhZ0rJMVLn4xMlTDQFMKLIsvRFQkS2F
ZHIFqklDP4kFMmpRlCdoLSTldYmFJ5AtepyXYimGA2dpYooDDhgR1FAudrybQFDh
A2h0iZTTmhABnbW3elL6PydjY4yszvM6I15a/eiynevXKVLyVYBHTV39XUOjJp6f
XpOW3nuxhkCK2xUfRgOgepxS+3/dauROtM4SQeo56QKBgQDsAoZwYRI0yeTYA0lo
m+QAwYGcbTaccKOghc6taIJi4xAOH5WloB6Uv+Wx3gn1DufOJt3yeF4/1+2W1oH6
9ZBZwNo98VqMg2oa4DxhX3Oa6v7VTqelFccGGZ+/Lim5bdMfcfapxlv8MB77OPJW
fCAA514hp2ydkkPprFtcPU1z9QKBgQDba1xyHpKmFuz7kju9OWLBq1x8v2GnOqW6
4ypfNob2ljYTK7BfldPupYF7VC4F6dZqqKlyJqe2rhgRWs49J772AHcGovEHaRsT
Pi63/EA3ASfi58MmuWI5Y/hFSnM6q14ZTnpD9ZKiInK8HFHjVCrCrfAE1G13/s+R
K+YpawTBYwKBgQCoqSlQWF69cObk5HxqkLWBQMiSdI4JgIm+5sELtdswNhq8LSAx
q9sO7JCG6ynsgklwTuBgLlsUfwhguk1LfoA5VBPjHn9aWXPTXxpnb+Ja/MM+xyYR
WR3RIzDBXIke5fhxyWzAaWxFLlKFsG2nFq98Vdw0asS5WtTDwpPLuFeInQKBgHHG
nv4x6jsjgikE7+Mz4YipUeEB4CI14AAjkTIj9SHiTBHuwpsd9vI1cgnAYckBMwTF
hm/BqY+pgKNnIbBGbtfi79VKIo+EKdz1joYq0CV1fPhE00W+NTerJe7QJyYR/E5F
ClM5AJsAH9x5FuE5IJ8oUGBAwq7JO1p8l/F8I9AfAoGBAMvLmGi36QRzv9VjQO1Z
S0yG9OjLqdexYl7ogZYW/ys1yZg9mYiFv1wjqkDhegiGM8QyNoUFq2d7cIFZtfz6
3wrcFn4JDW1l9VaB+IM2G4GEsgrZ4wLalKdCRR83KRvuTyjUKZYVvWNNrNzv0gp/
51l5UctJTdE2v4+9OTvpo8b2
-----END PRIVATE KEY-----
seller-api/src/main/resources/apiclient_cert.p12
Binary files differ
seller-api/src/main/resources/apiclient_cert.pem
New file
@@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEKzCCAxOgAwIBAgIUQI+FRbtTLFAdR9seUI0sqtgzEHcwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjUwNDAxMDU0NDU0WhcNMzAwMzMxMDU0NDU0WjCBhDETMBEGA1UEAwwK
MTcxMjU3NzU5MDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL
DCfmt7HlnLPnvo7nm4rnrZDlhpzkuJrnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV
BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMpJI0pxouUDKZGtpIytAnLQSZMgltCGEmfuuFaMRN0eqiPJHbo0
EUiRfJNUCBcFsf71iW5bSA2oxyPxh1oljalUDagBWng+3zaXBoFOHrWoswd0B9u1
GdTX/9LEBiLu3MqENckHxI/hx22HuK0vEg2VFroj+5IBIf+KnJoyAkfCH5e8Ea+t
FCHlsZa5GqC3iAIB+JTmdSHTRKVfjWHGfGLmhHZt/intLDstlKP8IRbtTR9CRXE3
Q5mVYURGzQ0VOe9zPGZE2CQ5Zd4ETOHwLRJy78nls4Eqn1D1UOZD88uSSi65MM86
msjnH1u3upH1yeTT1Gr4Zvjz8FTjzVAzjL8CAwEAAaOBuTCBtjAJBgNVHRMEAjAA
MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2
Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD
MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC
MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQAf
BTOdG7IOxZGUujH83E0RULUcAFy/fIhwM15ZgI7dflCNO3n3Vlx3Q/NuHEKS70hH
kdmNCjusIMVDr8vixYwD3rQ6Dw5oi0DNWihLyj99JdqZlcxHSYsmuFXXWAzpvl1q
wwAqF1RrrBkoK8T1L3SzZsBRwJcjPZAtQmdaYyZ2wc0RN0LmJQ26Kr+AWTsQ/4NK
QC2dlIhRRCQzurBt4Y9s75iDnkckDZx82vJ2pCYAIgcPJRLTQ+06wRnMXajaEicN
lXknSrML7I4jM5zOHzuj7RkviFpTdXep1Tk+4E0pN6pXxLyR7uNJ0YuJqnqcdlTY
Di0KGtJMK0iUNMKQnFGA
-----END CERTIFICATE-----
seller-api/src/main/resources/apiclient_key.pem
New file
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKSSNKcaLlAymR
raSMrQJy0EmTIJbQhhJn7rhWjETdHqojyR26NBFIkXyTVAgXBbH+9YluW0gNqMcj
8YdaJY2pVA2oAVp4Pt82lwaBTh61qLMHdAfbtRnU1//SxAYi7tzKhDXJB8SP4cdt
h7itLxINlRa6I/uSASH/ipyaMgJHwh+XvBGvrRQh5bGWuRqgt4gCAfiU5nUh00Sl
X41hxnxi5oR2bf4p7Sw7LZSj/CEW7U0fQkVxN0OZlWFERs0NFTnvczxmRNgkOWXe
BEzh8C0Scu/J5bOBKp9Q9VDmQ/PLkkouuTDPOprI5x9bt7qR9cnk09Rq+Gb48/BU
481QM4y/AgMBAAECggEAdJoeFp5USHA/OPL/4/siay43CvEBHif6WiCX74Ohelhf
uIsIcLnssIj0ZzRMCYFF7fJ5CrzhVsZQLB7gZ404EEAcMxi8no2XOy9pF4YBW7Nn
p0cx9Gp6/l6X31UROHe5m58EJeItYsbBnxhZ0rJMVLn4xMlTDQFMKLIsvRFQkS2F
ZHIFqklDP4kFMmpRlCdoLSTldYmFJ5AtepyXYimGA2dpYooDDhgR1FAudrybQFDh
A2h0iZTTmhABnbW3elL6PydjY4yszvM6I15a/eiynevXKVLyVYBHTV39XUOjJp6f
XpOW3nuxhkCK2xUfRgOgepxS+3/dauROtM4SQeo56QKBgQDsAoZwYRI0yeTYA0lo
m+QAwYGcbTaccKOghc6taIJi4xAOH5WloB6Uv+Wx3gn1DufOJt3yeF4/1+2W1oH6
9ZBZwNo98VqMg2oa4DxhX3Oa6v7VTqelFccGGZ+/Lim5bdMfcfapxlv8MB77OPJW
fCAA514hp2ydkkPprFtcPU1z9QKBgQDba1xyHpKmFuz7kju9OWLBq1x8v2GnOqW6
4ypfNob2ljYTK7BfldPupYF7VC4F6dZqqKlyJqe2rhgRWs49J772AHcGovEHaRsT
Pi63/EA3ASfi58MmuWI5Y/hFSnM6q14ZTnpD9ZKiInK8HFHjVCrCrfAE1G13/s+R
K+YpawTBYwKBgQCoqSlQWF69cObk5HxqkLWBQMiSdI4JgIm+5sELtdswNhq8LSAx
q9sO7JCG6ynsgklwTuBgLlsUfwhguk1LfoA5VBPjHn9aWXPTXxpnb+Ja/MM+xyYR
WR3RIzDBXIke5fhxyWzAaWxFLlKFsG2nFq98Vdw0asS5WtTDwpPLuFeInQKBgHHG
nv4x6jsjgikE7+Mz4YipUeEB4CI14AAjkTIj9SHiTBHuwpsd9vI1cgnAYckBMwTF
hm/BqY+pgKNnIbBGbtfi79VKIo+EKdz1joYq0CV1fPhE00W+NTerJe7QJyYR/E5F
ClM5AJsAH9x5FuE5IJ8oUGBAwq7JO1p8l/F8I9AfAoGBAMvLmGi36QRzv9VjQO1Z
S0yG9OjLqdexYl7ogZYW/ys1yZg9mYiFv1wjqkDhegiGM8QyNoUFq2d7cIFZtfz6
3wrcFn4JDW1l9VaB+IM2G4GEsgrZ4wLalKdCRR83KRvuTyjUKZYVvWNNrNzv0gp/
51l5UctJTdE2v4+9OTvpo8b2
-----END PRIVATE KEY-----