主题管理

pull/25/head
xixiaowei 2021-12-23 09:07:58 +08:00
parent ca6fc97427
commit 2cc15adf5a
42 changed files with 1648 additions and 689 deletions

View File

@ -24,10 +24,10 @@
<module>system-business-role</module>
<module>system-business-menu</module>
<module>system-business-notice</module>
<module>system-business-title</module>
<module>system-integration-beetl</module>
<module>system-integration-rest</module>
<module>system-spring-boot-starter</module>
<module>system-business-theme</module>
</modules>
<dependencies>

View File

@ -0,0 +1,11 @@
package cn.stylefeng.roses.kernel.system.api;
/**
* Api
*
* @author xixiaowei
* @date 2021/12/17 10:25
*/
public interface ThemeServiceApi {
}

View File

@ -1,11 +0,0 @@
package cn.stylefeng.roses.kernel.system.api;
/**
* api
*
* @author xixiaowei
* @date 2021/12/13 17:20
*/
public interface TitleServiceApi {
}

View File

@ -0,0 +1,45 @@
package cn.stylefeng.roses.kernel.system.api.exception.enums.theme;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants;
import lombok.Getter;
@Getter
public enum SysThemeExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
THEME_NOT_EXIST(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "121", "系统主题不存在"),
/**
*
*/
THEME_NOT_ALLOW_DELETE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "122", "已启用的系统主题不允许删除"),
/**
* 使
*/
THEME_TEMPLATE_IS_DISABLE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "123", "禁用的系统主题模板不允许使用"),
/**
*
*/
UNIQUE_ENABLE_NOT_DISABLE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "124", "唯一启用的系统主题不允许禁用");
/**
*
*/
private final String errorCode;
/**
*
*/
private final String userTip;
SysThemeExceptionEnum(String errorCode, String userTip) {
this.errorCode = errorCode;
this.userTip = userTip;
}
}

View File

@ -0,0 +1,40 @@
package cn.stylefeng.roses.kernel.system.api.exception.enums.theme;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants;
import lombok.Getter;
@Getter
public enum SysThemeTemplateExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
TEMPLATE_NOT_EXIT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "111", "系统主题模板不存在"),
/**
*
*/
TEMPLATE_IS_ENABLE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "112", "已启用的系统主题模板不允许删除"),
/**
* 使
*/
TEMPLATE_IS_USED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "113", "系统主题模板正在被使用,不允许操作");
/**
*
*/
private final String errorCode;
/**
*
*/
private final String userTip;
SysThemeTemplateExceptionEnum(String errorCode, String userTip) {
this.errorCode = errorCode;
this.userTip = userTip;
}
}

View File

@ -0,0 +1,30 @@
package cn.stylefeng.roses.kernel.system.api.exception.enums.theme;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants;
import lombok.Getter;
@Getter
public enum SysThemeTemplateFieldExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
FIELD_NOT_EXIST(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "101", "系统主题模板属性不存在");
/**
*
*/
private final String errorCode;
/**
*
*/
private final String userTip;
SysThemeTemplateFieldExceptionEnum(String errorCode, String userTip) {
this.errorCode = errorCode;
this.userTip = userTip;
}
}

View File

@ -1,51 +0,0 @@
package cn.stylefeng.roses.kernel.system.api.exception.enums.title;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants;
import lombok.Getter;
/**
*
*
* @author xixiaowei
* @date 2021/12/15 14:47
*/
@Getter
public enum SysTitleExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
TITLE_NOT_EXIST(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "101", "标题图片配置不存在id为{}"),
/**
*
*/
ENABLE_NOT_ALLOW_DELETE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "102", "启用的配置不允许被删除id为{}"),
/**
*
*/
DISABLE_NOT_ALLOW_EDIT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "103", "未启用的配置不允许被编辑id为{}"),
/**
*
*/
UNIQUE_ENABLE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "104", "唯一启用的配置不允许禁用id为{}");
/**
*
*/
private final String errorCode;
/**
*
*/
private final String userTip;
SysTitleExceptionEnum(String errorCode, String userTip) {
this.errorCode = errorCode;
this.userTip = userTip;
}
}

View File

@ -0,0 +1,48 @@
package cn.stylefeng.roses.kernel.system.api.pojo.theme;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:20
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class SysThemeRequest extends BaseRequest {
/**
* ID
*/
@NotNull(message = "主键ID不能为空", groups = {edit.class, delete.class, detail.class, updateStatus.class})
@ChineseDescription("主键ID")
private Long themeId;
/**
*
*/
@NotBlank(message = "主题名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("主题名称")
private String themeName;
/**
* (JSON)
*/
@NotBlank(message = "主题属性不能为空", groups = {add.class, edit.class})
@ChineseDescription("主题属性")
private String themeValue;
/**
* ID
*/
@NotNull(message = "主题模板ID不能为空", groups = {add.class, edit.class})
@ChineseDescription("主题模板ID")
private Long templateId;
}

View File

@ -0,0 +1,63 @@
package cn.stylefeng.roses.kernel.system.api.pojo.theme;
import lombok.Data;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 15:20
*/
@Data
public class SysThemeTemplateDataDTO {
/**
* ID
*/
private Long templateId;
/**
*
*/
private String templateName;
/**
*
*/
private String templateCode;
/**
* ID
*/
private Long fieldId;
/**
*
*/
private String fieldName;
/**
*
*/
private String fieldCode;
/**
* ()
*/
private String fieldType;
/**
* Y-N-
*/
private Character fieldRequired;
/**
*
*/
private Integer fieldLength;
/**
*
*/
private String fieldDescription;
}

View File

@ -0,0 +1,66 @@
package cn.stylefeng.roses.kernel.system.api.pojo.theme;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 10:42
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class SysThemeTemplateFieldRequest extends BaseRequest {
/**
* ID
*/
@NotNull(message = "主键ID不能为空", groups = {edit.class, delete.class, detail.class})
@ChineseDescription("主键ID")
private Long fieldId;
/**
* ID
*/
@NotNull(message = "模板ID不能为空", groups = {add.class, delete.class})
@ChineseDescription("模板ID")
private Long templateId;
/**
*
*/
@NotBlank(message = "属性名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("属性名称")
private String fieldName;
/**
* ()
*/
@NotBlank(message = "属性展示类型不能为空", groups = {add.class, edit.class})
@ChineseDescription("属性展示类型")
private String fieldType;
/**
* Y-N-
*/
@ChineseDescription("是否必填")
private Character fieldRequired;
/**
*
*/
@ChineseDescription("属性长度")
private Integer fieldLength;
/**
*
*/
@ChineseDescription("属性描述")
private String fieldDescription;
}

View File

@ -0,0 +1,47 @@
package cn.stylefeng.roses.kernel.system.api.pojo.theme;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:19
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class SysThemeTemplateRequest extends BaseRequest {
/**
* ID
*/
@NotNull(message = "主键ID不能为空", groups = {edit.class, delete.class, detail.class, updateStatus.class})
@ChineseDescription("主键ID")
private Long templateId;
/**
*
*/
@NotBlank(message = "主题模板名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("主题模板名称")
private String templateName;
/**
* 1-2-
*/
@NotNull(message = "主题模板类型不能为空", groups = {add.class, edit.class})
@ChineseDescription("主题模板类型")
private Short templateType;
/**
* Y-N-
*/
@ChineseDescription("主题模板启用状态")
private Character statusFlag;
}

View File

@ -1,90 +0,0 @@
package cn.stylefeng.roses.kernel.system.api.pojo.title;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotNull;
/**
*
*
* @author xixiaowei
* @date 2021/12/13 17:01
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class SysTitleRequest extends BaseRequest {
/**
* id
*/
@NotNull(message = "titleId不能为空", groups = {edit.class, delete.class, detail.class})
@ChineseDescription("标题id")
private Long titleId;
/**
*
*/
@NotNull(message = "标题名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("标题名称")
private String titleName;
/**
*
*/
@NotNull(message = "公司名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("公司名称")
private String companyName;
/**
*
*/
@NotNull(message = "平台名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("平台名称")
private String platformName;
/**
*
*/
@NotNull(message = "平台英文名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("平台英文名称")
private String platformEnglishName;
/**
*
*/
@NotNull(message = "背景图片不能为空", groups = {add.class, edit.class})
@ChineseDescription("背景图片")
private MultipartFile backgroundImage;
/**
* logo
*/
@NotNull(message = "公司logo不能为空", groups = {add.class, edit.class})
@ChineseDescription("公司logo")
private MultipartFile companyLogo;
/**
* icon
*/
@NotNull(message = "浏览器icon不能为空", groups = {add.class, edit.class})
@ChineseDescription("浏览器icon")
private MultipartFile browserIcon;
/**
*
*/
@NotNull(message = "首页名称不能为空", groups = {add.class, edit.class})
@ChineseDescription("首页名称")
private String pageName;
/**
*
*/
@NotNull(message = "首页图标不能为空", groups = {add.class, edit.class})
@ChineseDescription("首页图标")
private MultipartFile pageImage;
}

View File

@ -9,7 +9,7 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>system-business-title</artifactId>
<artifactId>system-business-theme</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
@ -17,6 +17,7 @@
</properties>
<dependencies>
<!--系统管理的api-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
@ -54,10 +55,11 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--文件管理-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>file-business</artifactId>
<version>7.1.6</version>
<version>${roses.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,98 @@
package cn.stylefeng.roses.kernel.system.modular.theme.controller;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:40
*/
@RestController
@ApiResource(name = "系统主题管理")
public class SysThemeController {
@Resource
private SysThemeService sysThemeService;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:43
*/
@PostResource(name = "增加系统主题", path = "/sysTheme/add")
public ResponseData add(@RequestBody @Validated(SysThemeRequest.add.class) SysThemeRequest sysThemeParam) {
sysThemeService.add(sysThemeParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:45
*/
@PostResource(name = "删除系统主题", path = "/sysTheme/del")
public ResponseData del(@RequestBody @Validated(SysThemeRequest.delete.class) SysThemeRequest sysThemeParam) {
sysThemeService.del(sysThemeParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:50
*/
@PostResource(name = "修改系统主题", path = "/sysTheme/edit")
public ResponseData edit(@RequestBody @Validated(SysThemeRequest.edit.class) SysThemeRequest sysThemeParam) {
sysThemeService.edit(sysThemeParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:58
*/
@GetResource(name = "查询系统主题", path = "/sysTheme/findPage")
public ResponseData findPage(SysThemeRequest sysThemeParam) {
return new SuccessResponseData(sysThemeService.findPage(sysThemeParam));
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 17:04
*/
@GetResource(name = "查询系统主题详情", path = "/sysTheme/detail")
public ResponseData detail(@Validated(SysThemeRequest.updateStatus.class) SysThemeRequest sysThemeParam) {
return new SuccessResponseData(sysThemeService.detail(sysThemeParam));
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 17:32
*/
@PostResource(name = "修改系统主题启用状态", path = "/sysTheme/updateStatus")
public ResponseData updateThemeStatus(@RequestBody @Validated(SysThemeRequest.updateStatus.class) SysThemeRequest sysThemeParam) {
sysThemeService.updateThemeStatus(sysThemeParam);
return new SuccessResponseData();
}
}

View File

@ -0,0 +1,98 @@
package cn.stylefeng.roses.kernel.system.modular.theme.controller;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 13:53
*/
@RestController
@ApiResource(name = "系统主题模板管理")
public class SysThemeTemplateController {
@Resource
private SysThemeTemplateService sysThemeTemplateService;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 14:16
*/
@PostResource(name = "增加系统主题模板", path = "/sysThemeTemplate/add")
public ResponseData add(@RequestBody @Validated(SysThemeTemplateRequest.add.class) SysThemeTemplateRequest sysThemeTemplateParam) {
sysThemeTemplateService.add(sysThemeTemplateParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 14:36
*/
@PostResource(name = "编辑系统主题模板", path = "/sysThemeTemplate/edit")
public ResponseData edit(@RequestBody @Validated(SysThemeTemplateRequest.edit.class) SysThemeTemplateRequest sysThemeTemplateParam) {
sysThemeTemplateService.edit(sysThemeTemplateParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 14:47
*/
@PostResource(name = "删除系统主题模板", path = "/sysThemeTemplate/del")
public ResponseData del(@RequestBody @Validated(SysThemeTemplateRequest.delete.class) SysThemeTemplateRequest sysThemeTemplateParam) {
sysThemeTemplateService.del(sysThemeTemplateParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 15:00
*/
@GetResource(name = "查询系统模板主题", path = "/sysThemeTemplate/findPage")
public ResponseData findPage(SysThemeTemplateRequest sysThemeTemplateParam) {
return new SuccessResponseData(sysThemeTemplateService.findPage(sysThemeTemplateParam));
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 15:09
*/
@PostResource(name = "修改系统主题模板状态", path = "/sysThemeTemplate/updateStatus")
public ResponseData updateTemplateStatus(@RequestBody @Validated(SysThemeTemplateRequest.updateStatus.class) SysThemeTemplateRequest sysThemeTemplateParam) {
sysThemeTemplateService.updateTemplateStatus(sysThemeTemplateParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:09
*/
@GetResource(name = "查询系统主题模板详情", path = "/sysThemeTemplate/detail")
public ResponseData detail(SysThemeTemplateRequest sysThemeTemplateParam) {
return new SuccessResponseData(sysThemeTemplateService.detail(sysThemeTemplateParam));
}
}

View File

@ -0,0 +1,86 @@
package cn.stylefeng.roses.kernel.system.modular.theme.controller;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateFieldRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateFieldService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 10:28
*/
@RestController
@ApiResource(name = "系统主题模板属性管理")
public class SysThemeTemplateFieldController {
@Resource
private SysThemeTemplateFieldService sysThemeTemplateFieldService;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 11:22
*/
@PostResource(name = "增加系统主题模板属性", path = "/sysThemeTemplateField/add")
public ResponseData add(@RequestBody @Validated(SysThemeTemplateFieldRequest.add.class) SysThemeTemplateFieldRequest sysThemeTemplateFieldParam) {
sysThemeTemplateFieldService.add(sysThemeTemplateFieldParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 11:25
*/
@PostResource(name = "删除系统主题模板属性", path = "/sysThemeTemplateField/del")
public ResponseData del(@RequestBody @Validated(SysThemeTemplateFieldRequest.delete.class) SysThemeTemplateFieldRequest sysThemeTemplateFieldParam) {
sysThemeTemplateFieldService.del(sysThemeTemplateFieldParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 11:38
*/
@PostResource(name = "修改系统模板属性", path = "/sysThemeTemplateField/edit")
public ResponseData edit(@RequestBody @Validated(SysThemeTemplateFieldRequest.edit.class) SysThemeTemplateFieldRequest sysThemeTemplateFieldParam) {
sysThemeTemplateFieldService.edit(sysThemeTemplateFieldParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 11:49
*/
@GetResource(name = "查询系统主题模板属性", path = "/sysThemeTemplateField/detail")
public ResponseData detail(SysThemeTemplateFieldRequest sysThemeTemplateFieldParam) {
return new SuccessResponseData(sysThemeTemplateFieldService.detail(sysThemeTemplateFieldParam));
}
/**
*
*
* @author xixiaowei
* @date 2021/12/22 11:34
*/
/*@GetResource(name = "查询系统主题模板属性列表", path = "/sysThemeTemplateField/findList")
public ResponseData findList(SysThemeTemplateFieldRequest sysThemeTemplateFieldParam) {
return new SuccessResponseData(sysThemeTemplateFieldService.findList(sysThemeTemplateFieldParam));
}*/
}

View File

@ -0,0 +1,57 @@
package cn.stylefeng.roses.kernel.system.modular.theme.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 9:11
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_theme")
public class SysTheme extends BaseEntity {
/**
* ID
*/
@TableId(value = "theme_id", type = IdType.ASSIGN_ID)
@ChineseDescription("主键ID")
private Long themeId;
/**
*
*/
@TableField("theme_name")
@ChineseDescription("主题名称")
private String themeName;
/**
* (JSON)
*/
@TableField("theme_value")
@ChineseDescription("主题属性")
private String themeValue;
/**
* ID
*/
@TableField("template_id")
@ChineseDescription("主题模板ID")
private Long templateId;
/**
* Y-N-
*/
@TableField("status_flag")
@ChineseDescription("启用状态")
private Character statusFlag;
}

View File

@ -0,0 +1,57 @@
package cn.stylefeng.roses.kernel.system.modular.theme.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 9:23
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_theme_template")
public class SysThemeTemplate extends BaseEntity {
/**
* ID
*/
@TableId(value = "template_id", type = IdType.ASSIGN_ID)
@ChineseDescription("主键ID")
private Long templateId;
/**
*
*/
@TableField("template_name")
@ChineseDescription("主题模板名称")
private String templateName;
/**
*
*/
@TableField("template_code")
@ChineseDescription("主题模板编码")
private String templateCode;
/**
* 1-2-
*/
@TableField("template_type")
@ChineseDescription("主题模板类型")
private Short templateType;
/**
* Y-N-
*/
@TableField("status_flag")
@ChineseDescription("主题模板启用状态")
private Character statusFlag;
}

View File

@ -0,0 +1,71 @@
package cn.stylefeng.roses.kernel.system.modular.theme.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 9:39
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_theme_template_field")
public class SysThemeTemplateField extends BaseEntity {
/**
* ID
*/
@TableId(value = "field_id", type = IdType.ASSIGN_ID)
@ChineseDescription("主键ID")
private Long fieldId;
/**
*
*/
@TableField("field_name")
@ChineseDescription("属性名称")
private String fieldName;
/**
*
*/
@TableField("field_code")
@ChineseDescription("属性编码")
private String fieldCode;
/**
* ()
*/
@TableField("field_type")
@ChineseDescription("属性展示类型")
private String fieldType;
/**
* Y-N-
*/
@TableField("field_required")
@ChineseDescription("是否必填")
private Character fieldRequired;
/**
*
*/
@TableField("field_length")
@ChineseDescription("属性长度")
private Integer fieldLength;
/**
*
*/
@TableField("field_description")
@ChineseDescription("属性描述")
private String fieldDescription;
}

View File

@ -0,0 +1,43 @@
package cn.stylefeng.roses.kernel.system.modular.theme.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author xixiaowei
* @date 2021/12/17 9:56
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_theme_template_rel")
public class SysThemeTemplateRel extends BaseEntity {
/**
* ID
*/
@TableId(value = "relation_id", type = IdType.ASSIGN_ID)
@ChineseDescription("主键ID")
private Long relationId;
/**
* ID
*/
@TableField("template_id")
@ChineseDescription("模板ID")
private Long templateId;
/**
*
*/
@TableField("field_code")
@ChineseDescription("属性编码")
private String fieldCode;
}

View File

@ -0,0 +1,15 @@
package cn.stylefeng.roses.kernel.system.modular.theme.mapper;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysTheme;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* mapper
*
* @author xixiaowei
* @date 2021/12/17 10:07
*/
public interface SysThemeMapper extends BaseMapper<SysTheme> {
}

View File

@ -0,0 +1,14 @@
package cn.stylefeng.roses.kernel.system.modular.theme.mapper;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateField;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* mapper
*
* @author xixiaowei
* @date 2021/12/17 10:14
*/
public interface SysThemeTemplateFieldMapper extends BaseMapper<SysThemeTemplateField> {
}

View File

@ -0,0 +1,25 @@
package cn.stylefeng.roses.kernel.system.modular.theme.mapper;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateDataDTO;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* mapper
*
* @author xixiaowei
* @date 2021/12/17 10:11
*/
public interface SysThemeTemplateMapper extends BaseMapper<SysThemeTemplate> {
/**
*
*
* @author xixiaowei
* @date 2021/12/17 15:36
*/
List<SysThemeTemplateDataDTO> sysThemeTemplateDetail(@Param("id") Long id);
}

View File

@ -0,0 +1,14 @@
package cn.stylefeng.roses.kernel.system.modular.theme.mapper;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateRel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* mapper
*
* @author xixiaowei
* @date 2021/12/17 10:18
*/
public interface SysThemeTemplateRelMapper extends BaseMapper<SysThemeTemplateRel> {
}

View File

@ -1,5 +1,5 @@
<?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.stylefeng.roses.kernel.system.modular.title.mapper.SysTitleMapper">
<mapper namespace="cn.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeMapper">
</mapper>
</mapper>

View File

@ -0,0 +1,5 @@
<?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.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeTemplateFieldMapper">
</mapper>

View File

@ -0,0 +1,41 @@
<?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.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeTemplateMapper">
<resultMap id="sysThemeTemplateResult" type="cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateDataDTO">
<result property="templateId" column="template_id"/>
<result property="templateCode" column="template_code"/>
<result property="templateName" column="template_name"/>
<result property="fieldId" column="field_id"/>
<result property="fieldCode" column="field_code"/>
<result property="fieldName" column="field_name"/>
<result property="fieldType" column="field_type"/>
<result property="fieldLength" column="field_length"/>
<result property="fieldRequired" column="field_required"/>
<result property="fieldDescription" column="field_description"/>
</resultMap>
<select id="sysThemeTemplateDetail" resultMap="sysThemeTemplateResult">
SELECT
stt.template_id,
stt.template_code,
stt.template_name,
sttf.field_id,
sttf.field_code,
sttf.field_name,
sttf.field_type,
sttf.field_length,
sttf.field_required,
sttf.field_description
FROM
sys_theme_template_field sttf,
sys_theme_template stt,
sys_theme_template_rel sttl
WHERE
sttf.field_code = sttl.field_code
AND stt.template_id = sttl.template_id
<if test="id != null" >
AND stt.template_id = #{id}
</if>
</select>
</mapper>

View File

@ -0,0 +1,5 @@
<?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.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeTemplateRelMapper">
</mapper>

View File

@ -0,0 +1,68 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeDataDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysTheme;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 16:15
*/
public interface SysThemeService extends IService<SysTheme> {
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:26
*/
void add(SysThemeRequest sysThemeRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:29
*/
void del(SysThemeRequest sysThemeRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:47
*/
void edit(SysThemeRequest sysThemeRequest);
/**
*
*
* @return
* @author xixiaowei
* @date 2021/12/17 16:52
*/
PageResult<SysTheme> findPage(SysThemeRequest sysThemeRequest);
/**
*
*
* @return
* @author xixiaowei
* @date 2021/12/17 17:01
*/
SysTheme detail(SysThemeRequest sysThemeRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 17:06
*/
void updateThemeStatus(SysThemeRequest sysThemeRequest);
}

View File

@ -0,0 +1,46 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateFieldRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateField;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 10:30
*/
public interface SysThemeTemplateFieldService extends IService<SysThemeTemplateField> {
/**
*
*
* @author xixiaowei
* @date 2021/12/17 10:47
*/
void add(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 11:00
*/
void del(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 11:29
*/
void edit(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 11:47
*/
SysThemeTemplateField detail(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest);
}

View File

@ -0,0 +1,14 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateRel;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 16:13
*/
public interface SysThemeTemplateRelService extends IService<SysThemeTemplateRel> {
}

View File

@ -0,0 +1,67 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateDataDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplate;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 13:55
*/
public interface SysThemeTemplateService extends IService<SysThemeTemplate> {
/**
*
*
* @author xixiaowei
* @date 2021/12/17 14:04
*/
void add(SysThemeTemplateRequest sysThemeTemplateRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 14:21
*/
void edit(SysThemeTemplateRequest sysThemeTemplateRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 14:38
*/
void del(SysThemeTemplateRequest sysThemeTemplateRequest);
/**
*
*
* @return
* @author xixiaowei
* @date 2021/12/17 14:52
*/
PageResult<SysThemeTemplate> findPage(SysThemeTemplateRequest sysThemeTemplateRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 15:03
*/
void updateTemplateStatus(SysThemeTemplateRequest sysThemeTemplateRequest);
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:00
*/
List<SysThemeTemplateDataDTO> detail(SysThemeTemplateRequest sysThemeTemplateRequest);
}

View File

@ -0,0 +1,176 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.file.api.pojo.request.SysFileInfoRequest;
import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.api.ThemeServiceApi;
import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.api.exception.enums.theme.SysThemeExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysTheme;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplate;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateField;
import cn.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeMapper;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeService;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateFieldService;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 16:17
*/
@Service
public class SysThemeServiceImpl extends ServiceImpl<SysThemeMapper, SysTheme> implements SysThemeService, ThemeServiceApi {
@Resource
private SysThemeTemplateService sysThemeTemplateService;
@Resource
private SysThemeTemplateFieldService sysThemeTemplateFieldService;
@Resource
private SysFileInfoService sysFileInfoService;
@Override
public void add(SysThemeRequest sysThemeRequest) {
// 查询模板状态
SysThemeTemplate sysThemeTemplate = sysThemeTemplateService.getById(sysThemeRequest.getTemplateId());
// 判断模板启用状态:如果为禁用状态不允许使用
if (YesOrNotEnum.N.getCode().equals(sysThemeTemplate.getStatusFlag().toString())) {
throw new SystemModularException(SysThemeExceptionEnum.THEME_TEMPLATE_IS_DISABLE);
}
SysTheme sysTheme = new SysTheme();
// 拷贝属性
BeanUtil.copyProperties(sysThemeRequest, sysTheme);
// 设置默认启用状态-禁用N
sysTheme.setStatusFlag(YesOrNotEnum.N.getCode().charAt(0));
this.save(sysTheme);
}
@Override
public void del(SysThemeRequest sysThemeRequest) {
SysTheme sysTheme = this.querySysThemeById(sysThemeRequest);
// 已启用的主题不允许删除
if (YesOrNotEnum.Y.getCode().equals(sysTheme.getStatusFlag().toString())) {
throw new SystemModularException(SysThemeExceptionEnum.THEME_NOT_ALLOW_DELETE);
}
// 删除保存的图片
String themeValue = sysTheme.getThemeValue();
Map<String, String> themeMap = JSON.parseObject(themeValue, Map.class);
// 获取map的key
List<String> themeKeys = new ArrayList<>(themeMap.keySet());
// 获取图片文件的编码
LambdaQueryWrapper<SysThemeTemplateField> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SysThemeTemplateField::getFieldName, themeKeys).eq(SysThemeTemplateField::getFieldType, "file")
.select(SysThemeTemplateField::getFieldName);
List<SysThemeTemplateField> sysThemeTemplateFields = sysThemeTemplateFieldService.list(queryWrapper);
List<String> fileNames = sysThemeTemplateFields.stream().map(SysThemeTemplateField::getFieldName).collect(Collectors.toList());
// 删除图片
if (fileNames.size() > 0) {
for (String themeKey : themeKeys) {
String themeValueStr = themeMap.get(themeKey);
for (String fileName : fileNames) {
if (StrUtil.isNotBlank(themeKey) && StrUtil.isNotBlank(fileName) && themeKey.equals(fileName)) {
SysFileInfoRequest sysFileInfoRequest = new SysFileInfoRequest();
sysFileInfoRequest.setFileCode(Long.parseLong(themeValueStr));
sysFileInfoService.deleteReally(sysFileInfoRequest);
}
}
}
}
this.removeById(sysTheme);
}
@Override
public void edit(SysThemeRequest sysThemeRequest) {
SysTheme sysTheme = this.querySysThemeById(sysThemeRequest);
// 拷贝属性
BeanUtil.copyProperties(sysThemeRequest, sysTheme);
this.updateById(sysTheme);
}
@Override
public PageResult<SysTheme> findPage(SysThemeRequest sysThemeRequest) {
LambdaQueryWrapper<SysTheme> queryWrapper = new LambdaQueryWrapper<>();
// 通过主题名称模糊查询
queryWrapper.like(StrUtil.isNotBlank(sysThemeRequest.getThemeName()),SysTheme::getThemeName, sysThemeRequest.getThemeName());
Page<SysTheme> page = page(PageFactory.defaultPage(), queryWrapper);
return PageResultFactory.createPageResult(page);
}
@Override
public SysTheme detail(SysThemeRequest sysThemeRequest) {
return this.querySysThemeById(sysThemeRequest);
}
@Override
public void updateThemeStatus(SysThemeRequest sysThemeRequest) {
SysTheme sysTheme = this.querySysThemeById(sysThemeRequest);
// 已经启用系统主题不允许禁用
if (YesOrNotEnum.Y.getCode().equals(sysTheme.getStatusFlag().toString())) {
throw new SystemModularException(SysThemeExceptionEnum.UNIQUE_ENABLE_NOT_DISABLE);
} else {
// 如果当前系统禁用,启用该系统主题,同时禁用已启用的系统主题
sysTheme.setStatusFlag(YesOrNotEnum.Y.getCode().charAt(0));
LambdaQueryWrapper<SysTheme> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysTheme::getStatusFlag, YesOrNotEnum.Y.getCode().charAt(0));
if (this.list().size() > 1) {
SysTheme theme = getOne(queryWrapper, true);
theme.setStatusFlag(YesOrNotEnum.N.getCode().charAt(0));
this.updateById(theme);
}
}
this.updateById(sysTheme);
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 16:30
*/
private SysTheme querySysThemeById(SysThemeRequest sysThemeRequest) {
SysTheme sysTheme = this.getById(sysThemeRequest.getThemeId());
if (ObjectUtil.isNull(sysTheme)) {
throw new SystemModularException(SysThemeExceptionEnum.THEME_NOT_EXIST);
}
return sysTheme;
}
}

View File

@ -0,0 +1,106 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.api.exception.enums.theme.SysThemeTemplateFieldExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateFieldRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateField;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateRel;
import cn.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeTemplateFieldMapper;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateFieldService;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateRelService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 10:34
*/
@Service
public class SysThemeTemplateFieldServiceImpl extends ServiceImpl<SysThemeTemplateFieldMapper, SysThemeTemplateField> implements SysThemeTemplateFieldService {
@Resource
private SysThemeTemplateRelService sysThemeTemplateRelService;
@Override
@Transactional(rollbackFor = Exception.class)
public void add(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest) {
SysThemeTemplateField sysThemeTemplateField = new SysThemeTemplateField();
// 拷贝属性
BeanUtil.copyProperties(sysThemeTemplateFieldRequest, sysThemeTemplateField);
// 设置主题模板属性编码
sysThemeTemplateField.setFieldCode(IdWorker.getIdStr());
// 设置是否必填:如果请求参数为空,默认设置为非必填
sysThemeTemplateField.setFieldRequired(StringUtils.isBlank(sysThemeTemplateFieldRequest.getFieldType()) ? YesOrNotEnum.N.getCode().charAt(0) : sysThemeTemplateFieldRequest.getFieldRequired());
// 添加关联关系
SysThemeTemplateRel sysThemeTemplateRel = new SysThemeTemplateRel();
sysThemeTemplateRel.setTemplateId(sysThemeTemplateFieldRequest.getTemplateId());
sysThemeTemplateRel.setFieldCode(sysThemeTemplateField.getFieldCode());
// 保存关联关系
sysThemeTemplateRelService.save(sysThemeTemplateRel);
this.save(sysThemeTemplateField);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void del(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest) {
SysThemeTemplateField sysThemeTemplateField = this.queryThemeTemplateFieldById(sysThemeTemplateFieldRequest);
// 删除关联关系
LambdaQueryWrapper<SysThemeTemplateRel> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysThemeTemplateRel::getFieldCode, sysThemeTemplateField.getFieldCode());
sysThemeTemplateRelService.remove(queryWrapper);
this.removeById(sysThemeTemplateField.getFieldId());
}
@Override
public void edit(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest) {
SysThemeTemplateField sysThemeTemplateField = this.queryThemeTemplateFieldById(sysThemeTemplateFieldRequest);
// 更新属性
BeanUtil.copyProperties(sysThemeTemplateFieldRequest, sysThemeTemplateField);
// 设置是否必填:如果请求参数为空,默认设置为非必填
sysThemeTemplateField.setFieldRequired(StringUtils.isBlank(sysThemeTemplateFieldRequest.getFieldType()) ? YesOrNotEnum.N.getCode().charAt(0) : sysThemeTemplateFieldRequest.getFieldRequired());
this.updateById(sysThemeTemplateField);
}
@Override
public SysThemeTemplateField detail(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest) {
return this.queryThemeTemplateFieldById(sysThemeTemplateFieldRequest);
}
/**
*
*
* @param sysThemeTemplateFieldRequest
* @return
* @author xixiaowei
* @date 2021/12/17 11:03
*/
private SysThemeTemplateField queryThemeTemplateFieldById(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest) {
SysThemeTemplateField sysThemeTemplateField = this.getById(sysThemeTemplateFieldRequest.getFieldId());
if (ObjectUtil.isNull(sysThemeTemplateField)) {
throw new SystemModularException(SysThemeTemplateFieldExceptionEnum.FIELD_NOT_EXIST);
}
return sysThemeTemplateField;
}
}

View File

@ -0,0 +1,18 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service.impl;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateRel;
import cn.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeTemplateRelMapper;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateRelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 16:14
*/
@Service
public class SysThemeTemplateRelServiceImpl extends ServiceImpl<SysThemeTemplateRelMapper, SysThemeTemplateRel> implements SysThemeTemplateRelService {
}

View File

@ -0,0 +1,167 @@
package cn.stylefeng.roses.kernel.system.modular.theme.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.api.exception.enums.theme.SysThemeTemplateExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateDataDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.theme.SysThemeTemplateRequest;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysTheme;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplate;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateField;
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateRel;
import cn.stylefeng.roses.kernel.system.modular.theme.mapper.SysThemeTemplateMapper;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeService;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateFieldService;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateRelService;
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* service
*
* @author xixiaowei
* @date 2021/12/17 13:58
*/
@Service
public class SysThemeTemplateServiceImpl extends ServiceImpl<SysThemeTemplateMapper, SysThemeTemplate> implements SysThemeTemplateService {
@Resource
private SysThemeTemplateMapper sysThemeTemplateMapper;
@Resource
private SysThemeService sysThemeService;
@Resource
private SysThemeTemplateRelService sysThemeTemplateRelService;
@Resource
private SysThemeTemplateFieldService sysThemeTemplateFieldService;
@Override
public void add(SysThemeTemplateRequest sysThemeTemplateRequest) {
SysThemeTemplate sysThemeTemplate = new SysThemeTemplate();
// 拷贝属性
BeanUtil.copyProperties(sysThemeTemplateRequest, sysThemeTemplate);
// 设置主题模板编码
sysThemeTemplate.setTemplateCode(IdWorker.getIdStr());
// 默认启用状态禁用N
sysThemeTemplate.setStatusFlag(YesOrNotEnum.N.getCode().charAt(0));
this.save(sysThemeTemplate);
}
@Override
public void edit(SysThemeTemplateRequest sysThemeTemplateRequest) {
SysThemeTemplate sysThemeTemplate = this.querySysThemeTemplateById(sysThemeTemplateRequest);
if (YesOrNotEnum.Y.getCode().equals(sysThemeTemplate.getStatusFlag().toString())) {
throw new SystemModularException(SysThemeTemplateExceptionEnum.TEMPLATE_IS_USED);
}
// 拷贝属性
BeanUtil.copyProperties(sysThemeTemplateRequest, sysThemeTemplate);
this.updateById(sysThemeTemplate);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void del(SysThemeTemplateRequest sysThemeTemplateRequest) {
SysThemeTemplate sysThemeTemplate = this.querySysThemeTemplateById(sysThemeTemplateRequest);
if (YesOrNotEnum.Y.getCode().equals(sysThemeTemplate.getStatusFlag().toString())) {
throw new SystemModularException(SysThemeTemplateExceptionEnum.TEMPLATE_IS_ENABLE);
}
// 删除关联关系
LambdaQueryWrapper<SysThemeTemplateRel> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysThemeTemplateRel::getTemplateId, sysThemeTemplate.getTemplateId());
// 查询所有关联属性的编码
List<SysThemeTemplateRel> SysThemeTemplateRels = sysThemeTemplateRelService.list(queryWrapper.select(SysThemeTemplateRel::getFieldCode));
List<String> sysThemeTemplateFieldCodes = SysThemeTemplateRels.stream().map(SysThemeTemplateRel::getFieldCode).collect(Collectors.toList());
LambdaQueryWrapper<SysThemeTemplateField> delFieldWrapper = new LambdaQueryWrapper<>();
delFieldWrapper.in(SysThemeTemplateField::getFieldCode, sysThemeTemplateFieldCodes);
// 删除关联属性
if (sysThemeTemplateFieldCodes.size() > 0) {
sysThemeTemplateFieldService.remove(delFieldWrapper);
}
// 删除关联关系
sysThemeTemplateRelService.remove(queryWrapper);
// 删除模板
this.removeById(sysThemeTemplate);
}
@Override
public PageResult<SysThemeTemplate> findPage(SysThemeTemplateRequest sysThemeTemplateRequest) {
LambdaQueryWrapper<SysThemeTemplate> queryWrapper = new LambdaQueryWrapper<>();
// 根据系统主题模板名称模糊查询
queryWrapper.like(StrUtil.isNotBlank(sysThemeTemplateRequest.getTemplateName()) ,SysThemeTemplate::getTemplateName, sysThemeTemplateRequest.getTemplateName());
Page<SysThemeTemplate> page = page(PageFactory.defaultPage(), queryWrapper);
return PageResultFactory.createPageResult(page);
}
@Override
public void updateTemplateStatus(SysThemeTemplateRequest sysThemeTemplateRequest) {
SysThemeTemplate sysThemeTemplate = this.querySysThemeTemplateById(sysThemeTemplateRequest);
// 系统主题模板被使用,不允许禁用
LambdaQueryWrapper<SysTheme> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysTheme::getTemplateId, sysThemeTemplate.getTemplateId());
int sysThemeNum = sysThemeService.count(queryWrapper);
if (sysThemeNum > 0) {
throw new SystemModularException(SysThemeTemplateExceptionEnum.TEMPLATE_IS_USED);
}
// 修改状态
if (YesOrNotEnum.Y.getCode().equals(sysThemeTemplate.getStatusFlag().toString())) {
sysThemeTemplate.setStatusFlag(YesOrNotEnum.N.getCode().charAt(0));
} else {
sysThemeTemplate.setStatusFlag(YesOrNotEnum.Y.getCode().charAt(0));
}
this.updateById(sysThemeTemplate);
}
/**
*
*
* @author xixiaowei
* @date 2021/12/17 14:28
*/
private SysThemeTemplate querySysThemeTemplateById(SysThemeTemplateRequest sysThemeTemplateRequest) {
SysThemeTemplate sysThemeTemplate = this.getById(sysThemeTemplateRequest.getTemplateId());
if (ObjectUtil.isNull(sysThemeTemplate)) {
throw new SystemModularException(SysThemeTemplateExceptionEnum.TEMPLATE_NOT_EXIT);
}
return sysThemeTemplate;
}
@Override
@Transactional(rollbackFor = Exception.class)
public List<SysThemeTemplateDataDTO> detail(SysThemeTemplateRequest sysThemeTemplateRequest) {
return sysThemeTemplateMapper.sysThemeTemplateDetail(sysThemeTemplateRequest.getTemplateId());
}
}

View File

@ -1 +0,0 @@
标题图片管理

View File

@ -1,100 +0,0 @@
package cn.stylefeng.roses.kernel.system.modular.title.controller;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.system.api.pojo.title.SysTitleRequest;
import cn.stylefeng.roses.kernel.system.modular.title.entity.SysTitle;
import cn.stylefeng.roses.kernel.system.modular.title.service.SysTitleService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
*
*
* @author xixiaowei
* @date 2021/12/13 17:29
*/
@RestController
@ApiResource(name = "标题图片配置管理")
public class SysTitleController {
@Resource
private SysTitleService sysTitleService;
/**
*
*
* @author xixiaowei
* @date 2021/12/14 9:26
*/
@PostResource(name = "添加标题图片配置", path = "/sysTitle/add")
public ResponseData add(@RequestBody @Validated(SysTitleRequest.add.class) SysTitleRequest sysTitleParam) {
sysTitleService.add(sysTitleParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/14 9:28
*/
@PostResource(name = "删除标题图片配置", path = "/sysTitle/del")
public ResponseData del(@RequestBody @Validated(SysTitleRequest.delete.class) SysTitleRequest sysTitleParam) {
sysTitleService.del(sysTitleParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/14 9:53
*/
@PostResource(name = "修改标题图片配置", path = "/sysTitle/edit")
public ResponseData edit(@RequestBody @Validated(SysTitleRequest.edit.class) SysTitleRequest sysTitleParam) {
sysTitleService.edit(sysTitleParam);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/14 10:26
*/
@GetResource(name = "查询标题图片配置", path = "/sysTitle/find", responseClass = SysTitle.class)
public ResponseData findPage(SysTitleRequest sysTitleParam) {
return new SuccessResponseData(sysTitleService.findPage(sysTitleParam));
}
/**
*
*
* @author xixiaowei
* @date 2021/12/14 11:29
*/
@PostResource(name = "复制标题", path = "/sysTitle/copy")
public ResponseData copyTitle(@RequestBody @Validated(SysTitleRequest.add.class) SysTitleRequest sysTitleRequest) {
sysTitleService.copyTitle(sysTitleRequest);
return new SuccessResponseData();
}
/**
*
*
* @author xixiaowei
* @date 2021/12/14 11:43
*/
@PostResource(name = "修改启用状态", path = "/sysTitle/updateStatus")
public ResponseData updateStatus(@RequestBody @Validated(SysTitleRequest.edit.class) SysTitleRequest sysTitleRequest) {
sysTitleService.updateStatus(sysTitleRequest);
return new SuccessResponseData();
}
}

View File

@ -1,99 +0,0 @@
package cn.stylefeng.roses.kernel.system.modular.title.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author xixiaowei
* @date 2021/12/13 15:49
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_title")
public class SysTitle extends BaseEntity {
/**
* id
*/
@TableId(value = "title_id", type = IdType.ASSIGN_ID)
@ChineseDescription("标题id")
private Long titleId;
/**
*
*/
@TableField("title_name")
@ChineseDescription("标题名称")
private String titleName;
/**
*
*/
@TableField("company_name")
@ChineseDescription("公司名称")
private String companyName;
/**
*
*/
@TableField("platform_name")
@ChineseDescription("平台名称")
private String platformName;
/**
*
*/
@TableField("platform_english_name")
@ChineseDescription("平台英文名称")
private String platformEnglishName;
/**
*
*/
@TableField("background_image")
@ChineseDescription("背景图片")
private String backgroundImage;
/**
* logo
*/
@TableField("company_logo")
@ChineseDescription("公司logo")
private String companyLogo;
/**
* icon
*/
@TableField("browser_icon")
@ChineseDescription("浏览器icon")
private String browserIcon;
/**
*
*/
@TableField("page_name")
@ChineseDescription("首页名称")
private String pageName;
/**
*
*/
@TableField("page_image")
@ChineseDescription("首页图标")
private String pageImage;
/**
* Y N
*/
@TableField("status")
@ChineseDescription("启用状态")
private Character status;
}

View File

@ -1,14 +0,0 @@
package cn.stylefeng.roses.kernel.system.modular.title.mapper;
import cn.stylefeng.roses.kernel.system.modular.title.entity.SysTitle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* mapper
*
* @author xixiaowei
* @date 2021/12/13 16:37
*/
public interface SysTitleMapper extends BaseMapper<SysTitle> {
}

View File

@ -1,80 +0,0 @@
package cn.stylefeng.roses.kernel.system.modular.title.service;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.system.api.TitleServiceApi;
import cn.stylefeng.roses.kernel.system.api.pojo.title.SysTitleRequest;
import cn.stylefeng.roses.kernel.system.modular.title.entity.SysTitle;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
*
* @author xixiaowei
* @date 2021/12/13 17:22
*/
public interface SysTitleService extends IService<SysTitle>, TitleServiceApi {
/**
*
*
* @param sysTitleRequest
* @author xixiaowei
* @date 2021/12/13 17:45
*/
void add(SysTitleRequest sysTitleRequest);
/**
*
*
* @param sysTitleRequest
* @author xixiaowei
* @date 2021/12/13 18:39
*/
void del(SysTitleRequest sysTitleRequest);
/**
*
*
* @param sysTitleRequest
* @author xixiaowei
* @date 2021/12/14 9:32
*/
void edit(SysTitleRequest sysTitleRequest);
/**
*
*
* @param sysTitleRequest
* @author xixiaowei
* @date 2021/12/14 11:38
*/
SysTitle detail(SysTitleRequest sysTitleRequest);
/**
*
*
* @param sysTitleRequest
* @return
* @author xixiaowei
* @date 2021/12/14 10:00
*/
PageResult<SysTitle> findPage(SysTitleRequest sysTitleRequest);
/**
*
*
* @param sysTitleRequest
* @author xixiaowei
* @date 2021/12/14 10:47
*/
void copyTitle(SysTitleRequest sysTitleRequest);
/**
*
*
* @param sysTitleRequest
* @author xixiaowei
* @date 2021/12/14 11:32
*/
void updateStatus(SysTitleRequest sysTitleRequest);
}

View File

@ -1,238 +0,0 @@
package cn.stylefeng.roses.kernel.system.modular.title.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.file.api.pojo.request.SysFileInfoRequest;
import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.api.exception.enums.title.SysTitleExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.title.SysTitleRequest;
import cn.stylefeng.roses.kernel.system.modular.title.entity.SysTitle;
import cn.stylefeng.roses.kernel.system.modular.title.mapper.SysTitleMapper;
import cn.stylefeng.roses.kernel.system.modular.title.service.SysTitleService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
/**
*
*
* @author xixiaowei
* @date 2021/12/13 17:28
*/
@Service
public class SysTitleServiceImpl extends ServiceImpl<SysTitleMapper, SysTitle> implements SysTitleService {
private static final Long DEFAULT_FILE_UPLOAD = null;
@Resource
private SysFileInfoService sysFileInfoService;
@Override
public void add(SysTitleRequest sysTitleRequest) {
SysTitle sysTitle = new SysTitle();
// 拷贝属性
BeanUtil.copyProperties(sysTitleRequest, sysTitle);
// 启用状态默认为未启用 N
sysTitle.setStatus(YesOrNotEnum.N.getCode().charAt(0));
// 保存图片信息
SysFileInfoResponse backgroundImageResponse = this.uploadFile(sysTitleRequest.getBackgroundImage(), DEFAULT_FILE_UPLOAD);
sysTitle.setBackgroundImage(backgroundImageResponse.getFileId().toString());
SysFileInfoResponse browserIconResponse = this.uploadFile(sysTitleRequest.getBrowserIcon(), DEFAULT_FILE_UPLOAD);
sysTitle.setBrowserIcon(browserIconResponse.getFileId().toString());
SysFileInfoResponse companyLogoResponse = this.uploadFile(sysTitleRequest.getCompanyLogo(), DEFAULT_FILE_UPLOAD);
sysTitle.setCompanyLogo(companyLogoResponse.getFileId().toString());
SysFileInfoResponse pageImageResponse = this.uploadFile(sysTitleRequest.getPageImage(), DEFAULT_FILE_UPLOAD);
sysTitle.setPageImage(pageImageResponse.getFileId().toString());
// 保存配置信息
this.save(sysTitle);
}
/**
*
*
* @param multipartFile
* @author xixiaowei
* @date 2021/12/14 14:40
*/
private SysFileInfoResponse uploadFile(MultipartFile multipartFile, Long fileCode) {
SysFileInfoRequest sysFileInfoRequest = new SysFileInfoRequest();
sysFileInfoRequest.setFileId(IdWorker.getId());
if (fileCode != null) {
sysFileInfoRequest.setFileCode(fileCode);
}
sysFileInfoRequest.setSecretFlag(YesOrNotEnum.N.getCode());
sysFileInfoRequest.setFileLocation(4);
sysFileInfoRequest.setFilePath("D:\\test");
sysFileInfoRequest.setFileOriginName(multipartFile.getOriginalFilename());
return sysFileInfoService.uploadFile(multipartFile, sysFileInfoRequest);
}
@Override
public void del(SysTitleRequest sysTitleRequest) {
SysTitle sysTitle = this.querySysTitleById(sysTitleRequest);
// 启用状态不允许删除
if (Character.valueOf(YesOrNotEnum.Y.getCode().charAt(0)).equals(sysTitle.getStatus())) {
throw new SystemModularException(SysTitleExceptionEnum.ENABLE_NOT_ALLOW_DELETE, sysTitleRequest.getTitleId());
}
// 删除配置
this.removeById(sysTitle);
}
/**
*
*
* @author xixiaowei
* @date 2021/12/14 9:18
*/
private SysTitle querySysTitleById(SysTitleRequest sysTitleRequest) {
SysTitle sysTitle = this.getById(sysTitleRequest.getTitleId());
if (ObjectUtil.isEmpty(sysTitle)) {
throw new SystemModularException(SysTitleExceptionEnum.TITLE_NOT_EXIST, sysTitleRequest.getTitleId());
}
return sysTitle;
}
@Override
public void edit(SysTitleRequest sysTitleRequest) {
SysTitle sysTitle = this.querySysTitleById(sysTitleRequest);
// 未启用状态不允许编辑
if (Character.valueOf(YesOrNotEnum.N.getCode().charAt(0)).equals(sysTitle.getStatus())) {
throw new SystemModularException(SysTitleExceptionEnum.DISABLE_NOT_ALLOW_EDIT, sysTitleRequest.getTitleId());
}
// 图片修改
sysTitle.setBackgroundImage(this.updateFile(sysTitleRequest.getBackgroundImage(), sysTitle.getBackgroundImage()));
sysTitle.setBrowserIcon(this.updateFile(sysTitleRequest.getBrowserIcon(), sysTitle.getBrowserIcon()));
sysTitle.setCompanyLogo(this.updateFile(sysTitleRequest.getCompanyLogo(), sysTitle.getCompanyLogo()));
sysTitle.setPageImage(this.updateFile(sysTitleRequest.getPageImage(), sysTitle.getPageImage()));
// 更新属性
BeanUtil.copyProperties(sysTitleRequest, sysTitle);
// 修改配置
this.updateById(sysTitle);
}
/**
*
*
* @param multipartFile
* @param fileId Id
* @return Id
* @author xixiaowei
* @date 2021/12/14 15:21
*/
private String updateFile(MultipartFile multipartFile, String fileId) {
SysFileInfoResponse fileInfoResult = sysFileInfoService.getFileInfoResult(Long.parseLong(fileId));
// 上传图片
SysFileInfoResponse sysFileInfoResponse = this.uploadFile(multipartFile, fileInfoResult.getFileCode());
return sysFileInfoResponse.getFileId().toString();
}
@Override
public SysTitle detail(SysTitleRequest sysTitleRequest) {
return this.querySysTitleById(sysTitleRequest);
}
@Override
public PageResult<SysTitle> findPage(SysTitleRequest sysTitleRequest) {
LambdaQueryWrapper<SysTitle> wrapper = this.createWrapper(sysTitleRequest);
Page<SysTitle> page = this.page(PageFactory.defaultPage(), wrapper);
return PageResultFactory.createPageResult(page);
}
/**
* Wrapper
*
* @author xixiaowei
* @date 2021/12/14 10:04
*/
private LambdaQueryWrapper<SysTitle> createWrapper(SysTitleRequest sysTitleRequest) {
LambdaQueryWrapper<SysTitle> wrapper = new LambdaQueryWrapper<>();
// 按照创建时间倒序
wrapper.orderByDesc(BaseEntity::getCreateTime);
// 如果标题不为空,根据标题名称模糊查询;如果标题为空,查询全部
wrapper.like(StrUtil.isNotBlank(sysTitleRequest.getTitleName()), SysTitle::getTitleName, sysTitleRequest.getTitleName());
return wrapper;
}
@Override
public void copyTitle(SysTitleRequest sysTitleRequest) {
SysTitle sysTitle = this.querySysTitleById(sysTitleRequest);
SysTitle title = new SysTitle();
// 拷贝属性
BeanUtil.copyProperties(sysTitle, title);
// 修改标题名称
title.setTitleName(sysTitle.getTitleName() + "复制");
// 标题状态设为默认状态 未启用 N
title.setStatus(YesOrNotEnum.N.getCode().charAt(0));
// 保存配置信息
this.save(title);
}
@Override
public void updateStatus(SysTitleRequest sysTitleRequest) {
SysTitle sysTitle = this.querySysTitleById(sysTitleRequest);
// 如果状态为唯一启用状态不允许被禁用, 如果为未启用状态则可以启用该配置同时禁用已启用的标题配置
if (Character.valueOf(YesOrNotEnum.Y.getCode().charAt(0)).equals(sysTitle.getStatus())) {
throw new SystemModularException(SysTitleExceptionEnum.UNIQUE_ENABLE, sysTitleRequest.getTitleId());
} else {
// 设置为启用状态
sysTitle.setStatus(YesOrNotEnum.Y.getCode().charAt(0));
// 修改已启用的标题配置
if (this.updateEnableToDisableStatus()) {
updateById(sysTitle);
}
}
}
/**
*
*
* @author xixiaowei
* @date 2021/12/14 14:00
*/
private Boolean updateEnableToDisableStatus() {
// 查询已启用的标题配置
LambdaQueryWrapper<SysTitle> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysTitle::getStatus, YesOrNotEnum.Y.getCode().charAt(0));
SysTitle sysTitle = getOne(wrapper);
// 修改状态
sysTitle.setStatus(YesOrNotEnum.N.getCode().charAt(0));
return updateById(sysTitle);
}
}