Explorar o código

!712 商城装修
Merge pull request !712 from 疯狂的世界/feature/mall_product

芋道源码 hai 1 ano
pai
achega
20b11092c2

+ 5 - 1
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/CollectionUtils.java

@@ -223,10 +223,14 @@ public class CollectionUtils {
     }
 
     public static <T> T findFirst(List<T> from, Predicate<T> predicate) {
+        return findFirst(from, predicate, Function.identity());
+    }
+
+    public static <T, U> U findFirst(List<T> from, Predicate<T> predicate, Function<T, U> func) {
         if (CollUtil.isEmpty(from)) {
             return null;
         }
-        return from.stream().filter(predicate).findFirst().orElse(null);
+        return from.stream().filter(predicate).findFirst().map(func).orElse(null);
     }
 
     public static <T, V extends Comparable<? super V>> V getMaxValue(Collection<T> from, Function<T, V> valueFunc) {

+ 63 - 0
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/diy/AppDiyTemplateController.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.promotion.controller.app.diy;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.promotion.controller.app.diy.vo.AppDiyTemplatePropertyRespVO;
+import cn.iocoder.yudao.module.promotion.convert.diy.DiyTemplateConvert;
+import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
+import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
+import cn.iocoder.yudao.module.promotion.service.diy.DiyPageService;
+import cn.iocoder.yudao.module.promotion.service.diy.DiyTemplateService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.findFirst;
+
+@Tag(name = "用户 APP - 装修模板")
+@RestController
+@RequestMapping("/promotion/diy-template")
+@Validated
+public class AppDiyTemplateController {
+
+    @Resource
+    private DiyTemplateService diyTemplateService;
+    @Resource
+    private DiyPageService diyPageService;
+
+    @GetMapping("/used")
+    @Operation(summary = "使用中的装修模板")
+    public CommonResult<AppDiyTemplatePropertyRespVO> getUsedDiyTemplate() {
+        DiyTemplateDO diyTemplate = diyTemplateService.getUsedDiyTemplate();
+        return success(buildVo(diyTemplate));
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得装修模板")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<AppDiyTemplatePropertyRespVO> getDiyTemplate(@RequestParam("id") Long id) {
+        DiyTemplateDO diyTemplate = diyTemplateService.getDiyTemplate(id);
+        return success(buildVo(diyTemplate));
+    }
+
+    private AppDiyTemplatePropertyRespVO buildVo(DiyTemplateDO diyTemplate) {
+        if (diyTemplate == null) {
+            return null;
+        }
+        // 查询模板下的页面
+        List<DiyPageDO> pages = diyPageService.getDiyPageByTemplateId(diyTemplate.getId());
+        String home = findFirst(pages, page -> "首页".equals(page.getName()), DiyPageDO::getProperty);
+        String user = findFirst(pages, page -> "我的".equals(page.getName()), DiyPageDO::getProperty);
+        // 拼接返回
+        return DiyTemplateConvert.INSTANCE.convertPropertyVo2(diyTemplate, home, user);
+    }
+
+}

+ 21 - 0
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/diy/vo/AppDiyPagePropertyRespVO.java

@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.promotion.controller.app.diy.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.ToString;
+
+@Schema(description = "用户 App - 装修页面属性 Response VO")
+@Data
+@ToString(callSuper = true)
+public class AppDiyPagePropertyRespVO {
+
+    @Schema(description = "装修页面编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31209")
+    private Long id;
+
+    @Schema(description = "页面名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    private String name;
+
+    @Schema(description = "页面属性", example = "[]")
+    private String property;
+
+}

+ 31 - 0
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/diy/vo/AppDiyTemplatePropertyRespVO.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.promotion.controller.app.diy.vo;
+
+import com.fasterxml.jackson.annotation.JsonRawValue;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.ToString;
+
+@Schema(description = "用户 App - 装修模板属性 Response VO")
+@Data
+@ToString(callSuper = true)
+public class AppDiyTemplatePropertyRespVO {
+
+    @Schema(description = "装修模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31209")
+    private Long id;
+
+    @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "默认主题")
+    private String name;
+
+    @Schema(description = "模板属性", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
+    @JsonRawValue
+    private String property;
+
+    @Schema(description = "首页", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
+    @JsonRawValue
+    private String home;
+
+    @Schema(description = "我的", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
+    @JsonRawValue
+    private String user;
+
+}

+ 3 - 0
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/diy/DiyTemplateConvert.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.promotion.convert.diy;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.*;
+import cn.iocoder.yudao.module.promotion.controller.app.diy.vo.AppDiyTemplatePropertyRespVO;
 import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 import org.mapstruct.Mapper;
@@ -31,6 +32,8 @@ public interface DiyTemplateConvert {
 
     DiyTemplatePropertyRespVO convertPropertyVo(DiyTemplateDO diyTemplate, List<DiyPageDO> pages);
 
+    AppDiyTemplatePropertyRespVO convertPropertyVo2(DiyTemplateDO diyTemplate, String home, String user);
+
     DiyTemplateDO convert(DiyTemplatePropertyUpdateRequestVO updateReqVO);
 
 }

+ 7 - 0
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/diy/DiyTemplateService.java

@@ -68,4 +68,11 @@ public interface DiyTemplateService {
      */
     void updateDiyTemplateProperty(DiyTemplatePropertyUpdateRequestVO updateReqVO);
 
+    /**
+     * 获取使用中的装修模板
+     *
+     * @return 装修模板
+     */
+    DiyTemplateDO getUsedDiyTemplate();
+
 }

+ 5 - 0
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/diy/DiyTemplateServiceImpl.java

@@ -146,6 +146,11 @@ public class DiyTemplateServiceImpl implements DiyTemplateService {
         diyTemplateMapper.updateById(updateObj);
     }
 
+    @Override
+    public DiyTemplateDO getUsedDiyTemplate() {
+        return diyTemplateMapper.selectByUsed(true);
+    }
+
     /**
      * 更新模板是否使用
      *