diff --git a/src/Oms.Application/Shared/WeChatRegistrationFieldNormalizer.cs b/src/Oms.Application/Shared/WeChatRegistrationFieldNormalizer.cs index 1d7d9ff..789884e 100644 --- a/src/Oms.Application/Shared/WeChatRegistrationFieldNormalizer.cs +++ b/src/Oms.Application/Shared/WeChatRegistrationFieldNormalizer.cs @@ -8,10 +8,15 @@ public static class WeChatRegistrationFieldNormalizer public const int CustomerNameMaxLength = 128; public const int PhoneMaxLength = 16; public const int EmailMaxLength = 64; - public const int AvatarMaxLength = 255; + /// 客户表 WechatAvatar 列长度。 + public const int CustomerWechatAvatarMaxLength = 255; public const int NicknameMaxLength = 64; public const int OpenidMaxLength = 64; + /// 微信头像仅写入 t_customer;RBAC user.Avatar 列更短,注册时不写入。 + public static string? NormalizeCustomerWechatAvatar(string? avatar) => + TruncateOptional(avatar, CustomerWechatAvatarMaxLength); + public static string TruncateRequired(string value, int maxLength) { var normalized = value.Trim(); diff --git a/src/SimpleAdmin.Api/WeChat/WeChatCustomerService.cs b/src/SimpleAdmin.Api/WeChat/WeChatCustomerService.cs index 91c2494..2decf16 100644 --- a/src/SimpleAdmin.Api/WeChat/WeChatCustomerService.cs +++ b/src/SimpleAdmin.Api/WeChat/WeChatCustomerService.cs @@ -98,9 +98,7 @@ public class WeChatCustomerService( var wechatNickname = WeChatRegistrationFieldNormalizer.TruncateOptional( input.Wechat.Nickname, WeChatRegistrationFieldNormalizer.NicknameMaxLength); - var wechatAvatar = WeChatRegistrationFieldNormalizer.TruncateOptional( - input.Wechat.Avatar, - WeChatRegistrationFieldNormalizer.AvatarMaxLength); + var wechatAvatar = WeChatRegistrationFieldNormalizer.NormalizeCustomerWechatAvatar(input.Wechat.Avatar); if (password.Length < 6) { @@ -126,7 +124,6 @@ public class WeChatCustomerService( Account = phone, Password = password, Email = email, - Avatar = wechatAvatar, RoleIds = [customerRoleId] }); @@ -170,8 +167,15 @@ public class WeChatCustomerService( var account = NormalizeRequired(input.Account, "账号"); var password = NormalizeRequired(input.Password, "密码"); + var wechatOpenid = WeChatRegistrationFieldNormalizer.TruncateRequired( + input.Wechat.Openid.Trim(), + WeChatRegistrationFieldNormalizer.OpenidMaxLength); + var wechatNickname = WeChatRegistrationFieldNormalizer.TruncateOptional( + input.Wechat.Nickname, + WeChatRegistrationFieldNormalizer.NicknameMaxLength); + var wechatAvatar = WeChatRegistrationFieldNormalizer.NormalizeCustomerWechatAvatar(input.Wechat.Avatar); - if (await customerRepository.GetByWechatOpenidAsync(input.Wechat.Openid, cancellationToken) != null) + if (await customerRepository.ExistsWechatOpenidAnyAsync(wechatOpenid, cancellationToken)) { throw new BusinessException("当前微信已绑定账号"); } @@ -199,9 +203,9 @@ public class WeChatCustomerService( throw new BusinessException("账号或密码错误"); } - customer.WechatOpenid = input.Wechat.Openid; - customer.WechatNickname = NormalizeOptional(input.Wechat.Nickname) ?? customer.WechatNickname; - customer.WechatAvatar = NormalizeOptional(input.Wechat.Avatar) ?? customer.WechatAvatar; + customer.WechatOpenid = wechatOpenid; + customer.WechatNickname = wechatNickname ?? customer.WechatNickname; + customer.WechatAvatar = wechatAvatar ?? customer.WechatAvatar; await customerRepository.UpdateAsync(customer, cancellationToken); }