From 28e85b011d662ef7b42216993f1f91d79b4d93c4 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期日, 04 一月 2026 11:11:20 +0800
Subject: [PATCH] 私厨定制
---
framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdImg.java | 38
framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTagMapper.java | 34
framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenTag.java | 35
framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenCustomizeForm.java | 76 +
framework/src/main/java/cn/lili/modules/lmk/service/impl/AdImgServiceImpl.java | 145 +++
framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenCustomizeVO.java | 83 ++
framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenCustomizeServiceImpl.java | 158 ++++
framework/src/main/java/cn/lili/modules/lmk/domain/form/AdCoverForm.java | 38
framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTagQuery.java | 33
framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenCustomizeQuery.java | 37
framework/src/main/java/cn/lili/modules/lmk/service/AdImgService.java | 67 +
framework/src/main/resources/mapper/lmk/KitchenCustomizeMapper.xml | 81 ++
framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdCover.java | 26
framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTagVO.java | 43 +
manager-api/src/main/java/cn/lili/controller/lmk/AdImgController.java | 76 +
framework/src/main/java/cn/lili/modules/lmk/service/AdCoverService.java | 67 +
framework/src/main/resources/mapper/lmk/AdCoverMapper.xml | 38
framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenCustomizeMapper.java | 34
manager-api/src/main/java/cn/lili/controller/lmk/AdCoverController.java | 76 +
framework/src/main/java/cn/lili/modules/lmk/domain/form/AdImgForm.java | 50 +
framework/src/main/java/cn/lili/modules/lmk/mapper/AdCoverMapper.java | 34
manager-api/src/main/java/cn/lili/controller/lmk/KitchenCustomizeController.java | 80 ++
framework/src/main/resources/mapper/lmk/KitchenTagMapper.xml | 50 +
framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenCustomize.java | 63 +
framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdCoverVO.java | 35
framework/src/main/java/cn/lili/modules/lmk/domain/query/AdCoverQuery.java | 22
framework/src/main/java/cn/lili/modules/lmk/domain/query/AdImgQuery.java | 22
framework/src/main/java/cn/lili/modules/lmk/service/impl/AdCoverServiceImpl.java | 145 +++
manager-api/src/main/java/cn/lili/controller/lmk/KitchenTagController.java | 81 ++
framework/src/main/java/cn/lili/modules/lmk/service/KitchenTagService.java | 69 +
framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTagServiceImpl.java | 151 +++
framework/src/main/java/cn/lili/modules/lmk/service/KitchenCustomizeService.java | 70 +
framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdImgVO.java | 47 +
framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTagForm.java | 50 +
framework/src/main/java/cn/lili/modules/lmk/enums/general/StoreCouponStausEnum.java | 9
framework/src/main/resources/mapper/lmk/AdImgMapper.xml | 47 +
buyer-api/src/main/java/cn/lili/controller/lmk/KitchenController.java | 65 +
framework/src/main/java/cn/lili/modules/lmk/mapper/AdImgMapper.java | 34
38 files changed, 2,309 insertions(+), 0 deletions(-)
diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/KitchenController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/KitchenController.java
new file mode 100644
index 0000000..83245c5
--- /dev/null
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/KitchenController.java
@@ -0,0 +1,65 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.service.AdCoverService;
+import cn.lili.modules.lmk.service.AdImgService;
+import cn.lili.modules.lmk.service.KitchenCustomizeService;
+import cn.lili.modules.lmk.service.KitchenTagService;
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 绉佸帹妯″潡
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "绉佸帹妯″潡", tags = "绉佸帹妯″潡")
+@RestController
+@RequestMapping("/buyer/lmk/kitchen")
+public class KitchenController {
+ private final KitchenCustomizeService kitchenCustomizeService;
+ private final AdCoverService adCoverService;
+ private final AdImgService adImgService;
+ private final KitchenTagService kitchenTagService;
+
+ /**
+ * 绉佸帹 banner
+ * @return banner 鍒楄〃
+ */
+ @GetMapping("/banner")
+ public Result getKitchenBanner(){
+ return adImgService.getKitchenBanner();
+ }
+
+ /**
+ * 绉佸帹鏍囩
+ * @return 绉佸帹鏍囩
+ */
+ @GetMapping("/kitchenTag")
+ public Result getKitchenTag(){
+ return kitchenTagService.getKitchenTag();
+ }
+
+ /**
+ * 绉佸帹鍟嗗搧
+ * @return 绉佸帹鍟嗗搧
+ */
+ @GetMapping("/kitchenGoods")
+ public Result getKitchenGoods(String id){
+ return kitchenCustomizeService.getKitchenGoods(id);
+ }
+
+ /**
+ * 鍘ㄥ笀灏侀潰
+ * @return 鍘ㄥ笀灏侀潰
+ */
+ @GetMapping("/kitchenCover")
+ public Result getKitchenCover(){
+ return adCoverService.getKitchenCover();
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdCover.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdCover.java
new file mode 100644
index 0000000..fcc41ec
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdCover.java
@@ -0,0 +1,26 @@
+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 java.io.Serializable;
+import lombok.Data;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@TableName("lmk_ad_cover")
+public class AdCover extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("cover_url")
+ /** 鍥剧墖鍦板潃 */
+ private String coverUrl;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdImg.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdImg.java
new file mode 100644
index 0000000..6a80cb7
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/AdImg.java
@@ -0,0 +1,38 @@
+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 java.io.Serializable;
+import lombok.Data;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@TableName("lmk_ad_img")
+public class AdImg extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("sort")
+ /** */
+ private Integer sort;
+
+ @TableField("open_type")
+ /** 鎵撳紑绫诲瀷 */
+ private String openType;
+
+ @TableField("direct_url")
+ /** 璺宠浆璺緞 */
+ private String directUrl;
+
+ @TableField("cover_url")
+ /** 鍥剧墖鍦板潃 */
+ private String coverUrl;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenCustomize.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenCustomize.java
new file mode 100644
index 0000000..58632c0
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenCustomize.java
@@ -0,0 +1,63 @@
+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 java.io.Serializable;
+import java.math.BigDecimal;
+import lombok.Data;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@TableName("lmk_kitchen_customize")
+public class KitchenCustomize extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("goods_id")
+ /** 鍟嗗搧id */
+ private String goodsId;
+
+ @TableField("sku_id")
+ /** skuId */
+ private String skuId;
+
+ @TableField("combo_name")
+ /** 濂楅鍚嶅瓧 */
+ private String comboName;
+
+ @TableField("remark")
+ /** 澶囨敞 */
+ private String remark;
+
+ @TableField("num")
+ /** 浜烘暟 */
+ private String num;
+
+ @TableField("cover_img")
+ /** 灏侀潰鍥剧墖 */
+ private String coverImg;
+
+ @TableField("orgin_price")
+ /** 鍘熶环 */
+ private BigDecimal orginPrice;
+
+ @TableField("tag_id")
+ /** 鏍囩id */
+ private String tagId;
+
+ @TableField("status")
+ /** 鍚敤鐘舵�� */
+ private String status;
+
+ @TableField("sort")
+ /** 鎺掑簭 */
+ private Integer sort;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenTag.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenTag.java
new file mode 100644
index 0000000..c90bba2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenTag.java
@@ -0,0 +1,35 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@TableName("lmk_kitchen_tag")
+public class KitchenTag extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("tag_name")
+ /** 鏍囩鍚嶇О */
+ private String tagName;
+
+ @TableField("sort")
+ /** 鏄剧ず椤哄簭 */
+ private Integer sort;
+ /**
+ * @see StoreCouponStausEnum
+ * 鍚敤鐘舵��
+ */
+ private String enable;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/AdCoverForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/AdCoverForm.java
new file mode 100644
index 0000000..80ce5d1
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/AdCoverForm.java
@@ -0,0 +1,38 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.base.AbsForm;
+import cn.lili.modules.lmk.domain.entity.AdCover;
+import org.springframework.beans.BeanUtils;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import org.springframework.lang.NonNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖琛ㄥ崟
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "AdCover琛ㄥ崟", description = "鍘ㄥ笀灏侀潰鍥剧墖琛ㄥ崟")
+public class AdCoverForm extends AbsForm {
+
+ @NotBlank(message = "鍥剧墖鍦板潃涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍥剧墖鍦板潃")
+ private String coverUrl;
+
+ public static AdCover getEntityByForm(@NonNull AdCoverForm form, AdCover entity) {
+ if(entity == null) {
+ entity = new AdCover();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/AdImgForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/AdImgForm.java
new file mode 100644
index 0000000..bd2b61c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/AdImgForm.java
@@ -0,0 +1,50 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.base.AbsForm;
+import cn.lili.modules.lmk.domain.entity.AdImg;
+import org.springframework.beans.BeanUtils;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import org.springframework.lang.NonNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖琛ㄥ崟
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "AdImg琛ㄥ崟", description = "绉佸帹瀹氬埗骞垮憡鍥剧墖琛ㄥ崟")
+public class AdImgForm extends AbsForm {
+
+// @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("")
+ private Integer sort;
+
+// @NotBlank(message = "鎵撳紑绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鎵撳紑绫诲瀷")
+ private String openType;
+
+// @NotBlank(message = "璺宠浆璺緞涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("璺宠浆璺緞")
+ private String directUrl;
+
+ @NotBlank(message = "鍥剧墖鍦板潃涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍥剧墖鍦板潃")
+ private String coverUrl;
+
+ public static AdImg getEntityByForm(@NonNull AdImgForm form, AdImg entity) {
+ if(entity == null) {
+ entity = new AdImg();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenCustomizeForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenCustomizeForm.java
new file mode 100644
index 0000000..9f80ac2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenCustomizeForm.java
@@ -0,0 +1,76 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.base.AbsForm;
+import cn.lili.modules.lmk.domain.entity.KitchenCustomize;
+import org.springframework.beans.BeanUtils;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import org.springframework.lang.NonNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡琛ㄥ崟
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "KitchenCustomize琛ㄥ崟", description = "鍘ㄥ笀瀹氬埗妯″潡琛ㄥ崟")
+public class KitchenCustomizeForm extends AbsForm {
+
+ @NotNull(message = "鍟嗗搧id涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍟嗗搧id")
+ private String goodsId;
+
+ @NotNull(message = "skuId涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("skuId")
+ private String skuId;
+
+ @NotBlank(message = "濂楅鍚嶅瓧涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("濂楅鍚嶅瓧")
+ private String comboName;
+
+ @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @NotBlank(message = "浜烘暟涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("浜烘暟")
+ private String num;
+
+ @NotBlank(message = "灏侀潰鍥剧墖涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("灏侀潰鍥剧墖")
+ private String coverImg;
+
+ @NotNull(message = "鍘熶环涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍘熶环")
+ private BigDecimal orginPrice;
+
+ @NotNull(message = "鏍囩id涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鏍囩id")
+ private String tagId;
+
+ @NotBlank(message = "鍚敤鐘舵�佷笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍚敤鐘舵��")
+ private String status;
+
+ @NotNull(message = "鎺掑簭涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鎺掑簭")
+ private Integer sort;
+
+ public static KitchenCustomize getEntityByForm(@NonNull KitchenCustomizeForm form, KitchenCustomize entity) {
+ if(entity == null) {
+ entity = new KitchenCustomize();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTagForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTagForm.java
new file mode 100644
index 0000000..49e23d3
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTagForm.java
@@ -0,0 +1,50 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.base.AbsForm;
+import cn.lili.modules.lmk.domain.entity.KitchenTag;
+import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
+import org.springframework.beans.BeanUtils;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import org.springframework.lang.NonNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩琛ㄥ崟
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "KitchenTag琛ㄥ崟", description = "绉佸帹瀹氬埗鏍囩琛ㄥ崟")
+public class KitchenTagForm extends AbsForm {
+
+ @NotBlank(message = "鏍囩鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagName;
+
+ @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鏄剧ず椤哄簭")
+ private Integer sort;
+
+ @NotNull(message = "鏄惁鍚敤", groups = {Add.class, Update.class})
+ @ApiModelProperty("鏄惁鍚敤")
+ /**
+ * @see StoreCouponStausEnum
+ */
+ private String enable;
+
+ public static KitchenTag getEntityByForm(@NonNull KitchenTagForm form, KitchenTag entity) {
+ if(entity == null) {
+ entity = new KitchenTag();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/AdCoverQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AdCoverQuery.java
new file mode 100644
index 0000000..52a7ada
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AdCoverQuery.java
@@ -0,0 +1,22 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖鏌ヨ
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "AdCover鏌ヨ鍙傛暟", description = "鍘ㄥ笀灏侀潰鍥剧墖鏌ヨ鍙傛暟")
+public class AdCoverQuery extends AbsQuery {
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/AdImgQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AdImgQuery.java
new file mode 100644
index 0000000..72f38be
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AdImgQuery.java
@@ -0,0 +1,22 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖鏌ヨ
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "AdImg鏌ヨ鍙傛暟", description = "绉佸帹瀹氬埗骞垮憡鍥剧墖鏌ヨ鍙傛暟")
+public class AdImgQuery extends AbsQuery {
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenCustomizeQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenCustomizeQuery.java
new file mode 100644
index 0000000..870080b
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenCustomizeQuery.java
@@ -0,0 +1,37 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import java.util.List;
+
+import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
+import org.springframework.lang.NonNull;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡鏌ヨ
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "KitchenCustomize鏌ヨ鍙傛暟", description = "鍘ㄥ笀瀹氬埗妯″潡鏌ヨ鍙傛暟")
+public class KitchenCustomizeQuery extends AbsQuery {
+ /**
+ * 鍒嗙被id
+ */
+ private String tagId;
+ /**
+ * @see StoreCouponStausEnum
+ * 鍚敤鐘舵��
+ */
+ private String status;
+ /**
+ * 濂楅鍚嶅瓧
+ */
+ private String comboName;
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTagQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTagQuery.java
new file mode 100644
index 0000000..4a0a306
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTagQuery.java
@@ -0,0 +1,33 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import java.util.List;
+
+import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
+import org.springframework.lang.NonNull;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩鏌ヨ
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "KitchenTag鏌ヨ鍙傛暟", description = "绉佸帹瀹氬埗鏍囩鏌ヨ鍙傛暟")
+public class KitchenTagQuery extends AbsQuery {
+ /**
+ * @see StoreCouponStausEnum
+ * 鍚敤鐘舵��
+ */
+ private String enable;
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ private String tagName;
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdCoverVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdCoverVO.java
new file mode 100644
index 0000000..c0cc16a
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdCoverVO.java
@@ -0,0 +1,35 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.AdCover;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖灞曠ず
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "鍘ㄥ笀灏侀潰鍥剧墖鍝嶅簲鏁版嵁", description = "鍘ㄥ笀灏侀潰鍥剧墖鍝嶅簲鏁版嵁")
+public class AdCoverVO extends AbsVo {
+
+ /** 鍥剧墖鍦板潃 */
+ @ApiModelProperty("鍥剧墖鍦板潃")
+ private String coverUrl;
+
+ public static AdCoverVO getVoByEntity(@NonNull AdCover entity, AdCoverVO vo) {
+ if(vo == null) {
+ vo = new AdCoverVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdImgVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdImgVO.java
new file mode 100644
index 0000000..bcbcf12
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/AdImgVO.java
@@ -0,0 +1,47 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.AdImg;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖灞曠ず
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "绉佸帹瀹氬埗骞垮憡鍥剧墖鍝嶅簲鏁版嵁", description = "绉佸帹瀹氬埗骞垮憡鍥剧墖鍝嶅簲鏁版嵁")
+public class AdImgVO extends AbsVo {
+
+ /** 鎺掑簭 */
+ @ApiModelProperty("鎺掑簭")
+ private Integer sort;
+
+ /** 鎵撳紑绫诲瀷 */
+ @ApiModelProperty("鎵撳紑绫诲瀷")
+ private String openType;
+
+ /** 璺宠浆璺緞 */
+ @ApiModelProperty("璺宠浆璺緞")
+ private String directUrl;
+
+ /** 鍥剧墖鍦板潃 */
+ @ApiModelProperty("鍥剧墖鍦板潃")
+ private String coverUrl;
+
+ public static AdImgVO getVoByEntity(@NonNull AdImg entity, AdImgVO vo) {
+ if(vo == null) {
+ vo = new AdImgVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenCustomizeVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenCustomizeVO.java
new file mode 100644
index 0000000..f1dc7ce
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenCustomizeVO.java
@@ -0,0 +1,83 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.KitchenCustomize;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡灞曠ず
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "鍘ㄥ笀瀹氬埗妯″潡鍝嶅簲鏁版嵁", description = "鍘ㄥ笀瀹氬埗妯″潡鍝嶅簲鏁版嵁")
+public class KitchenCustomizeVO extends AbsVo {
+
+ /** 鍟嗗搧id */
+ @ApiModelProperty("鍟嗗搧id")
+ private String goodsId;
+
+ /** skuId */
+ @ApiModelProperty("skuId")
+ private String skuId;
+
+ /** 濂楅鍚嶅瓧 */
+ @ApiModelProperty("濂楅鍚嶅瓧")
+ private String comboName;
+
+ /** 澶囨敞 */
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ /** 浜烘暟 */
+ @ApiModelProperty("浜烘暟")
+ private String num;
+
+ /** 灏侀潰鍥剧墖 */
+ @ApiModelProperty("灏侀潰鍥剧墖")
+ private String coverImg;
+
+ /** 鍘熶环 */
+ @ApiModelProperty("鍘熶环")
+ private BigDecimal orginPrice;
+
+ /** 鏍囩id */
+ @ApiModelProperty("鏍囩id")
+ private String tagId;
+
+ /** 鍚敤鐘舵�� */
+ @ApiModelProperty("鍚敤鐘舵��")
+ private String status;
+
+ /** 鎺掑簭 */
+ @ApiModelProperty("鎺掑簭")
+ private Integer sort;
+
+ /** 鍟嗗搧鍚嶇О */
+ @ApiModelProperty("鍟嗗搧鍚嶇О")
+ private String goodsName;
+
+ /** 浠锋牸 */
+ @ApiModelProperty("浠锋牸")
+ private BigDecimal price;
+
+ /** 鍥剧墖 */
+ @ApiModelProperty("鍥剧墖")
+ private String thumbnail;
+
+ public static KitchenCustomizeVO getVoByEntity(@NonNull KitchenCustomize entity, KitchenCustomizeVO vo) {
+ if(vo == null) {
+ vo = new KitchenCustomizeVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTagVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTagVO.java
new file mode 100644
index 0000000..e26a57c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTagVO.java
@@ -0,0 +1,43 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.KitchenTag;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩灞曠ず
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Data
+@ApiModel(value = "绉佸帹瀹氬埗鏍囩鍝嶅簲鏁版嵁", description = "绉佸帹瀹氬埗鏍囩鍝嶅簲鏁版嵁")
+public class KitchenTagVO extends AbsVo {
+
+ /** 鏍囩鍚嶇О */
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagName;
+
+ /** 鏄剧ず椤哄簭 */
+ @ApiModelProperty("鏄剧ず椤哄簭")
+ private Integer sort;
+
+ /** 鏄惁鍚敤 */
+ @ApiModelProperty("鏄惁鍚敤")
+ private String enable;
+
+ public static KitchenTagVO getVoByEntity(@NonNull KitchenTag entity, KitchenTagVO vo) {
+ if(vo == null) {
+ vo = new KitchenTagVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/enums/general/StoreCouponStausEnum.java b/framework/src/main/java/cn/lili/modules/lmk/enums/general/StoreCouponStausEnum.java
index 287ed75..8bf642c 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/enums/general/StoreCouponStausEnum.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/enums/general/StoreCouponStausEnum.java
@@ -10,5 +10,14 @@
private String des;
+ public static StoreCouponStausEnum select(String name){
+ for (StoreCouponStausEnum value : StoreCouponStausEnum.values()) {
+ if (value.name().equals(name)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/AdCoverMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/AdCoverMapper.java
new file mode 100644
index 0000000..195a563
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/AdCoverMapper.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.AdCover;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.AdCoverVO;
+import cn.lili.modules.lmk.domain.form.AdCoverForm;
+import cn.lili.modules.lmk.domain.query.AdCoverQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖 Mapper 鎺ュ彛
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Mapper
+public interface AdCoverMapper extends BaseMapper<AdCover> {
+
+ /**
+ * id鏌ユ壘鍘ㄥ笀灏侀潰鍥剧墖
+ * @param id
+ * @return
+ */
+ AdCoverVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") AdCoverQuery query);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/AdImgMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/AdImgMapper.java
new file mode 100644
index 0000000..f442428
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/AdImgMapper.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.AdImg;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.AdImgVO;
+import cn.lili.modules.lmk.domain.form.AdImgForm;
+import cn.lili.modules.lmk.domain.query.AdImgQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖 Mapper 鎺ュ彛
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Mapper
+public interface AdImgMapper extends BaseMapper<AdImg> {
+
+ /**
+ * id鏌ユ壘绉佸帹瀹氬埗骞垮憡鍥剧墖
+ * @param id
+ * @return
+ */
+ AdImgVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") AdImgQuery query);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenCustomizeMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenCustomizeMapper.java
new file mode 100644
index 0000000..55293cc
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenCustomizeMapper.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.KitchenCustomize;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.KitchenCustomizeVO;
+import cn.lili.modules.lmk.domain.form.KitchenCustomizeForm;
+import cn.lili.modules.lmk.domain.query.KitchenCustomizeQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡 Mapper 鎺ュ彛
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Mapper
+public interface KitchenCustomizeMapper extends BaseMapper<KitchenCustomize> {
+
+ /**
+ * id鏌ユ壘鍘ㄥ笀瀹氬埗妯″潡
+ * @param id
+ * @return
+ */
+ KitchenCustomizeVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") KitchenCustomizeQuery query);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTagMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTagMapper.java
new file mode 100644
index 0000000..9167d2d
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTagMapper.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.KitchenTag;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.KitchenTagVO;
+import cn.lili.modules.lmk.domain.form.KitchenTagForm;
+import cn.lili.modules.lmk.domain.query.KitchenTagQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩 Mapper 鎺ュ彛
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Mapper
+public interface KitchenTagMapper extends BaseMapper<KitchenTag> {
+
+ /**
+ * id鏌ユ壘绉佸帹瀹氬埗鏍囩
+ * @param id
+ * @return
+ */
+ KitchenTagVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") KitchenTagQuery query);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/AdCoverService.java b/framework/src/main/java/cn/lili/modules/lmk/service/AdCoverService.java
new file mode 100644
index 0000000..9ef9d83
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/AdCoverService.java
@@ -0,0 +1,67 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.AdCover;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.AdCoverForm;
+import cn.lili.modules.lmk.domain.query.AdCoverQuery;
+import java.util.List;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖 鏈嶅姟绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+public interface AdCoverService extends IService<AdCover> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(AdCoverForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(AdCoverForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(AdCoverQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+
+ Result getKitchenCover();
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/AdImgService.java b/framework/src/main/java/cn/lili/modules/lmk/service/AdImgService.java
new file mode 100644
index 0000000..737148d
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/AdImgService.java
@@ -0,0 +1,67 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.AdImg;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.AdImgForm;
+import cn.lili.modules.lmk.domain.query.AdImgQuery;
+import java.util.List;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖 鏈嶅姟绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+public interface AdImgService extends IService<AdImg> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(AdImgForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(AdImgForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(AdImgQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+
+ Result getKitchenBanner();
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/KitchenCustomizeService.java b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenCustomizeService.java
new file mode 100644
index 0000000..0e7ad62
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenCustomizeService.java
@@ -0,0 +1,70 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.KitchenCustomize;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.KitchenCustomizeForm;
+import cn.lili.modules.lmk.domain.query.KitchenCustomizeQuery;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡 鏈嶅姟绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+public interface KitchenCustomizeService extends IService<KitchenCustomize> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(KitchenCustomizeForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(KitchenCustomizeForm form);
+
+ Result updateStatus( String id , String status);
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(KitchenCustomizeQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+
+ Result getKitchenGoods(String id);
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/KitchenTagService.java b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenTagService.java
new file mode 100644
index 0000000..391880b
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenTagService.java
@@ -0,0 +1,69 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.KitchenTag;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.KitchenTagForm;
+import cn.lili.modules.lmk.domain.query.KitchenTagQuery;
+import java.util.List;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩 鏈嶅姟绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+public interface KitchenTagService extends IService<KitchenTag> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(KitchenTagForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(KitchenTagForm form);
+
+ Result updateStatus(String id,String status);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(KitchenTagQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+
+ Result getKitchenTag();
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/AdCoverServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/AdCoverServiceImpl.java
new file mode 100644
index 0000000..13477cf
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/AdCoverServiceImpl.java
@@ -0,0 +1,145 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.common.exception.ServiceException;
+import cn.lili.common.utils.StringUtils;
+import cn.lili.modules.lmk.domain.entity.AdImg;
+import cn.lili.utils.COSUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.AdCover;
+import cn.lili.modules.lmk.mapper.AdCoverMapper;
+import cn.lili.modules.lmk.service.AdCoverService;
+import cn.lili.base.Result;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.lili.modules.lmk.domain.form.AdCoverForm;
+import cn.lili.modules.lmk.domain.vo.AdCoverVO;
+import cn.lili.modules.lmk.domain.query.AdCoverQuery;
+import org.abego.treelayout.internal.util.java.lang.string.StringUtil;
+import org.springframework.stereotype.Service;
+import lombok.RequiredArgsConstructor;
+import cn.lili.utils.PageUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖 鏈嶅姟瀹炵幇绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Service
+@RequiredArgsConstructor
+public class AdCoverServiceImpl extends ServiceImpl<AdCoverMapper, AdCover> implements AdCoverService {
+
+ private final AdCoverMapper adCoverMapper;
+ private final COSUtil cosUtil;
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(AdCoverForm form) {
+ AdCover entity = AdCoverForm.getEntityByForm(form, null);
+ List<AdCover> adCovers = baseMapper.selectList(null);
+ if (!adCovers.isEmpty()) {
+ throw new ServiceException("宸茬粡鏈夊皝闈㈠瓨鍦ㄤ簡");
+ }
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(AdCoverForm form) {
+ AdCover entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ 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(AdCoverQuery query) {
+ IPage<AdCoverVO> page = PageUtil.getPage(query, AdCoverVO.class);
+ baseMapper.getPage(page, query);
+ for (AdCoverVO record : page.getRecords()) {
+ if (StringUtils.isNotBlank(record.getCoverUrl())&&!record.getCoverUrl().contains("http")) {
+ record.setCoverUrl(cosUtil.getPreviewUrl(record.getCoverUrl()));
+ }
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ AdCoverVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<AdCover> entities = baseMapper.selectList(null);
+ List<AdCoverVO> vos = entities.stream()
+ .map(entity -> AdCoverVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+
+ @Override
+ public Result getKitchenCover() {
+ List<AdCover> adCovers = baseMapper.selectList(null);
+ if (adCovers.size()>1) {
+ AdCover adImg = adCovers.get(0);
+ adCovers = new ArrayList<>();
+ adCovers.add(adImg);
+ }
+ return Result.ok().data(adCovers);
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/AdImgServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/AdImgServiceImpl.java
new file mode 100644
index 0000000..ebf2e8b
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/AdImgServiceImpl.java
@@ -0,0 +1,145 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.common.exception.ServiceException;
+import cn.lili.common.utils.StringUtils;
+import cn.lili.utils.COSUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.AdImg;
+import cn.lili.modules.lmk.mapper.AdImgMapper;
+import cn.lili.modules.lmk.service.AdImgService;
+import cn.lili.base.Result;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.lili.modules.lmk.domain.form.AdImgForm;
+import cn.lili.modules.lmk.domain.vo.AdImgVO;
+import cn.lili.modules.lmk.domain.query.AdImgQuery;
+import org.abego.treelayout.internal.util.java.lang.string.StringUtil;
+import org.springframework.stereotype.Service;
+import lombok.RequiredArgsConstructor;
+import cn.lili.utils.PageUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖 鏈嶅姟瀹炵幇绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Service
+@RequiredArgsConstructor
+public class AdImgServiceImpl extends ServiceImpl<AdImgMapper, AdImg> implements AdImgService {
+
+ private final AdImgMapper adImgMapper;
+ private final COSUtil cosUtil;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(AdImgForm form) {
+ AdImg entity = AdImgForm.getEntityByForm(form, null);
+ List<AdImg> adImgs = baseMapper.selectList(null);
+ if (!adImgs.isEmpty()) {
+ throw new ServiceException("褰撳墠灏侀潰鏈夊浘鐗囦簡");
+ }
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(AdImgForm form) {
+ AdImg entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ 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(AdImgQuery query) {
+ IPage<AdImgVO> page = PageUtil.getPage(query, AdImgVO.class);
+ baseMapper.getPage(page, query);
+ for (AdImgVO record : page.getRecords()) {
+ if (StringUtils.isNotBlank(record.getCoverUrl())&&!record.getCoverUrl().contains("http")) {
+ record.setCoverUrl(cosUtil.getPreviewUrl(record.getCoverUrl()));
+ }
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ AdImgVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<AdImg> entities = baseMapper.selectList(null);
+ List<AdImgVO> vos = entities.stream()
+ .map(entity -> AdImgVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+
+ @Override
+ public Result getKitchenBanner() {
+ List<AdImg> adImgs = baseMapper.selectList(null);
+ if (adImgs.size()>1) {
+ AdImg adImg = adImgs.get(0);
+ adImgs = new ArrayList<>();
+ adImgs.add(adImg);
+ }
+ return Result.ok().data(adImgs);
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenCustomizeServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenCustomizeServiceImpl.java
new file mode 100644
index 0000000..a9f7e82
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenCustomizeServiceImpl.java
@@ -0,0 +1,158 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.common.exception.ServiceException;
+import cn.lili.common.utils.StringUtils;
+import cn.lili.modules.lmk.domain.entity.KitchenTag;
+import cn.lili.modules.lmk.domain.vo.AdImgVO;
+import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
+import cn.lili.utils.COSUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.KitchenCustomize;
+import cn.lili.modules.lmk.mapper.KitchenCustomizeMapper;
+import cn.lili.modules.lmk.service.KitchenCustomizeService;
+import cn.lili.base.Result;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.lili.modules.lmk.domain.form.KitchenCustomizeForm;
+import cn.lili.modules.lmk.domain.vo.KitchenCustomizeVO;
+import cn.lili.modules.lmk.domain.query.KitchenCustomizeQuery;
+import org.springframework.stereotype.Service;
+import lombok.RequiredArgsConstructor;
+import cn.lili.utils.PageUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡 鏈嶅姟瀹炵幇绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Service
+@RequiredArgsConstructor
+public class KitchenCustomizeServiceImpl extends ServiceImpl<KitchenCustomizeMapper, KitchenCustomize> implements KitchenCustomizeService {
+
+ private final KitchenCustomizeMapper kitchenCustomizeMapper;
+ private final COSUtil cosUtil;
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(KitchenCustomizeForm form) {
+ KitchenCustomize entity = KitchenCustomizeForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(KitchenCustomizeForm form) {
+ KitchenCustomize entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ @Override
+ public Result updateStatus(String id, String status) {
+ if (StoreCouponStausEnum.select(status) == null) {
+ throw new ServiceException("褰撳墠鐘舵�佷笉瀛樺湪");
+ }
+ KitchenCustomize kitchenCustomize = baseMapper.selectById(id);
+ if (kitchenCustomize == null) {
+ throw new ServiceException("鍒嗙被涓嶅瓨鍦�");
+ }
+ kitchenCustomize.setStatus(status);
+ baseMapper.updateById(kitchenCustomize);
+ 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(KitchenCustomizeQuery query) {
+ IPage<KitchenCustomizeVO> page = PageUtil.getPage(query, KitchenCustomizeVO.class);
+ baseMapper.getPage(page, query);
+ for (KitchenCustomizeVO record : page.getRecords()) {
+ if (StringUtils.isNotBlank(record.getThumbnail())&&!record.getThumbnail().contains("http")) {
+ record.setThumbnail(cosUtil.getPreviewUrl(record.getThumbnail()));
+ }
+ if (StringUtils.isNotBlank(record.getCoverImg())&&!record.getCoverImg().contains("http")) {
+ record.setCoverImg(cosUtil.getPreviewUrl(record.getCoverImg()));
+ }
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ KitchenCustomizeVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<KitchenCustomize> entities = baseMapper.selectList(null);
+ List<KitchenCustomizeVO> vos = entities.stream()
+ .map(entity -> KitchenCustomizeVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+
+ @Override
+ public Result getKitchenGoods(String id) {
+ if (StringUtils.isBlank(id)) {
+ return Result.ok().data(new ArrayList<>());
+ }
+// kitchenCustomizeMapper.getKitchenGoods();
+ return null;
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTagServiceImpl.java
new file mode 100644
index 0000000..2f62bc9
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTagServiceImpl.java
@@ -0,0 +1,151 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.common.exception.ServiceException;
+import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.KitchenTag;
+import cn.lili.modules.lmk.mapper.KitchenTagMapper;
+import cn.lili.modules.lmk.service.KitchenTagService;
+import cn.lili.base.Result;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.lili.modules.lmk.domain.form.KitchenTagForm;
+import cn.lili.modules.lmk.domain.vo.KitchenTagVO;
+import cn.lili.modules.lmk.domain.query.KitchenTagQuery;
+import org.springframework.stereotype.Service;
+import lombok.RequiredArgsConstructor;
+import cn.lili.utils.PageUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.Assert;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩 鏈嶅姟瀹炵幇绫�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Service
+@RequiredArgsConstructor
+public class KitchenTagServiceImpl extends ServiceImpl<KitchenTagMapper, KitchenTag> implements KitchenTagService {
+
+ private final KitchenTagMapper kitchenTagMapper;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(KitchenTagForm form) {
+ if (StoreCouponStausEnum.select(form.getEnable()) == null) {
+ throw new ServiceException("褰撳墠鐘舵�佷笉瀛樺湪");
+ }
+ KitchenTag entity = KitchenTagForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(KitchenTagForm form) {
+ if (StoreCouponStausEnum.select(form.getEnable()) == null) {
+ throw new ServiceException("褰撳墠鐘舵�佷笉瀛樺湪");
+ }
+ KitchenTag entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ @Override
+ public Result updateStatus(String id, String status) {
+ if (StoreCouponStausEnum.select(status) == null) {
+ throw new ServiceException("褰撳墠鐘舵�佷笉瀛樺湪");
+ }
+ KitchenTag entity = baseMapper.selectById(id);
+ if (entity == null) {
+ throw new ServiceException("鍒嗙被涓嶅瓨鍦�");
+ }
+ entity.setEnable(status);
+ 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(KitchenTagQuery query) {
+ IPage<KitchenTagVO> page = PageUtil.getPage(query, KitchenTagVO.class);
+ baseMapper.getPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ KitchenTagVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<KitchenTag> entities = baseMapper.selectList(null);
+ List<KitchenTagVO> vos = entities.stream()
+ .map(entity -> KitchenTagVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+
+ @Override
+ public Result getKitchenTag() {
+ LambdaQueryWrapper<KitchenTag> query = Wrappers.<KitchenTag>lambdaQuery().eq(KitchenTag::getEnable, StoreCouponStausEnum.ENABLE.name())
+ .orderByAsc(KitchenTag::getSort);
+ List<KitchenTag> kitchenTags = baseMapper.selectList(query);
+ return Result.ok().data(kitchenTags);
+ }
+}
diff --git a/framework/src/main/resources/mapper/lmk/AdCoverMapper.xml b/framework/src/main/resources/mapper/lmk/AdCoverMapper.xml
new file mode 100644
index 0000000..85e2f83
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/AdCoverMapper.xml
@@ -0,0 +1,38 @@
+<?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.AdCoverMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.AdCoverVO">
+ <id column="id" property="id"/>
+ <result column="cover_url" property="coverUrl" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LAC.cover_url,
+ LAC.id
+ FROM
+ lmk_ad_cover LAC
+ WHERE
+ LAC.id = #{id} AND LAC.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LAC.cover_url,
+ LAC.id
+ FROM
+ lmk_ad_cover LAC
+ WHERE
+ LAC.delete_flag = 0
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/AdImgMapper.xml b/framework/src/main/resources/mapper/lmk/AdImgMapper.xml
new file mode 100644
index 0000000..69f2e7e
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/AdImgMapper.xml
@@ -0,0 +1,47 @@
+<?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.AdImgMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.AdImgVO">
+ <id column="id" property="id"/>
+ <result column="sort" property="sort" />
+ <result column="open_type" property="openType" />
+ <result column="direct_url" property="directUrl" />
+ <result column="cover_url" property="coverUrl" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LAI.sort,
+ LAI.open_type,
+ LAI.direct_url,
+ LAI.cover_url,
+ LAI.id
+ FROM
+ lmk_ad_img LAI
+ WHERE
+ LAI.id = #{id} AND LAI.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LAI.sort,
+ LAI.open_type,
+ LAI.direct_url,
+ LAI.cover_url,
+ LAI.id
+ FROM
+ lmk_ad_img LAI
+ WHERE
+ LAI.delete_flag = 0
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/KitchenCustomizeMapper.xml b/framework/src/main/resources/mapper/lmk/KitchenCustomizeMapper.xml
new file mode 100644
index 0000000..c036f62
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/KitchenCustomizeMapper.xml
@@ -0,0 +1,81 @@
+<?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.KitchenCustomizeMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.KitchenCustomizeVO">
+ <id column="id" property="id"/>
+ <result column="goods_id" property="goodsId" />
+ <result column="sku_id" property="skuId" />
+ <result column="combo_name" property="comboName" />
+ <result column="remark" property="remark" />
+ <result column="num" property="num" />
+ <result column="cover_img" property="coverImg" />
+ <result column="orgin_price" property="orginPrice" />
+ <result column="tag_id" property="tagId" />
+ <result column="status" property="status" />
+ <result column="sort" property="sort" />
+ <result column="goods_name" property="goodsName" />
+ <result column="price" property="price" />
+ <result column="thumbnail" property="thumbnail" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LKC.goods_id,
+ LKC.sku_id,
+ LKC.combo_name,
+ LKC.remark,
+ LKC.num,
+ LKC.cover_img,
+ LKC.orgin_price,
+ LKC.tag_id,
+ LKC.status,
+ LKC.sort,
+ LKC.id
+ FROM
+ lmk_kitchen_customize LKC
+ WHERE
+ LKC.id = #{id} AND LKC.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LKC.goods_id,
+ LKC.sku_id,
+ LKC.combo_name,
+ LKC.remark,
+ LKC.num,
+ LKC.cover_img,
+ LKC.orgin_price,
+ LKC.tag_id,
+ LKC.STATUS,
+ LKC.sort,
+ LKC.id,
+ lgs.goods_name,
+ lgs.price,
+ lgs.thumbnail
+ FROM
+ lmk_kitchen_customize LKC JOIN li_goods_sku lgs ON lgs.id = LKC.sku_id AND lgs.delete_flag = 0
+ WHERE
+ LKC.delete_flag = 0
+ <if test="query.comboName !='' and query.comboName != null">
+ and LKC.combo_name like concat('%',#{query.comboName},'%')
+ </if>
+ <if test="query.status !='' and query.status != null">
+ and LKC.STATUS = #{query.status}
+ </if>
+ <if test="query.tagId !='' and query.tagId != null">
+ and LKC.tag_id = #{query.tagId}
+ </if>
+ order by LKC.create_time desc
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/KitchenTagMapper.xml b/framework/src/main/resources/mapper/lmk/KitchenTagMapper.xml
new file mode 100644
index 0000000..86df857
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/KitchenTagMapper.xml
@@ -0,0 +1,50 @@
+<?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.KitchenTagMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.KitchenTagVO">
+ <id column="id" property="id"/>
+ <result column="tag_name" property="tagName" />
+ <result column="sort" property="sort" />
+ <result column="enable" property="enable" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LKT.tag_name,
+ LKT.sort,
+ LKT.id
+ FROM
+ lmk_kitchen_tag LKT
+ WHERE
+ LKT.id = #{id} AND LKT.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LKT.tag_name,
+ LKT.sort,
+ LKT.id,
+ LKT.enable
+ FROM
+ lmk_kitchen_tag LKT
+ WHERE
+ LKT.delete_flag = 0
+ <if test="query.enable != '' and query.enable !=null">
+ and LKT.enable = #{query.enable}
+ </if>
+ <if test="query.tagName != '' and query.tagName !=null">
+ and LKT.tag_name like concat('%',#{query.tagName},'%')
+ </if>
+ order by LKT.create_time desc
+ </select>
+
+</mapper>
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/AdCoverController.java b/manager-api/src/main/java/cn/lili/controller/lmk/AdCoverController.java
new file mode 100644
index 0000000..7181ede
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/AdCoverController.java
@@ -0,0 +1,76 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.modules.lmk.service.AdCoverService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.validation.annotation.Validated;
+import javax.validation.constraints.NotEmpty;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.AdCoverForm;
+import cn.lili.modules.lmk.domain.query.AdCoverQuery;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 鍘ㄥ笀灏侀潰鍥剧墖 鍓嶇鎺у埗鍣�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鍘ㄥ笀灏侀潰鍥剧墖", tags = "鍘ㄥ笀灏侀潰鍥剧墖绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/ad-cover")
+public class AdCoverController {
+
+ private final AdCoverService adCoverService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ public Result add(@RequestBody @Validated(Add.class) AdCoverForm form) {
+ return adCoverService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@RequestBody @Validated(Update.class) AdCoverForm form) {
+ return adCoverService.update(form);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ public Result removeById(@PathVariable("id") String id) {
+ return adCoverService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return adCoverService.remove(ids);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+ public Result page(AdCoverQuery query) {
+ return adCoverService.page(query);
+ }
+
+ @GetMapping("/{id}")
+ @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
+ public Result detail(@PathVariable("id") String id) {
+ return adCoverService.detail(id);
+ }
+
+ @GetMapping("/list")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result list() {
+ return adCoverService.all();
+ }
+}
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/AdImgController.java b/manager-api/src/main/java/cn/lili/controller/lmk/AdImgController.java
new file mode 100644
index 0000000..0a6b82a
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/AdImgController.java
@@ -0,0 +1,76 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.modules.lmk.service.AdImgService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.validation.annotation.Validated;
+import javax.validation.constraints.NotEmpty;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.AdImgForm;
+import cn.lili.modules.lmk.domain.query.AdImgQuery;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 绉佸帹瀹氬埗骞垮憡鍥剧墖 鍓嶇鎺у埗鍣�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "绉佸帹瀹氬埗骞垮憡鍥剧墖", tags = "绉佸帹瀹氬埗骞垮憡鍥剧墖绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/ad-img")
+public class AdImgController {
+
+ private final AdImgService adImgService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ public Result add(@RequestBody @Validated(Add.class) AdImgForm form) {
+ return adImgService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@RequestBody @Validated(Update.class) AdImgForm form) {
+ return adImgService.update(form);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ public Result removeById(@PathVariable("id") String id) {
+ return adImgService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return adImgService.remove(ids);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+ public Result page(AdImgQuery query) {
+ return adImgService.page(query);
+ }
+
+ @GetMapping("/{id}")
+ @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
+ public Result detail(@PathVariable("id") String id) {
+ return adImgService.detail(id);
+ }
+
+ @GetMapping("/list")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result list() {
+ return adImgService.all();
+ }
+}
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/KitchenCustomizeController.java b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenCustomizeController.java
new file mode 100644
index 0000000..cc5fe8c
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenCustomizeController.java
@@ -0,0 +1,80 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.modules.lmk.service.KitchenCustomizeService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.validation.annotation.Validated;
+import javax.validation.constraints.NotEmpty;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.KitchenCustomizeForm;
+import cn.lili.modules.lmk.domain.query.KitchenCustomizeQuery;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 鍘ㄥ笀瀹氬埗妯″潡 鍓嶇鎺у埗鍣�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鍘ㄥ笀瀹氬埗妯″潡", tags = "鍘ㄥ笀瀹氬埗妯″潡绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/kitchen-customize")
+public class KitchenCustomizeController {
+
+ private final KitchenCustomizeService kitchenCustomizeService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ public Result add(@RequestBody @Validated(Add.class) KitchenCustomizeForm form) {
+ return kitchenCustomizeService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@RequestBody @Validated(Update.class) KitchenCustomizeForm form) {
+ return kitchenCustomizeService.update(form);
+ }
+ @PutMapping("/{id}/{status}")
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result updateStatus(@PathVariable String id ,@PathVariable String status) {
+ return kitchenCustomizeService.updateStatus(id,status);
+ }
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ public Result removeById(@PathVariable("id") String id) {
+ return kitchenCustomizeService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return kitchenCustomizeService.remove(ids);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+ public Result page(KitchenCustomizeQuery query) {
+ return kitchenCustomizeService.page(query);
+ }
+
+ @GetMapping("/{id}")
+ @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
+ public Result detail(@PathVariable("id") String id) {
+ return kitchenCustomizeService.detail(id);
+ }
+
+ @GetMapping("/list")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result list() {
+ return kitchenCustomizeService.all();
+ }
+}
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/KitchenTagController.java b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenTagController.java
new file mode 100644
index 0000000..e6c1129
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenTagController.java
@@ -0,0 +1,81 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+import cn.lili.modules.lmk.service.KitchenTagService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.validation.annotation.Validated;
+import javax.validation.constraints.NotEmpty;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.KitchenTagForm;
+import cn.lili.modules.lmk.domain.query.KitchenTagQuery;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 绉佸帹瀹氬埗鏍囩 鍓嶇鎺у埗鍣�
+ *
+ * @author peng
+ * @since 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "绉佸帹瀹氬埗鏍囩", tags = "绉佸帹瀹氬埗鏍囩绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/kitchen-tag")
+public class KitchenTagController {
+
+ private final KitchenTagService kitchenTagService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ public Result add(@RequestBody @Validated(Add.class) KitchenTagForm form) {
+ return kitchenTagService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@RequestBody @Validated(Update.class) KitchenTagForm form) {
+ return kitchenTagService.update(form);
+ }
+ @PutMapping("/{id}/{status}")
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@PathVariable String id ,@PathVariable String status) {
+ return kitchenTagService.updateStatus(id,status);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ public Result removeById(@PathVariable("id") String id) {
+ return kitchenTagService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return kitchenTagService.remove(ids);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+ public Result page(KitchenTagQuery query) {
+ return kitchenTagService.page(query);
+ }
+
+ @GetMapping("/{id}")
+ @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
+ public Result detail(@PathVariable("id") String id) {
+ return kitchenTagService.detail(id);
+ }
+
+ @GetMapping("/list")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result list() {
+ return kitchenTagService.all();
+ }
+}
--
Gitblit v1.8.0