Procházet zdrojové kódy

关联用户信息更新

xiongzhu před 4 roky
rodič
revize
d62d6afe2b

+ 32 - 0
src/main/java/com/izouma/nineth/repo/UserRepo.java

@@ -51,4 +51,36 @@ public interface UserRepo extends JpaRepository<User, Long>, JpaSpecificationExe
     @Query(value = "update user set followers = (select count(*) from follow " +
             "where follow.follow_user_id = ?1) where user.id = ?1", nativeQuery = true)
     void updateFollowers(Long userId);
+
+    @Transactional
+    @Modifying
+    @Query(value = "update collection_info join user on collection_info.minter_id = user.id " +
+            "set collection_info.minter        = user.nickname, " +
+            "    collection_info.minter_avatar = user.avatar " +
+            "where user.id = ?1", nativeQuery = true)
+    void updateMinterForCollection(Long userId);
+
+    @Transactional
+    @Modifying
+    @Query(value = "update collection_info join user on collection_info.owner_id = user.id " +
+            "set collection_info.owner        = user.nickname, " +
+            "    collection_info.owner_avatar = user.avatar " +
+            "where user.id = ?1", nativeQuery = true)
+    void updateOwnerForCollection(Long userId);
+
+    @Transactional
+    @Modifying
+    @Query(value = "update order_info join user on order_info.minter_id = user.id " +
+            "set order_info.minter        = user.nickname, " +
+            "    order_info.minter_avatar = user.avatar " +
+            "where user.id = ?1", nativeQuery = true)
+    void updateMinterForOrder(Long userId);
+
+    @Transactional
+    @Modifying
+    @Query(value = "update asset join user on asset.minter_id = user.id " +
+            "set asset.minter        = user.nickname, " +
+            "    asset.minter_avatar = user.avatar " +
+            "where user.id = ?1", nativeQuery = true)
+    void updateMinterForAsset(Long userId);
 }

+ 6 - 1
src/main/java/com/izouma/nineth/web/UserController.java

@@ -60,7 +60,12 @@ public class UserController extends BaseController {
         if (user.getId() != null) {
             User orig = userRepo.findById(user.getId()).orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, user);
-            return userRepo.save(orig);
+            orig = userRepo.save(orig);
+            userRepo.updateMinterForCollection(orig.getId());
+            userRepo.updateOwnerForCollection(orig.getId());
+            userRepo.updateMinterForOrder(orig.getId());
+            userRepo.updateMinterForAsset(orig.getId());
+            return orig;
         }
         return userRepo.save(user);
     }