From 20749d5b312b31126cf83cf04bf0cb1d8393bfe2 Mon Sep 17 00:00:00 2001 From: xiao-fajia <1665375861@qq.com> Date: Fri, 27 Sep 2024 15:22:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dl-module-base/pom.xml | 8 ++ .../app/banner/controller/BannerAPI.java | 11 ++- .../controller/admin/UeditorController.java | 89 +++++++++++++++++++ .../module/banner/entity/DlBaseBanner.java | 3 + .../banner/mapper/DlBaseBannerMapper.java | 11 +++ .../banner/service/DlBaseBannerService.java | 2 +- .../service/impl/DlBaseBannerServiceImpl.java | 5 +- .../main/resources/config/ueditor/config.json | 69 ++++++++++++++ .../mapper/banner/DlBaseBannerMapper.xml | 27 ++++-- pom.xml | 1 + .../YudaoWebSecurityConfigurerAdapter.java | 2 +- .../src/main/resources/application.yaml | 3 +- 12 files changed, 213 insertions(+), 18 deletions(-) create mode 100644 dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/controller/admin/UeditorController.java create mode 100644 dl-module-base/src/main/resources/config/ueditor/config.json diff --git a/dl-module-base/pom.xml b/dl-module-base/pom.xml index f373003a..264e25bd 100644 --- a/dl-module-base/pom.xml +++ b/dl-module-base/pom.xml @@ -15,6 +15,14 @@ 点亮业务基础库 + + + + com.blingblingbang + ueditor + ${ueditor.version} + + cn.iocoder.boot yudao-module-system-biz diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/app/banner/controller/BannerAPI.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/app/banner/controller/BannerAPI.java index fe42e48a..eab4611b 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/app/banner/controller/BannerAPI.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/app/banner/controller/BannerAPI.java @@ -31,8 +31,13 @@ public class BannerAPI { * @date 11:07 2024/9/27 * @param type type **/ - @GetMapping("/get") - public CommonResult getBannerByType(@RequestParam("type") String type) { - return success(baseBannerService.getBannerByType(type)); + @GetMapping("/list") + public CommonResult getBannerByTypeList(@RequestParam("type") String type) { + return success(baseBannerService.getBannerByTypeList(type)); + } + + @GetMapping("/getById") + public CommonResult getBannerById(@RequestParam("id") String id) { + return success(baseBannerService.getBannerById(id)); } } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/controller/admin/UeditorController.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/controller/admin/UeditorController.java new file mode 100644 index 00000000..402cda59 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/controller/admin/UeditorController.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.banner.controller.admin; + +import cn.iocoder.yudao.module.infra.api.file.FileApi; +import com.alibaba.fastjson.JSON; +import com.baidu.ueditor.ActionEnter; +import org.springframework.util.ClassUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/ueditor") +public class UeditorController { + + @Resource + private FileApi fileApi; + + //配置ueditor后端上传接口的验证 + @RequestMapping("/config") + public String config(HttpServletRequest request, HttpServletResponse response, String action, MultipartFile[] upfile) throws IOException { + //获取配置文件json内容返回给前端 + if (action.equals("config")) { + request.setCharacterEncoding("utf-8"); + response.setHeader("Content-Type", "text/html"); + //注意path不能含有中文路径,确认该path能指向config.json + String path = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "config"; + System.out.println("path = " + path); + PrintWriter printWriter = response.getWriter(); + printWriter.write(new ActionEnter(request, path).exec()); + printWriter.flush(); + printWriter.close(); + } + //上传图片 + else if (action.equals("uploadimage")) { + Map result = new HashMap(); + for (MultipartFile multipartFile : upfile) { + //调用系统写好的文件上传方法,并返回给前端上传后的文件路径,组件需要拼接回显 + String upload = fileApi.createFile(multipartFile.getBytes()); + System.out.println("upload = " + upload); + System.out.println("upload.sub= " + upload.substring(upload.lastIndexOf("/"))); + result.put("title", upload.substring(upload.lastIndexOf("/")+1)); + result.put("original", multipartFile.getOriginalFilename()); + result.put("state", "SUCCESS"); + result.put("url", upload); + String jStr = JSON.toJSONString(result); + return jStr; + } + return null; + } + //上传视频 + else if(action.equals("uploadvideo")){ + Map result = new HashMap(); + for (MultipartFile multipartFile : upfile) { + String upload = fileApi.createFile(multipartFile.getBytes()); + System.out.println("upload = " + upload); + System.out.println("upload.sub = " + upload.substring(upload.lastIndexOf("/"))); + result.put("title", upload.substring(upload.lastIndexOf("/")+1)); + result.put("original", multipartFile.getOriginalFilename()); + result.put("state", "SUCCESS"); + result.put("url", upload); + String jStr = JSON.toJSONString(result); + return jStr; + } + }else{ + Map result = new HashMap(); + for (MultipartFile multipartFile : upfile) { + String upload = fileApi.createFile(multipartFile.getBytes()); + System.out.println("upload = " + upload); + System.out.println("upload.sub= " + upload.substring(upload.lastIndexOf("/"))); + result.put("title", upload.substring(upload.lastIndexOf("/")+1)); + result.put("original", multipartFile.getOriginalFilename()); + result.put("state", "SUCCESS"); + result.put("url", upload); + String jStr = JSON.toJSONString(result); + return jStr; + } + } + return null; + } + +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/entity/DlBaseBanner.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/entity/DlBaseBanner.java index 10257122..b0a4b304 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/entity/DlBaseBanner.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/entity/DlBaseBanner.java @@ -45,4 +45,7 @@ public class DlBaseBanner extends TenantBaseDO { /** 跳转链接 */ private String toUrl; + + /** 页面内容 */ + private String content; } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/mapper/DlBaseBannerMapper.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/mapper/DlBaseBannerMapper.java index b7871e01..ccfc2d30 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/mapper/DlBaseBannerMapper.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/mapper/DlBaseBannerMapper.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 针对表【dl_base_banner(banner图基础库)】的数据库操作Mapper * @@ -25,6 +27,15 @@ public interface DlBaseBannerMapper extends BaseMapper { * @param bannerReqVO 查询对象 **/ IPage queryByPage(@Param("map") DlBannerReqVO bannerReqVO, Page page); + + /** + * 不同小程序用不同的banner,用type分 + * + * @param type type + * @author 小李 + * @date 11:07 2024/9/27 + **/ + List getBannerByTypeList(@Param("type") String type); } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/DlBaseBannerService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/DlBaseBannerService.java index 9b0ad4ae..18d3b399 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/DlBaseBannerService.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/DlBaseBannerService.java @@ -59,5 +59,5 @@ public interface DlBaseBannerService extends IService { * @date 11:07 2024/9/27 * @param type type **/ - List getBannerByType(String type); + List getBannerByTypeList(String type); } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/impl/DlBaseBannerServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/impl/DlBaseBannerServiceImpl.java index ae029a72..6b0be87d 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/impl/DlBaseBannerServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/banner/service/impl/DlBaseBannerServiceImpl.java @@ -80,9 +80,8 @@ public class DlBaseBannerServiceImpl extends ServiceImpl getBannerByType(String type) { - List dlBaseBanners = baseMapper.selectList(new LambdaQueryWrapper().eq(DlBaseBanner::getTypeId, type)); - return dlBaseBanners.stream().sorted(Comparator.comparing(DlBaseBanner::getSort)).collect(Collectors.toList()); + public List getBannerByTypeList(String type) { + return baseMapper.getBannerByTypeList(type); } } diff --git a/dl-module-base/src/main/resources/config/ueditor/config.json b/dl-module-base/src/main/resources/config/ueditor/config.json new file mode 100644 index 00000000..1b23988d --- /dev/null +++ b/dl-module-base/src/main/resources/config/ueditor/config.json @@ -0,0 +1,69 @@ +{ + /* 上传图片配置项 */ + "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ + "imageFieldName": "upfile", /* 提交的图片表单名称 */ + "imageMaxSize": 2048000, /* 上传大小限制,单位B */ + "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp", '.webp'], /* 上传图片格式显示 */ + "imageCompressEnable": true, /* 是否压缩图片,默认是true */ + "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ + "imageInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageUrlPrefix": "http://122.51.230.86:9000/", /* 图片访问路径前缀 */ + "imagePathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ + /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ + /* {time} 会替换成时间戳 */ /* {yyyy} 会替换成四位年份 */ + /* {yy} 会替换成两位年份 */ + /* {mm} 会替换成两位月份 */ + /* {dd} 会替换成两位日期 */ + /* {hh} 会替换成两位小时 */ + /* {ii} 会替换成两位分钟 */ + /* {ss} 会替换成两位秒 */ + /* 非法字符 \ : * ? " < > | */ + /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */ + /* 涂鸦图片上传配置项 */ + "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ + "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ + "scrawlPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ + "scrawlUrlPrefix": "", /* 图片访问路径前缀 */ + "scrawlInsertAlign": "none", /* 截图工具上传 */ + "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ + "snapscreenPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ + "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ + /* 抓取远程图片配置 */ + "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], + "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ + "catcherFieldName": "source", /* 提交的图片列表表单名称 */ + "catcherPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "catcherUrlPrefix": "", /* 图片访问路径前缀 */ + "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ + "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ + /* 上传视频配置 */ + "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ + "videoFieldName": "upfile", /* 提交的视频表单名称 */ + "videoPathFormat": "video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "videoUrlPrefix": "http://122.51.230.86:9000/", /* 视频访问路径前缀 */ + "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ + "videoAllowFiles": [ ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */ + /* 上传文件配置 */ + "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ + "fileFieldName": "upfile", /* 提交的文件表单名称 */ + "filePathFormat": "file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "fileUrlPrefix": "http://122.51.230.86:9000/", /* 文件访问路径前缀 */ + "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ + "fileAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" ], /* 上传文件格式显示 */ + /* 列出指定目录下的图片 */ + "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ + "imageManagerListPath": "image/", /* 指定要列出图片的目录 */ + "imageManagerListSize": 20, /* 每次列出文件数量 */ + "imageManagerUrlPrefix": "http://122.51.230.86:9000/", /* 图片访问路径前缀 */ + "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */ + /* 列出指定目录下的文件 */ + "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ + "fileManagerListPath": "file/", /* 指定要列出文件的目录 */ + "fileManagerUrlPrefix": "http://122.51.230.86:9000/", /* 文件访问路径前缀 */ + "fileManagerListSize": 20, /* 每次列出文件数量 */ + "fileManagerAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" ] /* 列出的文件类型 */ +} diff --git a/dl-module-base/src/main/resources/mapper/banner/DlBaseBannerMapper.xml b/dl-module-base/src/main/resources/mapper/banner/DlBaseBannerMapper.xml index 37326392..1f6bf1fd 100644 --- a/dl-module-base/src/main/resources/mapper/banner/DlBaseBannerMapper.xml +++ b/dl-module-base/src/main/resources/mapper/banner/DlBaseBannerMapper.xml @@ -5,12 +5,13 @@ - - - - - - + + + + + + + @@ -19,14 +20,22 @@ url, sort, type_id, - to_url - from dl_base_banner dbb where dbb.deleted = '0' + to_url, + content + from dl_base_banner dbb + where dbb.deleted = '0' + + diff --git a/pom.xml b/pom.xml index edff85f6..71853a32 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ 2.7.18 1.5.5.Final UTF-8 + 1.1.2 diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java index 5a40a5e2..fd51558e 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java @@ -164,7 +164,7 @@ public class YudaoWebSecurityConfigurerAdapter { .antMatchers("/admin-api/system/schoolRegistrationInfo/addWx","/admin-api/system/schoolInstructor/listWx","/admin-api/system/schoolAppointmentInfo/addWx").permitAll() // 驾校 .antMatchers("/admin-api/drivingSchool/system/driveSchoolCourse/list","/admin-api/loginJx","/admin-api/loginSmsCodeJx"," /admin-api/jxInfo/payNotify","/admin-api/drivingSchool/text/list","/admin-api/drivingSchool/system/swiper/list","/admin-api/drivingSchool/system/schoolInfo/list").permitAll() - + .antMatchers("/admin-api/ueditor/*").permitAll() // 检测app首页 .antMatchers("/admin-api/appInspection/appHome/**").permitAll() //检测小程序相关 diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index 8531d105..7265dbf0 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -3,7 +3,7 @@ spring: name: yudao-server profiles: - active: prod + active: local main: allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。 @@ -286,6 +286,7 @@ yudao: - /userClient/pay/** - /userClient/weChat/** - /userClient/** + - /admin-api/ueditor/** ignore-tables: - system_tenant