package com.ruoyi.service.impl; import java.util.*; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.domain.vo.PhotoStorageVO; import com.ruoyi.framework.websocket.WebSocketUsers; import com.ruoyi.service.UserPhotoStorageService; import com.ruoyi.web.request.UserPhotoStorageCreateRequest; import com.ruoyi.web.request.UserPhotoStorageListRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.mapper.UserPhotoStorageMapper; import com.ruoyi.domain.UserPhotoStorage; import org.springframework.transaction.annotation.Transactional; /** * 用户照片存储Service业务层处理 * * @author gxk * @date 2024-01-29 */ @Service @Transactional public class UserPhotoStorageServiceImpl extends ServiceImpl<UserPhotoStorageMapper, UserPhotoStorage> implements UserPhotoStorageService { @Autowired private UserPhotoStorageMapper userPhotoStorageMapper; /** * 查询用户照片存储列表 * * @param request 用户照片存储 * @return 用户照片存储 */ @Override public List<PhotoStorageVO> selectUserPhotoStorageList(UserPhotoStorageListRequest request) { List<UserPhotoStorage> userPhotoStorages = userPhotoStorageMapper.selectUserPhotoStorageList(request); // 创建一个VOList,用于返回数据 List<PhotoStorageVO> photoStorageVOList = new ArrayList<>(); // 创建一个hashMap,用于存储分类图片 HashMap<String, List<UserPhotoStorage>> photoStorageMap = new HashMap<>(); // 遍历userPhotoStorages,往photoStorageMap里添加数据 for (UserPhotoStorage photoStorage : userPhotoStorages) { // 计算出当前图片对象的创建时间: yyyy-MM-dd String createTime = DateUtils.dateTime(photoStorage.getCreateTime()); // Map里存在则取出value然后添加新的对象;则直接添加新的key-value if (!photoStorageMap.containsKey(createTime)) { List<UserPhotoStorage> photoStorageList = new ArrayList<>(); photoStorageList.add(photoStorage); photoStorageMap.put(createTime, photoStorageList); } else { photoStorageMap.get(createTime).add(photoStorage); } } // 遍历photoStorageMap,将value赋值给photoStorageVOList for (Map.Entry<String, List<UserPhotoStorage>> entry : photoStorageMap.entrySet()) { // entry.getValue()以时间降序排列 entry.getValue().sort(Comparator.comparing(UserPhotoStorage::getCreateTime).reversed()); PhotoStorageVO photoStorageVO = PhotoStorageVO.builder() .createTime(entry.getKey()) .userPhotoStorageList(entry.getValue()).build(); photoStorageVOList.add(photoStorageVO); } // photoStorageVOList以创建时间降序排列 photoStorageVOList.sort(Comparator.comparing(PhotoStorageVO::getCreateTime).reversed()); return photoStorageVOList; } /** * 新增用户照片存储 * * @param request 用户照片存储 * @return 结果 */ @Override public int insertUserPhotoStorage(UserPhotoStorageCreateRequest request) { LoginUser loginUser = SecurityUtils.getLoginUser(); UserPhotoStorage userPhotoStorage = UserPhotoStorage.builder() .userId(loginUser.getUserId()) .username(loginUser.getUsername()) .path(request.getPath()) .createTime(DateUtils.getNowDate()) .build(); WebSocketUsers.sendMessageToUserByUserId(loginUser.getUserId(), request.getPath()); return userPhotoStorageMapper.insert(userPhotoStorage); } /** * 修改用户照片存储 * * @param userPhotoStorage 用户照片存储 * @return 结果 */ @Override public int updateUserPhotoStorage(UserPhotoStorage userPhotoStorage) { return userPhotoStorageMapper.updateUserPhotoStorage(userPhotoStorage); } }