From 8063ee7eee51bfe25a09428e6efc60f828b270c6 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 19 六月 2025 20:00:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeVO.java | 34
framework/src/main/java/cn/lili/modules/lmk/domain/form/WxVideoForm.java | 9
buyer-api/src/main/java/cn/lili/controller/lmk/ShareController.java | 44
buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java | 21
framework/src/main/java/cn/lili/modules/lmk/domain/query/WxHealthVideoQuery.java | 25
framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java | 10
framework/src/main/resources/mapper/lmk/VideoGoodsMapper.xml | 7
framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java | 14
framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoGoodsEsQuery.java | 28
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoGoodsServiceImpl.java | 22
framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareForm.java | 49
buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java | 7
framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoTypeRefQuery.java | 22
framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenType.java | 33
framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoTagVO.java | 36
framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareVO.java | 47
framework/src/main/java/cn/lili/modules/lmk/mapper/ShareClickRecordMapper.java | 34
framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoQuery.java | 39
framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoGoods.java | 45
framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTypeQuery.java | 24
framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareClickRecordQuery.java | 22
manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java | 20
framework/src/main/resources/mapper/lmk/ShareMapper.xml | 47
framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java | 49
seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java | 15
framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java | 33
framework/src/main/java/cn/lili/modules/lmk/domain/entity/ShareClickRecord.java | 35
framework/src/main/java/cn/lili/modules/lmk/service/ShareService.java | 74 +
framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java | 6
framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenVideoTypeRefMapper.java | 37
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java | 1
framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java | 4
framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPackageServiceImpl.java | 15
framework/src/main/java/cn/lili/modules/lmk/service/KitchenVideoTypeRefService.java | 70 +
framework/src/main/java/cn/lili/mybatis/BaseIdAndDeleteEntity.java | 40
framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java | 14
framework/src/main/java/cn/lili/modules/lmk/domain/entity/Share.java | 40
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 299 ++++
framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoTypeRefForm.java | 42
framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareQuery.java | 22
framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTypeVO.java | 43
framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareServiceImpl.java | 161 ++
framework/src/main/java/cn/lili/modules/member/service/MemberService.java | 4
framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoForm.java | 59 +
framework/src/main/java/cn/lili/modules/lmk/service/VideoGoodsService.java | 14
framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTypeServiceImpl.java | 135 ++
framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java | 5
framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsDetailVO.java | 30
framework/src/main/resources/mapper/lmk/VideoMapper.xml | 179 ++
framework/src/main/java/cn/lili/modules/lmk/service/ShareClickRecordService.java | 65 +
manager-api/src/main/java/cn/lili/controller/lmk/KitchenTypeController.java | 76 +
framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenVideoTypeRef.java | 37
framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java | 76 +
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java | 29
framework/src/main/resources/mapper/lmk/KitchenTypeMapper.xml | 48
buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java | 8
framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java | 54
framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsPublishVO.java | 21
framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java | 37
framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java | 11
framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoVO.java | 116 +
framework/src/main/resources/mapper/lmk/ShareClickRecordMapper.xml | 44
framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTypeMapper.java | 34
framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareClickRecordServiceImpl.java | 119 ++
manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java | 44
config/application.yml | 25
framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareClickRecordVO.java | 43
framework/src/main/java/cn/lili/modules/lmk/service/KitchenTypeService.java | 65 +
framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java | 39
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoGoodsMapper.java | 17
framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeRefVO.java | 39
framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTypeForm.java | 45
buyer-api/src/main/resources/apiclient_cert.pem | 25
framework/src/main/java/cn/lili/modules/lmk/mapper/ShareMapper.java | 34
manager-api/src/main/java/cn/lili/controller/lmk/KitchenVideoController.java | 59 +
framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareClickRecordForm.java | 42
buyer-api/src/main/resources/apiclient_cert.p12 | 0
framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenVideoTypeRefServiceImpl.java | 126 ++
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java | 7
framework/src/main/resources/mapper/lmk/KitchenVideoTypeRefMapper.xml | 53
buyer-api/src/main/resources/apiclient_key.pem | 28
81 files changed, 3,449 insertions(+), 82 deletions(-)
diff --git a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java
index 087404b..c5d3d25 100644
--- a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java
+++ b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java
@@ -1,5 +1,6 @@
package cn.lili.controller.goods;
+import cn.lili.base.Result;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException;
@@ -11,6 +12,7 @@
import cn.lili.modules.goods.entity.vos.GoodsVO;
import cn.lili.modules.goods.service.GoodsService;
import cn.lili.modules.goods.service.GoodsSkuService;
+import cn.lili.modules.lmk.domain.query.VideoGoodsEsQuery;
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.entity.dos.EsGoodsRelatedInfo;
import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO;
@@ -115,6 +117,12 @@
return ResultUtil.data(goodsSearchService.searchGoodsByPage(goodsSearchParams, pageVO));
}
+ @ApiOperation(value = "鍟嗗搧鍒嗛〉-鍙戝竷瑙嗛鏃跺叧鑱斿晢鍝�")
+ @GetMapping("/video/es")
+ public Result videoGoodsEsPage(VideoGoodsEsQuery query) {
+ return goodsSearchService.videoGoodsEsPage(query);
+ }
+
@ApiOperation(value = "浠嶦S涓幏鍙栫浉鍏冲晢鍝佸搧鐗屽悕绉帮紝鍒嗙被鍚嶇О鍙婂睘鎬�")
@GetMapping("/es/related")
public ResultMessage<EsGoodsRelatedInfo> getGoodsRelatedByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) {
diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/ShareController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/ShareController.java
new file mode 100644
index 0000000..f620ab8
--- /dev/null
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/ShareController.java
@@ -0,0 +1,44 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.base.Result;
+import cn.lili.group.Add;
+import cn.lili.modules.lmk.domain.form.ShareClickRecordForm;
+import cn.lili.modules.lmk.domain.form.ShareForm;
+import cn.lili.modules.lmk.service.ShareService;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 鍒嗕韩璁板綍 鍓嶇鎺у埗鍣�
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鍒嗕韩璁板綍", tags = "鍒嗕韩璁板綍绠$悊")
+@RestController
+@RequestMapping("/buyer/lmk/share")
+public class ShareController {
+
+ private final ShareService shareService;
+
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞鍒嗕韩", notes = "娣诲姞鍒嗕韩")
+ public Result add(@RequestBody @Validated(Add.class) ShareForm form) {
+ return shareService.add(form);
+ }
+
+ @PostMapping("/click/record")
+ @ApiOperation(value = "娣诲姞鍒嗕韩璁块棶璁板綍", notes = "娣诲姞鍒嗕韩璁块棶璁板綍")
+ public Result addShareClick(@RequestBody @Validated(Add.class) ShareClickRecordForm form) {
+ return shareService.addShareClick(form);
+ }
+}
diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java
index a1fba30..9ae68b3 100644
--- a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java
@@ -6,6 +6,8 @@
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 org.springframework.validation.annotation.Validated;
import lombok.RequiredArgsConstructor;
import java.util.List;
@@ -41,13 +43,19 @@
@PutMapping
@ApiOperation(value = "淇敼", notes = "淇敼")
public Result update(@RequestBody @Validated(Update.class) WxVideoForm form) {
- return videoService.update(form);
+ return videoService.updatePublish(form);
}
@DeleteMapping("/{id}")
@ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
public Result removeById(@PathVariable("id") String id) {
return videoService.removeById(id);
+ }
+
+ @PostMapping("/down/{id}")
+ @ApiOperation(value = "鐢ㄦ埛涓嬫灦瑙嗛", notes = "鐢ㄦ埛涓嬫灦瑙嗛")
+ public Result downVideo(@PathVariable("id") String id) {
+ return videoService.buyerDownVideo(id);
}
@DeleteMapping("/batch")
@@ -67,6 +75,17 @@
public Result recommendVideo(VideoQuery query) {
return videoService.recommendVideo(query);
}
+ @GetMapping("/health/recommend")
+ @ApiOperation(value = "澶у仴搴疯棰戞帹鑽�", notes = "澶у仴搴疯棰戞帹鑽�")
+ public Result healthRecommendVideo(WxHealthVideoQuery query) {
+ return videoService.healthRecommendVideo(query);
+ }
+
+ @GetMapping("/goods/detail/{videoId}")
+ @ApiOperation(value = "瑙嗛鍟嗗搧鏌ョ湅", notes = "瑙嗛鍟嗗搧鏌ョ湅")
+ public Result getGoodsDetail(@PathVariable("videoId") String videoId) {
+ return videoService.getGoodsDetail(videoId);
+ }
@PostMapping("/view/record")
@ApiOperation(value = "淇濆瓨瑙傜湅璁板綍", notes = "淇濆瓨瑙傜湅璁板綍")
diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java
index a3c1a6a..1e3b9e7 100644
--- a/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java
+++ b/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java
@@ -1,5 +1,6 @@
package cn.lili.controller.passport.connect;
+import cn.lili.base.Result;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.token.Token;
import cn.lili.common.vo.ResultMessage;
@@ -47,6 +48,12 @@
return ResultUtil.data(this.connectService.miniProgramAutoLogin(params));
}
+ @GetMapping("/silent-login")
+ @ApiOperation(value = "灏忕▼搴忛潤榛樼櫥褰�--涓嶈幏鍙栫敤鎴蜂俊鎭�")
+ public Result silentLogin(String code) {
+ return this.connectService.silentLogin(code);
+ }
+
@GetMapping("/subscribeMessage")
@ApiOperation(value = "娑堟伅璁㈤槄")
public ResultMessage<List<WechatMPMessage>> autoLogin() {
diff --git a/buyer-api/src/main/resources/apiclient_cert.p12 b/buyer-api/src/main/resources/apiclient_cert.p12
new file mode 100644
index 0000000..1813ac7
--- /dev/null
+++ b/buyer-api/src/main/resources/apiclient_cert.p12
Binary files differ
diff --git a/buyer-api/src/main/resources/apiclient_cert.pem b/buyer-api/src/main/resources/apiclient_cert.pem
new file mode 100644
index 0000000..22f765c
--- /dev/null
+++ b/buyer-api/src/main/resources/apiclient_cert.pem
@@ -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-----
diff --git a/buyer-api/src/main/resources/apiclient_key.pem b/buyer-api/src/main/resources/apiclient_key.pem
new file mode 100644
index 0000000..cf00b91
--- /dev/null
+++ b/buyer-api/src/main/resources/apiclient_key.pem
@@ -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-----
diff --git a/config/application.yml b/config/application.yml
index 03aca44..0902162 100644
--- a/config/application.yml
+++ b/config/application.yml
@@ -319,29 +319,34 @@
# 鑵捐cos-sts閰嶇疆
cos:
- secretId: AKIDYyBCzb1FOPGx0fCXfdOwJVWM1TjqmW3N # 鑵捐ARM鐢ㄦ埛鐨剆ecretId
- secretKey: DD1b1LWVIvPlusAOYjnfKm150jO0NYWH # 鑵捐ARM鐢ㄦ埛鐨剆ecretKey
+ secretId: AKID6zd07yZtwjFVVGkxvc2C5h26uTmpc9QQ # 鑵捐ARM鐢ㄦ埛鐨剆ecretId
+ secretKey: lFTcV6RVIo43lCMFsEKAk36tRjlVzC8n # 鑵捐ARM鐢ㄦ埛鐨剆ecretKey
durationSeconds: 1800 # STS涓存椂璁块棶鍑瘉鏈夋晥鏈燂紝鍗曚綅绉掞紝榛樿1800s锛屼富璐﹀彿鏈�闀�2灏忔椂锛屽瓙璐﹀彿(ARM鐢ㄦ埛)36灏忔椂
- bucket: lmk-1308069279
+ bucket: lmk-1356772813
region: ap-chengdu
- endpoint: https://lmk-1308069279.cos.ap-chengdu.myqcloud.com # 璁块棶鍩熷悕
+ endpoint: https://lmk-1356772813.cos.ap-chengdu.myqcloud.com # 璁块棶鍩熷悕
urlExpireMinute: 360 # 棰勭鍚島rl鏈夋晥鏃堕棿(鍒嗛挓)
actions: # sts鐨勬潈闄�
- - cos:ListMultipartUploads
- - cos:GetBucket
+ - cos:GetBucketACL
- cos:GetObject
+ - cos:GetObjectACL
- cos:GetObjectTagging
- - cos:GetSymlink
- cos:HeadObject
+ - cos:ListMultipartUploads
- cos:ListParts
- cos:AbortMultipartUpload
- cos:AppendObject
- cos:CompleteMultipartUpload
+ - cos:DeleteMultipleObjects
+ - cos:DeleteObject
- cos:InitiateMultipartUpload
- cos:PostObject
- cos:PutObject
- - cos:UploadPart
- - cos:DeleteObject
+ - cos:PutObjectACL
+ - cos:PutObjectCopy
- cos:PutObjectTagging
+ - cos:RenameObject
+ - cos:UploadPart
+ - cos:UploadPartCopy
resources: # 鑳芥搷浣滃摢浜涜祫婧�
- - qcs::cos:ap-chengdu:uid/1308069279:lmk-1308069279/*
+ - qcs::cos::uid/1356772813:lmk-1356772813/*
diff --git a/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java b/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java
index 94fc569..a9356e8 100644
--- a/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java
+++ b/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java
@@ -1,5 +1,6 @@
package cn.lili.modules.connect.service;
+import cn.lili.base.Result;
import cn.lili.cache.CachePrefix;
import cn.lili.common.security.token.Token;
import cn.lili.modules.connect.entity.Connect;
@@ -105,4 +106,12 @@
* @param type 骞冲彴绫诲瀷
*/
void loginBindUser(String userId, String unionId, String type);
-}
\ No newline at end of file
+
+ /**
+ * 灏忕▼搴忛潤榛樼櫥褰�
+ *
+ * @param code
+ * @return
+ */
+ Result silentLogin(String code);
+}
diff --git a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
index 6758887..e270ab4 100644
--- a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
@@ -4,6 +4,7 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import cn.lili.base.Result;
import cn.lili.cache.Cache;
import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.common.enums.ResultCode;
@@ -81,6 +82,8 @@
*/
@Autowired
private RocketmqCustomProperties rocketmqCustomProperties;
+
+ static String DEFAULT_PASSWORD = "111111";
@Override
@Transactional(rollbackFor = Exception.class)
@@ -243,6 +246,50 @@
}
}
+ @Override
+ public Result silentLogin(String code) {
+ JSONObject res = this.getConnect(code);
+ String unionId = res.getStr("unionid");
+ String openId = res.getStr("openid");
+ Member user = memberService.findByUUID(openId);
+ // 涓嶅瓨鍦ㄥ氨娉ㄥ唽
+ if (Objects.isNull(user)) {
+ user = new Member();
+ user.setUuId(openId);
+ user.setUsername(UuidUtils.getUUID());
+ user.setNickName("寰俊鐢ㄦ埛");
+ user.setPassword(DEFAULT_PASSWORD);
+ user.setFace("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png");
+ memberService.registerHandler(user);
+ }
+
+ ConnectAuthUser connectAuthUser = new ConnectAuthUser();
+ connectAuthUser.setUuid(openId);
+ connectAuthUser.setNickname(user.getNickName());
+ connectAuthUser.setAvatar(user.getFace());
+
+
+ connectAuthUser.setUsername(UuidUtils.getUUID());
+
+ connectAuthUser.setSource(ConnectEnum.WECHAT);
+ connectAuthUser.setType(ClientTypeEnum.WECHAT_MP);
+
+ AuthToken authToken = new AuthToken();
+ authToken.setUnionId(unionId);
+ connectAuthUser.setToken(authToken);
+
+ //鍙戦�佺敤鎴风涓夋柟鐧诲綍娑堟伅
+ MemberConnectLoginMessage memberConnectLoginMessage = new MemberConnectLoginMessage();
+ memberConnectLoginMessage.setMember(user);
+ memberConnectLoginMessage.setConnectAuthUser(connectAuthUser);
+ String destination =
+ rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_CONNECT_LOGIN.name();
+ //鍙戦�佺敤鎴风涓夋柟鐧诲綍娑堟伅
+ rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(memberConnectLoginMessage),
+ RocketmqSendCallbackBuilder.commonCallback());
+ Token token = memberTokenGenerate.createToken(user, Boolean.TRUE);
+ return Result.ok().data(token);
+ }
/**
* 绗笁鏂硅仈鍚堢櫥闄�
@@ -389,4 +436,4 @@
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
index 029a66c..d8b663a 100644
--- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
+++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
@@ -14,6 +14,8 @@
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
import cn.lili.modules.goods.entity.enums.GoodsTypeEnum;
import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xkcoding.http.util.StringUtil;
import io.swagger.annotations.ApiModel;
@@ -87,12 +89,15 @@
private Double grade;
@ApiModelProperty(value = "缂╃暐鍥捐矾寰�")
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String thumbnail;
@ApiModelProperty(value = "灏忓浘璺緞")
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String small;
@ApiModelProperty(value = "鍘熷浘璺緞")
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String original;
@ApiModelProperty(value = "搴楅摵鍒嗙被id")
@@ -129,6 +134,7 @@
private String mobileIntro;
@ApiModelProperty(value = "鍟嗗搧瑙嗛")
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String goodsVideo;
diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
index 6909add..8465e1b 100644
--- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
@@ -41,11 +41,13 @@
import cn.lili.mybatis.util.PageUtil;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.GoodsTagsEnum;
+import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
@@ -121,6 +123,9 @@
@Autowired
private Cache<GoodsVO> cache;
+ @Autowired
+ private COSUtil cosUtil;
+
@Override
public List<Goods> getByBrandIds(List<String> brandIds) {
LambdaQueryWrapper<Goods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -172,7 +177,7 @@
//妫�鏌ュ晢鍝�
this.checkGoods(goods);
//鍚慻oods鍔犲叆鍥剧墖
- if (goodsOperationDTO.getGoodsGalleryList().size() > 0) {
+ if (goodsOperationDTO.getGoodsGalleryList()!=null&& !goodsOperationDTO.getGoodsGalleryList().isEmpty()) {
this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
}
//娣诲姞鍟嗗搧鍙傛暟
@@ -201,7 +206,14 @@
//妫�鏌ュ晢鍝佷俊鎭�
this.checkGoods(goods);
//鍚慻oods鍔犲叆鍥剧墖
- this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
+ if (goodsOperationDTO.getGoodsGalleryList() != null&& !goodsOperationDTO.getGoodsGalleryList().isEmpty()) {
+ this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
+ }else {
+ goods.setOriginal(null);
+ goods.setSmall(null);
+ goods.setThumbnail(null);
+ goodsGalleryService.removeByGoodsId(goodsId);
+ }
//娣诲姞鍟嗗搧鍙傛暟
if (goodsOperationDTO.getGoodsParamsDTOList() != null && !goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) {
goods.setParams(JSONUtil.toJsonStr(goodsOperationDTO.getGoodsParamsDTOList()));
@@ -227,6 +239,17 @@
//缂撳瓨鑾峰彇锛屽鏋滄病鏈夊垯璇诲彇缂撳瓨
GoodsVO goodsVO = cache.get(CachePrefix.GOODS.getPrefix() + goodsId);
if (goodsVO != null) {
+// List<String> goodsGalleryList = goodsVO.getGoodsGalleryList();
+// if (goodsGalleryList != null && !goodsGalleryList.isEmpty()) {
+// List<String> galleryList = goodsGalleryList.stream().map(item -> {
+// if (StringUtils.isNotBlank(item)&&!item.contains("http")) {
+// return cosUtil.getPreviewUrl(item);
+// }else {
+// return item;
+// }
+// }).collect(Collectors.toList());
+// goodsVO.setGoodsGalleryList(galleryList);
+// }
return goodsVO;
}
//鏌ヨ鍟嗗搧淇℃伅
@@ -245,6 +268,12 @@
List<GoodsGallery> galleryList = goodsGalleryService.goodsGalleryList(goodsId);
for (GoodsGallery goodsGallery : galleryList) {
images.add(goodsGallery.getOriginal());
+// String original = goodsGallery.getOriginal();
+// if (StringUtils.isNotBlank(original)&&!original.contains("http")) {
+// images.add(cosUtil.getPreviewUrl(original));
+// }else {
+// images.add(goodsGallery.getOriginal());
+// }
}
goodsVO.setGoodsGalleryList(images);
//鍟嗗搧sku璧嬪��
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenType.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenType.java
new file mode 100644
index 0000000..7c22910
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenType.java
@@ -0,0 +1,33 @@
+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 wp
+ * @since 2025-06-13
+ */
+@Data
+@TableName("lmk_kitchen_type")
+public class KitchenType extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("type_name")
+ /** 鍘ㄧ绫诲瀷 */
+ private String typeName;
+
+ @TableField("use_num")
+ /** 浣跨敤娆℃暟 */
+ private Long useNum;
+
+ @TableField("sort_num")
+ /** 鎺掑簭瀛楁 */
+ private Long sortNum;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenVideoTypeRef.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenVideoTypeRef.java
new file mode 100644
index 0000000..b58f66e
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/KitchenVideoTypeRef.java
@@ -0,0 +1,37 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍘ㄧ瑙嗛鏍囩鍏崇郴琛�
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+@Data
+@TableName("lmk_kitchen_video_type_ref")
+public class KitchenVideoTypeRef implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId
+ @ApiModelProperty(value = "鍞竴鏍囪瘑", hidden = true)
+ private String id;
+
+ @TableField("video_id")
+ /** 瑙嗛id */
+ private String videoId;
+
+ @TableField("kitchen_type_id")
+ /** 鍘ㄧ鏍囩id */
+ private String kitchenTypeId;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Share.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Share.java
new file mode 100644
index 0000000..84e057d
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Share.java
@@ -0,0 +1,40 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import cn.lili.mybatis.BaseIdAndDeleteEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 鍒嗕韩璁板綍
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+@Data
+@TableName("lmk_share")
+public class Share extends BaseIdAndDeleteEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("share_type")
+ /** 鍝釜涓氬姟鐨勫垎浜� */
+ private String shareType;
+
+ @TableField("ref_id")
+ /** 涓氬姟id */
+ private String refId;
+
+ @TableField("share_user")
+ /** 鍒嗕韩浜� */
+ private String shareUser;
+
+ @TableField("share_time")
+ /** 鍒嗕韩鏃堕棿 */
+ private Date shareTime;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/ShareClickRecord.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/ShareClickRecord.java
new file mode 100644
index 0000000..52c8a04
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/ShareClickRecord.java
@@ -0,0 +1,35 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import cn.lili.mybatis.BaseIdAndDeleteEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鍒嗕韩鐐瑰嚮璁板綍
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+@Data
+@TableName("lmk_share_click_record")
+public class ShareClickRecord extends BaseIdAndDeleteEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("share_id")
+ /** 鍒嗕韩id */
+ private String shareId;
+
+ @TableField("user_id")
+ /** 璋佺偣浜嗚繖涓垎浜� */
+ private String userId;
+
+ @TableField("click_time")
+ /** 鐐瑰嚮鏃堕棿 */
+ private Date clickTime;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoGoods.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoGoods.java
new file mode 100644
index 0000000..1993606
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoGoods.java
@@ -0,0 +1,45 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 瑙嗛鍟嗗搧涓棿琛�
+ *
+ * @author xp
+ * @since 2025-06-15
+ */
+@Data
+@TableName("lmk_video_goods")
+public class VideoGoods {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId
+ @ApiModelProperty(value = "鍞竴鏍囪瘑", hidden = true)
+ private String id;
+
+ @TableField("video_id")
+ /** 瑙嗛id */
+ private String videoId;
+
+ @TableField("goods_id")
+ /** 鍟嗗搧id */
+ private String goodsId;
+
+ @TableField("order_num")
+ /** 鎺掑簭 */
+ private Integer orderNum;
+
+ @TableField("goods_num")
+ /** 鍟嗗搧鏁伴噺 */
+ private Integer goodsNum;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒犻櫎鏍囧織 true/false 鍒犻櫎/鏈垹闄�", hidden = true)
+ private Boolean deleteFlag;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java
new file mode 100644
index 0000000..d372d82
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java
@@ -0,0 +1,54 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.common.security.context.UserContext;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * 澶у仴搴疯棰戝唴瀹�
+ *
+ * @author wp
+ * @since 2025-06-12
+ */
+@Data
+@ApiModel(value = "澶у仴搴疯棰戝唴瀹�", description = "澶у仴搴疯棰戝唴瀹�")
+public class HealthVideoForm extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 浣滆�卛d */
+ @ApiModelProperty(value = "涓婚敭id")
+ private String id;
+
+ @ApiModelProperty(value = "鍥剧墖灏侀潰")
+ /** 鍥剧墖灏侀潰 */
+ @NotBlank(message = "灏侀潰鍥剧墖涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private String coverUrl;
+
+ @TableField("video_file_key")
+ /** 瑙嗛鍦板潃 */
+ @NotBlank(message = "瑙嗛鍦板潃涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private String videoFileKey;
+
+
+ /** 瑙嗛闀垮害(绉�) */
+// @NotNull(message = "瑙嗛闀垮害涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private Long videoDuration;
+
+ /** 瑙嗛鏍囬 */
+ @NotBlank(message = "鏍囬涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private String title;
+
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTypeForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTypeForm.java
new file mode 100644
index 0000000..3887943
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenTypeForm.java
@@ -0,0 +1,45 @@
+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.KitchenType;
+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 wp
+ * @since 2025-06-13
+ */
+@Data
+@ApiModel(value = "KitchenType琛ㄥ崟", description = "鍘ㄧ绫诲瀷琛ㄥ崟")
+public class KitchenTypeForm extends AbsForm {
+
+ @NotBlank(message = "鍘ㄧ绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍘ㄧ绫诲瀷")
+ private String typeName;
+
+ @ApiModelProperty("浣跨敤娆℃暟")
+ private Long useNum;
+
+ @NotNull(message = "鎺掑簭瀛楁涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鎺掑簭瀛楁")
+ private Long sortNum;
+
+ public static KitchenType getEntityByForm(@NonNull KitchenTypeForm form, KitchenType entity) {
+ if(entity == null) {
+ entity = new KitchenType();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoForm.java
new file mode 100644
index 0000000..cb7906c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoForm.java
@@ -0,0 +1,59 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+/**
+ * 鍘ㄧ瑙嗛鍙戝竷
+ *
+ * @author wp
+ * @since 2025-06-12
+ */
+@Data
+@ApiModel(value = "鍘ㄧ瑙嗛鍙戝竷", description = "鍘ㄧ瑙嗛鍙戝竷")
+public class KitchenVideoForm extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 浣滆�卛d */
+ @ApiModelProperty(value = "涓婚敭id")
+ private String id;
+
+ @ApiModelProperty(value = "鍥剧墖灏侀潰")
+ /** 鍥剧墖灏侀潰 */
+ @NotBlank(message = "灏侀潰鍥剧墖涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private String coverUrl;
+
+ @TableField("video_file_key")
+ /** 瑙嗛鍦板潃 */
+ @NotBlank(message = "瑙嗛鍦板潃涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private String videoFileKey;
+
+
+ /** 瑙嗛闀垮害(绉�) */
+// @NotNull(message = "瑙嗛闀垮害涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private Long videoDuration;
+
+ /** 瑙嗛鏍囬 */
+ @NotBlank(message = "鏍囬涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private String title;
+
+ /** 鏍囩鍒楄〃 */
+ @Size(min = 1,max = 5, message = "鏍囩鍒楄〃涓嶈兘涓虹┖",groups = {Add.class, Update.class})
+ private List<String> checkKitchenType;
+
+
+
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoTypeRefForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoTypeRefForm.java
new file mode 100644
index 0000000..5f33b2c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/KitchenVideoTypeRefForm.java
@@ -0,0 +1,42 @@
+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.KitchenVideoTypeRef;
+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 wp
+ * @since 2025-06-13
+ */
+@Data
+@ApiModel(value = "KitchenVideoTypeRef琛ㄥ崟", description = "鍘ㄧ瑙嗛鏍囩鍏崇郴琛ㄨ〃鍗�")
+public class KitchenVideoTypeRefForm extends AbsForm {
+
+ @NotBlank(message = "瑙嗛id涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("瑙嗛id")
+ private String videoId;
+
+ @NotBlank(message = "鍘ㄧ鏍囩id涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍘ㄧ鏍囩id")
+ private String kitchenTypeId;
+
+ public static KitchenVideoTypeRef getEntityByForm(@NonNull KitchenVideoTypeRefForm form, KitchenVideoTypeRef entity) {
+ if(entity == null) {
+ entity = new KitchenVideoTypeRef();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareClickRecordForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareClickRecordForm.java
new file mode 100644
index 0000000..2c17163
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareClickRecordForm.java
@@ -0,0 +1,42 @@
+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.ShareClickRecord;
+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 xp
+ * @since 2025-06-16
+ */
+@Data
+@ApiModel(value = "ShareClickRecord琛ㄥ崟", description = "鍒嗕韩鐐瑰嚮璁板綍琛ㄥ崟")
+public class ShareClickRecordForm extends AbsForm {
+
+ @NotBlank(message = "涓氬姟id涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("涓氬姟id")
+ private String refId;
+
+ @NotBlank(message = "鍒嗕韩浜轰笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍒嗕韩浜篿d")
+ private String shareUserId;
+
+ public static ShareClickRecord getEntityByForm(@NonNull ShareClickRecordForm form, ShareClickRecord entity) {
+ if(entity == null) {
+ entity = new ShareClickRecord();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareForm.java
new file mode 100644
index 0000000..5eca51f
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareForm.java
@@ -0,0 +1,49 @@
+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.Share;
+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 xp
+ * @since 2025-06-16
+ */
+@Data
+@ApiModel(value = "Share琛ㄥ崟", description = "鍒嗕韩璁板綍琛ㄥ崟")
+public class ShareForm extends AbsForm {
+
+ @NotBlank(message = "涓氬姟绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍝釜涓氬姟鐨勫垎浜�")
+ private String shareType;
+
+ @NotBlank(message = "涓氬姟id涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("涓氬姟id")
+ private String refId;
+
+ @NotBlank(message = "鍒嗕韩浜轰笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍒嗕韩浜�")
+ private String shareUser;
+
+ @ApiModelProperty("鍒嗕韩鏃堕棿")
+ private Date shareTime;
+
+ public static Share getEntityByForm(@NonNull ShareForm form, Share entity) {
+ if(entity == null) {
+ entity = new Share();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/WxVideoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/WxVideoForm.java
index ab5fce0..4ef60fe 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/WxVideoForm.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/WxVideoForm.java
@@ -4,11 +4,12 @@
import cn.lili.group.Add;
import cn.lili.base.AbsForm;
import cn.lili.modules.lmk.domain.entity.Video;
-import org.hibernate.validator.constraints.Length;
+import cn.lili.modules.lmk.domain.vo.VideoGoodsPublishVO;
import org.springframework.beans.BeanUtils;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
import org.springframework.lang.NonNull;
import io.swagger.annotations.ApiModel;
@@ -49,12 +50,12 @@
private List<String> videoImgs;
@ApiModelProperty("瑙嗛鏍囩")
- @Length(max = 5, message = "鏈�澶氬彧鑳芥坊鍔犱簲涓爣绛�")
+ @Size(max = 5, message = "鏈�澶氬彧鑳芥坊鍔犱簲涓爣绛�", groups = {Add.class, Update.class})
private List<WxVideoTagForm> tags = new ArrayList<>(2);
// @NotBlank(message = "鍟嗗搧id涓嶈兘涓虹┖", groups = {Add.class, Update.class})
- @ApiModelProperty("鍟嗗搧id")
- private String goodsId;
+ @ApiModelProperty("鍟嗗搧鍒楄〃")
+ private List<VideoGoodsPublishVO> goodsList;
@ApiModelProperty("瑙嗛濉厖妯″紡")
private String videoFit;
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java
new file mode 100644
index 0000000..47b29b2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java
@@ -0,0 +1,39 @@
+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;
+
+import java.util.List;
+
+/**
+ * 瑙嗛鍐呭鏌ヨ
+ *
+ * @author xp
+ * @since 2025-05-16
+ */
+@Data
+@ApiModel(value = "骞冲彴绔疺ideo鏌ヨ鍙傛暟", description = "瑙嗛鍐呭鏌ヨ鍙傛暟")
+public class HealthVideoQuery extends AbsQuery {
+
+ @ApiModelProperty("鏍囬")
+ private String title;
+
+ @ApiModelProperty("瑙嗛鏍囩")
+ private List<String> tagList;
+
+ @ApiModelProperty("浣滆��")
+ private String authorId;
+
+ @ApiModelProperty("鐘舵��")
+ private String status;
+
+ /**
+ * @see VideoTypeEnum
+ */
+ @ApiModelProperty("瑙嗛绫诲瀷锛氳棰戙�佸ぇ鍋ュ悍銆佺鍘紝榛樿涓嶄紶鏌ヨ棰�")
+ private String videoType = VideoTypeEnum.HEALTH.getValue();
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTypeQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTypeQuery.java
new file mode 100644
index 0000000..678b28c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenTypeQuery.java
@@ -0,0 +1,24 @@
+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 wp
+ * @since 2025-06-13
+ */
+@Data
+@ApiModel(value = "KitchenType鏌ヨ鍙傛暟", description = "鍘ㄧ绫诲瀷鏌ヨ鍙傛暟")
+public class KitchenTypeQuery extends AbsQuery {
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String typeName;
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoQuery.java
new file mode 100644
index 0000000..f48ba62
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoQuery.java
@@ -0,0 +1,39 @@
+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;
+
+import java.util.List;
+
+/**
+ * 瑙嗛鍐呭鏌ヨ
+ *
+ * @author xp
+ * @since 2025-05-16
+ */
+@Data
+@ApiModel(value = "骞冲彴绔帹绁濾ideo鏌ヨ鍙傛暟", description = "瑙嗛鍐呭鏌ヨ鍙傛暟")
+public class KitchenVideoQuery extends AbsQuery {
+
+ @ApiModelProperty("鏍囬")
+ private String title;
+
+ @ApiModelProperty("瑙嗛鏍囩")
+ private List<String> typeList;
+
+ @ApiModelProperty("浣滆��")
+ private String authorId;
+
+ @ApiModelProperty("鐘舵��")
+ private String status;
+
+ /**
+ * @see VideoTypeEnum
+ */
+ @ApiModelProperty("瑙嗛绫诲瀷锛氳棰戙�佸ぇ鍋ュ悍銆佺鍘紝榛樿涓嶄紶鏌ヨ棰�")
+ private String videoType = VideoTypeEnum.COOK.getValue();
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoTypeRefQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoTypeRefQuery.java
new file mode 100644
index 0000000..e8cbb92
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/KitchenVideoTypeRefQuery.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 wp
+ * @since 2025-06-13
+ */
+@Data
+@ApiModel(value = "KitchenVideoTypeRef鏌ヨ鍙傛暟", description = "鍘ㄧ瑙嗛鏍囩鍏崇郴琛ㄦ煡璇㈠弬鏁�")
+public class KitchenVideoTypeRefQuery extends AbsQuery {
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareClickRecordQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareClickRecordQuery.java
new file mode 100644
index 0000000..9b1a36c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareClickRecordQuery.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 xp
+ * @since 2025-06-16
+ */
+@Data
+@ApiModel(value = "ShareClickRecord鏌ヨ鍙傛暟", description = "鍒嗕韩鐐瑰嚮璁板綍鏌ヨ鍙傛暟")
+public class ShareClickRecordQuery extends AbsQuery {
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareQuery.java
new file mode 100644
index 0000000..4f0d067
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareQuery.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 xp
+ * @since 2025-06-16
+ */
+@Data
+@ApiModel(value = "Share鏌ヨ鍙傛暟", description = "鍒嗕韩璁板綍鏌ヨ鍙傛暟")
+public class ShareQuery extends AbsQuery {
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoGoodsEsQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoGoodsEsQuery.java
new file mode 100644
index 0000000..96d18e9
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoGoodsEsQuery.java
@@ -0,0 +1,28 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍙戝竷瑙嗛鏃讹紝鍏宠仈鍟嗗搧鐨勬煡璇�
+ *
+ * @author锛歺p
+ * @date锛�2025/6/13 10:04
+ */
+@Data
+@ApiModel("鍙戝竷瑙嗛鏃讹紝鍏宠仈鍟嗗搧鐨勬煡璇�")
+public class VideoGoodsEsQuery {
+
+ @ApiModelProperty("鎼滅储鍏抽敭璇�")
+ private String keyword;
+
+ @ApiModelProperty("鏌ヨ嚜瀹跺簵閾虹殑鍟嗗搧")
+ private Boolean searchFromSelfStore;
+
+
+ private int pageNumber;
+
+ private int pageSize;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/WxHealthVideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/WxHealthVideoQuery.java
new file mode 100644
index 0000000..dc2111f
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/WxHealthVideoQuery.java
@@ -0,0 +1,25 @@
+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 WxHealthVideoQuery extends AbsQuery {
+
+ /**
+ * @see VideoTypeEnum
+ */
+ @ApiModelProperty("瑙嗛绫诲瀷锛氳棰戙�佸ぇ鍋ュ悍銆佺鍘紝榛樿涓嶄紶鏌ヨ棰�")
+ private String videoType = VideoTypeEnum.HEALTH.getValue();
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTypeVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTypeVO.java
new file mode 100644
index 0000000..a56c395
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenTypeVO.java
@@ -0,0 +1,43 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.KitchenType;
+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 wp
+ * @since 2025-06-13
+ */
+@Data
+@ApiModel(value = "鍘ㄧ绫诲瀷鍝嶅簲鏁版嵁", description = "鍘ㄧ绫诲瀷鍝嶅簲鏁版嵁")
+public class KitchenTypeVO extends AbsVo {
+
+ /** 鍘ㄧ绫诲瀷 */
+ @ApiModelProperty("鍘ㄧ绫诲瀷")
+ private String typeName;
+
+ /** 浣跨敤娆℃暟 */
+ @ApiModelProperty("浣跨敤娆℃暟")
+ private Long useNum;
+
+ /** 鎺掑簭瀛楁 */
+ @ApiModelProperty("鎺掑簭瀛楁")
+ private Long sortNum;
+
+ public static KitchenTypeVO getVoByEntity(@NonNull KitchenType entity, KitchenTypeVO vo) {
+ if(vo == null) {
+ vo = new KitchenTypeVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeRefVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeRefVO.java
new file mode 100644
index 0000000..b8295a9
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeRefVO.java
@@ -0,0 +1,39 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.KitchenVideoTypeRef;
+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 wp
+ * @since 2025-06-13
+ */
+@Data
+@ApiModel(value = "鍘ㄧ瑙嗛鏍囩鍏崇郴琛ㄥ搷搴旀暟鎹�", description = "鍘ㄧ瑙嗛鏍囩鍏崇郴琛ㄥ搷搴旀暟鎹�")
+public class KitchenVideoTypeRefVO extends AbsVo {
+
+ /** 瑙嗛id */
+ @ApiModelProperty("瑙嗛id")
+ private String videoId;
+
+ /** 鍘ㄧ鏍囩id */
+ @ApiModelProperty("鍘ㄧ鏍囩id")
+ private String kitchenTypeId;
+
+ public static KitchenVideoTypeRefVO getVoByEntity(@NonNull KitchenVideoTypeRef entity, KitchenVideoTypeRefVO vo) {
+ if(vo == null) {
+ vo = new KitchenVideoTypeRefVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeVO.java
new file mode 100644
index 0000000..fbfd923
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoTypeVO.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.KitchenVideoTypeRef;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+/**
+ * 鍘ㄧ瑙嗛鏍囩鍏崇郴琛ㄥ睍绀�
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+@Data
+@ApiModel(value = "鍘ㄧ瑙嗛鏍囩鍏崇郴琛ㄥ搷搴旀暟鎹�", description = "鍘ㄧ瑙嗛鏍囩鍏崇郴琛ㄥ搷搴旀暟鎹�")
+public class KitchenVideoTypeVO extends AbsVo {
+
+ /** 瑙嗛id */
+ @ApiModelProperty("瑙嗛id")
+ private String videoId;
+
+ /** 鍒嗙被id */
+ @ApiModelProperty("鍒嗙被id")
+ private String id;
+
+ /** 鍒嗙被鍚嶇О */
+ @ApiModelProperty("鍒嗙被鍚嶇О")
+ private String typeName;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoVO.java
new file mode 100644
index 0000000..2c436fc
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/KitchenVideoVO.java
@@ -0,0 +1,116 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.Video;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 瑙嗛鍐呭灞曠ず
+ *
+ * @author xp
+ * @since 2025-05-16
+ */
+@Data
+@ApiModel(value = "瑙嗛鍐呭鍝嶅簲鏁版嵁", description = "瑙嗛鍐呭鍝嶅簲鏁版嵁")
+public class KitchenVideoVO extends AbsVo {
+
+ /** 浣滆�卛d */
+ @ApiModelProperty("浣滆�卛d")
+ private String authorId;
+ private String authorName;
+
+ /** 鍥剧墖灏侀潰 */
+ @ApiModelProperty("鍥剧墖灏侀潰")
+ private String coverUrl;
+
+ /** 灏侀潰鏄剧ず鍦板潃 */
+ @ApiModelProperty("灏侀潰鏄剧ず鍦板潃")
+ private String coverShowUrl;
+
+ /** 瑙嗛鍦板潃 */
+ @ApiModelProperty("瑙嗛鍦板潃")
+ private String videoFileKey;
+ private String videoUrl;
+
+ @ApiModelProperty("瑙嗛鏍囩")
+ private List<KitchenVideoTypeVO> typeList;
+
+ @ApiModelProperty("瑙嗛鍐呭绫诲瀷锛氳棰戙�佸浘鐗�")
+ private String videoContentType;
+
+ @ApiModelProperty("瑙嗛绫诲瀷锛氳棰戙�佸ぇ鍋ュ悍銆佺鍘�")
+ private String videoType;
+
+ @ApiModelProperty(value = "鍥剧墖鍒楄〃锛宩son鏁扮粍", hidden = true)
+ private String videoImgs;
+
+ @ApiModelProperty("鍥剧墖鍒楄〃")
+ private List<String> imgs;
+
+ /** 瑙嗛濉厖妯″紡 */
+ @ApiModelProperty("瑙嗛濉厖妯″紡")
+ private String videoFit;
+
+ @ApiModelProperty("瑙嗛闀垮害锛氱")
+ private Long videoDuration;
+
+ /** 瑙嗛鏍囬 */
+ @ApiModelProperty("瑙嗛鏍囬")
+ private String title;
+
+ /** 鍟嗗搧id */
+ @ApiModelProperty("鍟嗗搧id")
+ private String goodsId;
+
+ /** 鍟嗗搧鏌ョ湅娆℃暟 */
+ @ApiModelProperty("鍟嗗搧鏌ョ湅娆℃暟")
+ private Long goodsViewNum;
+
+ /** 鍟嗗搧涓嬪崟娆℃暟 */
+ @ApiModelProperty("鍟嗗搧涓嬪崟娆℃暟")
+ private Long goodsOrderNum;
+
+ /** 鏄惁鎺ㄨ崘 */
+ @ApiModelProperty("鏄惁鎺ㄨ崘")
+ private Boolean recommend;
+
+ /** 鐘舵�� */
+ @ApiModelProperty("鐘舵��")
+ private String status;
+
+ /** 鎾斁閲� */
+ @ApiModelProperty("鎾斁閲�")
+ private Long playNum;
+
+ /** 鏀惰棌鏁� */
+ @ApiModelProperty("鏀惰棌鏁�")
+ private Long collectNum;
+
+ /** 璇勮鏁� */
+ @ApiModelProperty("璇勮鏁�")
+ private Long commentNum;
+
+ /** 鏉冮噸 */
+ @ApiModelProperty("鏉冮噸")
+ private double weight;
+
+ /** 瀹℃牳閫氳繃鏃堕棿 */
+ @ApiModelProperty("瀹℃牳閫氳繃鏃堕棿")
+ private Date auditPassTime;
+
+ public static KitchenVideoVO getVoByEntity(@NonNull Video entity, KitchenVideoVO vo) {
+ if(vo == null) {
+ vo = new KitchenVideoVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareClickRecordVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareClickRecordVO.java
new file mode 100644
index 0000000..bcfea1b
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareClickRecordVO.java
@@ -0,0 +1,43 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.ShareClickRecord;
+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 xp
+ * @since 2025-06-16
+ */
+@Data
+@ApiModel(value = "鍒嗕韩鐐瑰嚮璁板綍鍝嶅簲鏁版嵁", description = "鍒嗕韩鐐瑰嚮璁板綍鍝嶅簲鏁版嵁")
+public class ShareClickRecordVO extends AbsVo {
+
+ /** 鍒嗕韩id */
+ @ApiModelProperty("鍒嗕韩id")
+ private String shareId;
+
+ /** 璋佺偣浜嗚繖涓垎浜� */
+ @ApiModelProperty("璋佺偣浜嗚繖涓垎浜�")
+ private String userId;
+
+ /** 鐐瑰嚮鏃堕棿 */
+ @ApiModelProperty("鐐瑰嚮鏃堕棿")
+ private Date clickTime;
+
+ public static ShareClickRecordVO getVoByEntity(@NonNull ShareClickRecord entity, ShareClickRecordVO vo) {
+ if(vo == null) {
+ vo = new ShareClickRecordVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareVO.java
new file mode 100644
index 0000000..0efdae6
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareVO.java
@@ -0,0 +1,47 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.Share;
+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 xp
+ * @since 2025-06-16
+ */
+@Data
+@ApiModel(value = "鍒嗕韩璁板綍鍝嶅簲鏁版嵁", description = "鍒嗕韩璁板綍鍝嶅簲鏁版嵁")
+public class ShareVO extends AbsVo {
+
+ /** 鍝釜涓氬姟鐨勫垎浜� */
+ @ApiModelProperty("鍝釜涓氬姟鐨勫垎浜�")
+ private String shareType;
+
+ /** 涓氬姟id */
+ @ApiModelProperty("涓氬姟id")
+ private String refId;
+
+ /** 鍒嗕韩浜� */
+ @ApiModelProperty("鍒嗕韩浜�")
+ private String shareUser;
+
+ /** 鍒嗕韩鏃堕棿 */
+ @ApiModelProperty("鍒嗕韩鏃堕棿")
+ private Date shareTime;
+
+ public static ShareVO getVoByEntity(@NonNull Share entity, ShareVO vo) {
+ if(vo == null) {
+ vo = new ShareVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsDetailVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsDetailVO.java
new file mode 100644
index 0000000..e765747
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsDetailVO.java
@@ -0,0 +1,30 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2025/6/16 9:11
+ */
+@Data
+@ApiModel("瑙嗛鍟嗗搧璇︽儏")
+public class VideoGoodsDetailVO {
+
+ @ApiModelProperty("鍟嗗搧id")
+ private String goodsId;
+
+ @ApiModelProperty("鍟嗗搧鍚嶇О")
+ private String goodsName;
+
+ @ApiModelProperty("浠锋牸")
+ private String price;
+
+ @ApiModelProperty("缂╃暐鍥�")
+ private String thumbnail;
+
+ @ApiModelProperty("鍟嗗搧鏁伴噺")
+ private Integer goodsNum;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsPublishVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsPublishVO.java
new file mode 100644
index 0000000..3d970f2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoGoodsPublishVO.java
@@ -0,0 +1,21 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2025/6/15 19:10
+ */
+@Data
+@ApiModel("鍙戝竷瑙嗛-鍟嗗搧淇℃伅")
+public class VideoGoodsPublishVO {
+
+ @ApiModelProperty("鍟嗗搧id")
+ private String goodsId;
+
+ @ApiModelProperty("鍟嗗搧鏁伴噺")
+ private Integer goodsNum;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java
index fae271e..0fc6690 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java
@@ -30,6 +30,10 @@
@ApiModelProperty("鍥剧墖灏侀潰")
private String coverUrl;
+ /** 灏侀潰鏄剧ず鍦板潃 */
+ @ApiModelProperty("灏侀潰鏄剧ず鍦板潃")
+ private String coverShowUrl;
+
/** 瑙嗛鍦板潃 */
@ApiModelProperty("瑙嗛鍦板潃")
private String videoFileKey;
@@ -63,15 +67,7 @@
/** 鍟嗗搧id */
@ApiModelProperty("鍟嗗搧id")
- private String goodsId;
-
- /** 鍟嗗搧鏌ョ湅娆℃暟 */
- @ApiModelProperty("鍟嗗搧鏌ョ湅娆℃暟")
- private Long goodsViewNum;
-
- /** 鍟嗗搧涓嬪崟娆℃暟 */
- @ApiModelProperty("鍟嗗搧涓嬪崟娆℃暟")
- private Long goodsOrderNum;
+ private List<VideoGoodsDetailVO> goodsList;
/** 鏄惁鎺ㄨ崘 */
@ApiModelProperty("鏄惁鎺ㄨ崘")
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java
index 1c74bc9..943f81e 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java
@@ -35,6 +35,18 @@
@ApiModelProperty("瑙嗛鏍囩")
private List<WxVideoTagForm> tags;
+ @ApiModelProperty("鍥鹃泦-json鏁扮粍")
+ private String videoImgs;
+
+ @ApiModelProperty("鍥鹃泦")
+ private List<String> imgs;
+
+ /**
+ * @see cn.lili.modules.lmk.enums.general.VideoContentTypeEnum
+ */
+ @ApiModelProperty("瑙嗛鍐呭绫诲瀷锛氳棰戙�佸浘鐗�")
+ private String videoContentType;
+
/** 瑙嗛濉厖妯″紡 */
@ApiModelProperty("瑙嗛濉厖妯″紡")
private String videoFit;
@@ -45,7 +57,7 @@
/** 鍟嗗搧淇℃伅 */
@ApiModelProperty("鍟嗗搧淇℃伅")
- private String goodsId;
+ private List<VideoGoodsDetailVO> goodsList;
@ApiModelProperty("瑙嗛闀垮害锛氱")
private Long videoDuration;
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoTagVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoTagVO.java
new file mode 100644
index 0000000..c8bc182
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoTagVO.java
@@ -0,0 +1,36 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+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;
+
+/**
+ * 瑙嗛鏍囩灞曠ず
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "瑙嗛鏍囩鍝嶅簲鏁版嵁", description = "瑙嗛鏍囩鍝嶅簲鏁版嵁")
+public class WxVideoTagVO {
+
+ private String id;
+
+ /** 鏍囩鍚嶇О */
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagName;
+
+
+ public static WxVideoTagVO getVoByEntity(@NonNull VideoTag entity, WxVideoTagVO vo) {
+ if(vo == null) {
+ vo = new WxVideoTagVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java
index 179415f..827efa3 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java
@@ -63,6 +63,9 @@
@ApiModelProperty("瑙嗛鏍囩")
private List<SimpleVideoTagVO> tagList;
+ @ApiModelProperty("瑙嗛鏃堕暱锛氱")
+ private Long videoDuration;
+
/** 瑙嗛濉厖妯″紡 */
@ApiModelProperty("瑙嗛濉厖妯″紡")
private String videoFit;
@@ -73,7 +76,7 @@
/** 鍟嗗搧淇℃伅 */
@ApiModelProperty("鍟嗗搧淇℃伅")
- private VideoGoodsVO goods;
+ private List<VideoGoodsDetailVO> goodsList;
@ApiModelProperty("褰撳墠鐢ㄦ埛鏄惁鏀惰棌浜嗚瑙嗛")
private Boolean collected = Boolean.FALSE;
diff --git a/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java b/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java
index a339215..36a9b22 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java
@@ -17,7 +17,7 @@
@Getter
public enum VideoSupportOpEnum {
- UP("UP", "鍙戝竷"),
+// UP("UP", "鍙戝竷"),
DOWN("DOWN", "涓嬫灦"),
DELETE("DELETE", "鍒犻櫎"),
EDIT("EDIT", "缂栬緫"),
@@ -43,7 +43,7 @@
if (VideoStatusEnum.AUDITING.getValue().equals(status)) {
return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(DELETE.value, DELETE.desc));
} else if (VideoStatusEnum.DISABLE.getValue().equals(status)) {
- return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(UP.value, UP.desc), new VideoOption(DELETE.value, DELETE.desc));
+ return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(DELETE.value, DELETE.desc));
} else if (VideoStatusEnum.PUBLISHED.getValue().equals(status)) {
return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(DOWN.value, DOWN.desc), new VideoOption(DELETE.value, DELETE.desc));
} else if (VideoStatusEnum.REJECT.getValue().equals(status)) {
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTypeMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTypeMapper.java
new file mode 100644
index 0000000..199b8c8
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenTypeMapper.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.KitchenType;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.KitchenTypeVO;
+import cn.lili.modules.lmk.domain.form.KitchenTypeForm;
+import cn.lili.modules.lmk.domain.query.KitchenTypeQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鍘ㄧ绫诲瀷 Mapper 鎺ュ彛
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+@Mapper
+public interface KitchenTypeMapper extends BaseMapper<KitchenType> {
+
+ /**
+ * id鏌ユ壘鍘ㄧ绫诲瀷
+ * @param id
+ * @return
+ */
+ KitchenTypeVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") KitchenTypeQuery query);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenVideoTypeRefMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenVideoTypeRefMapper.java
new file mode 100644
index 0000000..c6157e8
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/KitchenVideoTypeRefMapper.java
@@ -0,0 +1,37 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.KitchenVideoTypeRef;
+import cn.lili.modules.lmk.domain.vo.KitchenVideoTypeVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.KitchenVideoTypeRefVO;
+import cn.lili.modules.lmk.domain.form.KitchenVideoTypeRefForm;
+import cn.lili.modules.lmk.domain.query.KitchenVideoTypeRefQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鍘ㄧ瑙嗛鏍囩鍏崇郴琛� Mapper 鎺ュ彛
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+@Mapper
+public interface KitchenVideoTypeRefMapper extends BaseMapper<KitchenVideoTypeRef> {
+
+ /**
+ * id鏌ユ壘鍘ㄧ瑙嗛鏍囩鍏崇郴琛�
+ * @param id
+ * @return
+ */
+ KitchenVideoTypeRefVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") KitchenVideoTypeRefQuery query);
+
+ List<KitchenVideoTypeVO> getTypeByVideoIds(@Param("videoIds") List<String> videoIds);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/ShareClickRecordMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/ShareClickRecordMapper.java
new file mode 100644
index 0000000..88772b7
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/ShareClickRecordMapper.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.ShareClickRecord;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.ShareClickRecordVO;
+import cn.lili.modules.lmk.domain.form.ShareClickRecordForm;
+import cn.lili.modules.lmk.domain.query.ShareClickRecordQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鍒嗕韩鐐瑰嚮璁板綍 Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+@Mapper
+public interface ShareClickRecordMapper extends BaseMapper<ShareClickRecord> {
+
+ /**
+ * id鏌ユ壘鍒嗕韩鐐瑰嚮璁板綍
+ * @param id
+ * @return
+ */
+ ShareClickRecordVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") ShareClickRecordQuery query);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/ShareMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/ShareMapper.java
new file mode 100644
index 0000000..932837b
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/ShareMapper.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.Share;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.ShareVO;
+import cn.lili.modules.lmk.domain.form.ShareForm;
+import cn.lili.modules.lmk.domain.query.ShareQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鍒嗕韩璁板綍 Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+@Mapper
+public interface ShareMapper extends BaseMapper<Share> {
+
+ /**
+ * id鏌ユ壘鍒嗕韩璁板綍
+ * @param id
+ * @return
+ */
+ ShareVO getById(String id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") ShareQuery query);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoGoodsMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoGoodsMapper.java
new file mode 100644
index 0000000..8143ad6
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoGoodsMapper.java
@@ -0,0 +1,17 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.VideoGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 瑙嗛鍟嗗搧涓棿琛� Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2025-06-15
+ */
+@Mapper
+public interface VideoGoodsMapper extends BaseMapper<VideoGoods> {
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
index 4b2675f..a7396bd 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
@@ -1,13 +1,8 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.Video;
-import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
-import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
-import cn.lili.modules.lmk.domain.query.VideoQuery;
-import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
-import cn.lili.modules.lmk.domain.vo.VideoAccountVO;
-import cn.lili.modules.lmk.domain.vo.VideoVO;
-import cn.lili.modules.lmk.domain.vo.WxEditVideoVO;
+import cn.lili.modules.lmk.domain.query.*;
+import cn.lili.modules.lmk.domain.vo.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
@@ -50,6 +45,8 @@
* @return
*/
IPage recommendVideo(IPage page, @Param("query") VideoQuery query);
+
+ IPage recommendHealthVideo(IPage page, @Param("query") WxHealthVideoQuery query);
/**
* 鎵归噺鏇存柊瑙嗛鏀惰棌鏁伴噺
@@ -112,4 +109,22 @@
* @return
*/
WxEditVideoVO wxDetail(@Param("id") String id);
+
+ /**
+ * 澶у仴搴疯棰戝垎椤�
+ *
+ * @param page
+ * @param query
+ */
+ IPage healthPage(IPage page, @Param("query") HealthVideoQuery query);
+
+ IPage kitchenPage(IPage page, @Param("query") KitchenVideoQuery query);
+
+ /**
+ * 鑾峰彇瑙嗛鎮寕鍟嗗搧
+ *
+ * @param videoId
+ * @return
+ */
+ List<VideoGoodsDetailVO> getVideoGoods(@Param("id") String videoId);
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/KitchenTypeService.java b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenTypeService.java
new file mode 100644
index 0000000..322ea84
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenTypeService.java
@@ -0,0 +1,65 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.KitchenType;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.KitchenTypeForm;
+import cn.lili.modules.lmk.domain.query.KitchenTypeQuery;
+import java.util.List;
+
+/**
+ * 鍘ㄧ绫诲瀷 鏈嶅姟绫�
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+public interface KitchenTypeService extends IService<KitchenType> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(KitchenTypeForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(KitchenTypeForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(KitchenTypeQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/KitchenVideoTypeRefService.java b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenVideoTypeRefService.java
new file mode 100644
index 0000000..c7b6152
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/KitchenVideoTypeRefService.java
@@ -0,0 +1,70 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.KitchenVideoTypeRef;
+import cn.lili.modules.lmk.domain.vo.KitchenVideoTypeVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.KitchenVideoTypeRefForm;
+import cn.lili.modules.lmk.domain.query.KitchenVideoTypeRefQuery;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 鍘ㄧ瑙嗛鏍囩鍏崇郴琛� 鏈嶅姟绫�
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+public interface KitchenVideoTypeRefService extends IService<KitchenVideoTypeRef> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(KitchenVideoTypeRefForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(KitchenVideoTypeRefForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(KitchenVideoTypeRefQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+
+ List<KitchenVideoTypeVO> getTypeByVideoIds(List<String> videoIds);
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/ShareClickRecordService.java b/framework/src/main/java/cn/lili/modules/lmk/service/ShareClickRecordService.java
new file mode 100644
index 0000000..e5e4891
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/ShareClickRecordService.java
@@ -0,0 +1,65 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.ShareClickRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.ShareClickRecordForm;
+import cn.lili.modules.lmk.domain.query.ShareClickRecordQuery;
+import java.util.List;
+
+/**
+ * 鍒嗕韩鐐瑰嚮璁板綍 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+public interface ShareClickRecordService extends IService<ShareClickRecord> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(ShareClickRecordForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(ShareClickRecordForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(ShareClickRecordQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/ShareService.java b/framework/src/main/java/cn/lili/modules/lmk/service/ShareService.java
new file mode 100644
index 0000000..3cf7753
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/ShareService.java
@@ -0,0 +1,74 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.Share;
+import cn.lili.modules.lmk.domain.form.ShareClickRecordForm;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.ShareForm;
+import cn.lili.modules.lmk.domain.query.ShareQuery;
+import java.util.List;
+
+/**
+ * 鍒嗕韩璁板綍 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+public interface ShareService extends IService<Share> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(ShareForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(ShareForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(ShareQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(String id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+
+ /**
+ * 娣诲姞鍒嗕韩璁块棶璁板綍
+ *
+ * @param form
+ * @return
+ */
+ Result addShareClick(ShareClickRecordForm form);
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoGoodsService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoGoodsService.java
new file mode 100644
index 0000000..e2363c0
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoGoodsService.java
@@ -0,0 +1,14 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.VideoGoods;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 瑙嗛鍟嗗搧涓棿琛� 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2025-06-15
+ */
+public interface VideoGoodsService extends IService<VideoGoods> {
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
index 0a4b93d..8b8f5c4 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
@@ -1,13 +1,15 @@
package cn.lili.modules.lmk.service;
+import cn.lili.group.Add;
import cn.lili.modules.lmk.domain.entity.Video;
import cn.lili.modules.lmk.domain.form.*;
-import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
-import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
+import cn.lili.modules.lmk.domain.query.*;
import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.lili.base.Result;
-import cn.lili.modules.lmk.domain.query.VideoQuery;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+
import java.util.List;
/**
@@ -122,6 +124,8 @@
*/
Result recommendVideo(VideoQuery query);
+ Result healthRecommendVideo(WxHealthVideoQuery query);
+
/**
* 鎵归噺鏇存柊瑙嗛鏀惰棌鏁伴噺
*
@@ -183,4 +187,70 @@
* @return
*/
Result wxDetail(String id);
+
+ /**
+ * 澶у仴搴疯棰戝彂甯�
+ *
+ * @param form
+ * @return
+ */
+ Result healthVideo(HealthVideoForm form);
+ /**
+ * 淇敼澶у仴搴疯棰�
+ *
+ * @param form
+ * @return
+ */
+ Result updateHealthVideo(HealthVideoForm form);
+ /**
+ * 澶у仴搴疯棰戝垪琛�
+ *
+ * @param query
+ * @return
+ */
+ Result healthPage(HealthVideoQuery query);
+ /**
+ * 鍒犻櫎澶у仴搴疯棰�
+
+ * @param id 涓婚敭id
+ * @return
+ */
+ Result delHealth(String id);
+
+ Result addKitchenVideo( KitchenVideoForm form);
+
+ Result updateKitchenVideo( KitchenVideoForm form);
+ /**
+ * 鍘ㄧ瑙嗛鍒楄〃
+ *
+ * @param query
+ * @return
+ */
+ Result KitchenVideoQuery(KitchenVideoQuery query);
+
+ Result delKitchen(String id);
+
+ /**
+ * 瑙嗛鍟嗗搧鏌ョ湅
+ *
+ * @param videoId
+ * @return
+ */
+ Result getGoodsDetail(String videoId);
+
+ /**
+ * 鐢ㄦ埛涓嬫灦瑙嗛
+ *
+ * @param id
+ * @return
+ */
+ Result buyerDownVideo(String id);
+
+ /**
+ * 淇敼瑙嗛
+ *
+ * @param form
+ * @return
+ */
+ Result updatePublish(WxVideoForm form);
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTypeServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTypeServiceImpl.java
new file mode 100644
index 0000000..d2e0f9c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenTypeServiceImpl.java
@@ -0,0 +1,135 @@
+package cn.lili.modules.lmk.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.KitchenType;
+import cn.lili.modules.lmk.mapper.KitchenTypeMapper;
+import cn.lili.modules.lmk.service.KitchenTypeService;
+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.KitchenTypeForm;
+import cn.lili.modules.lmk.domain.vo.KitchenTypeVO;
+import cn.lili.modules.lmk.domain.query.KitchenTypeQuery;
+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 wp
+ * @since 2025-06-13
+ */
+@Service
+@RequiredArgsConstructor
+public class KitchenTypeServiceImpl extends ServiceImpl<KitchenTypeMapper, KitchenType> implements KitchenTypeService {
+
+ private final KitchenTypeMapper kitchenTypeMapper;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(KitchenTypeForm form) {
+ KitchenType entity = KitchenTypeForm.getEntityByForm(form, null);
+ entity.setUseNum(0L);
+ LambdaQueryWrapper<KitchenType> wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(KitchenType::getTypeName, form.getTypeName());
+ List<KitchenType> kitchenTypes = baseMapper.selectList(wrapper);
+ if (!kitchenTypes.isEmpty()) {
+ return Result.error("娣诲姞澶辫触鏍囩瀛樺湪");
+ }
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(KitchenTypeForm form) {
+ KitchenType entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ //鏍¢獙鏍囩鏄惁瀛樺湪
+ LambdaQueryWrapper<KitchenType> wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(KitchenType::getTypeName, form.getTypeName());
+ List<KitchenType> kitchenTypes = baseMapper.selectList(wrapper);
+ if (!kitchenTypes.isEmpty()) {
+ return Result.error("淇敼澶辫触鏍囩瀛樺湪");
+ }
+ 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(KitchenTypeQuery query) {
+ IPage<KitchenTypeVO> page = PageUtil.getPage(query, KitchenTypeVO.class);
+ baseMapper.getPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ KitchenTypeVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<KitchenType> entities = baseMapper.selectList(null);
+ List<KitchenTypeVO> vos = entities.stream()
+ .map(entity -> KitchenTypeVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenVideoTypeRefServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenVideoTypeRefServiceImpl.java
new file mode 100644
index 0000000..6aac262
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/KitchenVideoTypeRefServiceImpl.java
@@ -0,0 +1,126 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.modules.lmk.domain.vo.KitchenVideoTypeVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.KitchenVideoTypeRef;
+import cn.lili.modules.lmk.mapper.KitchenVideoTypeRefMapper;
+import cn.lili.modules.lmk.service.KitchenVideoTypeRefService;
+import cn.lili.base.Result;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.lili.modules.lmk.domain.form.KitchenVideoTypeRefForm;
+import cn.lili.modules.lmk.domain.vo.KitchenVideoTypeRefVO;
+import cn.lili.modules.lmk.domain.query.KitchenVideoTypeRefQuery;
+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.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鍘ㄧ瑙嗛鏍囩鍏崇郴琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+@Service
+@RequiredArgsConstructor
+public class KitchenVideoTypeRefServiceImpl extends ServiceImpl<KitchenVideoTypeRefMapper, KitchenVideoTypeRef> implements KitchenVideoTypeRefService {
+
+ private final KitchenVideoTypeRefMapper kitchenVideoTypeRefMapper;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(KitchenVideoTypeRefForm form) {
+ KitchenVideoTypeRef entity = KitchenVideoTypeRefForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(KitchenVideoTypeRefForm form) {
+ KitchenVideoTypeRef 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(KitchenVideoTypeRefQuery query) {
+ IPage<KitchenVideoTypeRefVO> page = PageUtil.getPage(query, KitchenVideoTypeRefVO.class);
+ baseMapper.getPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ KitchenVideoTypeRefVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<KitchenVideoTypeRef> entities = baseMapper.selectList(null);
+ List<KitchenVideoTypeRefVO> vos = entities.stream()
+ .map(entity -> KitchenVideoTypeRefVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+
+ @Override
+ public List<KitchenVideoTypeVO> getTypeByVideoIds(List<String> videoIds) {
+ return baseMapper.getTypeByVideoIds(videoIds);
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareClickRecordServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareClickRecordServiceImpl.java
new file mode 100644
index 0000000..a3fd375
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareClickRecordServiceImpl.java
@@ -0,0 +1,119 @@
+package cn.lili.modules.lmk.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.ShareClickRecord;
+import cn.lili.modules.lmk.mapper.ShareClickRecordMapper;
+import cn.lili.modules.lmk.service.ShareClickRecordService;
+import cn.lili.base.Result;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.lili.modules.lmk.domain.form.ShareClickRecordForm;
+import cn.lili.modules.lmk.domain.vo.ShareClickRecordVO;
+import cn.lili.modules.lmk.domain.query.ShareClickRecordQuery;
+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 xp
+ * @since 2025-06-16
+ */
+@Service
+@RequiredArgsConstructor
+public class ShareClickRecordServiceImpl extends ServiceImpl<ShareClickRecordMapper, ShareClickRecord> implements ShareClickRecordService {
+
+ private final ShareClickRecordMapper shareClickRecordMapper;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(ShareClickRecordForm form) {
+ ShareClickRecord entity = ShareClickRecordForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(ShareClickRecordForm form) {
+ ShareClickRecord 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(ShareClickRecordQuery query) {
+ IPage<ShareClickRecordVO> page = PageUtil.getPage(query, ShareClickRecordVO.class);
+ baseMapper.getPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ ShareClickRecordVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<ShareClickRecord> entities = baseMapper.selectList(null);
+ List<ShareClickRecordVO> vos = entities.stream()
+ .map(entity -> ShareClickRecordVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareServiceImpl.java
new file mode 100644
index 0000000..ba8b794
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareServiceImpl.java
@@ -0,0 +1,161 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.common.security.context.UserContext;
+import cn.lili.modules.lmk.domain.entity.ShareClickRecord;
+import cn.lili.modules.lmk.domain.form.ShareClickRecordForm;
+import cn.lili.modules.lmk.service.ShareClickRecordService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.lili.modules.lmk.domain.entity.Share;
+import cn.lili.modules.lmk.mapper.ShareMapper;
+import cn.lili.modules.lmk.service.ShareService;
+import cn.lili.base.Result;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.lili.modules.lmk.domain.form.ShareForm;
+import cn.lili.modules.lmk.domain.vo.ShareVO;
+import cn.lili.modules.lmk.domain.query.ShareQuery;
+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.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 鍒嗕韩璁板綍 鏈嶅姟瀹炵幇绫�
+ *
+ * @author xp
+ * @since 2025-06-16
+ */
+@Service
+@RequiredArgsConstructor
+public class ShareServiceImpl extends ServiceImpl<ShareMapper, Share> implements ShareService {
+
+ private final ShareMapper shareMapper;
+ private final ShareClickRecordService shareClickRecordService;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(ShareForm form) {
+ // 娌″垎浜繃鎵嶆柊澧�
+ boolean exists = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(Share::getShareType, form.getShareType())
+ .eq(Share::getRefId, form.getRefId())
+ .eq(Share::getShareUser, form.getShareUser())
+ .exists();
+ if (! exists) {
+ Share entity = ShareForm.getEntityByForm(form, null);
+ entity.setShareTime(new Date());
+ baseMapper.insert(entity);
+ }
+ return Result.ok();
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(ShareForm form) {
+ Share 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(ShareQuery query) {
+ IPage<ShareVO> page = PageUtil.getPage(query, ShareVO.class);
+ baseMapper.getPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(String id) {
+ ShareVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<Share> entities = baseMapper.selectList(null);
+ List<ShareVO> vos = entities.stream()
+ .map(entity -> ShareVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+
+ @Override
+ public Result addShareClick(ShareClickRecordForm form) {
+ // 鏌ュ嚭鍒嗕韩璁板綍
+ Share share = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(Share::getShareUser, form.getShareUserId())
+ .eq(Share::getRefId, form.getRefId())
+ .one();
+ if (Objects.isNull(share)) {
+ return Result.ok();
+ }
+ // 娌℃湁璁块棶杩囨墠娣诲姞
+ boolean exists = new LambdaQueryChainWrapper<>(shareClickRecordService.getBaseMapper())
+ .eq(ShareClickRecord::getUserId, UserContext.getCurrentUserId())
+ .eq(ShareClickRecord::getShareId, share.getId())
+ .exists();
+ if (! exists) {
+ ShareClickRecord record = new ShareClickRecord();
+ record.setShareId(share.getId());
+ record.setUserId(UserContext.getCurrentUserId());
+ record.setClickTime(new Date());
+ shareClickRecordService.save(record);
+ }
+ return Result.ok();
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoGoodsServiceImpl.java
new file mode 100644
index 0000000..dff92fa
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoGoodsServiceImpl.java
@@ -0,0 +1,22 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.modules.lmk.domain.entity.VideoGoods;
+import cn.lili.modules.lmk.mapper.VideoGoodsMapper;
+import cn.lili.modules.lmk.service.VideoGoodsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 瑙嗛鍟嗗搧涓棿琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author xp
+ * @since 2025-06-15
+ */
+@Service
+@RequiredArgsConstructor
+public class VideoGoodsServiceImpl extends ServiceImpl<VideoGoodsMapper, VideoGoods> implements VideoGoodsService {
+
+ private final VideoGoodsMapper videoGoodsMapper;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
index 74b939e..b56d9ba 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -3,8 +3,7 @@
import cn.lili.common.security.context.UserContext;
import cn.lili.modules.lmk.domain.entity.*;
import cn.lili.modules.lmk.domain.form.*;
-import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
-import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
+import cn.lili.modules.lmk.domain.query.*;
import cn.lili.modules.lmk.domain.vo.*;
import cn.lili.modules.lmk.enums.general.*;
import cn.lili.modules.lmk.service.*;
@@ -17,10 +16,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.mapper.VideoMapper;
import cn.lili.base.Result;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import cn.lili.modules.lmk.domain.query.VideoQuery;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
@@ -55,6 +54,8 @@
private final MySubscribeService mySubscribeService;
private final MemberService memberService;
private final VideoAccountService videoAccountService;
+ private final KitchenVideoTypeRefService kitchenVideoTypeRefService;
+ private final VideoGoodsService videoGoodsService;
/**
@@ -187,11 +188,86 @@
return videoTagRef;
}).collect(Collectors.toList());
videoTagRefService.saveBatch(videoTagRefs);
- // 3.淇濆瓨瑙嗛鏂囦欢淇℃伅
+ // 3. 淇濆瓨瑙嗛鏂囦欢淇℃伅
lmkFileService.addByForm(form.getFileInfo());
+ // 4. 澶勭悊閫夋嫨鐨勫晢鍝�
+ if (CollectionUtils.isNotEmpty(form.getGoodsList())) {
+ List<VideoGoods> videoGoods = new ArrayList<>(2);
+ for (int i = 0; i < form.getGoodsList().size(); i++) {
+ VideoGoods e = new VideoGoods();
+ e.setVideoId(video.getId());
+ e.setGoodsId(form.getGoodsList().get(i).getGoodsId());
+ e.setGoodsNum(form.getGoodsList().get(i).getGoodsNum());
+ e.setOrderNum(i);
+ videoGoods.add(e);
+ }
+ videoGoodsService.saveBatch(videoGoods);
+ }
return Result.ok("鍙戝竷鎴愬姛锛岃棰戝鏍镐腑~");
}
+ @Override
+ public Result updatePublish(WxVideoForm form) {
+ Video video = baseMapper.selectById(form.getId());
+ if (Objects.isNull(video)) {
+ return Result.error("淇敼瑙嗛涓嶅瓨鍦�");
+ }
+ // 1.淇敼瑙嗛
+ WxVideoForm.getEntityByForm(form, video);
+ video.setAuthorId(UserContext.getCurrentUserId());
+ video.setStatus(VideoStatusEnum.AUDITING.getValue());
+ video.setCoverUrl(form.getCover());
+ video.setVideoType(VideoTypeEnum.VIDEO.getValue());
+ if (VideoContentTypeEnum.IMG.getValue().equals(form.getVideoContentType())) {
+ video.setVideoImgs(JSON.toJSONString(form.getVideoImgs()));
+ }
+ baseMapper.updateById(video);
+ // 2.澶勭悊鏍囩---鍒犻櫎涔嬪墠鐨勮棰戞爣绛惧叧绯伙紝鍐嶆柊澧�
+ new LambdaUpdateChainWrapper<>(videoTagRefService.getBaseMapper())
+ .eq(VideoTagRef::getVideoId, video.getId())
+ .remove();
+ List<VideoTagRef> videoTagRefs = form.getTags().stream().map(tag -> {
+ VideoTagRef videoTagRef = new VideoTagRef();
+ videoTagRef.setVideoId(video.getId());
+ if (StringUtils.isBlank(tag.getId())) {
+ VideoTag videoTag = new LambdaQueryChainWrapper<>(videoTagService.getBaseMapper())
+ .eq(VideoTag::getTagName, tag.getTagName())
+ .one();
+ if (Objects.nonNull(videoTag)) {
+ videoTagRef.setVideoTagId(videoTag.getId());
+ } else {
+ videoTag = new VideoTag();
+ videoTag.setTagName(tag.getTagName());
+ videoTag.setCreateType(TagCreateTypeEnum.USER.getValue());
+ videoTagService.save(videoTag);
+ videoTagRef.setVideoTagId(videoTag.getId());
+ }
+ } else {
+ videoTagRef.setVideoTagId(tag.getId());
+ }
+ return videoTagRef;
+ }).collect(Collectors.toList());
+ videoTagRefService.saveBatch(videoTagRefs);
+ // 3. 淇濆瓨瑙嗛鏂囦欢淇℃伅
+ lmkFileService.addByForm(form.getFileInfo());
+ // 4. 澶勭悊閫夋嫨鐨勫晢鍝侊紝鍏堝垹闄や箣鍓嶇殑鍐嶆柊澧�
+ new LambdaUpdateChainWrapper<>(videoGoodsService.getBaseMapper())
+ .eq(VideoGoods::getVideoId, video.getId())
+ .remove();
+ if (CollectionUtils.isNotEmpty(form.getGoodsList())) {
+ List<VideoGoods> videoGoods = new ArrayList<>(2);
+ for (int i = 0; i < form.getGoodsList().size(); i++) {
+ VideoGoods e = new VideoGoods();
+ e.setVideoId(video.getId());
+ e.setGoodsId(form.getGoodsList().get(i).getGoodsId());
+ e.setGoodsNum(form.getGoodsList().get(i).getGoodsNum());
+ e.setOrderNum(i);
+ videoGoods.add(e);
+ }
+ videoGoodsService.saveBatch(videoGoods);
+ }
+ return Result.ok("鍙戝竷鎴愬姛锛岃棰戝鏍镐腑~");
+ }
@Override
public Result managerPage(ManagerVideoQuery query) {
@@ -202,7 +278,7 @@
if (page.getTotal() > 0) {
Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(
page.getRecords().stream().map(VideoVO::getId).collect(Collectors.toList())
- ).stream().collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId));;
+ ).stream().collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId));
// 3. 鑾峰彇瑙嗛涓存椂璁块棶鍦板潃銆佽缃棰戞爣绛�
page.getRecords().forEach(v -> {
v.setTagList(tagMap.get(v.getId()));
@@ -269,6 +345,15 @@
}
@Override
+ public Result buyerDownVideo(String id) {
+ new LambdaUpdateChainWrapper<>(baseMapper)
+ .eq(Video::getId, id)
+ .set(Video::getStatus, VideoStatusEnum.DISABLE.getValue())
+ .update();
+ return Result.ok("涓嬫灦鎴愬姛");
+ }
+
+ @Override
public Result recommendVideo(VideoQuery query) {
// 鎺ㄨ崘绠楁硶锛� 1. 鏍规嵁鐢ㄦ埛鐨勬敹钘忚棰戠殑鏍囩 2. 鏍规嵁鐢ㄦ埛鍏虫敞鐨勪綔鑰呯殑鍏跺畠瑙嗛 3. 鏍规嵁鐢ㄦ埛鐨勮鐪嬭褰曪紙瑙傜湅鏃堕暱杈冮暱鐨勩�侀噸澶嶈鐪嬫鏁拌緝澶氱殑锛� 4. 鍩轰簬鐩镐技鐢ㄦ埛鐨勮鐪嬭涓烘潵缁欒鐢ㄦ埛鎺ㄨ崘
IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
@@ -300,17 +385,34 @@
List<String> subscribes = mySubscribeService.getSubscribesByUserId(UserContext.getCurrentUserId());
// 3. 鑾峰彇瑙嗛涓存椂璁块棶鍦板潃銆佽缃棰戞爣绛俱�佹垜鏄惁鏀惰棌銆佷綔鑰呮槸鍚﹀叧娉�
page.getRecords().forEach(v -> {
- v.setGoods(new VideoGoodsVO());
v.setTagList(tagMap.get(v.getId()));
v.setCollected(CollectionUtils.isNotEmpty(collectMap.get(v.getId())));
if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) {
- // v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
- v.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4");
+ v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+ v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey()));
} else if (VideoContentTypeEnum.IMG.getValue().equals(v.getVideoContentType()) && StringUtils.isNotBlank(v.getVideoImgs())) {
v.setImgs(JSON.parseArray(v.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList()));
}
- v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey()));
+
v.setSubscribeThisAuthor(subscribes.contains(v.getAuthorId()));
+ });
+ }
+ return Result.ok().data(page.getRecords());
+ }
+
+ @Override
+ public Result healthRecommendVideo(WxHealthVideoQuery query) {
+ IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
+ //鑾峰彇澶у仴搴疯棰戝垪琛�
+ baseMapper.recommendHealthVideo(page,query);
+ if (page.getTotal() > 0) {
+ page.getRecords().forEach(v -> {
+ if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) {
+ v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+ v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey()));
+ } else if (VideoContentTypeEnum.IMG.getValue().equals(v.getVideoContentType()) && StringUtils.isNotBlank(v.getVideoImgs())) {
+ v.setImgs(JSON.parseArray(v.getVideoImgs(), String.class).stream().map(cosUtil::getPreviewUrl).collect(Collectors.toList()));
+ }
});
}
return Result.ok().data(page.getRecords());
@@ -368,9 +470,14 @@
query.setAuthorSelf(UserContext.getCurrentUserId().equals(query.getAuthorId()));
baseMapper.getAuthorVideoPage(page, query);
for (WxVideoVO vo : page.getRecords()) {
- vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
-// vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
- vo.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4");
+ if (VideoContentTypeEnum.VIDEO.getValue().equals(vo.getVideoContentType())) {
+ vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
+ vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
+ } else if (VideoContentTypeEnum.IMG.getValue().equals(vo.getVideoContentType()) && StringUtils.isNotBlank(vo.getVideoImgs())) {
+ vo.setImgs(JSON.parseArray(vo.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList()));
+ }
+
+
vo.setOptions(VideoSupportOpEnum.getVideoOpByStatus(vo.getStatus()));
}
return Result.ok().data(page.getRecords()).total(page.getTotal());
@@ -381,12 +488,21 @@
IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
baseMapper.getAuthorCollectVideoPage(page, query);
for (WxVideoVO vo : page.getRecords()) {
- vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
-// vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
- vo.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4");
+ if (VideoContentTypeEnum.VIDEO.getValue().equals(vo.getVideoContentType())) {
+ vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
+ vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
+ } else if (VideoContentTypeEnum.IMG.getValue().equals(vo.getVideoContentType()) && StringUtils.isNotBlank(vo.getVideoImgs())) {
+ vo.setImgs(JSON.parseArray(vo.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList()));
+ }
vo.setCollected(Boolean.TRUE);
}
return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ public Result getGoodsDetail(String videoId) {
+ List<VideoGoodsDetailVO> goodsList = baseMapper.getVideoGoods(videoId);
+ return Result.ok().data(goodsList);
}
@Override
@@ -410,9 +526,12 @@
if (Objects.isNull(vo)) {
return Result.error("瑙嗛涓嶅瓨鍦�");
}
- vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
-// vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
- vo.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4");
+ if (VideoContentTypeEnum.VIDEO.getValue().equals(vo.getVideoContentType())) {
+ vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
+ vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
+ } else if (VideoContentTypeEnum.IMG.getValue().equals(vo.getVideoContentType()) && StringUtils.isNotBlank(vo.getVideoImgs())) {
+ vo.setImgs(JSON.parseArray(vo.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList()));
+ }
List<WxVideoTagForm> tags = videoTagRefService.getTagsByVideoIds(Arrays.asList(vo.getId()))
.stream()
.map(i -> {
@@ -425,4 +544,148 @@
vo.setTags(tags);
return Result.ok().data(vo);
}
+
+ @Override
+ public Result healthVideo(HealthVideoForm form) {
+ Video video = new Video();
+ BeanUtils.copyProperties(form, video);
+ video.setAuthorId(UserContext.getCurrentUserId());
+ video.setVideoType(VideoTypeEnum.HEALTH.getValue());
+ //璁剧疆濉厖妯″紡 淇濇寔姣斾緥锛屽畬鏁存樉绀�
+ video.setVideoFit("contain");
+ video.setVideoContentType(VideoContentTypeEnum.VIDEO.getValue());
+ video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
+ baseMapper.insert(video);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ @Override
+ public Result healthPage(HealthVideoQuery query) {
+ IPage<VideoVO> page = PageUtil.getPage(query, VideoVO.class);
+ // 1. 鍏堟煡鍑鸿棰戜俊鎭�
+ baseMapper.healthPage(page, query);
+ // 2. 鍗曠嫭鏌ュ嚭鏍囩淇℃伅
+ if (page.getTotal() > 0) {
+ Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(
+ page.getRecords().stream().map(VideoVO::getId).collect(Collectors.toList())
+ ).stream().collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId));;
+ // 3. 鑾峰彇瑙嗛涓存椂璁块棶鍦板潃銆佽缃棰戞爣绛�
+ page.getRecords().forEach(v -> {
+ v.setTagList(tagMap.get(v.getId()));
+ v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+ v.setCoverShowUrl(cosUtil.getPreviewUrl(v.getCoverUrl()));
+ });
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ public Result updateHealthVideo(HealthVideoForm form) {
+ Video entity = baseMapper.selectById(form.getId());
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ @Override
+ public Result delHealth(String id) {
+ Video entity = baseMapper.selectById(id);
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ String videoType = entity.getVideoType();
+ if (!VideoTypeEnum.HEALTH.getValue().equals(videoType)) {
+ log.error("鍒犻櫎闈炲ぇ鍋ュ悍瑙嗛瑙嗛id涓�------->"+id);
+ return Result.error("鍒犻櫎澶辫触");
+ }
+ baseMapper.deleteById(id);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result addKitchenVideo(KitchenVideoForm form) {
+ Video video = new Video();
+ BeanUtils.copyProperties(form, video);
+ video.setAuthorId(UserContext.getCurrentUserId());
+ video.setVideoType(VideoTypeEnum.COOK.getValue());
+ //璁剧疆濉厖妯″紡 淇濇寔姣斾緥锛屽畬鏁存樉绀�
+ video.setVideoFit("contain");
+ video.setVideoContentType(VideoContentTypeEnum.VIDEO.getValue());
+ video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
+ baseMapper.insert(video);
+ String id = video.getId();
+ List<KitchenVideoTypeRef> collect = form.getCheckKitchenType().stream().map(item -> {
+ KitchenVideoTypeRef kitchenVideoTypeRef = new KitchenVideoTypeRef();
+ //璁剧疆瑙嗛id
+ kitchenVideoTypeRef.setVideoId(id);
+ //璁剧疆鏍囩id
+ kitchenVideoTypeRef.setKitchenTypeId(item);
+ return kitchenVideoTypeRef;
+ }
+ ).collect(Collectors.toList());
+ kitchenVideoTypeRefService.saveBatch(collect);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result updateKitchenVideo(KitchenVideoForm form) {
+ Video video = baseMapper.selectById(form.getId());
+ Assert.notNull(video, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, video);
+ baseMapper.updateById(video);
+ //鍒犻櫎鍘熸潵鐨勭被鍨嬪叧绯�
+ kitchenVideoTypeRefService.remove(Wrappers.<KitchenVideoTypeRef>lambdaQuery()
+ .eq(KitchenVideoTypeRef::getVideoId, form.getId()));
+ String id = video.getId();
+ List<KitchenVideoTypeRef> collect = form.getCheckKitchenType().stream().map(item -> {
+ KitchenVideoTypeRef kitchenVideoTypeRef = new KitchenVideoTypeRef();
+ //璁剧疆瑙嗛id
+ kitchenVideoTypeRef.setVideoId(id);
+ //璁剧疆鏍囩id
+ kitchenVideoTypeRef.setKitchenTypeId(item);
+ return kitchenVideoTypeRef;
+ }
+ ).collect(Collectors.toList());
+ kitchenVideoTypeRefService.saveBatch(collect);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ @Override
+ public Result KitchenVideoQuery(KitchenVideoQuery query) {
+ IPage<KitchenVideoVO> page = PageUtil.getPage(query, KitchenVideoVO.class);
+ // 1. 鍏堟煡鍑鸿棰戜俊鎭�
+ baseMapper.kitchenPage(page, query);
+ // 2. 鍗曠嫭鏌ュ嚭鏍囩淇℃伅
+ if (page.getTotal() > 0) {
+ Map<String, List<KitchenVideoTypeVO>> typeMap = kitchenVideoTypeRefService
+ .getTypeByVideoIds(
+ page.getRecords()
+ .stream().map(KitchenVideoVO::getId).collect(Collectors.toList()))
+ .stream().collect(Collectors.groupingBy(KitchenVideoTypeVO::getVideoId));
+ // 3. 鑾峰彇瑙嗛涓存椂璁块棶鍦板潃銆佽缃棰戞爣绛�
+ page.getRecords().forEach(v -> {
+ v.setTypeList(typeMap.get(v.getId()));
+ v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+ v.setCoverShowUrl(cosUtil.getPreviewUrl(v.getCoverUrl()));
+ });
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result delKitchen(String id) {
+ Video entity = baseMapper.selectById(id);
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ String videoType = entity.getVideoType();
+ if (!VideoTypeEnum.COOK.getValue().equals(videoType)) {
+ log.error("鍒犻櫎闈炲ぇ绁炲帹瑙嗛瑙嗛id涓�------->"+id);
+ return Result.error("鍒犻櫎澶辫触");
+ }
+ baseMapper.deleteById(id);
+ kitchenVideoTypeRefService.remove(Wrappers.<KitchenVideoTypeRef>lambdaQuery()
+ .eq(KitchenVideoTypeRef::getVideoId, id));
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
index 85474dd..75a473a 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
@@ -2,6 +2,7 @@
import cn.lili.modules.lmk.domain.query.WxVideoTagQuery;
import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO;
+import cn.lili.modules.lmk.domain.vo.WxVideoTagVO;
import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.domain.entity.VideoTag;
@@ -139,7 +140,7 @@
@Override
public Result recommend(WxVideoTagQuery query) {
- List<VideoTagVO> tags = new ArrayList<>(3);
+ List<WxVideoTagVO> tags = new ArrayList<>(3);
switch (query.getSearchType()) {
case "HOT":
// TODO 鐑棬鏍囩閫氳繃瀹氭椂浠诲姟缁熻琛╨mk_video_tag_ref鏁伴噺鍒發mk_video_tag涓�
@@ -147,7 +148,7 @@
.orderByDesc(VideoTag::getUseNum)
.last("limit 3")
.list().stream().map(entity -> {
- return VideoTagVO.getVoByEntity(entity, null);
+ return WxVideoTagVO.getVoByEntity(entity, null);
}).collect(Collectors.toList());
case "SEARCH":
tags = new LambdaQueryChainWrapper<>(baseMapper)
@@ -155,7 +156,7 @@
.like(VideoTag::getTagName, query.getTagName())
.last("limit 3")
.list().stream().map(entity -> {
- return VideoTagVO.getVoByEntity(entity, null);
+ return WxVideoTagVO.getVoByEntity(entity, null);
}).collect(Collectors.toList());
}
return Result.ok().data(tags);
diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
index 20983da..a3ba9b1 100644
--- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
+++ b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
@@ -338,4 +338,6 @@
QRLoginResultVo loginWithSession(String token);
Member findByUUID(String uuid);
-}
\ No newline at end of file
+
+ void registerHandler(Member user);
+}
diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
index 5cf289a..489d7ea 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
@@ -313,6 +313,7 @@
* @param member
*/
@Transactional
+ @Override
public void registerHandler(Member member) {
member.setId(SnowFlake.getIdStr());
//淇濆瓨浼氬憳
diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPackageServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPackageServiceImpl.java
index 92319c0..d82f943 100644
--- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPackageServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPackageServiceImpl.java
@@ -1,5 +1,6 @@
package cn.lili.modules.order.order.serviceimpl;
+import cn.hutool.core.util.ArrayUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.modules.order.order.entity.dos.OrderPackage;
@@ -8,9 +9,11 @@
import cn.lili.modules.order.order.mapper.OrderPackageMapper;
import cn.lili.modules.order.order.service.OrderPackageItemService;
import cn.lili.modules.order.order.service.OrderPackageService;
+import cn.lili.modules.system.entity.dos.Logistics;
import cn.lili.modules.system.entity.vo.Traces;
import cn.lili.modules.system.service.LogisticsService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -54,8 +57,16 @@
orderPackageVO.setOrderPackageItemList(orderPackageItemList);
String str = orderPackage.getConsigneeMobile();
str = str.substring(str.length() - 4);
-// Traces traces = logisticsService.getLogisticTrack(orderPackage.getLogisticsCode(), orderPackage.getLogisticsNo(), str);
-// orderPackageVO.setTraces(traces);
+ //涓嶉渶瑕佸彇鏄惁鎵撳紑鐨勫彲鑳藉瓨鍦ㄧ幇鍦ㄤ笉鍙戦�佸揩閫掗渶瑕佹煡璇㈢墿娴佷俊鎭�
+ List<Logistics> list = logisticsService.list(Wrappers.<Logistics>lambdaQuery()
+ .eq(Logistics::getCode,
+ orderPackage.getLogisticsCode()));
+ String logisticsId = orderPackage.getLogisticsCode();
+ if (ArrayUtil.isNotEmpty(list)) {
+ logisticsId = list.get(0).getId();
+ }
+ Traces traces = logisticsService.getLogisticTrack(logisticsId, orderPackage.getLogisticsNo(), str);
+ orderPackageVO.setTraces(traces);
orderPackageVOS.add(orderPackageVO);
});
diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java
index 61930be..76b8d7b 100644
--- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java
+++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java
@@ -1,6 +1,8 @@
package cn.lili.modules.search.service;
+import cn.lili.base.Result;
import cn.lili.common.vo.PageVO;
+import cn.lili.modules.lmk.domain.query.VideoGoodsEsQuery;
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.entity.dos.EsGoodsRelatedInfo;
import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO;
@@ -59,4 +61,12 @@
* @return 鍟嗗搧绱㈠紩
*/
EsGoodsIndex getEsGoodsById(String id);
+
+ /**
+ * 鍟嗗搧鍒嗛〉锛屽彂甯冭棰戞椂鍏宠仈鍟嗗搧鐨勬煡璇�
+ *
+ * @param query
+ * @return
+ */
+ Result videoGoodsEsPage(VideoGoodsEsQuery query);
}
diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
index f752e4c..11aa047 100644
--- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
@@ -3,12 +3,15 @@
import cn.hutool.core.convert.Convert;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ArrayUtil;
+import cn.lili.base.Result;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.common.exception.ServiceException;
+import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
+import cn.lili.modules.lmk.domain.query.VideoGoodsEsQuery;
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.entity.dos.EsGoodsRelatedInfo;
import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO;
@@ -29,6 +32,7 @@
import org.elasticsearch.index.query.functionscore.FieldValueFactorFunctionBuilder;
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
+import org.elasticsearch.index.search.MultiMatchQuery;
import org.elasticsearch.search.aggregations.*;
import org.elasticsearch.search.aggregations.bucket.nested.ParsedNested;
import org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms;
@@ -38,6 +42,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.core.*;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
@@ -176,6 +181,38 @@
return this.restTemplate.get(id, EsGoodsIndex.class);
}
+ @Override
+ public Result videoGoodsEsPage(VideoGoodsEsQuery q) {
+ // 鍒ゆ柇鍟嗗搧绱㈠紩鏄惁瀛樺湪
+ if (!restTemplate.indexOps(EsGoodsIndex.class).exists()) {
+ return Result.ok();
+ }
+ // 鏍规嵁閿�閲忓�掑簭鎺掑垪
+ Pageable pageable = PageRequest.of(q.getPageNumber(), q.getPageSize(), Sort.by("buyCount").descending());
+
+ NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
+ queryBuilder.withPageable(pageable);
+
+ BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
+
+ // 鍏抽敭璇嶅尮閰嶅晢鍝佸悕绉般�佸晢鍝佺紪鍙�
+ if (!StringUtils.isEmpty(q.getKeyword())) {
+ boolQuery.must(QueryBuilders.multiMatchQuery(q.getKeyword(), "goodsName", "sn"));
+ }
+
+ if (q.getSearchFromSelfStore()) {
+ // 濡傛灉鍙煡鑷搴楅摵鍟嗗搧
+ boolQuery.must(QueryBuilders.termQuery("storeId", UserContext.getCurrentUser().getStoreId()));
+ }
+
+ queryBuilder.withQuery(boolQuery);
+
+ NativeSearchQuery query = queryBuilder.build();
+ SearchHits<EsGoodsIndex> searchHits = restTemplate.search(query, EsGoodsIndex.class);
+ List<EsGoodsIndex> data = searchHits.stream().map(hit -> hit.getContent()).collect(Collectors.toList());
+ return Result.ok().data(data).total(searchHits.getTotalHits());
+ }
+
/**
* 杞崲鎼滅储缁撴灉涓鸿仛鍚堝晢鍝佸睍绀轰俊鎭�
*
diff --git a/framework/src/main/java/cn/lili/mybatis/BaseIdAndDeleteEntity.java b/framework/src/main/java/cn/lili/mybatis/BaseIdAndDeleteEntity.java
new file mode 100644
index 0000000..7ca9902
--- /dev/null
+++ b/framework/src/main/java/cn/lili/mybatis/BaseIdAndDeleteEntity.java
@@ -0,0 +1,40 @@
+package cn.lili.mybatis;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * 鏁版嵁搴撳熀纭�瀹炰綋绫�
+ *
+ * @author Chopper
+ * @version v1.0
+ * @since 2020/8/20 14:34
+ */
+@Data
+@JsonIgnoreProperties(value = { "handler", "fieldHandler"})
+@AllArgsConstructor
+@NoArgsConstructor
+public abstract class BaseIdAndDeleteEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+
+ @TableId
+ @ApiModelProperty(value = "鍞竴鏍囪瘑", hidden = true)
+ private String id;
+
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒犻櫎鏍囧織 true/false 鍒犻櫎/鏈垹闄�", hidden = true)
+ private Boolean deleteFlag;
+
+}
diff --git a/framework/src/main/resources/mapper/lmk/KitchenTypeMapper.xml b/framework/src/main/resources/mapper/lmk/KitchenTypeMapper.xml
new file mode 100644
index 0000000..ce33f35
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/KitchenTypeMapper.xml
@@ -0,0 +1,48 @@
+<?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.KitchenTypeMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.KitchenTypeVO">
+ <id column="id" property="id"/>
+ <result column="type_name" property="typeName" />
+ <result column="use_num" property="useNum" />
+ <result column="sort_num" property="sortNum" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LKT.type_name,
+ LKT.use_num,
+ LKT.sort_num,
+ LKT.id
+ FROM
+ lmk_kitchen_type LKT
+ WHERE
+ LKT.id = #{id} AND LKT.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LKT.type_name,
+ LKT.use_num,
+ LKT.sort_num,
+ LKT.id
+ FROM
+ lmk_kitchen_type LKT
+ WHERE
+ LKT.delete_flag = 0
+ <if test="query.typeName != null and query.typeName != ''">
+ AND LKT.type_name LIKE CONCAT('%', #{query.typeName},'%')
+ </if>
+ order by LKT.sort_num asc
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/KitchenVideoTypeRefMapper.xml b/framework/src/main/resources/mapper/lmk/KitchenVideoTypeRefMapper.xml
new file mode 100644
index 0000000..42268c3
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/KitchenVideoTypeRefMapper.xml
@@ -0,0 +1,53 @@
+<?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.KitchenVideoTypeRefMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.KitchenVideoTypeRefVO">
+ <id column="id" property="id"/>
+ <result column="video_id" property="videoId" />
+ <result column="kitchen_type_id" property="kitchenTypeId" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LKVTR.video_id,
+ LKVTR.kitchen_type_id,
+ LKVTR.id
+ FROM
+ lmk_kitchen_video_type_ref LKVTR
+ WHERE
+ LKVTR.id = #{id} AND LKVTR.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LKVTR.video_id,
+ LKVTR.kitchen_type_id,
+ LKVTR.id
+ FROM
+ lmk_kitchen_video_type_ref LKVTR
+ WHERE
+ LKVTR.delete_flag = 0
+ </select>
+
+ <select id="getTypeByVideoIds" resultType="cn.lili.modules.lmk.domain.vo.KitchenVideoTypeVO">
+ SELECT
+ LKVTR.video_id,
+ LKT.id,
+ LKT.type_name
+ FROM
+ lmk_kitchen_video_type_ref LKVTR
+ JOIN lmk_kitchen_type LKT ON LKVTR.kitchen_type_id = LKT.id
+ WHERE
+ LKVTR.video_id IN <foreach collection="videoIds" open="(" item="videoId" close=")" separator=",">#{videoId}</foreach>
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/ShareClickRecordMapper.xml b/framework/src/main/resources/mapper/lmk/ShareClickRecordMapper.xml
new file mode 100644
index 0000000..d55f048
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/ShareClickRecordMapper.xml
@@ -0,0 +1,44 @@
+<?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.ShareClickRecordMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.ShareClickRecordVO">
+ <id column="id" property="id"/>
+ <result column="share_id" property="shareId" />
+ <result column="user_id" property="userId" />
+ <result column="click_time" property="clickTime" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LSCR.share_id,
+ LSCR.user_id,
+ LSCR.click_time,
+ LSCR.id
+ FROM
+ lmk_share_click_record LSCR
+ WHERE
+ LSCR.id = #{id} AND LSCR.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LSCR.share_id,
+ LSCR.user_id,
+ LSCR.click_time,
+ LSCR.id
+ FROM
+ lmk_share_click_record LSCR
+ WHERE
+ LSCR.delete_flag = 0
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/ShareMapper.xml b/framework/src/main/resources/mapper/lmk/ShareMapper.xml
new file mode 100644
index 0000000..a16a2cb
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/ShareMapper.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.ShareMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.ShareVO">
+ <id column="id" property="id"/>
+ <result column="share_type" property="shareType" />
+ <result column="ref_id" property="refId" />
+ <result column="share_user" property="shareUser" />
+ <result column="share_time" property="shareTime" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LS.share_type,
+ LS.ref_id,
+ LS.share_user,
+ LS.share_time,
+ LS.id
+ FROM
+ lmk_share LS
+ WHERE
+ LS.id = #{id} AND LS.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LS.share_type,
+ LS.ref_id,
+ LS.share_user,
+ LS.share_time,
+ LS.id
+ FROM
+ lmk_share LS
+ WHERE
+ LS.delete_flag = 0
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/VideoGoodsMapper.xml b/framework/src/main/resources/mapper/lmk/VideoGoodsMapper.xml
new file mode 100644
index 0000000..ed34fd8
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/VideoGoodsMapper.xml
@@ -0,0 +1,7 @@
+<?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.VideoGoodsMapper">
+
+
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/VideoMapper.xml b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
index b2bd6bd..523d764 100644
--- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -11,7 +11,55 @@
<result column="video_file_key" property="videoFileKey" />
<result column="video_fit" property="videoFit" />
<result column="title" property="title" />
- <result column="goods_id" property="goodsId" />
+ <result column="video_duration" property="videoDuration" />
+ <result column="recommend" property="recommend" />
+ <result column="status" property="status" />
+ <result column="play_num" property="playNum" />
+ <result column="collect_num" property="collectNum" />
+ <result column="comment_num" property="commentNum" />
+ <result column="weight" property="weight" />
+ <result column="audit_pass_time" property="auditPassTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="video_content_type" property="videoContentType" />
+ <result column="video_type" property="videoType" />
+ <result column="video_imgs" property="videoImgs" />
+ <collection property="goodsList" column="id" select="getVideoGoods" ofType="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO"/>
+ </resultMap>
+
+ <resultMap id="VideoGoodsMap" type="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO">
+ <result column="goods_id" property="goodsId"/>
+ <result column="goods_num" property="goodsNum"/>
+ <result column="goods_name" property="goodsName"/>
+ <result column="thumbnail" property="thumbnail"/>
+ <result column="price" property="price"/>
+ </resultMap>
+
+ <select id="getVideoGoods" parameterType="string" resultMap="VideoGoodsMap">
+ SELECT
+ LVG.goods_id,
+ LVG.goods_num,
+ LVG.order_num,
+ LG.goods_name,
+ LG.thumbnail,
+ LG.price
+ FROM
+ lmk_video_goods LVG
+ INNER JOIN li_goods LG ON LVG.goods_id = LG.id AND LG.market_enable = 'UPPER' AND LG.delete_flag = 0
+ WHERE
+ LVG.video_id = #{id} AND LVG.delete_flag = 0
+ ORDER BY
+ LVG.order_num ASC
+ </select>
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="KitchenVideoMap" type="cn.lili.modules.lmk.domain.vo.KitchenVideoVO">
+ <id column="id" property="id"/>
+ <result column="author_id" property="authorId" />
+ <result column="authorName" property="authorName" />
+ <result column="cover_url" property="coverUrl" />
+ <result column="video_file_key" property="videoFileKey" />
+ <result column="video_fit" property="videoFit" />
+ <result column="title" property="title" />
<result column="goods_view_num" property="goodsViewNum" />
<result column="video_duration" property="videoDuration" />
<result column="goods_order_num" property="goodsOrderNum" />
@@ -37,6 +85,7 @@
<result column="cover_url" property="coverFileKey" />
<result column="video_file_key" property="videoFileKey" />
<result column="video_fit" property="videoFit" />
+ <result column="video_duration" property="videoDuration" />
<result column="title" property="title" />
<result column="collect_num" property="collectNum" />
<result column="comment_num" property="commentNum" />
@@ -44,6 +93,7 @@
<result column="video_content_type" property="videoContentType" />
<result column="video_type" property="videoType" />
<result column="video_imgs" property="videoImgs" />
+ <collection property="goodsList" column="id" select="getVideoGoods" ofType="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO"/>
</resultMap>
@@ -180,6 +230,37 @@
LEFT JOIN li_member LM ON LV.author_id = LM.id
WHERE
LV.delete_flag = 0 AND LV.status = '1' AND LV.video_type = #{query.videoType}
+ </select>
+ <select id="recommendHealthVideo" 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
+ WHERE
+ LV.delete_flag = 0 AND LV.status = '1' AND LV.video_type = #{query.videoType}
+ AND LV.video_content_type = 'video'
</select>
@@ -323,29 +404,19 @@
<result column="video_fit" property="videoFit" />
<result column="title" property="title" />
<result column="video_duration" property="videoDuration" />
- <result column="goods_id" property="goodsId" />
+ <result column="video_imgs" property="videoImgs" />
+ <result column="video_content_type" property="videoContentType" />
+ <collection property="goodsList" column="id" select="getVideoGoods" ofType="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO"/>
</resultMap>
<select id="wxDetail" resultMap="WxEditResultMap">
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
FROM
@@ -353,5 +424,85 @@
WHERE
LV.delete_flag = 0 AND LV.id = #{id}
</select>
+ <select id="healthPage" resultMap="BaseResultMap">
+ 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.collect_num,
+ LV.comment_num,
+ LV.weight,
+ LV.audit_pass_time,
+ LV.update_time,
+ LV.video_content_type,
+ LV.video_type,
+ LV.video_imgs,
+ LV.id,
+ LM.nick_name as authorName
+ FROM
+ lmk_video LV
+ LEFT JOIN li_member LM ON LV.author_id = LM.id
+ <if test="query.tagList != null and query.tagList.size > 0">
+ INNER JOIN (
+ SELECT DISTINCT video_id
+ FROM lmk_video_tag_ref
+ WHERE video_tag_id IN
+ <foreach collection="query.tagList" open="(" item="tagId" close=")" separator=",">#{tagId}</foreach>
+ ) AS LVT ON LV.id = LVT.video_id
+ </if>
+ WHERE
+ LV.delete_flag = 0 AND LV.video_type = #{query.videoType}
+ <if test="query.title != null and query.title != ''">AND LV.title LIKE CONCAT('%', #{query.title}, '%')</if>
+ <if test="query.authorId != null and query.authorId != ''">AND LV.author_id = #{query.authorId}</if>
+ <if test="query.status != null and query.status != ''">AND LV.status = #{query.status}</if>
+ </select>
+ <select id="kitchenPage" resultMap="KitchenVideoMap">
+ 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.collect_num,
+ LV.comment_num,
+ LV.weight,
+ LV.audit_pass_time,
+ LV.update_time,
+ LV.video_content_type,
+ LV.video_type,
+ LV.video_imgs,
+ LV.id,
+ LM.nick_name as authorName
+ FROM
+ lmk_video LV
+ LEFT JOIN li_member LM ON LV.author_id = LM.id
+ <if test="query.typeList != null and query.typeList.size > 0">
+ INNER JOIN (
+ SELECT DISTINCT video_id
+ FROM lmk_kitchen_video_type_ref
+ WHERE kitchen_type_id IN
+ <foreach collection="query.typeList" open="(" item="tagId" close=")" separator=",">#{tagId}</foreach>
+ ) AS LVT ON LV.id = LVT.video_id
+ </if>
+ WHERE
+ LV.delete_flag = 0 AND LV.video_type = #{query.videoType}
+ <if test="query.title != null and query.title != ''">AND LV.title LIKE CONCAT('%', #{query.title}, '%')</if>
+ <if test="query.authorId != null and query.authorId != ''">AND LV.author_id = #{query.authorId}</if>
+ <if test="query.status != null and query.status != ''">AND LV.status = #{query.status}</if>
+ </select>
</mapper>
diff --git a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java
index 18d8248..b252dab 100644
--- a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java
+++ b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java
@@ -5,6 +5,7 @@
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException;
+import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.goods.entity.dos.Goods;
import cn.lili.modules.goods.entity.dos.GoodsSku;
@@ -14,6 +15,7 @@
import cn.lili.modules.goods.entity.vos.GoodsVO;
import cn.lili.modules.goods.service.GoodsService;
import cn.lili.modules.goods.service.GoodsSkuService;
+import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -25,6 +27,8 @@
import javax.validation.constraints.NotEmpty;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* 绠$悊绔�,鍟嗗搧绠$悊鎺ュ彛
@@ -47,6 +51,9 @@
@Autowired
private GoodsSkuService goodsSkuService;
+ @Autowired
+ private COSUtil cosUtil;
+
@ApiOperation(value = "鍒嗛〉鑾峰彇")
@GetMapping(value = "/list")
public ResultMessage<IPage<Goods>> getByPage(GoodsSearchParams goodsSearchParams) {
@@ -63,7 +70,18 @@
@GetMapping(value = "/auth/list")
public ResultMessage<IPage<Goods>> getAuthPage(GoodsSearchParams goodsSearchParams) {
goodsSearchParams.setAuthFlag(GoodsAuthEnum.TOBEAUDITED.name());
- return ResultUtil.data(goodsService.queryByParams(goodsSearchParams));
+ IPage<Goods> page = goodsService.queryByParams(goodsSearchParams);
+ page.getRecords().forEach(item -> {
+ String original = item.getOriginal();
+ String goodsVideo = item.getGoodsVideo();
+ if (StringUtils.isNotBlank(original)&&!original.contains("http")) {
+ item.setOriginal(cosUtil.getPreviewUrl(original));
+ }
+ if (StringUtils.isNotBlank(goodsVideo)&&!goodsVideo.contains("http")) {
+ item.setGoodsVideo(cosUtil.getPreviewUrl(goodsVideo));
+ }
+ });
+ return ResultUtil.data(page);
}
@PreventDuplicateSubmissions
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java b/manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java
new file mode 100644
index 0000000..f983a29
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java
@@ -0,0 +1,44 @@
+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.HealthVideoForm;
+import cn.lili.modules.lmk.domain.query.HealthVideoQuery;
+import cn.lili.modules.lmk.service.VideoService;
+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.*;
+
+@Validated
+@RequiredArgsConstructor
+@Api(value = "澶у仴搴�", tags = "澶у仴搴�")
+@RestController
+@RequestMapping("/manager/lkm/health")
+public class HealthController {
+ private final VideoService videoService;
+
+ @PostMapping("/healthVideo")
+ @ApiOperation(value = "澶у仴搴疯棰戝彂甯�", notes = "澶у仴搴疯棰戝彂甯�")
+ public Result healthVideo(@RequestBody @Validated(Add.class) HealthVideoForm form) {
+ return videoService.healthVideo(form);
+ }
+ @PostMapping("/updateHealthVideo")
+ @ApiOperation(value = "澶у仴搴疯棰戝彂甯�", notes = "澶у仴搴疯棰戝彂甯�")
+ public Result updateHealthVideo(@RequestBody @Validated(Update.class) HealthVideoForm form) {
+ return videoService.updateHealthVideo(form);
+ }
+ @PostMapping("/page")
+ @ApiOperation(value = "澶у仴搴疯棰戝垪琛�", notes = "澶у仴搴疯棰戝垪琛�")
+ public Result page(@RequestBody HealthVideoQuery query) {
+ return videoService.healthPage(query);
+ }
+ //鍒犻櫎澶у帹绁炶棰�
+ @PostMapping("/del/{id}")
+ @ApiOperation(value = "鍒犻櫎澶у帹绁炶棰�", notes = "鍒犻櫎澶у帹绁炶棰�")
+ public Result delHealth(@PathVariable("id") String id) {
+ return videoService.delHealth(id);
+ }
+}
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/KitchenTypeController.java b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenTypeController.java
new file mode 100644
index 0000000..d2c3d80
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenTypeController.java
@@ -0,0 +1,76 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.group.Update;
+import cn.lili.group.Add;
+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.modules.lmk.service.KitchenTypeService;
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.KitchenTypeForm;
+import cn.lili.modules.lmk.domain.query.KitchenTypeQuery;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 鍘ㄧ绫诲瀷 鍓嶇鎺у埗鍣�
+ *
+ * @author wp
+ * @since 2025-06-13
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鍘ㄧ绫诲瀷", tags = "鍘ㄧ绫诲瀷绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/kitchen-type")
+public class KitchenTypeController {
+
+ private final KitchenTypeService kitchenTypeService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ public Result add(@RequestBody @Validated(Add.class) KitchenTypeForm form) {
+ return kitchenTypeService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@RequestBody @Validated(Update.class) KitchenTypeForm form) {
+ return kitchenTypeService.update(form);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ public Result removeById(@PathVariable("id") String id) {
+ return kitchenTypeService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return kitchenTypeService.remove(ids);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+ public Result page(KitchenTypeQuery query) {
+ return kitchenTypeService.page(query);
+ }
+
+ @GetMapping("/{id}")
+ @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
+ public Result detail(@PathVariable("id") String id) {
+ return kitchenTypeService.detail(id);
+ }
+
+ @GetMapping("/list")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result list() {
+ return kitchenTypeService.all();
+ }
+}
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/KitchenVideoController.java b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenVideoController.java
new file mode 100644
index 0000000..1b2c182
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/KitchenVideoController.java
@@ -0,0 +1,59 @@
+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.HealthVideoForm;
+import cn.lili.modules.lmk.domain.form.KitchenTypeForm;
+import cn.lili.modules.lmk.domain.form.KitchenVideoForm;
+import cn.lili.modules.lmk.domain.query.HealthVideoQuery;
+import cn.lili.modules.lmk.domain.query.KitchenTypeQuery;
+import cn.lili.modules.lmk.domain.query.KitchenVideoQuery;
+import cn.lili.modules.lmk.service.KitchenTypeService;
+import cn.lili.modules.lmk.service.VideoService;
+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 wp
+ * @since 2025-06-13
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鍘ㄧ瑙嗛", tags = "鍘ㄧ瑙嗛绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/kitchen-video")
+public class KitchenVideoController {
+
+ private final VideoService videoService;
+
+ @PostMapping("/addKitchenVideo")
+ @ApiOperation(value = "鍘ㄧ瑙嗛鍙戝竷", notes = "鍘ㄧ瑙嗛鍙戝竷")
+ public Result addKitchenVideo(@RequestBody @Validated(Add.class) KitchenVideoForm form) {
+ return videoService.addKitchenVideo(form);
+ }
+ @PostMapping("/updateKitchenVideo")
+ @ApiOperation(value = "鍘ㄧ瑙嗛淇敼", notes = "鍘ㄧ瑙嗛淇敼")
+ public Result updateKitchenVideo(@RequestBody @Validated(Update.class) KitchenVideoForm form) {
+ return videoService.updateKitchenVideo(form);
+ }
+ @PostMapping("/page")
+ @ApiOperation(value = "鍘ㄧ瑙嗛鍒楄〃", notes = "鍘ㄧ瑙嗛鍒楄〃")
+ public Result page(@RequestBody KitchenVideoQuery query) {
+ return videoService.KitchenVideoQuery(query);
+ }
+
+ @PostMapping("/del/{id}")
+ @ApiOperation(value = "鍒犻櫎澶у帹绁炶棰�", notes = "鍒犻櫎澶у帹绁炶棰�")
+ public Result delKitchen(@PathVariable("id") String id) {
+ return videoService.delKitchen(id);
+ }
+}
diff --git a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java
index 48a9b03..8142cdf 100644
--- a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java
+++ b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java
@@ -8,6 +8,7 @@
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.OperationalJudgment;
import cn.lili.common.security.context.UserContext;
+import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.goods.entity.dos.Goods;
import cn.lili.modules.goods.entity.dos.GoodsSku;
@@ -25,6 +26,7 @@
import cn.lili.modules.statistics.aop.enums.PageViewEnum;
import cn.lili.modules.store.entity.dos.StoreDetail;
import cn.lili.modules.store.service.StoreDetailService;
+import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -70,6 +72,8 @@
*/
@Autowired
private GoodsSkuService goodsSkuService;
+ @Autowired
+ private COSUtil cosUtil;
@ApiOperation(value = "鍒嗛〉鑾峰彇鍟嗗搧鍒楄〃")
@@ -78,7 +82,16 @@
//鑾峰彇褰撳墠鐧诲綍鍟嗗璐﹀彿
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
goodsSearchParams.setStoreId(storeId);
- return ResultUtil.data(goodsService.queryByParams(goodsSearchParams));
+ IPage<Goods> page = goodsService.queryByParams(goodsSearchParams);
+ page.getRecords().forEach(goodsVO -> {
+ if (StringUtils.isNotBlank(goodsVO.getOriginal())&& !goodsVO.getOriginal().contains("http")) {
+ goodsVO.setOriginal(cosUtil.getPreviewUrl(goodsVO.getOriginal()));
+ }
+ if (StringUtils.isNotBlank(goodsVO.getGoodsVideo())&& !goodsVO.getGoodsVideo().contains("http")) {
+ goodsVO.setGoodsVideo(cosUtil.getPreviewUrl(goodsVO.getGoodsVideo()));
+ }
+ });
+ return ResultUtil.data(page);
}
@ApiOperation(value = "鍒嗛〉鑾峰彇鍟嗗搧Sku鍒楄〃")
--
Gitblit v1.8.0