mirror of https://gitee.com/stylefeng/roses
【7.1.6】【theme】更新主题管理
parent
913b8cfebd
commit
7de31b46c5
|
@ -2,6 +2,7 @@ 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 cn.stylefeng.roses.kernel.system.modular.theme.pojo.AntdvFileInfo;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
|
@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
|||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 系统主题表
|
||||
*
|
||||
|
@ -54,4 +57,15 @@ public class SysTheme extends BaseEntity {
|
|||
@TableField("status_flag")
|
||||
@ChineseDescription("启用状态")
|
||||
private Character statusFlag;
|
||||
|
||||
/**
|
||||
* 动态表单的key-value属性
|
||||
*/
|
||||
private transient Map<String, Object> dynamicForm;
|
||||
|
||||
/**
|
||||
* 用于编辑界面渲染antdv的临时文件展示
|
||||
*/
|
||||
private transient Map<String, AntdvFileInfo[]> tempFileList;
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright [2020-2030] [https://www.stylefeng.cn]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||
*
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改Guns源码头部的版权声明。
|
||||
* 3.请保留源码和相关描述文件的项目出处,作者声明等。
|
||||
* 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 6.若您的项目无法满足以上几点,可申请商业授权
|
||||
*/
|
||||
package cn.stylefeng.roses.kernel.system.modular.theme.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 字段类型枚举
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/1/1 22:29
|
||||
*/
|
||||
@Getter
|
||||
public enum FieldTypeEnum {
|
||||
|
||||
/**
|
||||
* 字符串类型
|
||||
*/
|
||||
STRING("string", "字符串类型"),
|
||||
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
FILE("file", "文件类型");
|
||||
|
||||
private final String code;
|
||||
|
||||
private final String message;
|
||||
|
||||
FieldTypeEnum(String code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package cn.stylefeng.roses.kernel.system.modular.theme.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 前端antdv组件需要的文件信息封装
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/1/1 22:14
|
||||
*/
|
||||
@Data
|
||||
public class AntdvFileInfo {
|
||||
|
||||
/**
|
||||
* 文件唯一标识
|
||||
*/
|
||||
private String uid;
|
||||
|
||||
/**
|
||||
* 文件名
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 状态有:uploading done error removed
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 服务端响应内容
|
||||
*/
|
||||
private String response = "{\"status\": \"success\"}";
|
||||
|
||||
/**
|
||||
* 下载链接额外的 HTML 属性
|
||||
*/
|
||||
private String linkProps;
|
||||
|
||||
/**
|
||||
* XMLHttpRequest Header
|
||||
*/
|
||||
private String xhr;
|
||||
|
||||
/**
|
||||
* 文件访问的url
|
||||
*/
|
||||
private String thumbUrl;
|
||||
|
||||
}
|
|
@ -72,4 +72,13 @@ public interface SysThemeTemplateFieldService extends IService<SysThemeTemplateF
|
|||
* @date 2021/12/24 11:49
|
||||
*/
|
||||
List<SysThemeTemplateField> findNotRelList(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest);
|
||||
|
||||
/**
|
||||
* 根据字段名,获取该属性是否为文件类型
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/1/1 22:24
|
||||
*/
|
||||
boolean getKeyFileFlag(String code);
|
||||
|
||||
}
|
||||
|
|
|
@ -6,7 +6,9 @@ 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.FileInfoApi;
|
||||
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.ThemeServiceApi;
|
||||
|
@ -18,17 +20,21 @@ 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.pojo.AntdvFileInfo;
|
||||
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.alibaba.fastjson.JSONObject;
|
||||
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 javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -51,6 +57,9 @@ public class SysThemeServiceImpl extends ServiceImpl<SysThemeMapper, SysTheme> i
|
|||
@Resource
|
||||
private SysFileInfoService sysFileInfoService;
|
||||
|
||||
@Resource
|
||||
private FileInfoApi fileInfoApi;
|
||||
|
||||
@Override
|
||||
public void add(SysThemeRequest sysThemeRequest) {
|
||||
// 查询模板状态
|
||||
|
@ -147,7 +156,37 @@ public class SysThemeServiceImpl extends ServiceImpl<SysThemeMapper, SysTheme> i
|
|||
|
||||
@Override
|
||||
public SysTheme detail(SysThemeRequest sysThemeRequest) {
|
||||
return this.querySysThemeById(sysThemeRequest);
|
||||
SysTheme sysTheme = this.querySysThemeById(sysThemeRequest);
|
||||
|
||||
// 设置动态属性表单
|
||||
String themeValueJson = sysTheme.getThemeValue();
|
||||
JSONObject jsonObject = JSON.parseObject(themeValueJson);
|
||||
sysTheme.setDynamicForm(jsonObject.getInnerMap());
|
||||
|
||||
// 遍历表单属性,找到所有文件类型的,组装文件的图片和名称等信息
|
||||
HashMap<String, AntdvFileInfo[]> tempFileList = new HashMap<>();
|
||||
for (Map.Entry<String, Object> keyValues : jsonObject.entrySet()) {
|
||||
String key = keyValues.getKey();
|
||||
String value = jsonObject.getString(key);
|
||||
// 判断是否是文件类型
|
||||
boolean keyFileFlag = sysThemeTemplateFieldService.getKeyFileFlag(key);
|
||||
if (keyFileFlag) {
|
||||
AntdvFileInfo antdvFileInfo = new AntdvFileInfo();
|
||||
// 设置唯一id
|
||||
antdvFileInfo.setUid(IdWorker.getIdStr());
|
||||
// 设置文件名称
|
||||
SysFileInfoResponse fileInfoWithoutContent = fileInfoApi.getFileInfoWithoutContent(Long.valueOf(value));
|
||||
antdvFileInfo.setName(fileInfoWithoutContent.getFileOriginName());
|
||||
// 设置文件访问url
|
||||
String fileAuthUrl = fileInfoApi.getFileAuthUrl(Long.valueOf(value));
|
||||
antdvFileInfo.setThumbUrl(fileAuthUrl);
|
||||
tempFileList.put(key, new AntdvFileInfo[]{antdvFileInfo});
|
||||
}
|
||||
}
|
||||
|
||||
// 设置临时文件的展示
|
||||
sysTheme.setTempFileList(tempFileList);
|
||||
return sysTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,6 +12,7 @@ import cn.stylefeng.roses.kernel.system.api.exception.enums.theme.SysThemeTempla
|
|||
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.enums.FieldTypeEnum;
|
||||
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;
|
||||
|
@ -163,6 +164,20 @@ public class SysThemeTemplateFieldServiceImpl extends ServiceImpl<SysThemeTempla
|
|||
return sysThemeTemplateFields;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getKeyFileFlag(String code) {
|
||||
LambdaQueryWrapper<SysThemeTemplateField> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(SysThemeTemplateField::getFieldCode, code);
|
||||
wrapper.select(SysThemeTemplateField::getFieldType);
|
||||
|
||||
SysThemeTemplateField sysThemeTemplateField = this.getOne(wrapper, false);
|
||||
if (sysThemeTemplateField == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return FieldTypeEnum.FILE.getCode().equals(sysThemeTemplateField.getFieldType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主题模板属性
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue