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;