From 8ea6a7dd1fcdbd4e22c564ed63a5a8023510161a Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期三, 14 十月 2026 08:56:45 +0800
Subject: [PATCH] feat: 新增实名认证、企业认证、我的邀请与头像上传功能

---
 hugray-server/ruoyi-modules/ruoyi-user/src/test/java/com/ruoyi/user/service/impl/AccountUserServiceImplTest.java |   78 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/hugray-server/ruoyi-modules/ruoyi-user/src/test/java/com/ruoyi/user/service/impl/AccountUserServiceImplTest.java b/hugray-server/ruoyi-modules/ruoyi-user/src/test/java/com/ruoyi/user/service/impl/AccountUserServiceImplTest.java
index e638e85..5aff6da 100644
--- a/hugray-server/ruoyi-modules/ruoyi-user/src/test/java/com/ruoyi/user/service/impl/AccountUserServiceImplTest.java
+++ b/hugray-server/ruoyi-modules/ruoyi-user/src/test/java/com/ruoyi/user/service/impl/AccountUserServiceImplTest.java
@@ -140,6 +140,7 @@
         member.setPhone("13355555555");
         member.setAvatar("https://cdn.example.com/a.png");
         member.setSystemLevel(MemberLevelEnum.L3.getCode());
+        member.setAuthStatus("2");
         EarningSummaryVo summary = new EarningSummaryVo(1000L, 40000L, 12800000L);
         when(accountUserMapper.selectAccountUserById(66L)).thenReturn(member);
         when(accountEarningRecordMapper.selectEarningSummary(66L)).thenReturn(summary);
@@ -151,6 +152,8 @@
         assertEquals("133****5555", vo.getPhone());
         assertEquals("https://cdn.example.com/a.png", vo.getAvatar());
         assertEquals(MemberLevelEnum.L3.getCode(), vo.getMemberLevel());
+        // 认证状态原样下发,供个人中心「实名认证」行徽标回显
+        assertEquals("2", vo.getAuthStatus());
         assertEquals(1000L, vo.getEarnings().getToday());
         assertEquals(40000L, vo.getEarnings().getMonth());
         assertEquals(12800000L, vo.getEarnings().getTotal());
@@ -209,6 +212,21 @@
         assertFallbackLevel("L9", MemberLevelEnum.C.getCode());
     }
 
+    @Test
+    @DisplayName("认证状态为空时应兜底为未认证(0)")
+    void getAccountUserInfo_shouldFallbackNoneAuthStatus_whenBlank()
+    {
+        AccountUser member = new AccountUser();
+        member.setUserId(66L);
+        member.setSystemLevel(MemberLevelEnum.C.getCode());
+        when(accountUserMapper.selectAccountUserById(66L)).thenReturn(member);
+        when(accountEarningRecordMapper.selectEarningSummary(66L)).thenReturn(EarningSummaryVo.zero());
+
+        AccountUserInfoVo vo = accountUserService.getAccountUserInfo(66L);
+
+        assertEquals("0", vo.getAuthStatus());
+    }
+
     /**
      * 校验不同等级取值下的等级兜底结果
      *
@@ -227,4 +245,64 @@
 
         assertEquals(expectedLevel, vo.getMemberLevel());
     }
+
+    @Test
+    @DisplayName("更新头像时应只写入 avatar 列")
+    void updateAvatar_shouldUpdateAvatar_whenValid()
+    {
+        when(accountUserMapper.updateUserAvatar(any(AccountUser.class))).thenReturn(1);
+
+        accountUserService.updateAvatar(66L, "https://cdn.example.com/new.png");
+
+        ArgumentCaptor<AccountUser> captor = ArgumentCaptor.forClass(AccountUser.class);
+        verify(accountUserMapper).updateUserAvatar(captor.capture());
+        assertEquals(66L, captor.getValue().getUserId());
+        assertEquals("https://cdn.example.com/new.png", captor.getValue().getAvatar());
+    }
+
+    @Test
+    @DisplayName("头像地址为空时应抛出提示且不落库")
+    void updateAvatar_shouldThrow_whenAvatarBlank()
+    {
+        ServiceException ex = assertThrows(ServiceException.class,
+            () -> accountUserService.updateAvatar(66L, ""));
+
+        assertEquals("头像地址不能为空", ex.getMessage());
+        verify(accountUserMapper, never()).updateUserAvatar(any(AccountUser.class));
+    }
+
+    @Test
+    @DisplayName("头像地址超长时应抛出提示且不落库")
+    void updateAvatar_shouldThrow_whenAvatarTooLong()
+    {
+        String longUrl = "a".repeat(256);
+
+        ServiceException ex = assertThrows(ServiceException.class,
+            () -> accountUserService.updateAvatar(66L, longUrl));
+
+        assertEquals("头像地址过长", ex.getMessage());
+        verify(accountUserMapper, never()).updateUserAvatar(any(AccountUser.class));
+    }
+
+    @Test
+    @DisplayName("会员不存在(影响行数为 0)时应抛出更新失败")
+    void updateAvatar_shouldThrow_whenMemberNotFound()
+    {
+        when(accountUserMapper.updateUserAvatar(any(AccountUser.class))).thenReturn(0);
+
+        ServiceException ex = assertThrows(ServiceException.class,
+            () -> accountUserService.updateAvatar(66L, "https://cdn.example.com/new.png"));
+
+        assertEquals("更新头像失败", ex.getMessage());
+    }
+
+    @Test
+    @DisplayName("会员ID为空时应抛出更新失败")
+    void updateAvatar_shouldThrow_whenUserIdNull()
+    {
+        ServiceException ex = assertThrows(ServiceException.class,
+            () -> accountUserService.updateAvatar(null, "https://cdn.example.com/new.png"));
+
+        assertEquals("更新头像失败", ex.getMessage());
+    }
 }

--
Gitblit v1.7.1