From b038327c1c8ac3fd40bab7e6e2f1866807496b32 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 22 七月 2025 11:09:13 +0800
Subject: [PATCH] 会员自定义标签
---
framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberCustomerTag.java | 24 +++
seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java | 8 +
manager-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java | 38 +++++
seller-api/src/main/java/cn/lili/controller/goods/DraftGoodsStoreController.java | 16 ++
framework/src/main/resources/mapper/lmk/MemberCustomerTag.xml | 22 +++
framework/src/main/java/cn/lili/modules/lmk/domain/query/MemberCustomerTagQuery.java | 15 ++
framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberCustomerTagServiceImpl.java | 85 ++++++++++++
framework/src/main/java/cn/lili/modules/lmk/mapper/MemberCustomerTagMapper.java | 17 ++
buyer-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java | 55 +++++++
framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberCustomerTagForm.java | 35 +++++
seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java | 15 ++
framework/src/main/java/cn/lili/modules/lmk/service/MemberCustomerTagService.java | 43 ++++++
12 files changed, 369 insertions(+), 4 deletions(-)
diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java
new file mode 100644
index 0000000..da882d5
--- /dev/null
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java
@@ -0,0 +1,55 @@
+package cn.lili.controller.lmk;
+
+
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.MemberCustomerTagForm;
+import cn.lili.modules.lmk.domain.query.MemberCustomerTagQuery;
+import cn.lili.modules.lmk.service.MemberCustomerTagService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * lmk-shop-java
+ * 浼氬憳鑷繁璁剧疆鏍囩
+ *
+ * @author : zxl
+ * @date : 2025-07-21 10:51
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(value = "浼氬憳鑷繁璁剧疆鏍囩", tags = "浼氬憳鑷繁璁剧疆鏍囩")
+@RequestMapping("/buyer/lmk/memberTag")
+public class MemberCustomerTagController {
+ private final MemberCustomerTagService memberCustomerTagService;
+
+ @PostMapping("/add")
+ public Result add(@RequestBody @Valid MemberCustomerTagForm form){
+ return memberCustomerTagService.add(form);
+ }
+ @PutMapping("/update")
+ public Result update(MemberCustomerTagForm form){
+ return memberCustomerTagService.update(form);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉浼氬憳鏍囩璇︽儏", notes = "鍒嗛〉浼氬憳鏍囩璇︽儏")
+ public Result page(MemberCustomerTagQuery query){
+ return memberCustomerTagService.page(query);
+ }
+ @GetMapping("/detail")
+ @ApiOperation(value = "浼氬憳鏍囩璇︽儏", notes = "浼氬憳鏍囩璇︽儏")
+ public Result detail(){
+ return memberCustomerTagService.detail();
+ }
+ @DeleteMapping("/remove/{id}")
+ public Result remove(@PathVariable("id") String id){
+ return memberCustomerTagService.remove(id);
+ }
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberCustomerTag.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberCustomerTag.java
new file mode 100644
index 0000000..ab61a1f
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberCustomerTag.java
@@ -0,0 +1,24 @@
+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;
+
+/**
+ * lmk-shop-java
+ * 浼氬憳鑷畾涔夋爣绛�
+ * @author : zxl
+ * @date : 2025-07-21 13:40
+ **/
+
+@Data
+@TableName("lmk_member_customer_tag")
+public class MemberCustomerTag extends BaseEntity {
+
+ @TableField("tag_name")
+ private String tagName;
+
+ @TableField("member_id")
+ private String memberId;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberCustomerTagForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberCustomerTagForm.java
new file mode 100644
index 0000000..cae12cd
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberCustomerTagForm.java
@@ -0,0 +1,35 @@
+package cn.lili.modules.lmk.domain.form;
+
+
+import cn.lili.base.AbsForm;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.entity.MemberCustomerTag;
+import lombok.Data;
+import lombok.NonNull;
+import org.springframework.beans.BeanUtils;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
+/**
+ * lmk-shop-java
+ * 浼氬憳鑷繁璁剧疆鏍囩琛ㄥ崟
+ *
+ * @author : zxl
+ * @date : 2025-07-21 12:02
+ **/
+@Data
+public class MemberCustomerTagForm extends AbsForm {
+ @NotBlank(message = "鏍囩鍚嶄笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @Size(max = 8, message = "鏍囩闀垮害涓嶈兘瓒呰繃8涓瓧绗�")
+ private String tagName;
+
+ public static MemberCustomerTag getEntity( @NonNull MemberCustomerTagForm form,MemberCustomerTag entity){
+ if (entity == null){
+ entity = new MemberCustomerTag();
+ }
+ BeanUtils.copyProperties(form,entity);
+ return entity;
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/MemberCustomerTagQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/MemberCustomerTagQuery.java
new file mode 100644
index 0000000..5ad027d
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/MemberCustomerTagQuery.java
@@ -0,0 +1,15 @@
+package cn.lili.modules.lmk.domain.query;
+
+
+import cn.lili.base.AbsQuery;
+import lombok.Data;
+
+/**
+ * lmk-shop-java
+ *
+ * @author : zxl
+ * @date : 2025-07-21 14:21
+ **/
+@Data
+public class MemberCustomerTagQuery extends AbsQuery {
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/MemberCustomerTagMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/MemberCustomerTagMapper.java
new file mode 100644
index 0000000..fc5f4b2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/MemberCustomerTagMapper.java
@@ -0,0 +1,17 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.MemberCustomerTag;
+import cn.lili.modules.lmk.domain.query.MemberCustomerTagQuery;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ */
+@Mapper
+public interface MemberCustomerTagMapper extends BaseMapper<MemberCustomerTag> {
+
+ IPage getPage(IPage page,@Param("query") MemberCustomerTagQuery query);
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/MemberCustomerTagService.java b/framework/src/main/java/cn/lili/modules/lmk/service/MemberCustomerTagService.java
new file mode 100644
index 0000000..5098b6b
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/MemberCustomerTagService.java
@@ -0,0 +1,43 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.entity.MemberCustomerTag;
+import cn.lili.modules.lmk.domain.form.MemberCustomerTagForm;
+import cn.lili.modules.lmk.domain.query.MemberCustomerTagQuery;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface MemberCustomerTagService extends IService<MemberCustomerTag> {
+
+ /**
+ * 浼氬憳鏂板鑷畾涔夋爣绛�
+ * @return
+ */
+ Result add(MemberCustomerTagForm form);
+
+ /**
+ * 浼氬憳淇敼鑷畾涔夋爣绛�
+ * @return
+ */
+ Result update(MemberCustomerTagForm form);
+
+ /**
+ * 浼氬憳鍒犻櫎鑷畾涔夋爣绛�
+ * @param id
+ * @return
+ */
+ Result remove(String id);
+
+ /**
+ * 鍒嗛〉鑾峰緱浼氬憳鑷畾涔夋爣绛�
+ * query
+ * @return
+ */
+ Result page(MemberCustomerTagQuery query);
+
+ /**
+ * 鑾峰緱浼氬憳鑷畾涔夋爣绛�
+ * query
+ * @return
+ */
+ Result detail();
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberCustomerTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberCustomerTagServiceImpl.java
new file mode 100644
index 0000000..afcf0ce
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberCustomerTagServiceImpl.java
@@ -0,0 +1,85 @@
+package cn.lili.modules.lmk.service.impl;
+
+
+import cn.hutool.core.lang.Assert;
+import cn.lili.base.Result;
+import cn.lili.common.exception.ServiceException;
+import cn.lili.common.security.context.UserContext;
+import cn.lili.modules.lmk.domain.entity.MemberCustomerTag;
+import cn.lili.modules.lmk.domain.form.MemberCustomerTagForm;
+import cn.lili.modules.lmk.domain.query.MemberCustomerTagQuery;
+import cn.lili.modules.lmk.mapper.MemberCustomerTagMapper;
+import cn.lili.modules.lmk.service.MemberCustomerTagService;
+import cn.lili.utils.PageUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * lmk-shop-java
+ * 浼氬憳鑷畾涔夋爣绛惧疄鐜扮被
+ * @author : zxl
+ * @date : 2025-07-21 13:58
+ **/
+@Service
+public class MemberCustomerTagServiceImpl extends ServiceImpl<MemberCustomerTagMapper, MemberCustomerTag> implements MemberCustomerTagService {
+ public static long customerTagCount = 5;
+ @Override
+ public Result add(MemberCustomerTagForm form) {
+ String memberId = UserContext.getCurrentUser().getId();
+ if (memberId == null) {
+ throw new ServiceException("鐢ㄦ埛淇℃伅寮傚父锛岃閲嶈瘯");
+ }
+ //鐢ㄦ埛鏈�澶氬彲璁剧疆5涓嚜瀹氫箟鏍囩 鍚庣画鑻ヨ鍋氭垚鍔ㄦ�侊紝鍙互鍋氭垚绯荤粺鏍囬噺
+ long count = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(MemberCustomerTag::getMemberId, memberId)
+ .eq(MemberCustomerTag::getDeleteFlag,false)
+ .count();
+ if (count >= customerTagCount){
+ throw new ServiceException("宸茶揪鍒拌嚜瀹氫箟鏍囩鏈�澶ф暟閲�");
+ }
+ System.out.println(form);
+ MemberCustomerTag entity = MemberCustomerTagForm.getEntity(form,null);
+ entity.setMemberId(memberId);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ @Override
+ public Result update(MemberCustomerTagForm form) {
+ MemberCustomerTag entity = baseMapper.selectById(form.getId());
+ Assert.notNull(entity,"璁板綍涓嶅瓨鍦�");
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ @Override
+ public Result remove(String id) {
+ baseMapper.deleteById(id);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ @Override
+ public Result page(MemberCustomerTagQuery query) {
+ IPage<MemberCustomerTag> page = PageUtil.getPage(query,MemberCustomerTag.class);
+ baseMapper.getPage(page,query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ public Result detail() {
+ String memberId = UserContext.getCurrentUser().getId();
+ if (memberId == null) {
+ throw new ServiceException("鐢ㄦ埛淇℃伅寮傚父锛岃閲嶈瘯");
+ }
+ List<MemberCustomerTag> list = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(MemberCustomerTag::getMemberId,memberId)
+ .eq(MemberCustomerTag::getDeleteFlag,false)
+ .list();
+
+ return Result.ok().data(list);
+ }
+}
diff --git a/framework/src/main/resources/mapper/lmk/MemberCustomerTag.xml b/framework/src/main/resources/mapper/lmk/MemberCustomerTag.xml
new file mode 100644
index 0000000..e3a9b94
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/MemberCustomerTag.xml
@@ -0,0 +1,22 @@
+<?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.MemberCustomerTagMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.entity.MemberCustomerTag">
+ <id property="id" column="id"/>
+ <result column="tag_name" property="tagName" />
+ <result column="member_id" property="memberId" />
+ </resultMap>
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LMCT.id,
+ LMCT.memberId,
+ LMCT.tag_name
+ FROM lmk_member_customer_tag LMCT
+ WHERE LMCT.delete_flag = 0
+ AND LMCT.member_id = #{query.memberId}
+ </select>
+
+</mapper>
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java b/manager-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java
new file mode 100644
index 0000000..3152989
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/MemberCustomerTagController.java
@@ -0,0 +1,38 @@
+package cn.lili.controller.lmk;
+
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.query.MemberCustomerTagQuery;
+import cn.lili.modules.lmk.service.MemberCustomerTagService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * lmk-shop-java
+ *
+ * @author : zxl
+ * @date : 2025-07-21 15:54
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(value = "浼氬憳鑷畾涔夋爣绛�", tags = "浼氬憳鑷畾涔夋爣绛�")
+@RequestMapping("/manager/memberCustomerTag/")
+public class MemberCustomerTagController {
+ private final MemberCustomerTagService memberCustomerTagService;
+
+ @GetMapping("/page")
+ @ApiOperation(value = "浼氬憳鏍囩璇︽儏", notes = "浼氬憳鏍囩璇︽儏")
+ public Result page(MemberCustomerTagQuery query){
+ return memberCustomerTagService.page(query);
+ }
+ @GetMapping("/detail")
+ @ApiOperation(value = "浼氬憳鏍囩璇︽儏", notes = "浼氬憳鏍囩璇︽儏")
+ public Result detail(){
+ return memberCustomerTagService.detail();
+ }
+
+}
diff --git a/seller-api/src/main/java/cn/lili/controller/goods/DraftGoodsStoreController.java b/seller-api/src/main/java/cn/lili/controller/goods/DraftGoodsStoreController.java
index 2e3d1c8..d8528db 100644
--- a/seller-api/src/main/java/cn/lili/controller/goods/DraftGoodsStoreController.java
+++ b/seller-api/src/main/java/cn/lili/controller/goods/DraftGoodsStoreController.java
@@ -5,12 +5,15 @@
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.DraftGoods;
import cn.lili.modules.goods.entity.dto.DraftGoodsDTO;
import cn.lili.modules.goods.entity.dto.DraftGoodsSearchParams;
import cn.lili.modules.goods.entity.vos.DraftGoodsVO;
import cn.lili.modules.goods.service.DraftGoodsService;
+import cn.lili.utils.COSUtil;
+import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -31,14 +34,23 @@
public class DraftGoodsStoreController {
@Autowired
private DraftGoodsService draftGoodsService;
-
+ @Autowired
+ private COSUtil cosUtil;
@ApiOperation(value = "鍒嗛〉鑾峰彇鑽夌鍟嗗搧鍒楄〃")
@GetMapping(value = "/page")
public ResultMessage<IPage<DraftGoods>> getDraftGoodsByPage(DraftGoodsSearchParams searchParams) {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
searchParams.setStoreId(storeId);
- return ResultUtil.data(draftGoodsService.getDraftGoods(searchParams));
+ IPage<DraftGoods> page = draftGoodsService.getDraftGoods(searchParams);
+ page.getRecords().forEach(item ->{
+ if (StringUtils.isNotBlank(item.getOriginal())&&!item.getOriginal().contains("http")) {
+ item.setOriginal(cosUtil.getPreviewUrl(item.getOriginal()));
+ }
+
+ });
+
+ return ResultUtil.data(page);
}
@ApiOperation(value = "鑾峰彇鑽夌鍟嗗搧")
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 ef7bfb9..e63de9e 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
@@ -101,7 +101,13 @@
//鑾峰彇褰撳墠鐧诲綍鍟嗗璐﹀彿
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
goodsSearchParams.setStoreId(storeId);
- return ResultUtil.data(goodsSkuService.getGoodsSkuByPage(goodsSearchParams));
+ IPage<GoodsSku> page = goodsSkuService.getGoodsSkuByPage(goodsSearchParams);
+ page.getRecords().forEach(item ->{
+ if (StringUtils.isNotBlank(item.getThumbnail())&&!item.getThumbnail().contains("http")) {
+ item.setThumbnail(cosUtil.getPreviewUrl(item.getThumbnail()));
+ }
+ });
+ return ResultUtil.data(page);
}
@ApiOperation(value = "鍒嗛〉鑾峰彇搴撳瓨鍛婅鍟嗗搧鍒楄〃")
diff --git a/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java
index a8e9952..ff5fc4d 100644
--- a/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java
+++ b/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java
@@ -4,6 +4,7 @@
import cn.lili.common.enums.ResultUtil;
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.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
@@ -11,6 +12,7 @@
import cn.lili.modules.order.aftersale.service.AfterSaleService;
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
import cn.lili.modules.system.entity.vo.Traces;
+import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -36,6 +38,8 @@
@Autowired
private AfterSaleService afterSaleService;
+ @Autowired
+ private COSUtil cosUtil;
@ApiOperation(value = "鏌ョ湅鍞悗鏈嶅姟璇︽儏")
@ApiImplicitParam(name = "sn", value = "鍞悗鍗曞彿", required = true, paramType = "path")
@@ -50,7 +54,16 @@
public ResultMessage<IPage<AfterSaleVO>> getByPage(AfterSaleSearchParams searchParams) {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
searchParams.setStoreId(storeId);
- return ResultUtil.data(afterSaleService.getAfterSalePages(searchParams));
+
+ IPage<AfterSaleVO> page = afterSaleService.getAfterSalePages(searchParams);
+ page.getRecords().forEach(afterSale -> {
+ String goodsImage = afterSale.getGoodsImage();
+ if (StringUtils.isNotBlank(goodsImage)&&!goodsImage.contains("http")) {
+ afterSale.setGoodsImage(cosUtil.getPreviewUrl(goodsImage));
+ }
+ });
+
+ return ResultUtil.data(page);
}
@ApiOperation(value = "鑾峰彇瀵煎嚭鍞悗鏈嶅姟鍒楄〃鍒楄〃")
--
Gitblit v1.8.0