mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-11-04 00:03:52 +08:00 
			
		
		
		
	营销:完善商城装修
1. 拆分页面设计用的属性修改接口 2. 增加模板的页面保存 3. 增加唯一名称校验 4. 增加页面编辑器,默认选中组件判断
This commit is contained in:
		@ -118,9 +118,11 @@ public interface ErrorCodeConstants {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // ========== 装修模板 1-013-017-000 ==========
 | 
					    // ========== 装修模板 1-013-017-000 ==========
 | 
				
			||||||
    ErrorCode DIY_TEMPLATE_NOT_EXISTS = new ErrorCode(1_013_017_000, "装修模板不存在");
 | 
					    ErrorCode DIY_TEMPLATE_NOT_EXISTS = new ErrorCode(1_013_017_000, "装修模板不存在");
 | 
				
			||||||
    ErrorCode DIY_TEMPLATE_USED_CANNOT_DELETE = new ErrorCode(1_013_017_001, "不能删除正在使用的装修模板");
 | 
					    ErrorCode DIY_TEMPLATE_NAME_USED = new ErrorCode(1_013_017_001, "装修模板名称({})已经被使用");
 | 
				
			||||||
 | 
					    ErrorCode DIY_TEMPLATE_USED_CANNOT_DELETE = new ErrorCode(1_013_017_002, "不能删除正在使用的装修模板");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ========== 装修页面 1-013-018-000 ==========
 | 
					    // ========== 装修页面 1-013-018-000 ==========
 | 
				
			||||||
    ErrorCode DIY_PAGE_NOT_EXISTS = new ErrorCode(1_013_018_000, "装修页面不存在");
 | 
					    ErrorCode DIY_PAGE_NOT_EXISTS = new ErrorCode(1_013_018_000, "装修页面不存在");
 | 
				
			||||||
 | 
					    ErrorCode DIY_PAGE_NAME_USED = new ErrorCode(1_013_018_001, "装修页面名称({})已经被使用");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -2,10 +2,7 @@ package cn.iocoder.yudao.module.promotion.controller.admin.diy;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.*;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePageReqVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageRespVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageUpdateReqVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.convert.diy.DiyPageConvert;
 | 
					import cn.iocoder.yudao.module.promotion.convert.diy.DiyPageConvert;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.service.diy.DiyPageService;
 | 
					import cn.iocoder.yudao.module.promotion.service.diy.DiyPageService;
 | 
				
			||||||
@ -82,4 +79,21 @@ public class DiyPageController {
 | 
				
			|||||||
        return success(DiyPageConvert.INSTANCE.convertPage(pageResult));
 | 
					        return success(DiyPageConvert.INSTANCE.convertPage(pageResult));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/get-property")
 | 
				
			||||||
 | 
					    @Operation(summary = "获得装修页面属性")
 | 
				
			||||||
 | 
					    @Parameter(name = "id", description = "编号", required = true, example = "1024")
 | 
				
			||||||
 | 
					    @PreAuthorize("@ss.hasPermission('promotion:diy-page:query')")
 | 
				
			||||||
 | 
					    public CommonResult<DiyPagePropertyRespVO> getDiyPageProperty(@RequestParam("id") Long id) {
 | 
				
			||||||
 | 
					        DiyPageDO diyPage = diyPageService.getDiyPage(id);
 | 
				
			||||||
 | 
					        return success(DiyPageConvert.INSTANCE.convertPropertyVo(diyPage));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PutMapping("/update-property")
 | 
				
			||||||
 | 
					    @Operation(summary = "更新装修页面属性")
 | 
				
			||||||
 | 
					    @PreAuthorize("@ss.hasPermission('promotion:diy-page:update')")
 | 
				
			||||||
 | 
					    public CommonResult<Boolean> updateDiyPageProperty(@Valid @RequestBody DiyPagePropertyUpdateRequestVO updateReqVO) {
 | 
				
			||||||
 | 
					        diyPageService.updateDiyPageProperty(updateReqVO);
 | 
				
			||||||
 | 
					        return success(true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -2,12 +2,11 @@ package cn.iocoder.yudao.module.promotion.controller.admin.diy;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.*;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplatePageReqVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateRespVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.convert.diy.DiyTemplateConvert;
 | 
					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.dal.dataobject.diy.DiyTemplateDO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.promotion.service.diy.DiyPageService;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.service.diy.DiyTemplateService;
 | 
					import cn.iocoder.yudao.module.promotion.service.diy.DiyTemplateService;
 | 
				
			||||||
import io.swagger.v3.oas.annotations.Operation;
 | 
					import io.swagger.v3.oas.annotations.Operation;
 | 
				
			||||||
import io.swagger.v3.oas.annotations.Parameter;
 | 
					import io.swagger.v3.oas.annotations.Parameter;
 | 
				
			||||||
@ -19,6 +18,8 @@ import org.springframework.web.bind.annotation.*;
 | 
				
			|||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
import javax.validation.Valid;
 | 
					import javax.validation.Valid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
					import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Tag(name = "管理后台 - 装修模板")
 | 
					@Tag(name = "管理后台 - 装修模板")
 | 
				
			||||||
@ -29,6 +30,8 @@ public class DiyTemplateController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Resource
 | 
					    @Resource
 | 
				
			||||||
    private DiyTemplateService diyTemplateService;
 | 
					    private DiyTemplateService diyTemplateService;
 | 
				
			||||||
 | 
					    @Resource
 | 
				
			||||||
 | 
					    private DiyPageService diyPageService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @PostMapping("/create")
 | 
					    @PostMapping("/create")
 | 
				
			||||||
    @Operation(summary = "创建装修模板")
 | 
					    @Operation(summary = "创建装修模板")
 | 
				
			||||||
@ -79,4 +82,22 @@ public class DiyTemplateController {
 | 
				
			|||||||
        return success(DiyTemplateConvert.INSTANCE.convertPage(pageResult));
 | 
					        return success(DiyTemplateConvert.INSTANCE.convertPage(pageResult));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/get-property")
 | 
				
			||||||
 | 
					    @Operation(summary = "获得装修模板属性")
 | 
				
			||||||
 | 
					    @Parameter(name = "id", description = "编号", required = true, example = "1024")
 | 
				
			||||||
 | 
					    @PreAuthorize("@ss.hasPermission('promotion:diy-template:query')")
 | 
				
			||||||
 | 
					    public CommonResult<DiyTemplatePropertyRespVO> getDiyTemplateProperty(@RequestParam("id") Long id) {
 | 
				
			||||||
 | 
					        DiyTemplateDO diyTemplate = diyTemplateService.getDiyTemplate(id);
 | 
				
			||||||
 | 
					        List<DiyPageDO> pages = diyPageService.getDiyPageByTemplateId(id);
 | 
				
			||||||
 | 
					        return success(DiyTemplateConvert.INSTANCE.convertPropertyVo(diyTemplate, pages));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PutMapping("/update-property")
 | 
				
			||||||
 | 
					    @Operation(summary = "更新装修模板属性")
 | 
				
			||||||
 | 
					    @PreAuthorize("@ss.hasPermission('promotion:diy-template:update')")
 | 
				
			||||||
 | 
					    public CommonResult<Boolean> updateDiyTemplateProperty(@Valid @RequestBody DiyTemplatePropertyUpdateRequestVO updateReqVO) {
 | 
				
			||||||
 | 
					        diyTemplateService.updateDiyTemplateProperty(updateReqVO);
 | 
				
			||||||
 | 
					        return success(true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,4 @@ public class DiyPageBaseVO {
 | 
				
			|||||||
    @Schema(description = "预览图")
 | 
					    @Schema(description = "预览图")
 | 
				
			||||||
    private List<String> previewImageUrls;
 | 
					    private List<String> previewImageUrls;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Schema(description = "页面属性", example = "[]")
 | 
					 | 
				
			||||||
    private String property;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode;
 | 
				
			||||||
 | 
					import lombok.ToString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Schema(description = "管理后台 - 装修页面属性 Response VO")
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true)
 | 
				
			||||||
 | 
					@ToString(callSuper = true)
 | 
				
			||||||
 | 
					public class DiyPagePropertyRespVO extends DiyPageBaseVO {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "装修页面编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31209")
 | 
				
			||||||
 | 
					    private Long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "页面属性", example = "[]")
 | 
				
			||||||
 | 
					    private String property;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.ToString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotBlank;
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Schema(description = "管理后台 - 装修页面属性更新 Request VO")
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@ToString(callSuper = true)
 | 
				
			||||||
 | 
					public class DiyPagePropertyUpdateRequestVO {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "装修页面编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31209")
 | 
				
			||||||
 | 
					    @NotNull(message = "装修页面编号不能为空")
 | 
				
			||||||
 | 
					    private Long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "页面属性,JSON 格式", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
 | 
				
			||||||
 | 
					    @NotBlank(message = "页面属性不能为空")
 | 
				
			||||||
 | 
					    private String property;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -23,7 +23,4 @@ public class DiyTemplateBaseVO {
 | 
				
			|||||||
    @Schema(description = "预览图", example = "[https://www.iocoder.cn/1.jpg]")
 | 
					    @Schema(description = "预览图", example = "[https://www.iocoder.cn/1.jpg]")
 | 
				
			||||||
    private List<String> previewImageUrls;
 | 
					    private List<String> previewImageUrls;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Schema(description = "模板属性,JSON 格式", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
 | 
					 | 
				
			||||||
    private String property;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePropertyRespVO;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode;
 | 
				
			||||||
 | 
					import lombok.ToString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Schema(description = "管理后台 - 装修模板属性 Response VO")
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true)
 | 
				
			||||||
 | 
					@ToString(callSuper = true)
 | 
				
			||||||
 | 
					public class DiyTemplatePropertyRespVO extends DiyTemplateBaseVO {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "装修模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31209")
 | 
				
			||||||
 | 
					    private Long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "模板属性,JSON 格式", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
 | 
				
			||||||
 | 
					    private String property;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "模板页面", requiredMode = Schema.RequiredMode.REQUIRED, example = "[]")
 | 
				
			||||||
 | 
					    private List<DiyPagePropertyRespVO> pages;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.ToString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotBlank;
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Schema(description = "管理后台 - 装修模板属性更新 Request VO")
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@ToString(callSuper = true)
 | 
				
			||||||
 | 
					public class DiyTemplatePropertyUpdateRequestVO {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "装修模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31209")
 | 
				
			||||||
 | 
					    @NotNull(message = "装修模板编号不能为空")
 | 
				
			||||||
 | 
					    private Long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Schema(description = "模板属性,JSON 格式", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
 | 
				
			||||||
 | 
					    @NotBlank(message = "模板属性不能为空")
 | 
				
			||||||
 | 
					    private String property;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,9 +1,7 @@
 | 
				
			|||||||
package cn.iocoder.yudao.module.promotion.convert.diy;
 | 
					package cn.iocoder.yudao.module.promotion.convert.diy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.*;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageRespVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageUpdateReqVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
				
			||||||
import org.mapstruct.Mapper;
 | 
					import org.mapstruct.Mapper;
 | 
				
			||||||
import org.mapstruct.factory.Mappers;
 | 
					import org.mapstruct.factory.Mappers;
 | 
				
			||||||
@ -30,4 +28,10 @@ public interface DiyPageConvert {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    PageResult<DiyPageRespVO> convertPage(PageResult<DiyPageDO> page);
 | 
					    PageResult<DiyPageRespVO> convertPage(PageResult<DiyPageDO> page);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DiyPageCreateReqVO convertCreateVo(Long templateId, String name, String remark);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DiyPagePropertyRespVO convertPropertyVo(DiyPageDO diyPage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DiyPageDO convert(DiyPagePropertyUpdateRequestVO updateReqVO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,8 @@
 | 
				
			|||||||
package cn.iocoder.yudao.module.promotion.convert.diy;
 | 
					package cn.iocoder.yudao.module.promotion.convert.diy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.*;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateRespVO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 | 
				
			||||||
import org.mapstruct.Mapper;
 | 
					import org.mapstruct.Mapper;
 | 
				
			||||||
import org.mapstruct.factory.Mappers;
 | 
					import org.mapstruct.factory.Mappers;
 | 
				
			||||||
@ -30,4 +29,8 @@ public interface DiyTemplateConvert {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    PageResult<DiyTemplateRespVO> convertPage(PageResult<DiyTemplateDO> page);
 | 
					    PageResult<DiyTemplateRespVO> convertPage(PageResult<DiyTemplateDO> page);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DiyTemplatePropertyRespVO convertPropertyVo(DiyTemplateDO diyTemplate, List<DiyPageDO> pages);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DiyTemplateDO convert(DiyTemplatePropertyUpdateRequestVO updateReqVO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePag
 | 
				
			|||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
				
			||||||
import org.apache.ibatis.annotations.Mapper;
 | 
					import org.apache.ibatis.annotations.Mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 装修页面 Mapper
 | 
					 * 装修页面 Mapper
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@ -19,8 +21,19 @@ public interface DiyPageMapper extends BaseMapperX<DiyPageDO> {
 | 
				
			|||||||
        return selectPage(reqVO, new LambdaQueryWrapperX<DiyPageDO>()
 | 
					        return selectPage(reqVO, new LambdaQueryWrapperX<DiyPageDO>()
 | 
				
			||||||
                .likeIfPresent(DiyPageDO::getName, reqVO.getName())
 | 
					                .likeIfPresent(DiyPageDO::getName, reqVO.getName())
 | 
				
			||||||
                .betweenIfPresent(DiyPageDO::getCreateTime, reqVO.getCreateTime())
 | 
					                .betweenIfPresent(DiyPageDO::getCreateTime, reqVO.getCreateTime())
 | 
				
			||||||
 | 
					                // 模板下面的页面,在模板中管理
 | 
				
			||||||
                .isNull(DiyPageDO::getTemplateId)
 | 
					                .isNull(DiyPageDO::getTemplateId)
 | 
				
			||||||
                .orderByDesc(DiyPageDO::getId));
 | 
					                .orderByDesc(DiyPageDO::getId));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default List<DiyPageDO> selectListByTemplateId(Long templateId) {
 | 
				
			||||||
 | 
					        return selectList(DiyPageDO::getTemplateId, templateId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default DiyPageDO selectByNameAndTemplateIdIsNull(String name) {
 | 
				
			||||||
 | 
					        return selectOne(new LambdaQueryWrapperX<DiyPageDO>()
 | 
				
			||||||
 | 
					                .eq(DiyPageDO::getName, name)
 | 
				
			||||||
 | 
					                .isNull(DiyPageDO::getTemplateId));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -29,4 +29,8 @@ public interface DiyTemplateMapper extends BaseMapperX<DiyTemplateDO> {
 | 
				
			|||||||
        return selectOne(DiyTemplateDO::getUsed, used);
 | 
					        return selectOne(DiyTemplateDO::getUsed, used);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default DiyTemplateDO selectByName(String name) {
 | 
				
			||||||
 | 
					        return selectOne(DiyTemplateDO::getName, name);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.promotion.service.diy;
 | 
				
			|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageCreateReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePageReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePageReqVO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePropertyUpdateRequestVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageUpdateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageUpdateReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -63,4 +64,19 @@ public interface DiyPageService {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    PageResult<DiyPageDO> getDiyPagePage(DiyPagePageReqVO pageReqVO);
 | 
					    PageResult<DiyPageDO> getDiyPagePage(DiyPagePageReqVO pageReqVO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 更新装修页面属性
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param updateReqVO 更新信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void updateDiyPageProperty(DiyPagePropertyUpdateRequestVO updateReqVO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获得模板所属的页面列表
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param templateId 模板编号
 | 
				
			||||||
 | 
					     * @return 装修页面列表
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<DiyPageDO> getDiyPageByTemplateId(Long templateId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.promotion.service.diy;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.hutool.core.collection.CollUtil;
 | 
					import cn.hutool.core.collection.CollUtil;
 | 
				
			||||||
import cn.hutool.core.collection.ListUtil;
 | 
					import cn.hutool.core.collection.ListUtil;
 | 
				
			||||||
 | 
					import cn.hutool.core.util.StrUtil;
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageCreateReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePageReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePageReqVO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPagePropertyUpdateRequestVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageUpdateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.page.DiyPageUpdateReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.convert.diy.DiyPageConvert;
 | 
					import cn.iocoder.yudao.module.promotion.convert.diy.DiyPageConvert;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyPageDO;
 | 
				
			||||||
@ -17,6 +19,7 @@ import java.util.Collection;
 | 
				
			|||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
					import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
				
			||||||
 | 
					import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.DIY_PAGE_NAME_USED;
 | 
				
			||||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.DIY_PAGE_NOT_EXISTS;
 | 
					import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.DIY_PAGE_NOT_EXISTS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -33,8 +36,11 @@ public class DiyPageServiceImpl implements DiyPageService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public Long createDiyPage(DiyPageCreateReqVO createReqVO) {
 | 
					    public Long createDiyPage(DiyPageCreateReqVO createReqVO) {
 | 
				
			||||||
 | 
					        // 校验名称唯一
 | 
				
			||||||
 | 
					        validateNameUnique(null, createReqVO.getTemplateId(), createReqVO.getName());
 | 
				
			||||||
        // 插入
 | 
					        // 插入
 | 
				
			||||||
        DiyPageDO diyPage = DiyPageConvert.INSTANCE.convert(createReqVO);
 | 
					        DiyPageDO diyPage = DiyPageConvert.INSTANCE.convert(createReqVO);
 | 
				
			||||||
 | 
					        diyPage.setProperty("{}");
 | 
				
			||||||
        diyPageMapper.insert(diyPage);
 | 
					        diyPageMapper.insert(diyPage);
 | 
				
			||||||
        // 返回
 | 
					        // 返回
 | 
				
			||||||
        return diyPage.getId();
 | 
					        return diyPage.getId();
 | 
				
			||||||
@ -44,11 +50,30 @@ public class DiyPageServiceImpl implements DiyPageService {
 | 
				
			|||||||
    public void updateDiyPage(DiyPageUpdateReqVO updateReqVO) {
 | 
					    public void updateDiyPage(DiyPageUpdateReqVO updateReqVO) {
 | 
				
			||||||
        // 校验存在
 | 
					        // 校验存在
 | 
				
			||||||
        validateDiyPageExists(updateReqVO.getId());
 | 
					        validateDiyPageExists(updateReqVO.getId());
 | 
				
			||||||
 | 
					        // 校验名称唯一
 | 
				
			||||||
 | 
					        validateNameUnique(updateReqVO.getId(), updateReqVO.getTemplateId(), updateReqVO.getName());
 | 
				
			||||||
        // 更新
 | 
					        // 更新
 | 
				
			||||||
        DiyPageDO updateObj = DiyPageConvert.INSTANCE.convert(updateReqVO);
 | 
					        DiyPageDO updateObj = DiyPageConvert.INSTANCE.convert(updateReqVO);
 | 
				
			||||||
        diyPageMapper.updateById(updateObj);
 | 
					        diyPageMapper.updateById(updateObj);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void validateNameUnique(Long id, Long templateId, String name) {
 | 
				
			||||||
 | 
					        if (templateId != null || StrUtil.isBlank(name)) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        DiyPageDO page = diyPageMapper.selectByNameAndTemplateIdIsNull(name);
 | 
				
			||||||
 | 
					        if (page == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 如果 id 为空,说明不用比较是否为相同 id 的页面
 | 
				
			||||||
 | 
					        if (id == null) {
 | 
				
			||||||
 | 
					            throw exception(DIY_PAGE_NAME_USED, name);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!page.getId().equals(id)) {
 | 
				
			||||||
 | 
					            throw exception(DIY_PAGE_NAME_USED, name);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void deleteDiyPage(Long id) {
 | 
					    public void deleteDiyPage(Long id) {
 | 
				
			||||||
        // 校验存在
 | 
					        // 校验存在
 | 
				
			||||||
@ -81,4 +106,18 @@ public class DiyPageServiceImpl implements DiyPageService {
 | 
				
			|||||||
        return diyPageMapper.selectPage(pageReqVO);
 | 
					        return diyPageMapper.selectPage(pageReqVO);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<DiyPageDO> getDiyPageByTemplateId(Long templateId) {
 | 
				
			||||||
 | 
					        return diyPageMapper.selectListByTemplateId(templateId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void updateDiyPageProperty(DiyPagePropertyUpdateRequestVO updateReqVO) {
 | 
				
			||||||
 | 
					        // 校验存在
 | 
				
			||||||
 | 
					        validateDiyPageExists(updateReqVO.getId());
 | 
				
			||||||
 | 
					        // 更新
 | 
				
			||||||
 | 
					        DiyPageDO updateObj = DiyPageConvert.INSTANCE.convert(updateReqVO);
 | 
				
			||||||
 | 
					        diyPageMapper.updateById(updateObj);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.promotion.service.diy;
 | 
				
			|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplatePageReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplatePageReqVO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplatePropertyUpdateRequestVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -60,4 +61,11 @@ public interface DiyTemplateService {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    void useDiyTemplate(Long id);
 | 
					    void useDiyTemplate(Long id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 更新装修模板属性
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param updateReqVO 更新信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void updateDiyTemplateProperty(DiyTemplatePropertyUpdateRequestVO updateReqVO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,22 +1,25 @@
 | 
				
			|||||||
package cn.iocoder.yudao.module.promotion.service.diy;
 | 
					package cn.iocoder.yudao.module.promotion.service.diy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.hutool.core.util.BooleanUtil;
 | 
					import cn.hutool.core.util.BooleanUtil;
 | 
				
			||||||
 | 
					import cn.hutool.core.util.StrUtil;
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplatePageReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplatePageReqVO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplatePropertyUpdateRequestVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
 | 
					import cn.iocoder.yudao.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.promotion.convert.diy.DiyPageConvert;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.convert.diy.DiyTemplateConvert;
 | 
					import cn.iocoder.yudao.module.promotion.convert.diy.DiyTemplateConvert;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 | 
					import cn.iocoder.yudao.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.promotion.dal.mysql.diy.DiyTemplateMapper;
 | 
					import cn.iocoder.yudao.module.promotion.dal.mysql.diy.DiyTemplateMapper;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					import org.springframework.transaction.annotation.Transactional;
 | 
				
			||||||
import org.springframework.validation.annotation.Validated;
 | 
					import org.springframework.validation.annotation.Validated;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
import java.time.LocalDateTime;
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
					import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
				
			||||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.DIY_TEMPLATE_NOT_EXISTS;
 | 
					import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*;
 | 
				
			||||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.DIY_TEMPLATE_USED_CANNOT_DELETE;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 装修模板 Service 实现类
 | 
					 * 装修模板 Service 实现类
 | 
				
			||||||
@ -29,25 +32,63 @@ public class DiyTemplateServiceImpl implements DiyTemplateService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Resource
 | 
					    @Resource
 | 
				
			||||||
    private DiyTemplateMapper diyTemplateMapper;
 | 
					    private DiyTemplateMapper diyTemplateMapper;
 | 
				
			||||||
 | 
					    @Resource
 | 
				
			||||||
 | 
					    private DiyPageService diyPageService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public Long createDiyTemplate(DiyTemplateCreateReqVO createReqVO) {
 | 
					    public Long createDiyTemplate(DiyTemplateCreateReqVO createReqVO) {
 | 
				
			||||||
 | 
					        // 校验名称唯一
 | 
				
			||||||
 | 
					        validateNameUnique(null, createReqVO.getName());
 | 
				
			||||||
        // 插入
 | 
					        // 插入
 | 
				
			||||||
        DiyTemplateDO diyTemplate = DiyTemplateConvert.INSTANCE.convert(createReqVO);
 | 
					        DiyTemplateDO diyTemplate = DiyTemplateConvert.INSTANCE.convert(createReqVO);
 | 
				
			||||||
 | 
					        diyTemplate.setProperty("{}");
 | 
				
			||||||
        diyTemplateMapper.insert(diyTemplate);
 | 
					        diyTemplateMapper.insert(diyTemplate);
 | 
				
			||||||
 | 
					        // 创建默认页面
 | 
				
			||||||
 | 
					        createDefaultPage(diyTemplate);
 | 
				
			||||||
        // 返回
 | 
					        // 返回
 | 
				
			||||||
        return diyTemplate.getId();
 | 
					        return diyTemplate.getId();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 创建模板下面的默认页面
 | 
				
			||||||
 | 
					     * 默认创建两个页面:首页、我的
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param diyTemplate 模板对象
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private void createDefaultPage(DiyTemplateDO diyTemplate) {
 | 
				
			||||||
 | 
					        String remark = String.format("模板【%s】自动创建", diyTemplate.getName());
 | 
				
			||||||
 | 
					        diyPageService.createDiyPage(DiyPageConvert.INSTANCE.convertCreateVo(diyTemplate.getId(), "首页", remark));
 | 
				
			||||||
 | 
					        diyPageService.createDiyPage(DiyPageConvert.INSTANCE.convertCreateVo(diyTemplate.getId(), "我的", remark));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateDiyTemplate(DiyTemplateUpdateReqVO updateReqVO) {
 | 
					    public void updateDiyTemplate(DiyTemplateUpdateReqVO updateReqVO) {
 | 
				
			||||||
        // 校验存在
 | 
					        // 校验存在
 | 
				
			||||||
        validateDiyTemplateExists(updateReqVO.getId());
 | 
					        validateDiyTemplateExists(updateReqVO.getId());
 | 
				
			||||||
 | 
					        // 校验名称唯一
 | 
				
			||||||
 | 
					        validateNameUnique(updateReqVO.getId(), updateReqVO.getName());
 | 
				
			||||||
        // 更新
 | 
					        // 更新
 | 
				
			||||||
        DiyTemplateDO updateObj = DiyTemplateConvert.INSTANCE.convert(updateReqVO);
 | 
					        DiyTemplateDO updateObj = DiyTemplateConvert.INSTANCE.convert(updateReqVO);
 | 
				
			||||||
        diyTemplateMapper.updateById(updateObj);
 | 
					        diyTemplateMapper.updateById(updateObj);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void validateNameUnique(Long id, String name) {
 | 
				
			||||||
 | 
					        if (StrUtil.isBlank(name)) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        DiyTemplateDO template = diyTemplateMapper.selectByName(name);
 | 
				
			||||||
 | 
					        if (template == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 如果 id 为空,说明不用比较是否为相同 id 的模板
 | 
				
			||||||
 | 
					        if (id == null) {
 | 
				
			||||||
 | 
					            throw exception(DIY_TEMPLATE_NAME_USED, name);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!template.getId().equals(id)) {
 | 
				
			||||||
 | 
					            throw exception(DIY_TEMPLATE_NAME_USED, name);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void deleteDiyTemplate(Long id) {
 | 
					    public void deleteDiyTemplate(Long id) {
 | 
				
			||||||
        // 校验存在
 | 
					        // 校验存在
 | 
				
			||||||
@ -85,12 +126,33 @@ public class DiyTemplateServiceImpl implements DiyTemplateService {
 | 
				
			|||||||
        // 已使用的更新为未使用
 | 
					        // 已使用的更新为未使用
 | 
				
			||||||
        DiyTemplateDO used = diyTemplateMapper.selectByUsed(true);
 | 
					        DiyTemplateDO used = diyTemplateMapper.selectByUsed(true);
 | 
				
			||||||
        if (used != null) {
 | 
					        if (used != null) {
 | 
				
			||||||
 | 
					            // 如果 id 相同,说明未发生变化
 | 
				
			||||||
 | 
					            if (used.getId().equals(id)) {
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            this.updateUsed(used.getId(), false, null);
 | 
					            this.updateUsed(used.getId(), false, null);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // 更新为已使用
 | 
					        // 更新为已使用
 | 
				
			||||||
        this.updateUsed(id, true, LocalDateTime.now());
 | 
					        this.updateUsed(id, true, LocalDateTime.now());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Transactional(rollbackFor = Exception.class)
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void updateDiyTemplateProperty(DiyTemplatePropertyUpdateRequestVO updateReqVO) {
 | 
				
			||||||
 | 
					        // 校验存在
 | 
				
			||||||
 | 
					        validateDiyTemplateExists(updateReqVO.getId());
 | 
				
			||||||
 | 
					        // 更新模板属性
 | 
				
			||||||
 | 
					        DiyTemplateDO updateObj = DiyTemplateConvert.INSTANCE.convert(updateReqVO);
 | 
				
			||||||
 | 
					        diyTemplateMapper.updateById(updateObj);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 更新模板是否使用
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param id       模板编号
 | 
				
			||||||
 | 
					     * @param used     是否使用
 | 
				
			||||||
 | 
					     * @param usedTime 使用时间
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private void updateUsed(Long id, Boolean used, LocalDateTime usedTime) {
 | 
					    private void updateUsed(Long id, Boolean used, LocalDateTime usedTime) {
 | 
				
			||||||
        DiyTemplateDO updateObj = new DiyTemplateDO().setId(id)
 | 
					        DiyTemplateDO updateObj = new DiyTemplateDO().setId(id)
 | 
				
			||||||
                .setUsed(used).setUsedTime(usedTime);
 | 
					                .setUsed(used).setUsedTime(usedTime);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user