Browse Source

新增素材库、注意库

master
xia 3 years ago
parent
commit
ad6128b025
  1. 109
      system/src/main/java/com/canvas/web/config/SwaggerConfig.java
  2. 21
      system/src/main/java/com/canvas/web/modules/material/criteria/MaterialQueryCriteria.java
  3. 32
      system/src/main/java/com/canvas/web/modules/material/criteria/ThemeQueryCriteria.java
  4. 2
      system/src/main/java/com/canvas/web/modules/material/domain/Material.java
  5. 30
      system/src/main/java/com/canvas/web/modules/material/domain/MaterialClass.java
  6. 47
      system/src/main/java/com/canvas/web/modules/material/domain/MaterialFolder.java
  7. 29
      system/src/main/java/com/canvas/web/modules/material/domain/OrgaClass.java
  8. 36
      system/src/main/java/com/canvas/web/modules/material/domain/ThemeClass.java
  9. 47
      system/src/main/java/com/canvas/web/modules/material/domain/ThemeFolder.java
  10. 30
      system/src/main/java/com/canvas/web/modules/material/domain/ThemeInFolder.java
  11. 14
      system/src/main/java/com/canvas/web/modules/material/dto/FolderDTO.java
  12. 21
      system/src/main/java/com/canvas/web/modules/material/dto/MaterialDTO.java
  13. 15
      system/src/main/java/com/canvas/web/modules/material/dto/ThemeClassDTO.java
  14. 10
      system/src/main/java/com/canvas/web/modules/material/repository/MaterialClassRepository.java
  15. 13
      system/src/main/java/com/canvas/web/modules/material/repository/MaterialFolderRepository.java
  16. 37
      system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java
  17. 10
      system/src/main/java/com/canvas/web/modules/material/repository/OrgaClassRepository.java
  18. 18
      system/src/main/java/com/canvas/web/modules/material/repository/ThemeClassRepository.java
  19. 13
      system/src/main/java/com/canvas/web/modules/material/repository/ThemeFolderRepository.java
  20. 7
      system/src/main/java/com/canvas/web/modules/material/repository/ThemeInFolderRepository.java
  21. 132
      system/src/main/java/com/canvas/web/modules/material/rest/MaterialController.java
  22. 43
      system/src/main/java/com/canvas/web/modules/material/rest/ThemeClassController.java
  23. 40
      system/src/main/java/com/canvas/web/modules/material/service/MaterialService.java
  24. 15
      system/src/main/java/com/canvas/web/modules/material/service/ThemeClassService.java
  25. 245
      system/src/main/java/com/canvas/web/modules/material/service/impl/MaterialServiceImpl.java
  26. 59
      system/src/main/java/com/canvas/web/modules/material/service/impl/ThemeClassServiceImpl.java
  27. 17
      system/src/main/java/com/canvas/web/modules/material/vo/AlbumVO.java
  28. 18
      system/src/main/java/com/canvas/web/modules/material/vo/MyMaterialVO.java
  29. 24
      system/src/main/java/com/canvas/web/modules/material/vo/ThemeVO.java

109
system/src/main/java/com/canvas/web/config/SwaggerConfig.java

@ -0,0 +1,109 @@
package com.canvas.web.config;
import com.fasterxml.classmate.TypeResolver;
import com.google.common.base.Predicates;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.data.domain.Pageable;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.schema.AlternateTypeRule;
import springfox.documentation.schema.AlternateTypeRuleConvention;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
import static springfox.documentation.schema.AlternateTypeRules.newRule;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${jwt.header}")
private String tokenHeader;
@Value("${jwt.token-start-with}")
private String tokenStartWith;
@Value("${swagger.enabled}")
private Boolean enabled;
@Bean
@SuppressWarnings("all")
public Docket createRestApi() {
ParameterBuilder ticketPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<>();
ticketPar.name(tokenHeader).description("token")
.modelRef(new ModelRef("string"))
.parameterType("header")
.defaultValue(tokenStartWith + " ")
.required(true)
.build();
pars.add(ticketPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.enable(enabled)
.apiInfo(apiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build()
.globalOperationParameters(pars);
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.description("画屏管理系统")
.title("画屏 接口文档")
.version("1.1")
.build();
}
}
/**
* 将Pageable转换展示在swagger中
*/
@Configuration
class SwaggerDataConfig {
@Bean
public AlternateTypeRuleConvention pageableConvention(final TypeResolver resolver) {
return new AlternateTypeRuleConvention() {
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
}
@Override
public List<AlternateTypeRule> rules() {
return newArrayList(newRule(resolver.resolve(Pageable.class), resolver.resolve(Page.class)));
}
};
}
@ApiModel
@Data
private static class Page {
@ApiModelProperty("页码 (0..N)")
private Integer page;
@ApiModelProperty("每页显示的数目")
private Integer size;
@ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc")
private List<String> sort;
}
}

21
system/src/main/java/com/canvas/web/modules/material/criteria/MaterialQueryCriteria.java

@ -0,0 +1,21 @@
package com.canvas.web.modules.material.criteria;
import com.canvas.web.annotation.Query;
import lombok.Data;
@Data
public class MaterialQueryCriteria {
@Query
private String materialName;
@Query
private Integer materialType;
@Query
private String orgaId;
@Query
private String folderId;
}

32
system/src/main/java/com/canvas/web/modules/material/criteria/ThemeQueryCriteria.java

@ -0,0 +1,32 @@
package com.canvas.web.modules.material.criteria;
import com.canvas.web.annotation.Query;
import lombok.Data;
import java.sql.Timestamp;
@Data
public class ThemeQueryCriteria {
@Query
private String themeName;
@Query
private String themeClass;
@Query
private Integer deviceDirection;
@Query
private String orgaId;
@Query
private String startTime;
@Query
private String endTime;
@Query
private String folderId;
}

2
system/src/main/java/com/canvas/web/modules/material/domain/Material.java

@ -19,7 +19,7 @@ public class Material extends BaseEntity implements Serializable {
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id ;
private String id;
@Column(name = "name")
@ApiModelProperty(value = "素材名称")

30
system/src/main/java/com/canvas/web/modules/material/domain/MaterialClass.java

@ -0,0 +1,30 @@
package com.canvas.web.modules.material.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Getter
@Setter
@Entity
@Table(name = "material_class")
public class MaterialClass {
@Id
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id;
@Column(name = "material_id")
@ApiModelProperty(value = "素材id")
private String materialId;
@Column(name = "class_id")
@ApiModelProperty(value = "分类id")
private String classId;
}

47
system/src/main/java/com/canvas/web/modules/material/domain/MaterialFolder.java

@ -0,0 +1,47 @@
package com.canvas.web.modules.material.domain;
import com.canvas.web.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@Table(name = "material_folder")
public class MaterialFolder extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id;
@Column(name = "fid")
@ApiModelProperty(value = "上层id")
private String fid;
@Column(name = "name")
@ApiModelProperty(value = "文件夹名称")
private String name;
@Column(name = "img_path")
@ApiModelProperty(value = "文件夹封面图片路径")
private String imgPath;
@Column(name = "orga_id")
@ApiModelProperty(value = "机构id")
private String orgaId;
@Column(name = "is_state")
@ApiModelProperty(value = "状态")
private Integer isState;
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除")
private Boolean isDel;
}

29
system/src/main/java/com/canvas/web/modules/material/domain/OrgaClass.java

@ -0,0 +1,29 @@
package com.canvas.web.modules.material.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Getter
@Setter
@Entity
@Table(name = "orga_class")
public class OrgaClass {
@Id
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id;
@Column(name = "orga_id")
@ApiModelProperty(value = "机构id")
private String orgaId;
@Column(name = "class_id")
@ApiModelProperty(value = "类别id")
private String classId;
}

36
system/src/main/java/com/canvas/web/modules/material/domain/ThemeClass.java

@ -0,0 +1,36 @@
package com.canvas.web.modules.material.domain;
import com.canvas.web.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@Table(name = "theme_class")
public class ThemeClass extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id;
@Column(name = "class_name")
@ApiModelProperty(value = "类别名称")
private String className;
@Column(name = "is_all")
@ApiModelProperty(value = "是否全部机构可查看")
private Boolean isAll;
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除")
private Boolean isDel;
}

47
system/src/main/java/com/canvas/web/modules/material/domain/ThemeFolder.java

@ -0,0 +1,47 @@
package com.canvas.web.modules.material.domain;
import com.canvas.web.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@Table(name = "theme_folder")
public class ThemeFolder extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id;
@Column(name = "fid")
@ApiModelProperty(value = "上层id")
private String fid;
@Column(name = "name")
@ApiModelProperty(value = "文件夹名称")
private String name;
@Column(name = "img_path")
@ApiModelProperty(value = "文件夹封面图片路径")
private String imgPath;
@Column(name = "orga_id")
@ApiModelProperty(value = "机构id")
private String orgaId;
@Column(name = "is_state")
@ApiModelProperty(value = "状态")
private Integer isState;
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除")
private Boolean isDel;
}

30
system/src/main/java/com/canvas/web/modules/material/domain/ThemeInFolder.java

@ -0,0 +1,30 @@
package com.canvas.web.modules.material.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Getter
@Setter
@Entity
@Table(name = "theme_in_folder")
public class ThemeInFolder {
@Id
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id;
@Column(name = "tf_id")
@ApiModelProperty(value = "文件夹id")
private String tfId;
@Column(name = "theme_id")
@ApiModelProperty(value = "主题素材id")
private String themeId;
}

14
system/src/main/java/com/canvas/web/modules/material/dto/FolderDTO.java

@ -0,0 +1,14 @@
package com.canvas.web.modules.material.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class FolderDTO {
private String id;
private String name;
private String fid;
private String imgPath;
private String orgaId;
}

21
system/src/main/java/com/canvas/web/modules/material/dto/MaterialDTO.java

@ -0,0 +1,21 @@
package com.canvas.web.modules.material.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class MaterialDTO {
private String materialId;
private String materialName;
private Integer materialType;
private Integer storeType;
private String depositUrl;
private String imgPath;
private String deviceDirection;
private String orgaId;
private List<String> classIds;
}

15
system/src/main/java/com/canvas/web/modules/material/dto/ThemeClassDTO.java

@ -0,0 +1,15 @@
package com.canvas.web.modules.material.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class ThemeClassDTO {
private String id;
private String className;
private Boolean isAll;
private List<String> orgaIds;
}

10
system/src/main/java/com/canvas/web/modules/material/repository/MaterialClassRepository.java

@ -0,0 +1,10 @@
package com.canvas.web.modules.material.repository;
import com.canvas.web.modules.material.domain.MaterialClass;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MaterialClassRepository extends JpaRepository<MaterialClass, String> {
void deleteAllByMaterialId(String materialId);
}

13
system/src/main/java/com/canvas/web/modules/material/repository/MaterialFolderRepository.java

@ -0,0 +1,13 @@
package com.canvas.web.modules.material.repository;
import com.canvas.web.modules.material.domain.MaterialFolder;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface MaterialFolderRepository extends JpaRepository<MaterialFolder, String> {
MaterialFolder findFirstByOrgaIdAndFidIsNull(String orgaId);
List<MaterialFolder> findAllByOrgaIdAndFid(String orgaId, String fid);
List<MaterialFolder> findAllByFid(String fid);
}

37
system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java

@ -10,6 +10,43 @@ import java.util.Map;
public interface MaterialRepository extends JpaRepository<Material, String> {
@Query(nativeQuery = true,
value="select ml.id as materialId,ml.name as materialName,ml.deposit_url as depositUrl,ml.img_path as imgPath,ml.device_direction as deviceDirection, " +
"(select group_concat(tc.class_name) from material_class mc inner join theme_class tc on mc.class_id = tc.id where mc.material_id = ml.id) as classes," +
"ml.create_time as createTime,ml.is_del as isDel from material ml where ml.store_type = 2 " +
"and if(?1 is null,1=1,ml.name like %?1%) " +
"and if(?2 is null,1=1,ml.create_time <= ?2) " +
"and if(?3 is null,1=1,ml.create_time >= ?3) ")
Page<Map<String,Object>> getThemeHistoryList(String themeName, String startTime, String endTime, Pageable page);
@Query(nativeQuery = true,
value = "select ml.id as materialId,ml.name as materialName,ml.type as materialType,ml.deposit_url as depositUrl,ml.img_path as imgPath," +
"ml.device_direction as deviceDirection " +
"from material ml inner join material_class mc on ml.id = mc.material_id where ml.store_type = 2 and ml.is_del = 0 " +
"and if(?1 is null,1=1,ml.name like %?1%) " +
"and if(?2 is null,1=1,mc.class_id = ?2) " +
"and if(?3 is null,1=1,ml.device_direction = ?3)")
Page<Map<String,Object>> getThemeLibrary(String themeName, String themeClass, Integer deviceDirection, Pageable page);
@Query(nativeQuery = true,
value = "SELECT ml.id as materialId,ml.name as materialName,ml.type as materialType,ml.deposit_url as depositUrl,ml.img_path as imgPath," +
"ml.device_direction as deviceDirection " +
"FROM material ml INNER JOIN theme_in_folder tif ON ml.id = tif.theme_id " +
"INNER JOIN theme_folder tf ON tf.id = tif.tf_id " +
"WHERE ml.store_type = 2 and ml.is_del = 0 " +
"and tif.tf_id = ?1 and if(?2 is null,1=1,ml.name like %?2%) ")
Page<Map<String,Object>> getMyAlbumTheme(String folderId,String themeName,Pageable page);
@Query(nativeQuery = true,
value = "SELECT ml.id AS materialId,ml.NAME AS materialName,ml.type AS materialType,ml.deposit_url AS depositUrl,ml.img_path AS imgPath," +
"ml.device_direction AS deviceDirection " +
"FROM material ml INNER JOIN material_in_folder mif ON ml.id = mif.material_id " +
"INNER JOIN material_folder mf ON mf.id = mif.tf_id " +
"where ml.store_type = 2 and ml.is_del = 0 " +
"and if(?1 is null,1=1,mf.id = ?1)" +
"and if(?2 is null,1=1,ml.name like %?2%) " +
"and if(?3 is null,1=1,ml.type = ?3) ")
Page<Map<String,Object>> getMyMaterial(String folderId,String materialName,Integer materialType,Pageable page);
}

10
system/src/main/java/com/canvas/web/modules/material/repository/OrgaClassRepository.java

@ -0,0 +1,10 @@
package com.canvas.web.modules.material.repository;
import com.canvas.web.modules.material.domain.OrgaClass;
import org.springframework.data.jpa.repository.JpaRepository;
public interface OrgaClassRepository extends JpaRepository<OrgaClass, String> {
void deleteAllByClassId(String classId);
}

18
system/src/main/java/com/canvas/web/modules/material/repository/ThemeClassRepository.java

@ -0,0 +1,18 @@
package com.canvas.web.modules.material.repository;
import com.canvas.web.modules.material.domain.ThemeClass;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Map;
public interface ThemeClassRepository extends JpaRepository<ThemeClass, String> {
@Query(nativeQuery = true,
value = "select tc.id as id,tc.class_name as className from theme_class tc where tc.is_all = true " +
"UNION " +
"select tc.id as id,tc.class_name as className from theme_class tc inner join orga_class oc on tc.id = oc.class_id where tc.id = ?1 ")
List<Map<String,Object>> getThemeByOrgaId(String orgaId);
}

13
system/src/main/java/com/canvas/web/modules/material/repository/ThemeFolderRepository.java

@ -0,0 +1,13 @@
package com.canvas.web.modules.material.repository;
import com.canvas.web.modules.material.domain.ThemeFolder;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ThemeFolderRepository extends JpaRepository<ThemeFolder, String> {
ThemeFolder findFirstByOrgaIdAndFidIsNull(String orgaId);
List<ThemeFolder> findAllByOrgaIdAndFid(String orgaId, String fid);
List<ThemeFolder> findAllByFid(String fid);
}

7
system/src/main/java/com/canvas/web/modules/material/repository/ThemeInFolderRepository.java

@ -0,0 +1,7 @@
package com.canvas.web.modules.material.repository;
import com.canvas.web.modules.material.domain.ThemeInFolder;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ThemeInFolderRepository extends JpaRepository<ThemeInFolder, String> {
}

132
system/src/main/java/com/canvas/web/modules/material/rest/MaterialController.java

@ -0,0 +1,132 @@
package com.canvas.web.modules.material.rest;
import com.canvas.web.modules.material.criteria.MaterialQueryCriteria;
import com.canvas.web.modules.material.criteria.ThemeQueryCriteria;
import com.canvas.web.modules.material.dto.FolderDTO;
import com.canvas.web.modules.material.dto.MaterialDTO;
import com.canvas.web.modules.material.service.MaterialService;
import com.canvas.web.modules.material.vo.AlbumVO;
import com.canvas.web.modules.material.vo.MyMaterialVO;
import com.canvas.web.modules.material.vo.ThemeVO;
import com.canvas.web.modules.utils.Response;
import com.canvas.web.modules.utils.ResultUtils;
import com.canvas.web.modules.utils.enums.ResponseEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequiredArgsConstructor
@Api(tags = "素材库管理")
@RequestMapping("/api/material")
public class MaterialController {
private final MaterialService materialService;
@ApiOperation("编辑主题/素材")
@PostMapping("/save")
public Response<Object> save(
@Validated @RequestBody MaterialDTO dto
){
materialService.edit(dto);
return Response.success(dto.getMaterialId()== null ? ResponseEnum.CREATED : ResponseEnum.UPDATE_SUCCESS);
}
@ApiOperation("主题库素材历史列表")
@GetMapping("/getThemeHistoryList")
public Response<ResultUtils<List<ThemeVO>>> getThemeHistoryList(
ThemeQueryCriteria criteria, Pageable page
){
return Response.success(materialService.themeHistoryList(criteria.getThemeName(),criteria.getStartTime(),criteria.getEndTime(),page));
}
@ApiOperation("主题库素材历史列表")
@GetMapping("/getThemeLibrary")
public Response<ResultUtils<List<ThemeVO>>> getThemeLibrary(
ThemeQueryCriteria criteria, Pageable page
){
return Response.success(materialService.getThemeLibrary(criteria.getThemeName(),criteria.getThemeClass(),criteria.getDeviceDirection(),page));
}
@ApiOperation("我的画布")
@PostMapping("/myAlbum")
public Response<AlbumVO> myAlbum(
ThemeQueryCriteria criteria, Pageable page
){
AlbumVO vo = new AlbumVO();
vo.setMaterialFolders(materialService.getAlbumFolder(criteria.getOrgaId(),criteria.getFolderId(),page.getPageNumber()));
vo.setPageThemeVO(materialService.getMyAlbumTheme(criteria.getOrgaId(),criteria.getFolderId(),criteria.getThemeName(),page));
return Response.success(vo);
}
@ApiOperation("编辑文件夹-主题库")
@PostMapping("/saveThemeFolder")
public Response<Object> saveThemeFolder(
@Validated @RequestBody FolderDTO dto
){
materialService.editThemeFolder(dto);
return Response.success(dto.getId()== null ? ResponseEnum.CREATED : ResponseEnum.UPDATE_SUCCESS);
}
@ApiOperation("添加到画册-主题库")
@PostMapping("/addMyAlbum")
public Response<Object> addMyAlbum(
String tfId,String themeId,String orgaId
){
materialService.addMyAlbum(tfId,themeId,orgaId);
return Response.success(ResponseEnum.CREATED);
}
@ApiOperation("删除我的画册主题素材")
@PostMapping("/deleteMyAlbum")
public Response<Object> deleteMyAlbum(
String id
){
materialService.deleteMyAlbum(id);
return Response.success(ResponseEnum.DELETE_SUCCESS);
}
@ApiOperation("删除文件夹-主题库")
@PostMapping("/deleteThemeFolder")
public Response<Object> deleteThemeFolder(
String id
){
materialService.deleteThemeFolder(id);
return Response.success(ResponseEnum.DELETE_SUCCESS);
}
@ApiOperation("编辑文件夹-素材库")
@PostMapping("/saveMaterialFolder")
public Response<Object> saveMaterialFolder(
@Validated @RequestBody FolderDTO dto
){
materialService.editMaterialFolder(dto);
return Response.success(dto.getId()== null ? ResponseEnum.CREATED : ResponseEnum.UPDATE_SUCCESS);
}
@ApiOperation("删除文件夹-素材库")
@PostMapping("/deleteMaterialFolder")
public Response<Object> deleteMaterialFolder(
String id
){
materialService.deleteMaterialFolder(id);
return Response.success(ResponseEnum.DELETE_SUCCESS);
}
@ApiOperation("我的素材")
@PostMapping("/myMaterial")
public Response<MyMaterialVO> myMaterial(
MaterialQueryCriteria criteria, Pageable page
){
MyMaterialVO vo = new MyMaterialVO();
vo.setMaterialFolders(materialService.getMaterialFolder(criteria.getOrgaId(),criteria.getFolderId(),page.getPageNumber()));
vo.setPageThemeVO(materialService.getMyMaterial(criteria.getOrgaId(),criteria.getFolderId(),criteria.getMaterialName(),criteria.getMaterialType(),page));
return Response.success(vo);
}
}

43
system/src/main/java/com/canvas/web/modules/material/rest/ThemeClassController.java

@ -0,0 +1,43 @@
package com.canvas.web.modules.material.rest;
import com.canvas.web.modules.device.dto.DeviceDTO;
import com.canvas.web.modules.material.domain.ThemeClass;
import com.canvas.web.modules.material.dto.ThemeClassDTO;
import com.canvas.web.modules.material.service.ThemeClassService;
import com.canvas.web.modules.utils.Response;
import com.canvas.web.modules.utils.enums.ResponseEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequiredArgsConstructor
@Api(tags = "主题分类管理")
@RequestMapping("/api/themeClass")
public class ThemeClassController {
ThemeClassService themeClassService;
@ApiOperation("编辑分类")
@PostMapping("/save")
public Response<Object> save(
@Validated @RequestBody ThemeClassDTO dto
){
themeClassService.edit(dto);
return Response.success(dto.getId()== null ? ResponseEnum.CREATED : ResponseEnum.UPDATE_SUCCESS);
}
@ApiOperation("根据机构id查询主题列表")
@GetMapping("/getThemeList")
public Response<List<Map<String,Object>>> getTheme(
String orgaId
){
return Response.success(themeClassService.getTheme(orgaId));
}
}

40
system/src/main/java/com/canvas/web/modules/material/service/MaterialService.java

@ -0,0 +1,40 @@
package com.canvas.web.modules.material.service;
import com.canvas.web.modules.material.domain.MaterialFolder;
import com.canvas.web.modules.material.domain.ThemeFolder;
import com.canvas.web.modules.material.dto.FolderDTO;
import com.canvas.web.modules.material.dto.MaterialDTO;
import com.canvas.web.modules.material.vo.ThemeVO;
import com.canvas.web.modules.utils.ResultUtils;
import org.springframework.data.domain.Pageable;
import java.util.List;
public interface MaterialService {
//编辑素材库信息
void edit(MaterialDTO dto);
//分页查询主题素材历史信息
ResultUtils<List<ThemeVO>> themeHistoryList(String themeName, String startTime, String endTime, Pageable pageable);
//分页查询主题库信息
ResultUtils<List<ThemeVO>> getThemeLibrary(String themeName, String themeClass, Integer deviceDirection, Pageable pageable);
//根据机构id获取我的画册文件夹
List<ThemeFolder> getAlbumFolder(String orgaId, String folderId, Integer pageNum);
//根据机构id获取素材文件夹
List<MaterialFolder> getMaterialFolder(String orgaId, String folderId, Integer pageNum);
//分页获取我的画册文件夹内素材
ResultUtils<List<ThemeVO>> getMyAlbumTheme(String orgaId,String folderId,String themeName,Pageable pageable);
//分页获取素材库内容
ResultUtils<List<ThemeVO>> getMyMaterial(String orgaId,String folderId,String materialName,Integer materialType,Pageable pageable);
//编辑主题库文件夹
void editThemeFolder(FolderDTO dto);
//编辑素材库文件夹
void editMaterialFolder(FolderDTO dto);
//添加素材到我的画册
void addMyAlbum(String tfId,String themeId,String orgaId);
//删除我的画册主题素材
void deleteMyAlbum(String id);
//删除主题库文件夹
void deleteThemeFolder(String id);
//删除素材库文件夹
void deleteMaterialFolder(String id);
}

15
system/src/main/java/com/canvas/web/modules/material/service/ThemeClassService.java

@ -0,0 +1,15 @@
package com.canvas.web.modules.material.service;
import com.canvas.web.modules.material.domain.ThemeClass;
import com.canvas.web.modules.material.dto.ThemeClassDTO;
import java.util.List;
import java.util.Map;
public interface ThemeClassService {
void edit(ThemeClassDTO dto);
//根据机构id查询主题类别
List<Map<String,Object>> getTheme(String orgaId);
}

245
system/src/main/java/com/canvas/web/modules/material/service/impl/MaterialServiceImpl.java

@ -0,0 +1,245 @@
package com.canvas.web.modules.material.service.impl;
import com.canvas.web.modules.material.domain.*;
import com.canvas.web.modules.material.dto.FolderDTO;
import com.canvas.web.modules.material.dto.MaterialDTO;
import com.canvas.web.modules.material.repository.*;
import com.canvas.web.modules.material.service.MaterialService;
import com.canvas.web.modules.material.vo.ThemeVO;
import com.canvas.web.modules.utils.MapUtil;
import com.canvas.web.modules.utils.PageSort;
import com.canvas.web.modules.utils.ResultUtils;
import com.canvas.web.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.apache.xmlbeans.impl.inst2xsd.SalamiSliceStrategy;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
@RequiredArgsConstructor
public class MaterialServiceImpl implements MaterialService {
MaterialRepository materialRepository;
MaterialClassRepository materialClassRepository;
ThemeFolderRepository themeFolderRepository;
MaterialFolderRepository materialFolderRepository;
ThemeInFolderRepository themeInFolderRepository;
@Override
public void edit(MaterialDTO dto) {
Material material = new Material();
//修改
if(null != dto.getMaterialId()){
material = materialRepository.findById(dto.getMaterialId()).get();
material.setUpdateTime(new Timestamp(new Date().getTime()));
}else{
material.setCreateTime(new Timestamp(new Date().getTime()));
material.setUpdateTime(new Timestamp(new Date().getTime()));
material.setIsDel(false);
material.setIsState(1);
}
material.setName(dto.getMaterialName());
material.setType(dto.getMaterialType());
material.setStoreType(dto.getStoreType());
material.setDepositUrl(dto.getDepositUrl());
material.setImgPath(dto.getImgPath());
material.setDeviceDirection(dto.getDeviceDirection());
material.setOrgaId(dto.getOrgaId());
material = materialRepository.saveAndFlush(material);
//如果是主题库 添加主题库类别
if(material.getStoreType() == 2){
materialClassRepository.deleteAllByMaterialId(material.getId());
List<MaterialClass> materialClasses = new ArrayList<>();
for(int i = 0 ;i<dto.getClassIds().size();i++){
MaterialClass mc = new MaterialClass();
mc.setMaterialId(material.getId());
mc.setClassId(dto.getClassIds().get(i));
materialClasses.add(mc);
}
materialClassRepository.saveAll(materialClasses);
}
}
@Override
public ResultUtils<List<ThemeVO>> themeHistoryList(String themeName, String startTime, String endTime, Pageable pageable) {
PageRequest page= PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "create_time", Sort.Direction.DESC);
//分页查询
Page<Map<String,Object>> pageMap = materialRepository.getThemeHistoryList(themeName,startTime,endTime,page);
//初始化分页返回数据
List<ThemeVO> themeVOList = MapUtil.setList(pageMap.getContent(),ThemeVO.class);
return ResultUtils.getResult(themeVOList,pageMap);
}
@Override
public ResultUtils<List<ThemeVO>> getThemeLibrary(String themeName, String themeClass, Integer deviceDirection, Pageable pageable) {
PageRequest page= PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "create_time", Sort.Direction.DESC);
//分页查询
Page<Map<String,Object>> pageMap = materialRepository.getThemeLibrary(themeName,themeClass,deviceDirection,page);
//初始化分页返回数据
List<ThemeVO> themeVOList = MapUtil.setList(pageMap.getContent(),ThemeVO.class);
return ResultUtils.getResult(themeVOList,pageMap);
}
@Override
public List<ThemeFolder> getAlbumFolder(String orgaId, String folderId, Integer pageNum) {
//当页面为1时 则为画布初始化
if(pageNum == 1){
ThemeFolder firstMaterialFolder = themeFolderRepository.findFirstByOrgaIdAndFidIsNull(orgaId);
if(null == firstMaterialFolder){
firstMaterialFolder = new ThemeFolder();
firstMaterialFolder.setIsDel(false);
firstMaterialFolder.setIsState(1);
firstMaterialFolder.setOrgaId(orgaId);
firstMaterialFolder = themeFolderRepository.save(firstMaterialFolder);
folderId = firstMaterialFolder.getId();
}
}
return themeFolderRepository.findAllByOrgaIdAndFid(orgaId,folderId);
}
@Override
public List<MaterialFolder> getMaterialFolder(String orgaId, String folderId, Integer pageNum) {
//当页面为1时 则为素材库初始化
if(pageNum == 1){
MaterialFolder firstMaterialFolder = materialFolderRepository.findFirstByOrgaIdAndFidIsNull(orgaId);
if(null == firstMaterialFolder){
firstMaterialFolder = new MaterialFolder();
firstMaterialFolder.setIsDel(false);
firstMaterialFolder.setIsState(1);
firstMaterialFolder.setOrgaId(orgaId);
firstMaterialFolder = materialFolderRepository.save(firstMaterialFolder);
folderId = firstMaterialFolder.getId();
}
}
return materialFolderRepository.findAllByOrgaIdAndFid(orgaId,folderId);
}
@Override
public ResultUtils<List<ThemeVO>> getMyAlbumTheme(String orgaId, String folderId, String themeName, Pageable pageable) {
PageRequest page= PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "create_time", Sort.Direction.DESC);
folderId = folderId != null ? folderId : themeFolderRepository.findFirstByOrgaIdAndFidIsNull(orgaId).getId();
Page<Map<String,Object>> pageMap = materialRepository.getMyAlbumTheme(folderId,themeName,page);
List<ThemeVO> themeVOList = MapUtil.setList(pageMap.getContent(),ThemeVO.class);
return ResultUtils.getResult(themeVOList,pageMap);
}
@Override
public ResultUtils<List<ThemeVO>> getMyMaterial(String orgaId, String folderId, String materialName,Integer materialType, Pageable pageable) {
PageRequest page= PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "create_time", Sort.Direction.DESC);
folderId = folderId != null ? folderId : materialFolderRepository.findFirstByOrgaIdAndFidIsNull(orgaId).getId();
Page<Map<String,Object>> pageMap = materialRepository.getMyMaterial(folderId,materialName,materialType,page);
return null;
}
@Override
public void editThemeFolder(FolderDTO dto) {
ThemeFolder folder = new ThemeFolder();
if(null != dto.getId()){
folder = themeFolderRepository.findById(dto.getId()).get();
}else{
folder.setCreateTime(new Timestamp(new Date().getTime()));
folder.setIsDel(false);
folder.setIsState(1);
}
folder.setFid(dto.getFid());
folder.setName(dto.getName());
folder.setImgPath(dto.getImgPath());
folder.setOrgaId(dto.getOrgaId());
folder.setUpdateTime(new Timestamp(new Date().getTime()));
themeFolderRepository.saveAndFlush(folder);
}
@Override
public void editMaterialFolder(FolderDTO dto) {
MaterialFolder folder = new MaterialFolder();
if(null != dto.getId()){
folder = materialFolderRepository.findById(dto.getId()).get();
}else{
folder.setCreateTime(new Timestamp(new Date().getTime()));
folder.setIsDel(false);
folder.setIsState(1);
}
folder.setFid(dto.getFid());
folder.setName(dto.getName());
folder.setImgPath(dto.getImgPath());
folder.setOrgaId(dto.getOrgaId());
folder.setUpdateTime(new Timestamp(new Date().getTime()));
materialFolderRepository.saveAndFlush(folder);
}
@Override
public void addMyAlbum(String tfId, String themeId,String orgaId) {
ThemeInFolder themeInFolder = new ThemeInFolder();
if(StringUtils.isEmpty(tfId)){
ThemeFolder firstMaterialFolder = themeFolderRepository.findFirstByOrgaIdAndFidIsNull(orgaId);
if(null == firstMaterialFolder){
firstMaterialFolder = new ThemeFolder();
firstMaterialFolder.setIsDel(false);
firstMaterialFolder.setIsState(1);
firstMaterialFolder.setOrgaId(orgaId);
firstMaterialFolder = themeFolderRepository.save(firstMaterialFolder);
tfId = firstMaterialFolder.getId();
}
}
themeInFolder.setThemeId(themeId);
themeInFolder.setTfId(tfId);
themeInFolderRepository.saveAndFlush(themeInFolder);
}
@Override
public void deleteMyAlbum(String id) {
themeInFolderRepository.deleteById(id);
}
@Override
public void deleteThemeFolder(String id) {
List<String> resultString = new ArrayList<>();
resultString = getThemeFolder(id,resultString);
System.out.println(resultString);
themeFolderRepository.deleteAllById(resultString);
}
@Override
public void deleteMaterialFolder(String id) {
List<String> resultString = new ArrayList<>();
resultString = getMaterialFolder(id,resultString);
System.out.println(resultString);
materialFolderRepository.deleteAllById(resultString);
}
public List<String> getThemeFolder(String id,List<String> resultString){
List<ThemeFolder> themeFolders = themeFolderRepository.findAllByFid(id);
if(null == themeFolders){
return resultString;
}else{
for(int i = 0;i<themeFolders.size();i++){
getThemeFolder(themeFolders.get(i).getId(),resultString);
}
return resultString;
}
}
public List<String> getMaterialFolder(String id,List<String> resultString){
List<MaterialFolder> materialFolders = materialFolderRepository.findAllByFid(id);
if(null == materialFolders){
return resultString;
}else{
for(int i = 0;i<materialFolders.size();i++){
getMaterialFolder(materialFolders.get(i).getId(),resultString);
}
return resultString;
}
}
}

59
system/src/main/java/com/canvas/web/modules/material/service/impl/ThemeClassServiceImpl.java

@ -0,0 +1,59 @@
package com.canvas.web.modules.material.service.impl;
import com.canvas.web.modules.material.domain.OrgaClass;
import com.canvas.web.modules.material.domain.ThemeClass;
import com.canvas.web.modules.material.dto.ThemeClassDTO;
import com.canvas.web.modules.material.repository.OrgaClassRepository;
import com.canvas.web.modules.material.repository.ThemeClassRepository;
import com.canvas.web.modules.material.service.ThemeClassService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
@RequiredArgsConstructor
public class ThemeClassServiceImpl implements ThemeClassService {
ThemeClassRepository themeClassRepository;
OrgaClassRepository orgaClassRepository;
@Override
public void edit(ThemeClassDTO dto) {
ThemeClass themeClass = new ThemeClass();
if(null != dto.getId()){
themeClass = themeClassRepository.findById(dto.getId()).get();
themeClass.setUpdateTime(new Timestamp(new Date().getTime()));
}else{
themeClass.setCreateTime(new Timestamp(new Date().getTime()));
themeClass.setUpdateTime(new Timestamp(new Date().getTime()));
}
themeClass.setIsAll(dto.getIsAll());
themeClass.setClassName(dto.getClassName());
themeClass = themeClassRepository.saveAndFlush(themeClass);
if(themeClass.getIsAll()){
orgaClassRepository.deleteAllByClassId(themeClass.getId());
}else if(null != dto.getOrgaIds() || dto.getOrgaIds().size() !=0){
orgaClassRepository.deleteAllByClassId(themeClass.getId());
List<OrgaClass> orgaClassList = new ArrayList<>();
for(int i = 0;i<dto.getOrgaIds().size();i++){
OrgaClass orgaClass = new OrgaClass();
orgaClass.setClassId(themeClass.getId());
orgaClass.setOrgaId(dto.getOrgaIds().get(i));
orgaClassList.add(orgaClass);
}
orgaClassRepository.saveAllAndFlush(orgaClassList);
}
}
@Override
public List<Map<String,Object>> getTheme(String orgaId) {
List<Map<String,Object>> list = themeClassRepository.getThemeByOrgaId(orgaId);
return list;
}
}

17
system/src/main/java/com/canvas/web/modules/material/vo/AlbumVO.java

@ -0,0 +1,17 @@
package com.canvas.web.modules.material.vo;
import com.canvas.web.modules.material.domain.ThemeFolder;
import com.canvas.web.modules.utils.ResultUtils;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class AlbumVO {
private List<ThemeFolder> materialFolders;
private ResultUtils<List<ThemeVO>> pageThemeVO;
}

18
system/src/main/java/com/canvas/web/modules/material/vo/MyMaterialVO.java

@ -0,0 +1,18 @@
package com.canvas.web.modules.material.vo;
import com.canvas.web.modules.material.domain.MaterialFolder;
import com.canvas.web.modules.material.domain.ThemeFolder;
import com.canvas.web.modules.utils.ResultUtils;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class MyMaterialVO {
private List<MaterialFolder> materialFolders;
private ResultUtils<List<ThemeVO>> pageThemeVO;
}

24
system/src/main/java/com/canvas/web/modules/material/vo/ThemeVO.java

@ -0,0 +1,24 @@
package com.canvas.web.modules.material.vo;
import com.canvas.web.modules.material.domain.MaterialClass;
import lombok.Getter;
import lombok.Setter;
import java.sql.Timestamp;
import java.util.List;
@Getter
@Setter
public class ThemeVO {
private String materialId;
private String materialName;
private String materialType;
private String depositUrl;
private String imgPath;
private String classes;
private Integer deviceDirection;
private Timestamp createTime;
private Boolean isDel;
}
Loading…
Cancel
Save