diff --git a/pom.xml b/pom.xml index 12c7ef1c..eb2da607 100644 --- a/pom.xml +++ b/pom.xml @@ -30,12 +30,38 @@ 4.1.2 2.3 1.18.12 + 8.5.5 + 7.4.0 + + io.minio + minio + ${minio.version} + + + okhttp + com.squareup.okhttp3 + + + + + + com.qiniu + qiniu-java-sdk + ${qiniu.version} + + + + com.squareup.okhttp3 + okhttp + 4.9.3 + + org.projectlombok lombok diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 60d3a723..eade666a 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -16,6 +16,16 @@ + + io.minio + minio + + + + com.squareup.okhttp3 + okhttp + 4.9.3 + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ClewMaterialController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ClewMaterialController.java new file mode 100644 index 00000000..83a8f658 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ClewMaterialController.java @@ -0,0 +1,136 @@ +package com.ruoyi.web.controller.system; + +import java.util.List; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.domain.ClewMaterial; +import com.ruoyi.system.service.IClewMaterialService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 素材Controller + * + * @author ruoyi + * @date 2023-10-07 + */ +@Controller +@RequestMapping("/system/material") +public class ClewMaterialController extends BaseController +{ + private String prefix = "system/material"; + + @Autowired + private IClewMaterialService clewMaterialService; + + @RequiresPermissions("system:material:view") + @GetMapping() + public String material() + { + return prefix + "/material"; + } + + /** + * 查询素材列表 + */ + @RequiresPermissions("system:material:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(ClewMaterial clewMaterial) + { + startPage(); + List list = clewMaterialService.selectClewMaterialList(clewMaterial); + return getDataTable(list); + } + + @PostMapping("/app/list") + @ResponseBody + public TableDataInfo appList(ClewMaterial clewMaterial) + { + startPage(); + List list = clewMaterialService.selectClewMaterialList(clewMaterial); + return getDataTable(list); + } + + /** + * 导出素材列表 + */ + @RequiresPermissions("system:material:export") + @Log(title = "素材", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(ClewMaterial clewMaterial) + { + List list = clewMaterialService.selectClewMaterialList(clewMaterial); + ExcelUtil util = new ExcelUtil(ClewMaterial.class); + return util.exportExcel(list, "素材数据"); + } + + /** + * 新增素材 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存素材 + */ + @RequiresPermissions("system:material:add") + @Log(title = "素材", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(ClewMaterial clewMaterial) + { + return toAjax(clewMaterialService.insertClewMaterial(clewMaterial)); + } + + /** + * 修改素材 + */ + @RequiresPermissions("system:material:edit") + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + ClewMaterial clewMaterial = clewMaterialService.selectClewMaterialById(id); + mmap.put("clewMaterial", clewMaterial); + return prefix + "/edit"; + } + + /** + * 修改保存素材 + */ + @RequiresPermissions("system:material:edit") + @Log(title = "素材", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(ClewMaterial clewMaterial) + { + return toAjax(clewMaterialService.updateClewMaterial(clewMaterial)); + } + + /** + * 删除素材 + */ + @RequiresPermissions("system:material:remove") + @Log(title = "素材", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(clewMaterialService.deleteClewMaterialByIds(ids)); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MinioController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MinioController.java new file mode 100644 index 00000000..cf587657 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MinioController.java @@ -0,0 +1,31 @@ +package com.ruoyi.web.controller.tool; + +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.minio.MinioUtils; +import io.swagger.annotations.ApiOperation; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +/** + *

minio文件服务

+ * @author clunt + */ +@Controller +@RequestMapping("/tool/minio") +public class MinioController { + + @ResponseBody + @PostMapping("/upload") + @ApiOperation(value = "文件上传管理-添加minio") + public AjaxResult add(@RequestPart("file") MultipartFile file) throws IOException { + String url = MinioUtils.uploadFile(file); + return AjaxResult.success(url); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/QiniuController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/QiniuController.java new file mode 100644 index 00000000..740b0848 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/QiniuController.java @@ -0,0 +1,72 @@ +package com.ruoyi.web.controller.tool; + +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.QiniuUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 七牛云 + * + * @author clunt + */ +@Api +@Controller +@RequestMapping("/tool/qiniu") +public class QiniuController { + + private static final Logger logger = LoggerFactory.getLogger(QiniuController.class); + + /** + * 七牛云上传(单个) + */ + @PostMapping(value = "/upload") + @ResponseBody + @ApiOperation("七牛云上传接口") + public AjaxResult uploadFile(HttpServletRequest request, HttpServletResponse response) { + try { + String name = request.getParameter("name"); + // 转型为MultipartHttpRequest: + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + // 获得实际: + MultipartFile file= multipartRequest.getFile(name); + // 上传后返回的文件路径 + String fileUrl = QiniuUtils.upload(file.getBytes()); + logger.info("upload return url is : " + fileUrl); + AjaxResult ajax = AjaxResult.success(); + ajax.put("url", fileUrl); + return ajax; + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + + @PostMapping(value = "/app/upload") + @ResponseBody + @ApiOperation("app七牛云上传接口") + public AjaxResult uploadFile(@RequestParam(value = "uploadFile", required = false) MultipartFile file) { + try { + // 上传后返回的文件路径 + String fileUrl = QiniuUtils.upload(file.getBytes()); + logger.info("upload return url is : " + fileUrl); + AjaxResult ajax = AjaxResult.success(); + ajax.put("url", fileUrl); + return ajax; + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + +} diff --git a/ruoyi-admin/src/main/resources/templates/system/material/add.html b/ruoyi-admin/src/main/resources/templates/system/material/add.html new file mode 100644 index 00000000..693c0f00 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/material/add.html @@ -0,0 +1,142 @@ + + + + + + + +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/material/edit.html b/ruoyi-admin/src/main/resources/templates/system/material/edit.html new file mode 100644 index 00000000..bcb58323 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/material/edit.html @@ -0,0 +1,103 @@ + + + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/material/material.html b/ruoyi-admin/src/main/resources/templates/system/material/material.html new file mode 100644 index 00000000..0205ef6b --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/material/material.html @@ -0,0 +1,122 @@ + + + + + + +
+
+
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • +  搜索 +  重置 +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 2ab0d988..dd5807f6 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -106,6 +106,22 @@ 2.0.23
+ + io.minio + minio + + + + com.qiniu + qiniu-java-sdk + + + + com.squareup.okhttp3 + okhttp + 4.9.3 + +
\ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QiniuUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QiniuUtils.java new file mode 100644 index 00000000..27a5a65d --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QiniuUtils.java @@ -0,0 +1,39 @@ +package com.ruoyi.common.utils; + +import com.google.gson.Gson; +import com.qiniu.common.QiniuException; +import com.qiniu.http.Response; +import com.qiniu.storage.Configuration; +import com.qiniu.storage.Region; +import com.qiniu.storage.UploadManager; +import com.qiniu.storage.model.DefaultPutRet; +import com.qiniu.util.Auth; +import com.ruoyi.common.utils.uuid.UUID; + +/** + * @author clunt + */ +public class QiniuUtils { + + public static String getUpToken() { + Auth auth = Auth.create("QTNOppkvtufxTxLjt1V7YZwvzV2Rc6WLD5yXLBVY", "V8SM9nkbO-dft4JmG7UaCH6RYxXdqzrvQ0zWO2W3"); + return auth.uploadToken("suteng"); + } + + public static String upload(byte[] uploadBytes) throws QiniuException { + + String key = UUID.randomUUID().toString().replaceAll("-", ""); + + //设置华南的服务器 + Configuration cfg = new Configuration(Region.region2()); + UploadManager uploadManager = new UploadManager(cfg); + + String upToken = getUpToken(); + Response response = uploadManager.put(uploadBytes, key, upToken); + //解析上传成功的结果 + DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); + + return "http://st.opsoul.com/" + putRet.key; + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/minio/MinioUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/minio/MinioUtils.java new file mode 100644 index 00000000..05c38a14 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/minio/MinioUtils.java @@ -0,0 +1,165 @@ +package com.ruoyi.common.utils.minio; + +import io.minio.*; +import io.minio.messages.Bucket; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.PostConstruct; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + *

minio文件服务管理

+ * + * @author clunt + */ +@Slf4j +@Component +public class MinioUtils { + + private static final String MINIO_KEY = "Wiu3PA9eP6wNjrGe"; + private static final String MINIO_SECRET = "Q2th7VQEuUEc2r6wkywRdygn5c7T71LU"; + private static final String MINIO_URL = "http://211.99.98.27:9001"; + + private static final ThreadLocal dateFormatThreadLocal = ThreadLocal.withInitial(()->new SimpleDateFormat("_yyyyMMddHHmmss")); + + private static final String MINIO_BUCKET = "bwy"; + public static MinioClient minioClient; + /** + * 初始化minio配置 + */ + @PostConstruct + public void init() { + try { + log.info("Minio Initialize........................"); + minioClient = MinioClient.builder().endpoint(MINIO_URL).credentials(MINIO_KEY, MINIO_SECRET).build(); + createBucket(MINIO_BUCKET); + log.info("Minio Initialize........................successful"); + } catch (Exception e) { + e.printStackTrace(); + log.error("初始化minio配置异常:", e.fillInStackTrace()); + } + } + + /** + * 判断bucket是否存在 + */ + @SneakyThrows(Exception.class) + public static boolean bucketExists(String bucketName) { + return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); + } + + /** + * 创建bucket + */ + @SneakyThrows(Exception.class) + public static void createBucket(String bucketName) { + boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); + if (!isExist) { + minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); + } + } + + /** + * 获取全部bucket + */ + @SneakyThrows(Exception.class) + public static List getAllBuckets() { + return minioClient.listBuckets(); + } + + /** + * 文件上传 + * + * @param bucketName: 桶名 + * @param fileName: 文件名 + * @param filePath: 文件路径 + */ + @SneakyThrows(Exception.class) + public static void upload(String bucketName, String fileName, String filePath) { + minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).build()); + } + + /** + * 上传文件 + * 返回可以直接预览文件的URL + */ + public static String uploadFile(MultipartFile file) { + try { + //如果存储桶不存在则创建 + if (!bucketExists(MINIO_BUCKET)) { + createBucket(MINIO_BUCKET); + } + String contentType = file.getContentType(); + String originalFilename = file.getOriginalFilename(); + //得到文件流 + InputStream inputStream = file.getInputStream(); + //保证文件不重名(并且没有特殊字符) + String fileName = MINIO_BUCKET + dateFormatThreadLocal.get().format(new Date()) + originalFilename; + minioClient.uploadObject(UploadObjectArgs.builder() + .bucket(MINIO_BUCKET) + .object(file.getName()) + .filename(originalFilename) + .build() + ); + return getPreviewFileUrl(MINIO_BUCKET, fileName); + } catch (Exception e) { + e.printStackTrace(); + return ""; + } + } + + /** + * 文件上传 + * 返回下载文件url地址 和下面upload方法仅传参不同 + * bucketName 也可以直接从ParamConfig对象中获取 + */ +// @SneakyThrows(Exception.class) +// public static String upload(String bucketName, String fileName, InputStream stream) { +// //bucketName, fileName, stream, new PutObjectOptions(stream.available(), -1) +// minioClient.putObject(PutObjectArgs.builder()..build())); +// return getPreviewFileUrl(bucketName, fileName); +// } +// +// /** +// * 文件上传 +// * 返回下载文件url地址 和上面upload方法仅传参不同 +// */ +// @SneakyThrows(Exception.class) +// public static String upload(String bucketName, MultipartFile file) { +// final InputStream is = file.getInputStream(); +// final String fileName = file.getOriginalFilename(); +// minioClient.putObject(bucketName, fileName, is, new PutObjectOptions(is.available(), -1)); +// is.close(); +// return getPreviewFileUrl(bucketName, fileName); +// } + + /** + * 删除文件 + * + * @param bucketName: 桶名 + * @param fileName: 文件名 + */ + @SneakyThrows(Exception.class) + public static void deleteFile(String bucketName, String fileName) { + minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(fileName).build()); + } + + /** + * 获取minio文件的下载或者预览地址 + * 取决于调用本方法的方法中的PutObjectOptions对象有没有设置contentType + * + * @param bucketName: 桶名 + * @param fileName: 文件名 + */ + @SneakyThrows(Exception.class) + public static String getPreviewFileUrl(String bucketName, String fileName) { + return minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(fileName).build()); + } + +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java index 63c88599..eaec4863 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java @@ -290,10 +290,16 @@ public class ShiroConfig filterChainDefinitionMap.put("/captcha/captchaImage**", "anon"); // 短信验证码接口 filterChainDefinitionMap.put("/tool/notice/**", "anon"); + // minio文件服务接口 + filterChainDefinitionMap.put("/tool/minio/**", "anon"); + // 七牛云 + filterChainDefinitionMap.put("/tool/qiniu/**", "anon"); // app查询 filterChainDefinitionMap.put("/system/app/app/**", "anon"); // 线索接口 filterChainDefinitionMap.put("/system/clew/app/**", "anon"); + // 素材接口 + filterChainDefinitionMap.put("/system/material/app/**", "anon"); // 退出 logout地址,shiro去清除session filterChainDefinitionMap.put("/logout", "logout"); // 不需要拦截的访问 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ClewMaterial.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ClewMaterial.java new file mode 100644 index 00000000..cec5e160 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ClewMaterial.java @@ -0,0 +1,48 @@ +package com.ruoyi.system.domain; + +import lombok.Data; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 素材对象 clew_material + * + * @author ruoyi + * @date 2023-10-07 + */ +@Data +public class ClewMaterial extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 标题 */ + @Excel(name = "标题") + private String title; + + /** 图片 */ + @Excel(name = "图片") + private String imgUrl; + + @Excel(name = "详情") + private String detail; + + /** 视频 */ + @Excel(name = "视频") + private String videoImg; + + /** 标签 */ + @Excel(name = "标签") + private String labels; + + /** 报名人数 */ + @Excel(name = "报名人数") + private String applyNum; + + /** 线索提交内容 */ + @Excel(name = "线索提交内容") + private String clewContent; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ClewMaterialMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ClewMaterialMapper.java new file mode 100644 index 00000000..9bb3d213 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ClewMaterialMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.ClewMaterial; + +/** + * 素材Mapper接口 + * + * @author ruoyi + * @date 2023-10-07 + */ +public interface ClewMaterialMapper +{ + /** + * 查询素材 + * + * @param id 素材主键 + * @return 素材 + */ + public ClewMaterial selectClewMaterialById(Long id); + + /** + * 查询素材列表 + * + * @param clewMaterial 素材 + * @return 素材集合 + */ + public List selectClewMaterialList(ClewMaterial clewMaterial); + + /** + * 新增素材 + * + * @param clewMaterial 素材 + * @return 结果 + */ + public int insertClewMaterial(ClewMaterial clewMaterial); + + /** + * 修改素材 + * + * @param clewMaterial 素材 + * @return 结果 + */ + public int updateClewMaterial(ClewMaterial clewMaterial); + + /** + * 删除素材 + * + * @param id 素材主键 + * @return 结果 + */ + public int deleteClewMaterialById(Long id); + + /** + * 批量删除素材 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteClewMaterialByIds(String[] ids); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IClewMaterialService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IClewMaterialService.java new file mode 100644 index 00000000..62b18f97 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IClewMaterialService.java @@ -0,0 +1,61 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.ClewMaterial; + +/** + * 素材Service接口 + * + * @author ruoyi + * @date 2023-10-07 + */ +public interface IClewMaterialService +{ + /** + * 查询素材 + * + * @param id 素材主键 + * @return 素材 + */ + public ClewMaterial selectClewMaterialById(Long id); + + /** + * 查询素材列表 + * + * @param clewMaterial 素材 + * @return 素材集合 + */ + public List selectClewMaterialList(ClewMaterial clewMaterial); + + /** + * 新增素材 + * + * @param clewMaterial 素材 + * @return 结果 + */ + public int insertClewMaterial(ClewMaterial clewMaterial); + + /** + * 修改素材 + * + * @param clewMaterial 素材 + * @return 结果 + */ + public int updateClewMaterial(ClewMaterial clewMaterial); + + /** + * 批量删除素材 + * + * @param ids 需要删除的素材主键集合 + * @return 结果 + */ + public int deleteClewMaterialByIds(String ids); + + /** + * 删除素材信息 + * + * @param id 素材主键 + * @return 结果 + */ + public int deleteClewMaterialById(Long id); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClewMaterialServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClewMaterialServiceImpl.java new file mode 100644 index 00000000..62120821 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClewMaterialServiceImpl.java @@ -0,0 +1,97 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.ClewMaterialMapper; +import com.ruoyi.system.domain.ClewMaterial; +import com.ruoyi.system.service.IClewMaterialService; +import com.ruoyi.common.core.text.Convert; + +/** + * 素材Service业务层处理 + * + * @author ruoyi + * @date 2023-10-07 + */ +@Service +public class ClewMaterialServiceImpl implements IClewMaterialService +{ + @Autowired + private ClewMaterialMapper clewMaterialMapper; + + /** + * 查询素材 + * + * @param id 素材主键 + * @return 素材 + */ + @Override + public ClewMaterial selectClewMaterialById(Long id) + { + return clewMaterialMapper.selectClewMaterialById(id); + } + + /** + * 查询素材列表 + * + * @param clewMaterial 素材 + * @return 素材 + */ + @Override + public List selectClewMaterialList(ClewMaterial clewMaterial) + { + return clewMaterialMapper.selectClewMaterialList(clewMaterial); + } + + /** + * 新增素材 + * + * @param clewMaterial 素材 + * @return 结果 + */ + @Override + public int insertClewMaterial(ClewMaterial clewMaterial) + { + clewMaterial.setCreateTime(DateUtils.getNowDate()); + return clewMaterialMapper.insertClewMaterial(clewMaterial); + } + + /** + * 修改素材 + * + * @param clewMaterial 素材 + * @return 结果 + */ + @Override + public int updateClewMaterial(ClewMaterial clewMaterial) + { + clewMaterial.setUpdateTime(DateUtils.getNowDate()); + return clewMaterialMapper.updateClewMaterial(clewMaterial); + } + + /** + * 批量删除素材 + * + * @param ids 需要删除的素材主键 + * @return 结果 + */ + @Override + public int deleteClewMaterialByIds(String ids) + { + return clewMaterialMapper.deleteClewMaterialByIds(Convert.toStrArray(ids)); + } + + /** + * 删除素材信息 + * + * @param id 素材主键 + * @return 结果 + */ + @Override + public int deleteClewMaterialById(Long id) + { + return clewMaterialMapper.deleteClewMaterialById(id); + } +} diff --git a/ruoyi-system/src/main/resources/mapper/system/ClewMaterialMapper.xml b/ruoyi-system/src/main/resources/mapper/system/ClewMaterialMapper.xml new file mode 100644 index 00000000..0b238caf --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/ClewMaterialMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + select id, title, img_url, video_img, labels, detail, apply_num, clew_content, create_by, create_time, update_by, update_time from clew_material + + + + + + + + insert into clew_material + + title, + img_url, + video_img, + labels, + detail, + apply_num, + clew_content, + create_by, + create_time, + update_by, + update_time, + + + #{title}, + #{imgUrl}, + #{videoImg}, + #{labels}, + #{detail}, + #{applyNum}, + #{clewContent}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update clew_material + + title = #{title}, + img_url = #{imgUrl}, + video_img = #{videoImg}, + labels = #{labels}, + detail = #{detail}, + apply_num = #{applyNum}, + clew_content = #{clewContent}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from clew_material where id = #{id} + + + + delete from clew_material where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/ClewPhoneMapper.xml b/ruoyi-system/src/main/resources/mapper/system/ClewPhoneMapper.xml index 96a018c2..c83783e1 100644 --- a/ruoyi-system/src/main/resources/mapper/system/ClewPhoneMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/ClewPhoneMapper.xml @@ -23,6 +23,7 @@ and phone = #{phone} + order by create_time desc