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.db.api.pojo.entity.BaseEntity;
|
||||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription;
|
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.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统主题表
|
* 系统主题表
|
||||||
*
|
*
|
||||||
|
@ -54,4 +57,15 @@ public class SysTheme extends BaseEntity {
|
||||||
@TableField("status_flag")
|
@TableField("status_flag")
|
||||||
@ChineseDescription("启用状态")
|
@ChineseDescription("启用状态")
|
||||||
private Character statusFlag;
|
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
|
* @date 2021/12/24 11:49
|
||||||
*/
|
*/
|
||||||
List<SysThemeTemplateField> findNotRelList(SysThemeTemplateFieldRequest sysThemeTemplateFieldRequest);
|
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.PageFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
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.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.file.modular.service.SysFileInfoService;
|
||||||
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||||
import cn.stylefeng.roses.kernel.system.api.ThemeServiceApi;
|
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.SysThemeTemplate;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateField;
|
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.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.SysThemeService;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateFieldService;
|
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateFieldService;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateService;
|
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateService;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -51,6 +57,9 @@ public class SysThemeServiceImpl extends ServiceImpl<SysThemeMapper, SysTheme> i
|
||||||
@Resource
|
@Resource
|
||||||
private SysFileInfoService sysFileInfoService;
|
private SysFileInfoService sysFileInfoService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private FileInfoApi fileInfoApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(SysThemeRequest sysThemeRequest) {
|
public void add(SysThemeRequest sysThemeRequest) {
|
||||||
// 查询模板状态
|
// 查询模板状态
|
||||||
|
@ -147,7 +156,37 @@ public class SysThemeServiceImpl extends ServiceImpl<SysThemeMapper, SysTheme> i
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SysTheme detail(SysThemeRequest sysThemeRequest) {
|
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
|
@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.api.pojo.theme.SysThemeTemplateFieldRequest;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.theme.entity.SysThemeTemplateField;
|
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.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.mapper.SysThemeTemplateFieldMapper;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.theme.service.SysThemeTemplateFieldService;
|
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.SysThemeTemplateRelService;
|
||||||
|
@ -163,6 +164,20 @@ public class SysThemeTemplateFieldServiceImpl extends ServiceImpl<SysThemeTempla
|
||||||
return sysThemeTemplateFields;
|
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