diff --git a/system/src/main/java/com/canvas/web/modules/material/domain/MaterialInFolder.java b/system/src/main/java/com/canvas/web/modules/material/domain/MaterialInFolder.java new file mode 100644 index 0000000..c591341 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/material/domain/MaterialInFolder.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_in_folder") +public class MaterialInFolder { + + @Id + @Column(name = "id") + @GeneratedValue(generator = "idGenerator") + @GenericGenerator(name = "idGenerator", strategy = "uuid") + private String id; + + @Column(name = "mf_id") + @ApiModelProperty(value = "文件夹id") + private String mfId; + + @Column(name = "material_id") + @ApiModelProperty(value = "素材id") + private String materialId; + +} diff --git a/system/src/main/java/com/canvas/web/modules/material/dto/MaterialDTO.java b/system/src/main/java/com/canvas/web/modules/material/dto/MaterialDTO.java index 7c39f16..44cf078 100644 --- a/system/src/main/java/com/canvas/web/modules/material/dto/MaterialDTO.java +++ b/system/src/main/java/com/canvas/web/modules/material/dto/MaterialDTO.java @@ -17,5 +17,6 @@ public class MaterialDTO { private String imgPath; private String deviceDirection; private String orgaId; + private String folderId; private List classIds; } \ No newline at end of file diff --git a/system/src/main/java/com/canvas/web/modules/material/repository/MaterialInFolderRepository.java b/system/src/main/java/com/canvas/web/modules/material/repository/MaterialInFolderRepository.java new file mode 100644 index 0000000..fd17cd3 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/material/repository/MaterialInFolderRepository.java @@ -0,0 +1,10 @@ +package com.canvas.web.modules.material.repository; + +import com.canvas.web.modules.material.domain.MaterialInFolder; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface MaterialInFolderRepository extends JpaRepository { + + void deleteAllByMaterialId(String materialId); + +} diff --git a/system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java b/system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java index f1f0d53..1b97e75 100644 --- a/system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java +++ b/system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java @@ -30,7 +30,7 @@ public interface MaterialRepository extends JpaRepository { @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 " + + "ml.device_direction as deviceDirection,tif.id as inFolderId " + "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 " + @@ -39,9 +39,9 @@ public interface MaterialRepository extends JpaRepository { @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 " + + "ml.device_direction AS deviceDirection,mif.id as inFolderId " + "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 " + + "INNER JOIN material_folder mf ON mf.id = mif.mf_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%) " + diff --git a/system/src/main/java/com/canvas/web/modules/material/rest/MaterialController.java b/system/src/main/java/com/canvas/web/modules/material/rest/MaterialController.java index 02cd894..46a956e 100644 --- a/system/src/main/java/com/canvas/web/modules/material/rest/MaterialController.java +++ b/system/src/main/java/com/canvas/web/modules/material/rest/MaterialController.java @@ -129,4 +129,22 @@ public class MaterialController { return Response.success(vo); } + @ApiOperation("移动素材-素材库") + @PostMapping("/moveMyMaterial") + public Response moveMyMaterial( + String mifId,String folderId,String materialId + ){ + materialService.moveMyMaterial(mifId,folderId,materialId); + return Response.success(ResponseEnum.CREATED); + } + + @ApiOperation("移动素材-素材库") + @PostMapping("/deleteMyMaterial") + public Response deleteMyMaterial( + String materialId + ){ + materialService.deleteMyMaterial(materialId); + return Response.success(ResponseEnum.DELETE_SUCCESS); + } + } diff --git a/system/src/main/java/com/canvas/web/modules/material/service/MaterialService.java b/system/src/main/java/com/canvas/web/modules/material/service/MaterialService.java index 9eb5a28..14208ba 100644 --- a/system/src/main/java/com/canvas/web/modules/material/service/MaterialService.java +++ b/system/src/main/java/com/canvas/web/modules/material/service/MaterialService.java @@ -37,4 +37,8 @@ public interface MaterialService { void deleteThemeFolder(String id); //删除素材库文件夹 void deleteMaterialFolder(String id); + //移动素材到文件夹 + void moveMyMaterial(String mifId,String folderId,String materialId); + //删除素材 + void deleteMyMaterial(String materialId); } diff --git a/system/src/main/java/com/canvas/web/modules/material/service/impl/MaterialServiceImpl.java b/system/src/main/java/com/canvas/web/modules/material/service/impl/MaterialServiceImpl.java index e10435e..88e56b9 100644 --- a/system/src/main/java/com/canvas/web/modules/material/service/impl/MaterialServiceImpl.java +++ b/system/src/main/java/com/canvas/web/modules/material/service/impl/MaterialServiceImpl.java @@ -33,6 +33,7 @@ public class MaterialServiceImpl implements MaterialService { ThemeFolderRepository themeFolderRepository; MaterialFolderRepository materialFolderRepository; ThemeInFolderRepository themeInFolderRepository; + MaterialInFolderRepository materialInFolderRepository; @Override public void edit(MaterialDTO dto) { @@ -66,8 +67,23 @@ public class MaterialServiceImpl implements MaterialService { mc.setClassId(dto.getClassIds().get(i)); materialClasses.add(mc); } - materialClassRepository.saveAll(materialClasses); + //如果是素材 添加进素材库 + }else{ + String folderId = dto.getFolderId(); + MaterialFolder firstMaterialFolder = materialFolderRepository.findFirstByOrgaIdAndFidIsNull(material.getOrgaId()); + if(null == firstMaterialFolder){ + firstMaterialFolder = new MaterialFolder(); + firstMaterialFolder.setIsDel(false); + firstMaterialFolder.setIsState(1); + firstMaterialFolder.setOrgaId(material.getOrgaId()); + firstMaterialFolder = materialFolderRepository.save(firstMaterialFolder); + } + folderId = StringUtils.isEmpty(folderId) ? firstMaterialFolder.getId() : folderId; + MaterialInFolder materialInFolder = new MaterialInFolder(); + materialInFolder.setMaterialId(material.getId()); + materialInFolder.setMfId(folderId); + materialInFolderRepository.save(materialInFolder); } } @@ -219,6 +235,23 @@ public class MaterialServiceImpl implements MaterialService { materialFolderRepository.deleteAllById(resultString); } + @Override + public void moveMyMaterial(String mifId,String folderId, String materialId) { + MaterialInFolder materialInFolder = new MaterialInFolder(); + if(null != mifId){ + materialInFolder = materialInFolderRepository.findById(mifId).get(); + } + materialInFolder.setMaterialId(materialId); + materialInFolder.setMfId(folderId); + materialInFolderRepository.saveAndFlush(materialInFolder); + } + + @Override + public void deleteMyMaterial(String materialId) { + materialInFolderRepository.deleteAllByMaterialId(materialId); + materialRepository.deleteById(materialId); + } + public List getThemeFolder(String id,List resultString){ List themeFolders = themeFolderRepository.findAllByFid(id); if(null == themeFolders){ diff --git a/system/src/main/java/com/canvas/web/modules/material/vo/ThemeVO.java b/system/src/main/java/com/canvas/web/modules/material/vo/ThemeVO.java index f63c814..c18cf7c 100644 --- a/system/src/main/java/com/canvas/web/modules/material/vo/ThemeVO.java +++ b/system/src/main/java/com/canvas/web/modules/material/vo/ThemeVO.java @@ -10,7 +10,6 @@ import java.util.List; @Getter @Setter public class ThemeVO { - private String materialId; private String materialName; private String materialType; @@ -18,6 +17,7 @@ public class ThemeVO { private String imgPath; private String classes; private Integer deviceDirection; + private String inFolderId; private Timestamp createTime; private Boolean isDel; diff --git a/system/src/main/java/com/canvas/web/modules/release/domain/ReleaseList.java b/system/src/main/java/com/canvas/web/modules/release/domain/ReleaseList.java new file mode 100644 index 0000000..d6b06f5 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/domain/ReleaseList.java @@ -0,0 +1,65 @@ +package com.canvas.web.modules.release.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; +import java.sql.Timestamp; + +@Getter +@Setter +@Entity +@Table(name = "release_list") +public class ReleaseList extends BaseEntity implements Serializable { + + @Id + @Column(name = "id") + @GeneratedValue(generator = "idGenerator") + @GenericGenerator(name = "idGenerator", strategy = "uuid") + private String id; + + @Column(name = "relaase_name") + @ApiModelProperty(value = "发布名称") + private Integer relaaseName; + + @Column(name = "release_type") + @ApiModelProperty(value = "发布类型") + private Integer releaseType; + + @Column(name = "release_start") + @ApiModelProperty(value = "发布开始时间") + private Timestamp releaseStart; + + @Column(name = "release_end") + @ApiModelProperty(value = "发布结束时间") + private Timestamp releaseEnd; + + @Column(name = "actual_end") + @ApiModelProperty(value = "实际结束时间") + private Timestamp actualEnd; + + @Column(name = "release_cycle") + @ApiModelProperty(value = "发布周期 0.无 1.每天 2.每周") + private Integer releaseCycle; + + @Column(name = "is_topping") + @ApiModelProperty(value = "是否置顶") + private Boolean isTopping; + + @Column(name = "release_device") + @ApiModelProperty(value = "发布设备 1.全部 2.部分") + private Integer releaseDevice; + + @Column(name = "is_state") + @ApiModelProperty(value = "状态") + private Integer isState; + + @Column(name = "is_del") + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + +} diff --git a/system/src/main/java/com/canvas/web/modules/release/domain/ReleaseMaterial.java b/system/src/main/java/com/canvas/web/modules/release/domain/ReleaseMaterial.java new file mode 100644 index 0000000..9b1cd37 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/domain/ReleaseMaterial.java @@ -0,0 +1,40 @@ +package com.canvas.web.modules.release.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 = "release_material") +public class ReleaseMaterial extends BaseEntity implements Serializable { + + @Id + @Column(name = "id") + @GeneratedValue(generator = "idGenerator") + @GenericGenerator(name = "idGenerator", strategy = "uuid") + private String id; + + @Column(name = "release_id") + @ApiModelProperty(value = "发布Id") + private String releaseId; + + @Column(name = "material_id") + @ApiModelProperty(value = "素材id") + private String materialId; + + @Column(name = "duration") + @ApiModelProperty(value = "时长(s)") + private Integer duration; + + @Column(name = "effect") + @ApiModelProperty(value = "切换动效") + private Integer effect; + +} diff --git a/system/src/main/java/com/canvas/web/modules/release/repository/ReleaseListRepository.java b/system/src/main/java/com/canvas/web/modules/release/repository/ReleaseListRepository.java new file mode 100644 index 0000000..ccd4c2a --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/repository/ReleaseListRepository.java @@ -0,0 +1,26 @@ +package com.canvas.web.modules.release.repository; + +import com.canvas.web.modules.release.domain.ReleaseList; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.Map; + +public interface ReleaseListRepository extends JpaRepository { + + @Query(nativeQuery = true, + value = "select rl.id as releaseId,rl.relaase_name as relaaseName,rl.release_start as releaseStart,rl.release_end as releaseEnd," + + "rl.release_type as releaseType,rl.actual_end as actualEnd,rl.is_state as isState,su.nick_name as nickName," + + "rl.release_device as releaseDevice,rl.is_topping as isTopping,rl.is_del as isDel,rl.create_time as createTime,rl.update_time as updateTime," + + "(select group_concat(d.device_name) from device d inner join release_device rd on d.id = rd.device_id inner join release_list inrl " + + "on rd.release_id = inrl.id where rl.is_del = false and rl.is_state = 1 and inrl.id = rl.id) as bindingDevice," + + "(select ml.img_path from material ml inner join release_material rm on ml.id = rm.material_id inner join release_list inrl2 " + + "on rm.release_id = inrl2.id where rl.is_del = false and rl.is_state = 1 and inrl2.id = rl.id limit 0,1) as releaseFirstImg " + + "from release_list rl inner join sys_user su on rl.create_by = su.id " + + "where rl.is_del = false and rl.is_state = 1 and (rl.release_end <= now() or rl.actual_end <= now()) " + + "and if(?1 is null,1=1,rl.relaase_name like %?1% )") + Page> getReleaseList(String releaseName, Pageable page); + +} diff --git a/system/src/main/java/com/canvas/web/modules/release/repository/ReleaseMaterialRepository.java b/system/src/main/java/com/canvas/web/modules/release/repository/ReleaseMaterialRepository.java new file mode 100644 index 0000000..d8357e4 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/repository/ReleaseMaterialRepository.java @@ -0,0 +1,9 @@ +package com.canvas.web.modules.release.repository; + +import com.canvas.web.modules.release.domain.ReleaseMaterial; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ReleaseMaterialRepository extends JpaRepository { + + +} diff --git a/system/src/main/java/com/canvas/web/modules/release/rest/ReleaseListController.java b/system/src/main/java/com/canvas/web/modules/release/rest/ReleaseListController.java new file mode 100644 index 0000000..5fca4dd --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/rest/ReleaseListController.java @@ -0,0 +1,36 @@ +package com.canvas.web.modules.release.rest; + +import com.canvas.web.modules.material.criteria.ThemeQueryCriteria; +import com.canvas.web.modules.material.vo.ThemeVO; +import com.canvas.web.modules.release.service.ReleaseListService; +import com.canvas.web.modules.release.vo.ReleaseListVO; +import com.canvas.web.modules.utils.Response; +import com.canvas.web.modules.utils.ResultUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@Api(tags = "发布管理") +@RequestMapping("/api/release") +public class ReleaseListController { + + ReleaseListService releaseListService; + + //发布 + @ApiOperation("发布列表") + @GetMapping("/getReleaseList") + public Response>> getReleaseList( + String releaseName, Pageable page + ){ + return Response.success(releaseListService.getReleaseList(releaseName,page)); + } + +} diff --git a/system/src/main/java/com/canvas/web/modules/release/service/ReleaseListService.java b/system/src/main/java/com/canvas/web/modules/release/service/ReleaseListService.java new file mode 100644 index 0000000..8323968 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/service/ReleaseListService.java @@ -0,0 +1,12 @@ +package com.canvas.web.modules.release.service; + +import com.canvas.web.modules.release.vo.ReleaseListVO; +import com.canvas.web.modules.utils.ResultUtils; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +public interface ReleaseListService { + //分页查询主题素材历史信息 + ResultUtils> getReleaseList(String releaseName, Pageable pageable); +} diff --git a/system/src/main/java/com/canvas/web/modules/release/service/impl/ReleaseListServiceImpl.java b/system/src/main/java/com/canvas/web/modules/release/service/impl/ReleaseListServiceImpl.java new file mode 100644 index 0000000..7fe49c5 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/service/impl/ReleaseListServiceImpl.java @@ -0,0 +1,34 @@ +package com.canvas.web.modules.release.service.impl; + +import com.canvas.web.modules.release.repository.ReleaseListRepository; +import com.canvas.web.modules.release.service.ReleaseListService; +import com.canvas.web.modules.release.vo.ReleaseListVO; +import com.canvas.web.modules.utils.MapUtil; +import com.canvas.web.modules.utils.PageSort; +import com.canvas.web.modules.utils.ResultUtils; +import lombok.RequiredArgsConstructor; +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.util.List; +import java.util.Map; + +@Service +@RequiredArgsConstructor +public class ReleaseListServiceImpl implements ReleaseListService { + + ReleaseListRepository releaseListRepository; + + @Override + public ResultUtils> getReleaseList(String releaseName, Pageable pageable) { + PageRequest page= PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "create_time", Sort.Direction.DESC); + //分页查询 + Page> pageMap = releaseListRepository.getReleaseList(releaseName,page); + //初始化分页返回数据 + List releaseList = MapUtil.setList(pageMap.getContent(),ReleaseListVO.class); + return ResultUtils.getResult(releaseList,pageMap); + } +} diff --git a/system/src/main/java/com/canvas/web/modules/release/vo/ReleaseListVO.java b/system/src/main/java/com/canvas/web/modules/release/vo/ReleaseListVO.java new file mode 100644 index 0000000..7dc61c3 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/release/vo/ReleaseListVO.java @@ -0,0 +1,28 @@ +package com.canvas.web.modules.release.vo; + +import lombok.Getter; +import lombok.Setter; + +import java.sql.Timestamp; + +@Getter +@Setter +public class ReleaseListVO { + + private String releaseId; + private String relaaseName; + private String releaseType; + private String releaseFirstImg; + private Timestamp releaseStart; + private Timestamp releaseEnd; + private Timestamp actualEnd; + private Integer releaseCycle; + private String nickName; + private Integer isState; + private Integer releaseDevice; + private Boolean isTopping; + private Boolean isDel; + private Timestamp createTime; + private Timestamp updateTime; + +}