sunkean преди 3 години
родител
ревизия
acb0bec3d7

+ 2 - 0
src/main/java/com/izouma/nineth/dto/MetaUserFriendApplyDTO.java

@@ -10,6 +10,8 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 public class MetaUserFriendApplyDTO {
 
+    private Long metaUserFriendApplyRecordId;
+
     private Long userId;
 
     private String nickname;

+ 3 - 3
src/main/java/com/izouma/nineth/repo/MetaUserFriendApplyRecordRepo.java

@@ -7,16 +7,16 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 
 import java.util.List;
+import java.util.Map;
 
 
 public interface MetaUserFriendApplyRecordRepo extends JpaRepository<MetaUserFriendApplyRecord, Long>, JpaSpecificationExecutor<MetaUserFriendApplyRecord> {
 
-    @Query("select m.userId from MetaUserFriendApplyRecord m where m.friendId = ?1 and m.operateType = 'APPLY' and m.del = false")
-    List<Long> findApplyUserIds(Long friendId);
+    @Query(value = "select m.id as metaUserFriendApplyRecordId, m.user_id as userId from meta_user_friend_apply_record m where m.friend_id = ?1 and m.operate_type = 'APPLY' and m.del = false", nativeQuery = true)
+    List<Map<String, String>> findApplyUserIds(Long friendId);
 
     List<MetaUserFriendApplyRecord> findByFriendIdAndOperateTypeAndDel(Long friendId, MetaUserFriendOperateType operateType, boolean del);
 
     MetaUserFriendApplyRecord findByUserIdAndFriendIdAndOperateTypeAndDel(Long userId, Long friendId, MetaUserFriendOperateType operateType, boolean del);
 
-    MetaUserFriendApplyRecord findByUserIdAndFriendIdAndDel(Long userId, Long friendId, boolean del);
 }

+ 24 - 21
src/main/java/com/izouma/nineth/service/MetaUserFriendService.java

@@ -1,9 +1,7 @@
 package com.izouma.nineth.service;
 
-import com.izouma.nineth.domain.MetaUserFriend;
-import com.izouma.nineth.domain.MetaUserFriendApplyRecord;
-import com.izouma.nineth.domain.MetaUserFriendOperateRecord;
-import com.izouma.nineth.domain.User;
+import com.alibaba.fastjson.JSONArray;
+import com.izouma.nineth.domain.*;
 import com.izouma.nineth.dto.*;
 import com.izouma.nineth.enums.MetaUserFriendOperateType;
 import com.izouma.nineth.repo.MetaUserFriendApplyRecordRepo;
@@ -19,6 +17,7 @@ import javax.transaction.Transactional;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Service
@@ -36,8 +35,15 @@ public class MetaUserFriendService {
         MetaUserFriendAndApplyDTO metaUserFriendAndApplyDTO = new MetaUserFriendAndApplyDTO();
         List<Long> friendIds = metaUserFriendRepo.findFriendIdByUserId(userId);
         setMetaUserFriendDTOS(metaUserFriendAndApplyDTO, friendIds);
-        List<Long> applyUserIds = metaUserFriendApplyRecordRepo.findApplyUserIds(userId);
-        setMetaUserFriendApplyDTOS(metaUserFriendAndApplyDTO, applyUserIds);
+        List<Map<String, String>> map = metaUserFriendApplyRecordRepo.findApplyUserIds(userId);
+        if (CollectionUtils.isEmpty(map)) {
+            metaUserFriendAndApplyDTO.setMetaUserFriendApplyDTOS(new ArrayList<>());
+            return MetaRestResult.returnSuccess(metaUserFriendAndApplyDTO);
+        }
+        JSONArray jsonArray = new JSONArray();
+        jsonArray.addAll(map);
+        List<MetaUserFriendApplyDTO> metaUserFriendApplyDTOS = jsonArray.toJavaList(MetaUserFriendApplyDTO.class);
+        setMetaUserFriendApplyDTOS(metaUserFriendAndApplyDTO, metaUserFriendApplyDTOS);
         return MetaRestResult.returnSuccess(metaUserFriendAndApplyDTO);
     }
 
@@ -56,16 +62,16 @@ public class MetaUserFriendService {
         metaUserFriendAndApplyDTO.setMetaUserFriendDTOS(metaUserFriendDTOS);
     }
 
-    private void setMetaUserFriendApplyDTOS(MetaUserFriendAndApplyDTO metaUserFriendAndApplyDTO, List<Long> applyUserIds) {
-        List<MetaUserFriendApplyDTO> metaUserFriendApplyDTOS = new ArrayList<>();
-        if (CollectionUtils.isEmpty(applyUserIds)) {
+    private void setMetaUserFriendApplyDTOS(MetaUserFriendAndApplyDTO metaUserFriendAndApplyDTO, List<MetaUserFriendApplyDTO> metaUserFriendApplyDTOS) {
+        if (CollectionUtils.isEmpty(metaUserFriendApplyDTOS)) {
             metaUserFriendAndApplyDTO.setMetaUserFriendApplyDTOS(metaUserFriendApplyDTOS);
             return;
         }
-        applyUserIds.forEach(userId -> {
-            User user = userRepo.findById(userId).orElse(null);
+        metaUserFriendApplyDTOS.forEach(metaUserFriendApplyDTO -> {
+            User user = userRepo.findById(metaUserFriendApplyDTO.getUserId()).orElse(null);
             if (Objects.nonNull(user)) {
-                metaUserFriendApplyDTOS.add(new MetaUserFriendApplyDTO(userId, user.getNickname(), user.getAvatar()));
+                metaUserFriendApplyDTO.setAvatar(user.getAvatar());
+                metaUserFriendApplyDTO.setNickname(user.getNickname());
             }
         });
         metaUserFriendAndApplyDTO.setMetaUserFriendApplyDTOS(metaUserFriendApplyDTOS);
@@ -99,10 +105,8 @@ public class MetaUserFriendService {
         return metaUserFriendApplyRecordService.apply(metaUserFriendApplyRecord);
     }
 
-    public MetaRestResult<Void> delApply(Long userId) {
-        Long friendId = SecurityUtils.getAuthenticatedUser().getId();
-        // 判断申请记录
-        MetaUserFriendApplyRecord metaUserFriendApplyRecord = metaUserFriendApplyRecordRepo.findByUserIdAndFriendIdAndDel(userId, friendId, false);
+    public MetaRestResult<Void> delApply(Long applyRecordId) {
+        MetaUserFriendApplyRecord metaUserFriendApplyRecord = metaUserFriendApplyRecordRepo.findById(applyRecordId).orElse(null);
         if (Objects.isNull(metaUserFriendApplyRecord)) {
             return MetaRestResult.returnError("申请单不存在");
         }
@@ -116,13 +120,12 @@ public class MetaUserFriendService {
     }
 
     @Transactional
-    public MetaRestResult<Void> operatingApply(Long userId, MetaUserFriendOperateType operateType) {
-        if (Objects.isNull(userId)) {
-            return MetaRestResult.returnError("Illegal parameter : userId can not be null");
+    public MetaRestResult<Void> operatingApply(Long metaUserFriendApplyRecordId, MetaUserFriendOperateType operateType) {
+        if (Objects.isNull(metaUserFriendApplyRecordId)) {
+            return MetaRestResult.returnError("Illegal parameter : metaUserFriendApplyRecordId can not be null");
         }
-        Long friendId = SecurityUtils.getAuthenticatedUser().getId();
         // 判断申请记录
-        MetaUserFriendApplyRecord metaUserFriendApplyRecord = metaUserFriendApplyRecordRepo.findByUserIdAndFriendIdAndDel(userId, friendId, false);
+        MetaUserFriendApplyRecord metaUserFriendApplyRecord = metaUserFriendApplyRecordRepo.findById(metaUserFriendApplyRecordId).orElse(null);
         if (Objects.isNull(metaUserFriendApplyRecord)) {
             return MetaRestResult.returnError("暂无申请信息");
         }

+ 9 - 9
src/main/java/com/izouma/nineth/web/MetaUserFriendController.java

@@ -38,19 +38,19 @@ public class MetaUserFriendController extends BaseController {
         return metaUserFriendService.apply(metaUserFriendApplyRecord);
     }
 
-    @PostMapping("{userId}/delApply")
-    public MetaRestResult<Void> delApply(@PathVariable Long userId) {
-        return metaUserFriendService.delApply(userId);
+    @PostMapping("{metaUserFriendApplyRecordId}/delApply")
+    public MetaRestResult<Void> delApply(@PathVariable Long metaUserFriendApplyRecordId) {
+        return metaUserFriendService.delApply(metaUserFriendApplyRecordId);
     }
 
-    @PostMapping("/{userId}/pass")
-    public MetaRestResult<Void> pass(@PathVariable Long userId) {
-        return metaUserFriendService.operatingApply(userId, MetaUserFriendOperateType.PASS);
+    @PostMapping("/{metaUserFriendApplyRecordId}/pass")
+    public MetaRestResult<Void> pass(@PathVariable Long metaUserFriendApplyRecordId) {
+        return metaUserFriendService.operatingApply(metaUserFriendApplyRecordId, MetaUserFriendOperateType.PASS);
     }
 
-    @PostMapping("/{userId}/refuse")
-    public MetaRestResult<Void> refuse(@PathVariable Long userId) {
-        return metaUserFriendService.operatingApply(userId, MetaUserFriendOperateType.REFUSE);
+    @PostMapping("/{metaUserFriendApplyRecordId}/refuse")
+    public MetaRestResult<Void> refuse(@PathVariable Long metaUserFriendApplyRecordId) {
+        return metaUserFriendService.operatingApply(metaUserFriendApplyRecordId, MetaUserFriendOperateType.REFUSE);
     }
 
     @PostMapping("/{friendId}/del")