|
|
@@ -10,6 +10,7 @@ import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.BackgroupGro
|
|
|
import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.album.AlbumDto;
|
|
|
import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.album.AlbumItemReq;
|
|
|
import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.album.AlbumReq;
|
|
|
+import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.image.ImageDeleteReq;
|
|
|
import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.image.ImageSaveRes;
|
|
|
import com.webflux.launchadmin.mysql.entity.planNew.BackgroupImage;
|
|
|
import com.webflux.launchadmin.mysql.entity.planNew.BackgroupImageItem;
|
|
|
@@ -21,11 +22,8 @@ import com.webflux.launchadmin.mysql.repository.sourceMaterial.*;
|
|
|
import com.webflux.launchadmin.mysql.service.sourceMaterial.SourceMaterialInterface;
|
|
|
import com.webflux.launchadmin.mysql.service.sourceMaterial.data.image.ImageExcelRedisCache;
|
|
|
import com.webflux.launchadmin.mysql.service.sourceMaterial.data.sql.Where;
|
|
|
-import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.redisCache.interfacelist.AlbumInterface;
|
|
|
-import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.redisCache.interfacelist.AlbumItemInterface;
|
|
|
-import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.redisCache.interfacelist.BackgroupImageInterface;
|
|
|
+import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.redisCache.interfacelist.*;
|
|
|
import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.redisCache.BackgroupImageItemService;
|
|
|
-import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.redisCache.interfacelist.GroupTypeinterface;
|
|
|
import com.webflux.launchadmin.mysql.service.upload.UploadOssInterface;
|
|
|
import com.webflux.launchcommon.returnObj.Paged;
|
|
|
import com.webflux.launchcommon.returnObj.RStatus;
|
|
|
@@ -35,6 +33,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.poi.ss.usermodel.Cell;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
|
|
|
import org.springframework.data.redis.core.ReactiveRedisTemplate;
|
|
|
import org.springframework.data.relational.core.query.Criteria;
|
|
|
@@ -78,6 +77,10 @@ public class MaterialManagementImpl implements MaterialManagementInterface {
|
|
|
BackgroupImageInterface backgroupImageInterface;
|
|
|
@Resource
|
|
|
BackgroupImageItemService backgroupImageItemInterface;
|
|
|
+ @Autowired
|
|
|
+ private ImageRepository imageRepository;
|
|
|
+ @Autowired
|
|
|
+ private ImageInterface imageInterface;
|
|
|
//素材图片缓存
|
|
|
private static final String hashKey = "execel_upload_cache_Image_";
|
|
|
//Todo GroupType
|
|
|
@@ -449,19 +452,102 @@ public class MaterialManagementImpl implements MaterialManagementInterface {
|
|
|
public Mono<String> importDataExcel(ImageSaveRes data) {
|
|
|
Long id = data.getId();
|
|
|
String userName = BaseContextHandler.getUserName();
|
|
|
- Mono<String> objectMono = reactiveRedisImageTemplate.opsForValue().get(hashKey + id).flatMap(f->{
|
|
|
- if(Objects.nonNull(f)){
|
|
|
-
|
|
|
+ return reactiveRedisImageTemplate.opsForValue().get(hashKey + id).flatMap(f->{
|
|
|
+ if(Objects.isNull(f)){
|
|
|
+ return Mono.error(new BaseException("保存失败请重新上传"));
|
|
|
+ }
|
|
|
+ JSONArray jsonArray;
|
|
|
+ try {
|
|
|
+ jsonArray = JSONUtil.parseArray(f);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return Mono.error(new BaseException("解析上传excel内容失败E:"+e.getMessage()+"-JSON::"+f));
|
|
|
+ }
|
|
|
+ List<ImageExcelRedisCache> imageExcelRedisCaches;
|
|
|
+ try {
|
|
|
+ imageExcelRedisCaches = jsonArray.toList(ImageExcelRedisCache.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return Mono.error(new BaseException("解析上传excel内容转ImageExcelRedisCache失败E:"+e.getMessage()+"-JSON::"+f));
|
|
|
}
|
|
|
- return Mono.just(f.toString());
|
|
|
+ return Flux.fromIterable(imageExcelRedisCaches).flatMap(image -> groupTypeRepository.findByName(image.getGroupTypeName()).collectList()
|
|
|
+ .switchIfEmpty(Mono.just(List.of()))
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("查询GroupType Error::" + throwable.getMessage())))
|
|
|
+ .flatMap(list -> {
|
|
|
+ Mono<GroupType> groupTypeMono;
|
|
|
+ if (list.isEmpty()) {
|
|
|
+ groupTypeMono = saveMysqlAndRedisGroupType(new GroupType(null, image.getGroupTypeName(), "1"));
|
|
|
+ } else {
|
|
|
+ groupTypeMono = Mono.just(list.get(0));
|
|
|
+ }
|
|
|
+ return groupTypeMono;
|
|
|
+ }).flatMap(groupType -> {
|
|
|
+ Image image1 = new Image(null
|
|
|
+ , image.getImage(),
|
|
|
+ userName,
|
|
|
+ ZonedDateTime.now(),
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ image.getType(),
|
|
|
+ 1,
|
|
|
+ image.getGroupTypeName(),
|
|
|
+ Integer.valueOf(String.valueOf(groupType.id())),
|
|
|
+ image.getSizeType()
|
|
|
+ );
|
|
|
+ return template.insert(image1)
|
|
|
+ .flatMap(imageInterface::saveMysqlAndRedisCache)
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("保存图片失败——" + throwable.getMessage())));
|
|
|
+ })).collectList().flatMap(list->{
|
|
|
+ String collect = list.stream().map(Image::id).map(String::valueOf).collect(Collectors.joining(","));
|
|
|
+ return Mono.just(collect);
|
|
|
+ });
|
|
|
});
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Mono<RStatus<Paged<ImageSaveRes>>> pageImage(Integer page, Integer size, Integer type, String classification) {
|
|
|
+ ArrayList<Where> wheres = new ArrayList<>();
|
|
|
+ Where where0 = new Where();
|
|
|
+ where0.setKey("type");
|
|
|
+ where0.setWhereType(1);
|
|
|
+ where0.setValue(type);
|
|
|
+ wheres.add(where0);
|
|
|
+ if(Objects.nonNull(classification)){
|
|
|
+ Where where = new Where();
|
|
|
+ where.setKey("group_type_name");
|
|
|
+ where.setWhereType(2);
|
|
|
+ where.setValue(classification);
|
|
|
+ wheres.add(where);
|
|
|
+ }
|
|
|
+ Mono<RStatus<Paged<ImageSaveRes>>> pages = sourceMaterialInterface.pageAndFunctionRtE(wheres, Image.class, size, page,f->
|
|
|
+ Flux.fromIterable(f).flatMap(item->{
|
|
|
+ ImageSaveRes imageSaveRes = new ImageSaveRes();
|
|
|
+ imageSaveRes.setImage(item.image());
|
|
|
+ imageSaveRes.setCreatedAt(item.createdAt());
|
|
|
+ imageSaveRes.setCreateUser(item.createUser());
|
|
|
+ imageSaveRes.setId(item.id());
|
|
|
+ imageSaveRes.setType(item.type());
|
|
|
+ imageSaveRes.setGroupType(item.groupType());
|
|
|
+ imageSaveRes.setGroupTypeId(item.groupTypeId());
|
|
|
+ imageSaveRes.setGroupTypeName(item.groupTypeName());
|
|
|
+ imageSaveRes.setGroupType(item.sizeType());
|
|
|
+ imageSaveRes.setUpdatedAt(item.updatedAt());
|
|
|
+ return Mono.just(imageSaveRes);
|
|
|
+ }).collectList());
|
|
|
+ return pages;
|
|
|
+ }
|
|
|
|
|
|
-// reactiveRedisImageTemplate.opsForHash().scan(hashKey+id).(entry->{
|
|
|
-//
|
|
|
-//
|
|
|
-// })
|
|
|
- return objectMono;
|
|
|
+ @Override
|
|
|
+ public Mono<RStatus<ImageDeleteReq>> deleteImage(ImageDeleteReq dto) {
|
|
|
+ String id = dto.getId();
|
|
|
+ String[] split = id.split(",");
|
|
|
+ ZonedDateTime now = ZonedDateTime.now();
|
|
|
+ Mono<ImageDeleteReq> imageDeleteReqMono = Flux.fromIterable(List.of(split))
|
|
|
+ .flatMap(i -> imageRepository.deleteLogicFor(now, Long.valueOf(i)))
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("删除失败--" + throwable.getMessage())))
|
|
|
+ .flatMap( imageInterface::deleteMysqlAndRedisCache)
|
|
|
+ .collectList().flatMap(f -> Mono.just(dto));
|
|
|
+ return RStatus.success(imageDeleteReqMono);
|
|
|
}
|
|
|
+
|
|
|
//Todo Image >>>>>>>>>>>>>>>>>
|
|
|
//Todo 相册 Album <<<<<<<<<<<<<<
|
|
|
@Resource
|
|
|
@@ -562,7 +648,6 @@ public class MaterialManagementImpl implements MaterialManagementInterface {
|
|
|
return Mono.just(albumDataRes);
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
private Mono<RStatus<Boolean>> addAlbum(AlbumReq albumReq, String userName, String userId, List<AlbumItemReq> list) {
|
|
|
Mono<Boolean> then = Flux.fromIterable(list).flatMap(item ->
|
|
|
{
|