【7.1.6】【theme】更新主题管理

pull/25/head
fengshuonan 2022-01-01 23:09:11 +08:00
parent 913b8cfebd
commit 7de31b46c5
6 changed files with 184 additions and 1 deletions

View File

@ -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;
}

View File

@ -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.
*
* GunsAPACHE 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;
}
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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

View File

@ -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());
}
/**
*
*