|
|
@ -3,6 +3,8 @@ package com.youlai.boot.mini.service.impl; |
|
|
import ch.hsr.geohash.GeoHash; |
|
|
import ch.hsr.geohash.GeoHash; |
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
import cn.hutool.core.lang.Assert; |
|
|
import cn.hutool.core.lang.Assert; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
import com.youlai.boot.common.constant.CommonConstants; |
|
|
import com.youlai.boot.common.constant.CommonConstants; |
|
|
import com.youlai.boot.common.util.CoordinateTransformUtils; |
|
|
import com.youlai.boot.common.util.CoordinateTransformUtils; |
|
|
@ -10,6 +12,7 @@ import com.youlai.boot.common.util.FileUtils; |
|
|
import com.youlai.boot.common.util.JavaVCUtils; |
|
|
import com.youlai.boot.common.util.JavaVCUtils; |
|
|
import com.youlai.boot.common.util.RandomNumberUtils; |
|
|
import com.youlai.boot.common.util.RandomNumberUtils; |
|
|
import com.youlai.boot.file.service.FileService; |
|
|
import com.youlai.boot.file.service.FileService; |
|
|
|
|
|
import com.youlai.boot.file.service.impl.AliyunFileService; |
|
|
import com.youlai.boot.framework.security.util.SecurityUtils; |
|
|
import com.youlai.boot.framework.security.util.SecurityUtils; |
|
|
import com.youlai.boot.mini.converter.MiniStrayAnimalConverter; |
|
|
import com.youlai.boot.mini.converter.MiniStrayAnimalConverter; |
|
|
import com.youlai.boot.mini.mapper.MiniStrayAnimalMapper; |
|
|
import com.youlai.boot.mini.mapper.MiniStrayAnimalMapper; |
|
|
@ -46,7 +49,7 @@ import java.util.UUID; |
|
|
@Slf4j |
|
|
@Slf4j |
|
|
public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, MiniStrayAnimal> implements StrayAnimalService { |
|
|
public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, MiniStrayAnimal> implements StrayAnimalService { |
|
|
|
|
|
|
|
|
private final FileService fileService; |
|
|
private final AliyunFileService aliyunFileService; |
|
|
|
|
|
|
|
|
private final MiniStrayAnimalNoteMapper miniStrayAnimalNoteMapper; |
|
|
private final MiniStrayAnimalNoteMapper miniStrayAnimalNoteMapper; |
|
|
private final MiniStrayAnimalNoteMediaMapper miniStrayAnimalNoteMediaMapper; |
|
|
private final MiniStrayAnimalNoteMediaMapper miniStrayAnimalNoteMediaMapper; |
|
|
@ -84,7 +87,7 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M |
|
|
+ note.getCreateTimestamp() + RandomNumberUtils.createRandomLowerLetterAndNumber(8) |
|
|
+ note.getCreateTimestamp() + RandomNumberUtils.createRandomLowerLetterAndNumber(8) |
|
|
+ "." |
|
|
+ "." |
|
|
+ FilenameUtils.getExtension(image.getOriginalFilename()); |
|
|
+ FilenameUtils.getExtension(image.getOriginalFilename()); |
|
|
String url = fileService.uploadFile(objectName, image.getInputStream()); |
|
|
String url = aliyunFileService.uploadFile(objectName, image.getInputStream()); |
|
|
MiniStrayAnimalNoteMedia miniStrayAnimalNoteMedia = new MiniStrayAnimalNoteMedia(); |
|
|
MiniStrayAnimalNoteMedia miniStrayAnimalNoteMedia = new MiniStrayAnimalNoteMedia(); |
|
|
miniStrayAnimalNoteMedia.setUuid(UUID.randomUUID().toString()); |
|
|
miniStrayAnimalNoteMedia.setUuid(UUID.randomUUID().toString()); |
|
|
miniStrayAnimalNoteMedia.setNoteId(note.getId()); |
|
|
miniStrayAnimalNoteMedia.setNoteId(note.getId()); |
|
|
@ -117,7 +120,7 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M |
|
|
+ fileName |
|
|
+ fileName |
|
|
+ "." |
|
|
+ "." |
|
|
+ FilenameUtils.getExtension(video.getOriginalFilename()); |
|
|
+ FilenameUtils.getExtension(video.getOriginalFilename()); |
|
|
String url = fileService.uploadFile(objectName, video.getInputStream()); |
|
|
String url = aliyunFileService.uploadFile(objectName, video.getInputStream()); |
|
|
MiniStrayAnimalNoteMedia miniStrayAnimalNoteMedia = new MiniStrayAnimalNoteMedia(); |
|
|
MiniStrayAnimalNoteMedia miniStrayAnimalNoteMedia = new MiniStrayAnimalNoteMedia(); |
|
|
miniStrayAnimalNoteMedia.setUuid(UUID.randomUUID().toString()); |
|
|
miniStrayAnimalNoteMedia.setUuid(UUID.randomUUID().toString()); |
|
|
miniStrayAnimalNoteMedia.setNoteId(note.getId()); |
|
|
miniStrayAnimalNoteMedia.setNoteId(note.getId()); |
|
|
@ -140,7 +143,7 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M |
|
|
+ note.getId() + "/" |
|
|
+ note.getId() + "/" |
|
|
+ thumbnailFileName |
|
|
+ thumbnailFileName |
|
|
+ ".png"; |
|
|
+ ".png"; |
|
|
String thumbnailUrl = fileService.uploadFile(thumbnailObjectName, |
|
|
String thumbnailUrl = aliyunFileService.uploadFile(thumbnailObjectName, |
|
|
FileUtils.bufferedImageToInputStream(thumbnail, "png")); |
|
|
FileUtils.bufferedImageToInputStream(thumbnail, "png")); |
|
|
miniStrayAnimalNoteMedia.setThumbnailUrl(thumbnailUrl); |
|
|
miniStrayAnimalNoteMedia.setThumbnailUrl(thumbnailUrl); |
|
|
|
|
|
|
|
|
@ -174,22 +177,13 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M |
|
|
private MiniStrayAnimal saveAnimalInfo(StrayAnimalForm formData) { |
|
|
private MiniStrayAnimal saveAnimalInfo(StrayAnimalForm formData) { |
|
|
|
|
|
|
|
|
long currentTimeUnix = System.currentTimeMillis(); |
|
|
long currentTimeUnix = System.currentTimeMillis(); |
|
|
MiniStrayAnimal entity = new MiniStrayAnimal(); |
|
|
MiniStrayAnimal entity = miniStrayAnimalConverter.toEntity(formData); |
|
|
|
|
|
|
|
|
entity.setMiniUserId(SecurityUtils.getUserId()); |
|
|
entity.setMiniUserId(SecurityUtils.getUserId()); |
|
|
entity.setUuid(UUID.randomUUID().toString()); |
|
|
entity.setUuid(UUID.randomUUID().toString()); |
|
|
entity.setAnimalType(formData.getAnimalType().toLowerCase()); |
|
|
|
|
|
entity.setColor(formData.getColor()); |
|
|
|
|
|
if (formData.getSize() != null) { |
|
|
|
|
|
entity.setSize(formData.getSize().toLowerCase()); |
|
|
|
|
|
} |
|
|
|
|
|
entity.setStatus(formData.getStatus().toLowerCase()); |
|
|
|
|
|
entity.setCreateTimestamp(currentTimeUnix); |
|
|
entity.setCreateTimestamp(currentTimeUnix); |
|
|
entity.setCreateTime(new Date(currentTimeUnix)); |
|
|
entity.setCreateTime(new Date(currentTimeUnix)); |
|
|
entity.setCreateBy(SecurityUtils.getUserId()); |
|
|
entity.setCreateBy(SecurityUtils.getUserId()); |
|
|
entity.setProvince(formData.getProvince()); |
|
|
|
|
|
entity.setCity(formData.getCity()); |
|
|
|
|
|
entity.setDistrict(formData.getDistrict()); |
|
|
|
|
|
entity.setAddress(formData.getAddress()); |
|
|
|
|
|
|
|
|
|
|
|
handleLngLat(entity, formData.getLng(), formData.getLat()); |
|
|
handleLngLat(entity, formData.getLng(), formData.getLat()); |
|
|
|
|
|
|
|
|
@ -224,4 +218,55 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M |
|
|
"最多只能上传" + CommonConstants.STRAY_ANIMAL_VIDEO_NUM_LIMIT + "个视频"); |
|
|
"最多只能上传" + CommonConstants.STRAY_ANIMAL_VIDEO_NUM_LIMIT + "个视频"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void updateStrayAnimal(String uuid, StrayAnimalForm formData) { |
|
|
|
|
|
// 校验动物是否存在
|
|
|
|
|
|
MiniStrayAnimal animal = miniStrayAnimalMapper.selectOne( |
|
|
|
|
|
new LambdaQueryWrapper<MiniStrayAnimal>() |
|
|
|
|
|
.eq(MiniStrayAnimal::getUuid, uuid) |
|
|
|
|
|
.eq(MiniStrayAnimal::getDeleted, 0) |
|
|
|
|
|
); |
|
|
|
|
|
Assert.notNull(animal, "动物不存在"); |
|
|
|
|
|
|
|
|
|
|
|
long currentTimestamp = System.currentTimeMillis(); |
|
|
|
|
|
|
|
|
|
|
|
// 1. 更新流浪动物基本信息
|
|
|
|
|
|
updateAnimalInfo(animal.getId(), formData, currentTimestamp); |
|
|
|
|
|
// 3. 更新笔记信息`
|
|
|
|
|
|
updateNoteInfo(animal.getId(), formData, currentTimestamp); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void updateNoteInfo(Long animalId, StrayAnimalForm formData, long currentTimestamp) { |
|
|
|
|
|
//处理笔记
|
|
|
|
|
|
MiniStrayAnimalNote miniStrayAnimalNote = miniStrayAnimalNoteMapper.selectOne(new LambdaQueryWrapper<MiniStrayAnimalNote>() |
|
|
|
|
|
.eq(MiniStrayAnimalNote::getStrayAnimalId, animalId)); |
|
|
|
|
|
if (null != miniStrayAnimalNote){ |
|
|
|
|
|
LambdaUpdateWrapper<MiniStrayAnimalNote> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
|
|
updateWrapper.eq(MiniStrayAnimalNote::getId, miniStrayAnimalNote.getId()) |
|
|
|
|
|
.set(MiniStrayAnimalNote::getTitle, formData.getTitle()) |
|
|
|
|
|
.set(MiniStrayAnimalNote::getContent, formData.getContent()) |
|
|
|
|
|
.set(MiniStrayAnimalNote::getVisibility, formData.getVisibility()) |
|
|
|
|
|
.set(MiniStrayAnimalNote::getUpdateTimestamp, currentTimestamp) |
|
|
|
|
|
.set(MiniStrayAnimalNote::getUpdateBy, SecurityUtils.getUserId()) |
|
|
|
|
|
.set(MiniStrayAnimalNote::getUpdateTime, new Date(currentTimestamp)); |
|
|
|
|
|
|
|
|
|
|
|
miniStrayAnimalNoteMapper.update(null, updateWrapper); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void updateAnimalInfo(Long animalId, StrayAnimalForm formData, long currentTimestamp) { |
|
|
|
|
|
MiniStrayAnimal miniStrayAnimal = miniStrayAnimalConverter.toEntity(formData); |
|
|
|
|
|
|
|
|
|
|
|
miniStrayAnimal.setId(animalId); |
|
|
|
|
|
miniStrayAnimal.setUpdateTimestamp(currentTimestamp); |
|
|
|
|
|
miniStrayAnimal.setUpdateTime(new Date(currentTimestamp)); |
|
|
|
|
|
miniStrayAnimal.setUpdateBy(SecurityUtils.getUserId()); |
|
|
|
|
|
handleLngLat(miniStrayAnimal, formData.getLng(), formData.getLat()); |
|
|
|
|
|
|
|
|
|
|
|
miniStrayAnimalMapper.updateStrayAnimal(miniStrayAnimal); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|