Search in sources :

Example 16 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class FileServiceImpl method ckeditorUploadToolFile.

@Override
public Object ckeditorUploadToolFile(HttpServletRequest request) {
    String token = request.getParameter(SysConf.TOKEN);
    // 从Redis中获取系统配置【需要传入token】
    Map<String, String> qiNiuResultMap = feignUtil.getSystemConfigMap(token);
    SystemConfig systemConfig = feignUtil.getSystemConfigByMap(qiNiuResultMap);
    Map<String, Object> map = new HashMap<>();
    Map<String, Object> errorMap = new HashMap<>();
    // 引用自己设计的一个工具类
    AboutFileUtil af = new AboutFileUtil();
    // 转换成多部分request
    MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
    // 取得request中的所有文件名
    Iterator<String> iter = multiRequest.getFileNames();
    while (iter.hasNext()) {
        MultipartFile file = multiRequest.getFile(iter.next());
        if (file != null) {
            // 获取旧名称
            String oldName = file.getOriginalFilename();
            // 获取扩展名
            String expandedName = FileUtils.getPicExpandedName(oldName);
            // 判断是否安全文件
            if (!af.isSafe(expandedName)) {
                map.put(SysConf.UPLOADED, 0);
                errorMap.put(SysConf.MESSAGE, "请上传正确格式的文件");
                map.put(SysConf.ERROR, errorMap);
                return map;
            }
            // 对文件大小进行限制
            if (file.getSize() > (50 * 1024 * 1024)) {
                map.put(SysConf.UPLOADED, 0);
                errorMap.put(SysConf.MESSAGE, "文件大小不能超过50M");
                map.put(SysConf.ERROR, errorMap);
                return map;
            }
            // 设置图片上传服务必要的信息
            request.setAttribute(SysConf.USER_UID, SysConf.DEFAULT_UID);
            request.setAttribute(SysConf.ADMIN_UID, SysConf.DEFAULT_UID);
            request.setAttribute(SysConf.PROJECT_NAME, SysConf.BLOG);
            request.setAttribute(SysConf.SORT_NAME, SysConf.ADMIN);
            List<MultipartFile> fileData = new ArrayList<>();
            fileData.add(file);
            String result = fileService.batchUploadFile(request, fileData, systemConfig);
            Map<String, Object> resultMap = JsonUtils.jsonToMap(result);
            String code = resultMap.get(SysConf.CODE).toString();
            if (SysConf.SUCCESS.equals(code)) {
                List<HashMap<String, Object>> resultList = (List<HashMap<String, Object>>) resultMap.get(SysConf.DATA);
                if (resultList.size() > 0) {
                    Map<String, Object> picture = resultList.get(0);
                    String fileName = picture.get(SysConf.PIC_NAME).toString();
                    map.put(SysConf.UPLOADED, 1);
                    map.put(SysConf.FILE_NAME, fileName);
                    // 设置显示方式
                    if (EFilePriority.QI_NIU.equals(systemConfig.getContentPicturePriority())) {
                        String qiNiuPictureBaseUrl = systemConfig.getQiNiuPictureBaseUrl();
                        String qiNiuUrl = qiNiuPictureBaseUrl + picture.get(SysConf.QI_NIU_URL).toString();
                        map.put(SysConf.URL, qiNiuUrl);
                    } else if (EFilePriority.MINIO.equals(systemConfig.getContentPicturePriority())) {
                        String minioPictureBaseUrl = systemConfig.getMinioPictureBaseUrl();
                        // 设置图片服务根域名
                        String url = minioPictureBaseUrl + picture.get(SysConf.MINIO_URL).toString();
                        map.put(SysConf.URL, url);
                    } else {
                        String localPictureBaseUrl = systemConfig.getLocalPictureBaseUrl();
                        // 设置图片服务根域名
                        String url = localPictureBaseUrl + picture.get(SysConf.PIC_URL).toString();
                        map.put(SysConf.URL, url);
                    }
                }
                return map;
            } else {
                map.put(SysConf.UPLOADED, 0);
                errorMap.put(SysConf.MESSAGE, "上传失败");
                map.put(SysConf.ERROR, errorMap);
                return map;
            }
        }
    }
    return null;
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) AboutFileUtil(com.moxi.mogublog.picture.util.AboutFileUtil) MultipartFile(org.springframework.web.multipart.MultipartFile) MultipartHttpServletRequest(org.springframework.web.multipart.MultipartHttpServletRequest)

Example 17 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class FreemarkerController method getAllHtml.

/**
 * 生成所有博客的静态文件
 */
@RequestMapping("/getAllHtml")
@ResponseBody
public String getAllHtml() throws IOException {
    FileOutputStream fileOutputStream = null;
    InputStream inputStream = null;
    try {
        // 创建配置类
        Configuration configuration = new Configuration(Configuration.getVersion());
        String classpath = this.getClass().getResource("/").getPath();
        // 设置模板路径
        configuration.setDirectoryForTemplateLoading(new File(classpath + "/templates/"));
        // 设置字符集
        configuration.setDefaultEncoding("utf-8");
        // 加载模板
        Template template = configuration.getTemplate("info.ftl");
        QueryWrapper<Blog> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq(SQLConf.STATUS, EStatus.ENABLE);
        queryWrapper.eq(SQLConf.IS_PUBLISH, EPublish.PUBLISH);
        List<Blog> blogList = blogService.list(queryWrapper);
        blogList = setBlog(blogList);
        Map<String, List<Blog>> blogMap = new HashMap<>();
        List<Blog> thirdBlog = new ArrayList<>();
        List<Blog> fourthBlog = new ArrayList<>();
        List<Blog> hotBlogList = blogService.getBlogListByTop(SysConf.FIVE);
        blogList.forEach(item -> {
            if (item.getLevel() == ELevel.THIRD) {
                thirdBlog.add(item);
            } else if (item.getLevel() == ELevel.FOURTH) {
                fourthBlog.add(item);
            }
            List<Blog> tempList = blogMap.get(item.getBlogSortUid());
            if (tempList != null && tempList.size() > 0) {
                tempList.add(item);
                blogMap.put(item.getBlogSortUid(), tempList);
            } else {
                List<Blog> temp = new ArrayList<>();
                temp.add(item);
                blogMap.put(item.getBlogSortUid(), temp);
            }
        });
        SystemConfig systemConfig = systemConfigService.getConfig();
        if (systemConfig == null) {
            return ResultUtil.result(SysConf.ERROR, "系统配置为空");
        }
        for (int a = 0; a < blogList.size(); a++) {
            // 数据模型
            Map map = new HashMap();
            List<Blog> sameBlog = blogMap.get(blogList.get(a).getBlogSortUid());
            map.put("vueWebBasePath", webSiteUrl);
            map.put("webBasePath", webUrl);
            map.put("staticBasePath", systemConfig.getLocalPictureBaseUrl());
            map.put("webConfig", webConfigService.getWebConfig());
            map.put("blog", blogList.get(a));
            map.put("sameBlog", sameBlog);
            map.put("thirdBlogList", thirdBlog);
            map.put("fourthBlogList", fourthBlog);
            map.put("hotBlogList", hotBlogList);
            // 静态化
            String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
            inputStream = IOUtils.toInputStream(content);
            // 输出文件
            String savePath = fileUploadPath + "/blog/page/" + blogList.get(a).getUid() + ".html";
            fileOutputStream = new FileOutputStream(new File(savePath));
            IOUtils.copy(inputStream, fileOutputStream);
        }
        return ResultUtil.result(SysConf.SUCCESS, "生成成功");
    } catch (Exception e) {
        e.getMessage();
    } finally {
        inputStream.close();
        fileOutputStream.close();
    }
    return ResultUtil.result(SysConf.SUCCESS, "生成失败");
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) Configuration(freemarker.template.Configuration) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) InputStream(java.io.InputStream) TemplateException(freemarker.template.TemplateException) IOException(java.io.IOException) Template(freemarker.template.Template) FileOutputStream(java.io.FileOutputStream) File(java.io.File) Blog(com.moxi.mogublog.commons.entity.Blog) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 18 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class AuthRestApi method getSystemConfig.

/**
 * 通过token获取七牛云配置
 *
 * @param token
 * @return
 */
@GetMapping("/getSystemConfig")
public String getSystemConfig(@RequestParam("token") String token) {
    String userInfo = stringRedisTemplate.opsForValue().get(RedisConf.USER_TOKEN + Constants.SYMBOL_COLON + token);
    if (StringUtils.isEmpty(userInfo)) {
        return ResultUtil.result(SysConf.ERROR, MessageConf.INVALID_TOKEN);
    }
    QueryWrapper<SystemConfig> queryWrapper = new QueryWrapper<>();
    queryWrapper.orderByDesc(SQLConf.CREATE_TIME);
    queryWrapper.eq(SQLConf.STATUS, EStatus.ENABLE);
    queryWrapper.last(SysConf.LIMIT_ONE);
    SystemConfig SystemConfig = systemConfigService.getOne(queryWrapper);
    return ResultUtil.result(SysConf.SUCCESS, SystemConfig);
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)

Example 19 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class SystemConfigServiceImpl method editSystemConfig.

@Override
public String editSystemConfig(SystemConfigVO systemConfigVO) {
    // 图片必须选择上传到一个区域
    if (EOpenStatus.CLOSE.equals(systemConfigVO.getUploadLocal()) && EOpenStatus.CLOSE.equals(systemConfigVO.getUploadQiNiu()) && EOpenStatus.CLOSE.equals(systemConfigVO.getUploadMinio())) {
        return ResultUtil.errorWithMessage(MessageConf.PICTURE_MUST_BE_SELECT_AREA);
    }
    // 图片显示优先级为本地优先,必须开启图片上传本地
    if ((EFilePriority.LOCAL.equals(systemConfigVO.getPicturePriority()) || EFilePriority.LOCAL.equals(systemConfigVO.getContentPicturePriority())) && EOpenStatus.CLOSE.equals(systemConfigVO.getUploadLocal())) {
        return ResultUtil.errorWithMessage(MessageConf.MUST_BE_OPEN_LOCAL_UPLOAD);
    }
    // 图片显示优先级为七牛云优先,必须开启图片上传七牛云
    if ((EFilePriority.QI_NIU.equals(systemConfigVO.getPicturePriority()) || EFilePriority.QI_NIU.equals(systemConfigVO.getContentPicturePriority())) && EOpenStatus.CLOSE.equals(systemConfigVO.getUploadQiNiu())) {
        return ResultUtil.errorWithMessage(MessageConf.MUST_BE_OPEN_QI_NIU_UPLOAD);
    }
    // 图片显示优先级为Minio优先,必须开启图片上传Minio
    if ((EFilePriority.MINIO.equals(systemConfigVO.getPicturePriority()) || EFilePriority.MINIO.equals(systemConfigVO.getContentPicturePriority())) && EOpenStatus.CLOSE.equals(systemConfigVO.getUploadMinio())) {
        return ResultUtil.errorWithMessage(MessageConf.MUST_BE_OPEN_MINIO_UPLOAD);
    }
    // 开启Email邮件通知时,必须保证Email字段不为空
    if (EOpenStatus.OPEN.equals(systemConfigVO.getStartEmailNotification()) && StringUtils.isEmpty(systemConfigVO.getEmail())) {
        return ResultUtil.errorWithMessage(MessageConf.MUST_BE_SET_EMAIL);
    }
    if (StringUtils.isEmpty(systemConfigVO.getUid())) {
        SystemConfig systemConfig = new SystemConfig();
        // 设置七牛云、邮箱、系统配置相关属性【使用Spring工具类提供的深拷贝】
        BeanUtils.copyProperties(systemConfigVO, systemConfig, SysConf.STATUS);
        systemConfig.insert();
    } else {
        SystemConfig systemConfig = systemConfigService.getById(systemConfigVO.getUid());
        // 判断是否更新了图片显示优先级【如果更新了,需要请求Redis中的博客,否者将导致图片无法正常显示】
        if (systemConfigVO.getPicturePriority() != systemConfig.getPicturePriority()) {
            blogService.deleteRedisByBlog();
        }
        // 设置七牛云、邮箱、系统配置相关属性【使用Spring工具类提供的深拷贝】
        BeanUtils.copyProperties(systemConfigVO, systemConfig, SysConf.STATUS, SysConf.UID);
        systemConfig.updateById();
    }
    // 更新系统配置成功后,需要删除Redis中的系统配置
    redisUtil.delete(RedisConf.SYSTEM_CONFIG);
    return ResultUtil.successWithMessage(MessageConf.UPDATE_SUCCESS);
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig)

Example 20 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class QiniuServiceImpl method uploadSingleFile.

/**
 * 七牛云服务图片上传【上传到七牛云中】
 *
 * @return
 */
private String uploadSingleFile(MultipartFile multipartFile) {
    BufferedOutputStream out = null;
    java.io.File dest = null;
    String url = "";
    try {
        // 从Redis中获取系统配置
        SystemConfig systemConfig = feignUtil.getSystemConfig();
        String oldName = multipartFile.getOriginalFilename();
        // 获取扩展名,默认是jpg
        String picExpandedName = FileUtils.getPicExpandedName(oldName);
        // 获取新文件名
        String newFileName = System.currentTimeMillis() + Constants.SYMBOL_POINT + picExpandedName;
        // 创建一个临时目录文件
        String tempFiles = path + "/temp/" + newFileName;
        dest = new java.io.File(tempFiles);
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        out = new BufferedOutputStream(new FileOutputStream(dest));
        out.write(multipartFile.getBytes());
        out.flush();
        out.close();
        url = qiniuUtil.uploadQiniu(dest, systemConfig);
    } catch (Exception e) {
        e.getStackTrace();
        log.error("文件上传七牛云失败: {}", e.getMessage());
    } finally {
        if (dest != null && dest.getParentFile().exists()) {
            dest.delete();
        }
    }
    return url;
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) java.io(java.io) InsertException(com.moxi.mougblog.base.exception.exceptionType.InsertException)

Aggregations

SystemConfig (com.moxi.mogublog.commons.entity.SystemConfig)25 QueryWrapper (com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)11 QueryException (com.moxi.mougblog.base.exception.exceptionType.QueryException)7 HttpServletRequest (javax.servlet.http.HttpServletRequest)5 MultipartFile (org.springframework.web.multipart.MultipartFile)5 ArrayList (java.util.ArrayList)4 MultipartHttpServletRequest (org.springframework.web.multipart.MultipartHttpServletRequest)4 File (com.moxi.mogublog.commons.entity.File)3 User (com.moxi.mogublog.commons.entity.User)3 InsertException (com.moxi.mougblog.base.exception.exceptionType.InsertException)3 MinioClient (io.minio.MinioClient)3 ApiOperation (io.swagger.annotations.ApiOperation)3 HashMap (java.util.HashMap)3 List (java.util.List)3 Map (java.util.Map)3 Blog (com.moxi.mogublog.commons.entity.Blog)2 FileSort (com.moxi.mogublog.commons.entity.FileSort)2 AboutFileUtil (com.moxi.mogublog.picture.util.AboutFileUtil)2 FileVO (com.moxi.mougblog.base.vo.FileVO)2 InputStream (java.io.InputStream)2