diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs b/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs
index 44513d9..0acec61 100644
--- a/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs
+++ b/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs
@@ -8,7 +8,7 @@ using Microsoft.Extensions.Logging;
namespace MiAssessment.Core.Services;
///
-/// 用户服务实现
+/// 锟矫伙拷锟斤拷锟斤拷实锟斤拷
///
public class UserService : BaseService, IUserService
{
@@ -59,7 +59,7 @@ public class UserService : BaseService, IUserService
if (dto == null)
throw new ArgumentNullException(nameof(dto));
- // 生成唯一UID
+ // 锟斤拷锟斤拷唯一UID
var uid = await GenerateUidAsync();
var user = new User
@@ -135,27 +135,20 @@ public class UserService : BaseService, IUserService
Headimg = user.Avatar,
Mobile = maskedMobile,
MobileIs = mobileIs,
- Money = 0, // 业务字段已移除,返回默认值
- Money2 = 0, // 业务字段已移除,返回默认值
- Integral = 0, // 业务字段已移除,返回默认值
- Score = 0, // 业务字段已移除,返回默认值
- Vip = 0, // 业务字段已移除,返回默认值
- VipImgurl = null, // 业务字段已移除
- Coupon = 0, // 优惠券功能已移除,返回0
- Day = registrationDays,
- QuanYiLevel = new QuanYiLevelDto { Level = 0, Cha = -1, Jindu = 0 } // 权益等级功能已移除
+ Vip = 0, // 鐢ㄦ埛绛夌骇锛屽緟鎺ュ叆涓氬姟閫昏緫
+ Day = registrationDays
};
}
///
public Task CalculateVipLevelAsync(long userId, int currentVip)
{
- // VIP等级计算功能已移除,返回0
+ // VIP锟饺硷拷锟斤拷锟姐功锟斤拷锟斤拷锟狡筹拷锟斤拷锟斤拷锟斤拷0
return Task.FromResult(0);
}
///
- /// 生成6位唯一用户UID
+ /// 锟斤拷锟斤拷6位唯一锟矫伙拷UID
///
private async Task GenerateUidAsync()
{
@@ -167,7 +160,7 @@ public class UserService : BaseService, IUserService
if (!exists)
return uid;
}
- // 兜底:使用时间戳后6位
+ // 锟斤拷锟阶o拷使锟斤拷时锟斤拷锟斤拷锟6位
return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString()[^6..];
}
diff --git a/server/MiAssessment/src/MiAssessment.Model/Models/Auth/UserInfoDto.cs b/server/MiAssessment/src/MiAssessment.Model/Models/Auth/UserInfoDto.cs
index 8505c75..943c4b6 100644
--- a/server/MiAssessment/src/MiAssessment.Model/Models/Auth/UserInfoDto.cs
+++ b/server/MiAssessment/src/MiAssessment.Model/Models/Auth/UserInfoDto.cs
@@ -1,103 +1,47 @@
namespace MiAssessment.Model.Models.Auth;
///
-/// 用户信息DTO
+/// 鐢ㄦ埛淇℃伅DTO
///
public class UserInfoDto
{
///
- /// 用户ID
+ /// 鐢ㄦ埛ID
///
public long Id { get; set; }
///
- /// 用户唯一标识
+ /// 鐢ㄦ埛鍞竴鏍囪瘑
///
public string? Uid { get; set; }
///
- /// 昵称
+ /// 鏄电О
///
public string? Nickname { get; set; }
///
- /// 头像URL
+ /// 澶村儚URL
///
public string? Headimg { get; set; }
///
- /// 脱敏后的手机号(格式:138****8000)
+ /// 鑴辨晱鎵嬫満鍙凤紙鏍煎紡锛138****8000锛
///
public string? Mobile { get; set; }
///
- /// 是否绑定手机号:0否 1是
+ /// 鏄惁缁戞墜鏈猴紙0鍚 1鏄級
///
public int MobileIs { get; set; }
///
- /// 账户余额
- ///
- public decimal Money { get; set; }
-
- ///
- /// 余额2/积分2
- ///
- public decimal Money2 { get; set; }
-
- ///
- /// 积分
- ///
- public decimal Integral { get; set; }
-
- ///
- /// 评分
- ///
- public decimal Score { get; set; }
-
- ///
- /// VIP等级
+ /// 鐢ㄦ埛绛夌骇锛1鏅氱敤鎴 2鍚堜紮浜 3娓犻亾鍚堜紮浜猴級
///
public int Vip { get; set; }
///
- /// VIP等级图片URL
- ///
- public string? VipImgurl { get; set; }
-
- ///
- /// 优惠券数量
- ///
- public int Coupon { get; set; }
-
- ///
- /// 注册天数
+ /// 娉ㄥ唽澶╂暟
///
public int Day { get; set; }
-
- ///
- /// 权益等级信息
- ///
- public QuanYiLevelDto? QuanYiLevel { get; set; }
-}
-
-///
-/// 权益等级DTO
-///
-public class QuanYiLevelDto
-{
- ///
- /// 当前等级
- ///
- public int Level { get; set; }
-
- ///
- /// 距离下一级还差多少欧气值,-1表示已满级
- ///
- public int Cha { get; set; }
-
- ///
- /// 当前等级进度百分比 (0-100)
- ///
- public int Jindu { get; set; }
}
diff --git a/server/MiAssessment/tests/MiAssessment.Tests/Services/UserServicePropertyTests.cs b/server/MiAssessment/tests/MiAssessment.Tests/Services/UserServicePropertyTests.cs
index 238fa7f..49f5252 100644
--- a/server/MiAssessment/tests/MiAssessment.Tests/Services/UserServicePropertyTests.cs
+++ b/server/MiAssessment/tests/MiAssessment.Tests/Services/UserServicePropertyTests.cs
@@ -66,7 +66,7 @@ public class UserServicePropertyTests
///
/// Property 9: 鐢ㄦ埛淇℃伅瀹屾暣鎬
/// For any user, GetUserInfoAsync should return complete information including:
- /// - All required fields (id, uid, nickname, headimg, mobile, money, integral, vip)
+ /// - All required fields (id, uid, nickname, headimg, mobile, mobileIs, vip, day)
/// - Masked mobile number in format XXX****XXXX
/// - Correct MobileIs flag (0 if no mobile, 1 if mobile exists)
/// Validates: Requirements 4.1, 4.4
diff --git a/uniapp/pages/planner/list/index.vue b/uniapp/pages/planner/list/index.vue
index 44c2286..59d0d11 100644
--- a/uniapp/pages/planner/list/index.vue
+++ b/uniapp/pages/planner/list/index.vue
@@ -191,7 +191,7 @@ $orange-gradient-end: #FFFFFF;
}
.page-content {
- padding: $spacing-lg;
+ padding: 24rpx 28rpx;
padding-bottom: env(safe-area-inset-bottom);
}
@@ -200,23 +200,22 @@ $orange-gradient-end: #FFFFFF;
text-align: center;
font-size: $font-size-md;
color: $text-secondary;
- margin-bottom: $spacing-lg;
+ margin-bottom: 28rpx;
}
// 瑙勫垝甯堝垪琛
.planner-list {
display: flex;
flex-direction: column;
- gap: $spacing-lg;
+ gap: 24rpx;
}
-// 瑙勫垝甯堝崱鐗 - 姗欒壊娓愬彉鑳屾櫙
+// 瑙勫垝甯堝崱鐗 - 椤堕儴姗欒壊娓愬彉锛屾棤宸︿晶杈规
.planner-card {
- background: linear-gradient(135deg, $orange-gradient-start 0%, $orange-gradient-end 60%);
- border-radius: $border-radius-xl;
- padding: $spacing-lg;
- box-shadow: $shadow-sm;
- border-left: 6rpx solid $orange-color;
+ background: linear-gradient(180deg, $orange-gradient-start 0%, $orange-gradient-end 40%);
+ border-radius: 24rpx;
+ padding: 28rpx;
+ box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06);
&:active {
opacity: 0.9;
@@ -234,9 +233,9 @@ $orange-gradient-end: #FFFFFF;
flex-shrink: 0;
width: 160rpx;
height: 180rpx;
- border-radius: $border-radius-md;
+ border-radius: 16rpx;
overflow: hidden;
- margin-right: $spacing-md;
+ margin-right: 24rpx;
.avatar-image {
width: 100%;
@@ -255,11 +254,11 @@ $orange-gradient-end: #FFFFFF;
display: flex;
align-items: baseline;
flex-wrap: wrap;
- margin-bottom: $spacing-sm;
+ margin-bottom: 16rpx;
}
.planner-name {
- font-size: $font-size-xl;
+ font-size: 34rpx;
font-weight: $font-weight-bold;
color: $text-color;
}
@@ -267,25 +266,25 @@ $orange-gradient-end: #FFFFFF;
.planner-title {
font-size: $font-size-sm;
color: $text-secondary;
- margin-left: 8rpx;
+ margin-left: 4rpx;
}
// 鏍囩鍒楄〃
.planner-tags {
display: flex;
flex-wrap: wrap;
- gap: $spacing-xs;
+ gap: 12rpx;
}
.tag-item {
display: inline-flex;
align-items: center;
- padding: 6rpx 16rpx;
- font-size: $font-size-xs;
+ padding: 8rpx 18rpx;
+ font-size: 22rpx;
color: $orange-color;
background-color: rgba(232, 116, 14, 0.08);
border: 1rpx solid rgba(232, 116, 14, 0.2);
- border-radius: $border-radius-sm;
+ border-radius: 8rpx;
white-space: nowrap;
}
@@ -305,7 +304,7 @@ $orange-gradient-end: #FFFFFF;
display: flex;
align-items: center;
justify-content: space-between;
- margin-top: $spacing-md;
+ margin-top: 20rpx;
}
// 浠锋牸
@@ -314,13 +313,13 @@ $orange-gradient-end: #FFFFFF;
align-items: baseline;
.price-symbol {
- font-size: $font-size-lg;
+ font-size: 28rpx;
color: $orange-color;
font-weight: $font-weight-bold;
}
.price-value {
- font-size: 44rpx;
+ font-size: 48rpx;
color: $orange-color;
font-weight: $font-weight-bold;
margin-left: 2rpx;
@@ -332,7 +331,7 @@ $orange-gradient-end: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
- padding: 16rpx 48rpx;
+ padding: 18rpx 56rpx;
background-color: $orange-color;
color: $text-white;
font-size: $font-size-md;