package services import ( "strings" "github.com/beego/beego/v2/client/orm" "server/models" ) /* findTenantByLoginName 根据租户简称、短名或编码查找租户。 * * 当前表结构中 tenant_name 的业务含义就是“租户简称”,同时兼容 * tenant_short_name 和 tenant_code 两个历史/备用登录标识。 */ func findTenantByLoginName(loginName string) (*models.SystemTenant, error) { loginName = strings.TrimSpace(loginName) if loginName == "" { return nil, orm.ErrNoRows } // tenant_name 的业务含义是租户简称。使用 TRIM 兼容历史数据中字段值 // 前后存在空格的情况;参数通过 SetArgs 绑定,避免 SQL 注入。 tenant := &models.SystemTenant{} query := ` SELECT id, tenant_code, tenant_name, tenant_short_name, contact_person, contact_phone, contact_email, address, worktime, status, remark, create_time, update_time, delete_time FROM yz_system_tenant WHERE (TRIM(tenant_name) = TRIM(?) OR TRIM(tenant_short_name) = TRIM(?) OR TRIM(tenant_code) = TRIM(?)) AND status <> 0 ORDER BY id ASC LIMIT 1` err := models.Orm.Raw(query). SetArgs(loginName, loginName, loginName). QueryRow(tenant) if err != nil { return nil, err } return tenant, nil }