package com.ruoyi.user.domain.vo; import com.fasterxml.jackson.annotation.JsonProperty; import com.ruoyi.user.domain.AccountProvider; /** * 服务商新增/修改的请求体 * * = 服务商配置(AccountProvider)+ 服务商账号设置(登录账号 / 登录密码 / 重复登录密码)。 * 后者是 account_user 的列,不属于 account_provider,故不能挂到实体上: * 实体的 insert/update 用 <if> 动态拼列,非本表列的属性有被误捕成 SQL 列名(Unknown column)的风险。 * 详情读取用 AccountProviderVo(它不含密码),两个类职责分开,读写不共用一副壳子。 * * 明文密码只在本类的生命周期内存在:服务层校验完立刻交给 IAccountUserService 加密, * 落库前已变成 BCrypt 密文。两个密码列标 WRITE_ONLY(同 AccountUser.password): * 只许反序列化进来、永不序列化出去。不能用 @JsonIgnore——挂在 getter 上会让 Jackson * 把整个属性当成「忽略」,连请求体里的密码都收不到,表单会静默变成「密码为空」。 * * @author ruoyi */ public class AccountProviderForm extends AccountProvider { private static final long serialVersionUID = 1L; /** 登录账号(account_user.username),新增必填 */ private String userName; /** 登录密码明文(新增必填;修改留空即不改密码) */ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String password; /** 重复登录密码明文,必须与 password 一致 */ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String confirmPassword; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getConfirmPassword() { return confirmPassword; } public void setConfirmPassword(String confirmPassword) { this.confirmPassword = confirmPassword; } }