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);
}