Browse Source

fix: 分享类型,分享人列表

liaoyitao 1 month ago
parent
commit
80f1923d32

+ 8 - 0
src/main/java/com/lqkj/link/module/authority/repository/UserInfoRepository.java

@@ -118,4 +118,12 @@ public interface UserInfoRepository extends JpaRepository<UserInfo, Integer> {
118
     void saveSettings(@Param("autosaveTime") Integer autosaveTime,
118
     void saveSettings(@Param("autosaveTime") Integer autosaveTime,
119
                       @Param("movingSpeed") Integer movingSpeed,
119
                       @Param("movingSpeed") Integer movingSpeed,
120
                       @Param("userCode") String userCode);
120
                       @Param("userCode") String userCode);
121
+
122
+
123
+    @Query(nativeQuery = true,
124
+            value = "SELECT ui.*, si.share_type FROM user_info ui " +
125
+                    "LEFT JOIN share_info si on si.user_id = ui.user_id or si.shared_user_id = ui.user_id " +
126
+                    "WHERE si.zone_id = ?1"
127
+    )
128
+    List<Map<String, Object>> viewShareUser(Integer zoneId);
121
 }
129
 }

+ 14 - 1
src/main/java/com/lqkj/link/module/zone/controller/ZoneInfoController.java

@@ -233,10 +233,11 @@ public class ZoneInfoController {
233
     @PostMapping("/" + VERSION_V1 + "/share")
233
     @PostMapping("/" + VERSION_V1 + "/share")
234
     public MessageBean<String> share(@RequestParam Integer zoneId,
234
     public MessageBean<String> share(@RequestParam Integer zoneId,
235
                                      @RequestParam("shareUserCode") String shareUserCode,
235
                                      @RequestParam("shareUserCode") String shareUserCode,
236
+                                     @RequestParam("shareType") Integer shareType,
236
                                      HttpServletRequest request) {
237
                                      HttpServletRequest request) {
237
         String authHeader = request.getHeader("Authorization");
238
         String authHeader = request.getHeader("Authorization");
238
         String userCode = jwtService.decryptUsernameWithHeader(authHeader);
239
         String userCode = jwtService.decryptUsernameWithHeader(authHeader);
239
-        return MessageBean.ok(zoneInfoService.share(zoneId, userCode, shareUserCode), "分享");
240
+        return MessageBean.ok(zoneInfoService.share(zoneId, userCode, shareUserCode, shareType), "分享");
240
     }
241
     }
241
 
242
 
242
     @Operation(
243
     @Operation(
@@ -400,4 +401,16 @@ public class ZoneInfoController {
400
         return MessageBean.ok(null, "接受分享");
401
         return MessageBean.ok(null, "接受分享");
401
     }
402
     }
402
 
403
 
404
+
405
+    /**
406
+     * 查看分享用户
407
+     * @param zoneId
408
+     * @return
409
+     */
410
+    @PostMapping("/viewShareUser")
411
+    public MessageBean viewShareUser(@RequestParam Integer zoneId){
412
+
413
+        return MessageBean.ok(zoneInfoService.viewShareUser(zoneId), "查看分享用户");
414
+    }
415
+
403
 }
416
 }

+ 4 - 0
src/main/java/com/lqkj/link/module/zone/domain/ShareInfo.java

@@ -57,4 +57,8 @@ public class ShareInfo {
57
     @Schema(description = "接受状态")
57
     @Schema(description = "接受状态")
58
     private Boolean acceptStatus;
58
     private Boolean acceptStatus;
59
 
59
 
60
+    @Column(name = "share_type")
61
+    @Schema(description = "分享类型: 1 可查看, 2:可编辑")
62
+    private Integer shareType;
63
+
60
 }
64
 }

+ 2 - 2
src/main/java/com/lqkj/link/module/zone/repository/ShareInfoRepository.java

@@ -42,7 +42,7 @@ public interface ShareInfoRepository extends JpaRepository<ShareInfo, Integer> {
42
 
42
 
43
     @Modifying
43
     @Modifying
44
     @Query(nativeQuery = true,
44
     @Query(nativeQuery = true,
45
-            value = "UPDATE share_info SET share_time = NOW(), accept_status = null WHERE zone_id = ?1 AND shared_user_id = ?2"
45
+            value = "UPDATE share_info SET share_time = NOW(), accept_status = null, share_type = ?3 WHERE zone_id = ?1 AND shared_user_id = ?2"
46
     )
46
     )
47
-    void updateShareTime(Integer zoneId, Integer userId);
47
+    void updateShareTime(Integer zoneId, Integer userId, Integer shareType);
48
 }
48
 }

+ 5 - 4
src/main/java/com/lqkj/link/module/zone/repository/ZoneInfoRepository.java

@@ -85,14 +85,15 @@ public interface ZoneInfoRepository extends JpaRepository<ZoneInfo, Integer> {
85
     @Modifying
85
     @Modifying
86
     @Query(nativeQuery = true,
86
     @Query(nativeQuery = true,
87
         value = "with t1 as (update zone_info set share_count = coalesce(share_count, 0) + 1 where zone_id = :zoneId)" +
87
         value = "with t1 as (update zone_info set share_count = coalesce(share_count, 0) + 1 where zone_id = :zoneId)" +
88
-                "insert into share_info(record_id, zone_id, user_id, share_code, share_time, can_use, shared_user_id) " +
89
-                "select nextval('share_info_record_id_seq'), :zoneId, user_id, :shareCode, now(), 7 , :sharedUserId " +
88
+                "insert into share_info(record_id, zone_id, user_id, share_code, share_time, can_use, shared_user_id, share_type) " +
89
+                "select nextval('share_info_record_id_seq'), :zoneId, user_id, :shareCode, now(), 7 , :sharedUserId, :shareType " +
90
                 "from user_info where user_code = :userCode"
90
                 "from user_info where user_code = :userCode"
91
     )
91
     )
92
     void share(@Param("zoneId") Integer zoneId,
92
     void share(@Param("zoneId") Integer zoneId,
93
                @Param("userCode") String userCode,
93
                @Param("userCode") String userCode,
94
                @Param("shareCode") String shareCode,
94
                @Param("shareCode") String shareCode,
95
-               @Param("sharedUserId") Integer sharedUserId);
95
+               @Param("sharedUserId") Integer sharedUserId,
96
+               @Param("shareType") Integer shareType);
96
 
97
 
97
     @Modifying
98
     @Modifying
98
     @Query(nativeQuery = true,
99
     @Query(nativeQuery = true,
@@ -194,7 +195,7 @@ public interface ZoneInfoRepository extends JpaRepository<ZoneInfo, Integer> {
194
                                           @Param("zoneId") Integer zoneId);
195
                                           @Param("zoneId") Integer zoneId);
195
 
196
 
196
     @Query(nativeQuery = true,
197
     @Query(nativeQuery = true,
197
-            value = "select zi.*, ui.display_name from zone_info zi, share_info si, user_info ui " +
198
+            value = "select zi.*, ui.display_name, si.share_type from zone_info zi, share_info si, user_info ui " +
198
                     "where zi.zone_id = si.zone_id and si.shared_user_id = :userId " +
199
                     "where zi.zone_id = si.zone_id and si.shared_user_id = :userId " +
199
                     "and si.accept_status = true " +
200
                     "and si.accept_status = true " +
200
                     "and zi.zone_name like concat('%', :name, '%') " +
201
                     "and zi.zone_name like concat('%', :name, '%') " +

+ 18 - 3
src/main/java/com/lqkj/link/module/zone/service/ZoneInfoService.java

@@ -288,16 +288,16 @@ public class ZoneInfoService {
288
     }
288
     }
289
 
289
 
290
     @Transactional
290
     @Transactional
291
-    public String share(Integer zoneId, String userCode, String shareUserCode) {
291
+    public String share(Integer zoneId, String userCode, String shareUserCode, Integer shareType) {
292
         UserInfo shareUserInfo = userInfoRepository.findByUserCode(shareUserCode);
292
         UserInfo shareUserInfo = userInfoRepository.findByUserCode(shareUserCode);
293
         if (Objects.isNull(shareUserInfo)) throw new RuntimeException("未能找到与该手机号码相关的账户,请确认号码无误");
293
         if (Objects.isNull(shareUserInfo)) throw new RuntimeException("未能找到与该手机号码相关的账户,请确认号码无误");
294
         String shareCode = UUID.randomUUID().toString();
294
         String shareCode = UUID.randomUUID().toString();
295
         List<ShareInfo> shareInfoList = shareInfoRepository.findByZoneIdAndSharedUserId(zoneId, shareUserInfo.getUserId());
295
         List<ShareInfo> shareInfoList = shareInfoRepository.findByZoneIdAndSharedUserId(zoneId, shareUserInfo.getUserId());
296
         if (shareInfoList.size() > 0 && (shareTime(shareInfoList.get(0)) > System.currentTimeMillis())) throw new RuntimeException("该账户已分享过该作品");
296
         if (shareInfoList.size() > 0 && (shareTime(shareInfoList.get(0)) > System.currentTimeMillis())) throw new RuntimeException("该账户已分享过该作品");
297
         else if (shareInfoList.size() > 0 && (shareTime(shareInfoList.get(0)) < System.currentTimeMillis())) {
297
         else if (shareInfoList.size() > 0 && (shareTime(shareInfoList.get(0)) < System.currentTimeMillis())) {
298
-            shareInfoRepository.updateShareTime(zoneId, shareUserInfo.getUserId());
298
+            shareInfoRepository.updateShareTime(zoneId, shareUserInfo.getUserId(), shareType);
299
         }else {
299
         }else {
300
-            zoneInfoRepository.share(zoneId, userCode, shareCode, shareUserInfo.getUserId());
300
+            zoneInfoRepository.share(zoneId, userCode, shareCode, shareUserInfo.getUserId(), shareType);
301
         }
301
         }
302
         UserInfo userInfo = userInfoRepository.findByUserCode(userCode);
302
         UserInfo userInfo = userInfoRepository.findByUserCode(userCode);
303
         NoticeInfo noticeInfo = new NoticeInfo();
303
         NoticeInfo noticeInfo = new NoticeInfo();
@@ -497,4 +497,19 @@ public class ZoneInfoService {
497
 
497
 
498
 
498
 
499
     }
499
     }
500
+
501
+
502
+    /**
503
+     * 查看分享用户
504
+     * @param zoneId
505
+     * @return
506
+     */
507
+    public List<Map<String, Object>> viewShareUser(Integer zoneId) {
508
+        var map = userInfoRepository.viewShareUser(zoneId);
509
+        return map.stream().map(m -> {
510
+            var mutableMap = new HashMap<>(m);
511
+            mutableMap.put("user_code", PhoneUtils.encryptPhoneNumber((String) mutableMap.get("user_code")));
512
+            return mutableMap;
513
+        }).collect(Collectors.toList());
514
+    }
500
 }
515
 }