Sfoglia il codice sorgente

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

liaoyitao 1 mese fa
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 118
     void saveSettings(@Param("autosaveTime") Integer autosaveTime,
119 119
                       @Param("movingSpeed") Integer movingSpeed,
120 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 233
     @PostMapping("/" + VERSION_V1 + "/share")
234 234
     public MessageBean<String> share(@RequestParam Integer zoneId,
235 235
                                      @RequestParam("shareUserCode") String shareUserCode,
236
+                                     @RequestParam("shareType") Integer shareType,
236 237
                                      HttpServletRequest request) {
237 238
         String authHeader = request.getHeader("Authorization");
238 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 243
     @Operation(
@@ -400,4 +401,16 @@ public class ZoneInfoController {
400 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 57
     @Schema(description = "接受状态")
58 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 43
     @Modifying
44 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 85
     @Modifying
86 86
     @Query(nativeQuery = true,
87 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 90
                 "from user_info where user_code = :userCode"
91 91
     )
92 92
     void share(@Param("zoneId") Integer zoneId,
93 93
                @Param("userCode") String userCode,
94 94
                @Param("shareCode") String shareCode,
95
-               @Param("sharedUserId") Integer sharedUserId);
95
+               @Param("sharedUserId") Integer sharedUserId,
96
+               @Param("shareType") Integer shareType);
96 97
 
97 98
     @Modifying
98 99
     @Query(nativeQuery = true,
@@ -194,7 +195,7 @@ public interface ZoneInfoRepository extends JpaRepository<ZoneInfo, Integer> {
194 195
                                           @Param("zoneId") Integer zoneId);
195 196
 
196 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 199
                     "where zi.zone_id = si.zone_id and si.shared_user_id = :userId " +
199 200
                     "and si.accept_status = true " +
200 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 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 292
         UserInfo shareUserInfo = userInfoRepository.findByUserCode(shareUserCode);
293 293
         if (Objects.isNull(shareUserInfo)) throw new RuntimeException("未能找到与该手机号码相关的账户,请确认号码无误");
294 294
         String shareCode = UUID.randomUUID().toString();
295 295
         List<ShareInfo> shareInfoList = shareInfoRepository.findByZoneIdAndSharedUserId(zoneId, shareUserInfo.getUserId());
296 296
         if (shareInfoList.size() > 0 && (shareTime(shareInfoList.get(0)) > System.currentTimeMillis())) throw new RuntimeException("该账户已分享过该作品");
297 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 299
         }else {
300
-            zoneInfoRepository.share(zoneId, userCode, shareCode, shareUserInfo.getUserId());
300
+            zoneInfoRepository.share(zoneId, userCode, shareCode, shareUserInfo.getUserId(), shareType);
301 301
         }
302 302
         UserInfo userInfo = userInfoRepository.findByUserCode(userCode);
303 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
 }