更新
This commit is contained in:
1 parent
fb04d66e61
commit
b6b528490c
13 files changed
+518
-168
No files matched your search
@@ -194,9 +194,18 @@ func (c *AppAggregateController) noTenantHome(claims *jwtutil.Claims) map[string
|
||||
}
|
||||
}
|
||||
|
||||
// 展示姓名取统一身份昵称(个人中心可改),不再把账号/手机号当名字下发
|
||||
displayName := ""
|
||||
var ai models.AuthIdentity
|
||||
if err := models.Orm.QueryTable(new(models.AuthIdentity)).
|
||||
Filter("id", uint64(claims.UserID)).
|
||||
Filter("delete_time__isnull", true).One(&ai); err == nil && ai.Nickname != nil {
|
||||
displayName = strings.TrimSpace(*ai.Nickname)
|
||||
}
|
||||
|
||||
return map[string]interface{}{
|
||||
"user": map[string]interface{}{
|
||||
"account": claims.Username, "tenant": "", "tid": 0, "need_tenant": true,
|
||||
"name": displayName, "account": claims.Username, "tenant": "", "tid": 0, "need_tenant": true,
|
||||
},
|
||||
"modules": modules,
|
||||
"menus": menus,
|
||||
@@ -396,15 +405,19 @@ func (c *AppAggregateController) appUser(claims *jwtutil.Claims, uid, tid uint64
|
||||
out := map[string]interface{}{
|
||||
"uid": uid,
|
||||
"tid": tid,
|
||||
"name": "用户",
|
||||
"name": "",
|
||||
"account": "",
|
||||
"role_name": "",
|
||||
"tenant": "",
|
||||
"tenant_id": tid,
|
||||
"avatar": "",
|
||||
}
|
||||
if claims.Username != "" {
|
||||
out["name"] = claims.Username
|
||||
// 姓名只取真实资料(统一身份昵称,个人中心可改),不再用账号/手机号冒充
|
||||
var ai models.AuthIdentity
|
||||
if err := models.Orm.QueryTable(new(models.AuthIdentity)).
|
||||
Filter("id", uint64(claims.UserID)).
|
||||
Filter("delete_time__isnull", true).One(&ai); err == nil && ai.Nickname != nil {
|
||||
out["name"] = strings.TrimSpace(*ai.Nickname)
|
||||
}
|
||||
var tu models.SystemTenantUser
|
||||
if models.Orm.QueryTable(new(models.SystemTenantUser)).
|
||||
|
||||
@@ -168,12 +168,14 @@ func (c *AppAuthController) UpdateCurrentUserProfile() {
|
||||
}
|
||||
|
||||
uid := services.ResolveTenantUID(uint64(claims.TenantId), uint64(claims.UserID))
|
||||
num, err := models.Orm.QueryTable(new(models.SystemTenantUser)).
|
||||
// 尚未加入企业(tid=0)的新注册用户没有老表行,属正常情况;
|
||||
// 姓名仍写入统一身份,工作台首页直接读它显示。
|
||||
_, err = models.Orm.QueryTable(new(models.SystemTenantUser)).
|
||||
Filter("uid", uid).
|
||||
Filter("tid", claims.TenantId).
|
||||
Update(map[string]interface{}{"name": name, "email": email})
|
||||
if err != nil || num == 0 {
|
||||
c.serveJSON(map[string]interface{}{"code": 400, "msg": "未找到当前企业下的用户资料"})
|
||||
if err != nil {
|
||||
c.serveJSON(map[string]interface{}{"code": 500, "msg": "资料更新失败,请重试"})
|
||||
return
|
||||
}
|
||||
_, _ = models.Orm.QueryTable(new(models.AuthIdentity)).
|
||||
|
||||
@@ -249,7 +249,9 @@ func (c *OnboardingController) issueNoTenantTokens(identityID uint64, mobile str
|
||||
}
|
||||
|
||||
// Status GET /api/onboarding/status
|
||||
// 返回企业绑定、最新申请状态、微信手机号(前端只读展示)。
|
||||
// 返回已绑定企业列表、申请记录、微信手机号(前端只读展示)。
|
||||
// 「我的 → 企业绑定」用 tenants + applies 展示多租户与审核进度;
|
||||
// apply 保留最新一条,兼容首次加入企业的工作台分流逻辑。
|
||||
func (c *OnboardingController) Status() {
|
||||
cl := c.mustClaims()
|
||||
if cl == nil {
|
||||
@@ -264,46 +266,65 @@ func (c *OnboardingController) Status() {
|
||||
mobile = *ai.Mobile
|
||||
}
|
||||
|
||||
// 一人多企业:返回全部启用中的绑定,默认企业排在最前
|
||||
var binds []models.AuthTenantUser
|
||||
_, _ = models.Orm.QueryTable(new(models.AuthTenantUser)).
|
||||
Filter("identity_id", identityID).
|
||||
Filter("status", 1).
|
||||
OrderBy("-is_default", "id").
|
||||
All(&binds)
|
||||
hasTenant := len(binds) > 0
|
||||
tenants := make([]map[string]interface{}, 0, len(binds))
|
||||
for _, b := range binds {
|
||||
name := ""
|
||||
var t models.SystemTenant
|
||||
if err := models.Orm.QueryTable(new(models.SystemTenant)).Filter("id", b.Tid).One(&t); err == nil {
|
||||
name = t.TenantName
|
||||
}
|
||||
tenants = append(tenants, map[string]interface{}{
|
||||
"tid": b.Tid, "tenant_name": name, "is_default": b.IsDefault,
|
||||
})
|
||||
}
|
||||
tenantName := ""
|
||||
tid := uint64(0)
|
||||
if hasTenant {
|
||||
if len(tenants) > 0 {
|
||||
tenantName, _ = tenants[0]["tenant_name"].(string)
|
||||
tid = binds[0].Tid
|
||||
var t models.SystemTenant
|
||||
if err := models.Orm.QueryTable(new(models.SystemTenant)).Filter("id", tid).One(&t); err == nil {
|
||||
tenantName = t.TenantName
|
||||
}
|
||||
}
|
||||
|
||||
var applyData interface{}
|
||||
var apply models.AuthTenantApply
|
||||
if err := models.Orm.QueryTable(new(models.AuthTenantApply)).
|
||||
// 最近 20 条申请:可同时存在多家企业的待审绑定申请
|
||||
var rows []models.AuthTenantApply
|
||||
_, _ = models.Orm.QueryTable(new(models.AuthTenantApply)).
|
||||
Filter("identity_id", identityID).
|
||||
Filter("delete_time__isnull", true).
|
||||
OrderBy("-id").One(&apply); err == nil {
|
||||
applyData = map[string]interface{}{
|
||||
"id": apply.ID,
|
||||
"type": apply.Type,
|
||||
"status": apply.Status,
|
||||
"tenant_name": apply.TenantName,
|
||||
"reject_reason": apply.RejectReason,
|
||||
"department_name": apply.DepartmentName,
|
||||
"position_name": apply.PositionName,
|
||||
"applicant_name": apply.ApplicantName,
|
||||
}
|
||||
OrderBy("-id").Limit(20).
|
||||
All(&rows)
|
||||
applies := make([]map[string]interface{}, 0, len(rows))
|
||||
for _, a := range rows {
|
||||
applies = append(applies, map[string]interface{}{
|
||||
"id": a.ID,
|
||||
"type": a.Type,
|
||||
"status": a.Status,
|
||||
"tenant_name": a.TenantName,
|
||||
"reject_reason": a.RejectReason,
|
||||
"department_name": a.DepartmentName,
|
||||
"position_name": a.PositionName,
|
||||
"applicant_name": a.ApplicantName,
|
||||
"create_time": a.CreateTime,
|
||||
})
|
||||
}
|
||||
var applyData interface{}
|
||||
if len(applies) > 0 {
|
||||
applyData = applies[0]
|
||||
}
|
||||
|
||||
c.ok(map[string]interface{}{
|
||||
"has_tenant": hasTenant,
|
||||
"has_tenant": len(tenants) > 0,
|
||||
"tid": tid,
|
||||
"tenant_name": tenantName,
|
||||
"mobile": mobile,
|
||||
"mobile_mask": maskPhone(mobile),
|
||||
"tenants": tenants,
|
||||
"applies": applies,
|
||||
"apply": applyData,
|
||||
})
|
||||
}
|
||||
@@ -383,10 +404,8 @@ func (c *OnboardingController) ApplyJoin() {
|
||||
if cl == nil {
|
||||
return
|
||||
}
|
||||
if c.hasTenant(uint64(cl.UserID)) {
|
||||
c.fail(400, "你已加入企业,无需重复申请")
|
||||
return
|
||||
}
|
||||
// 一人可绑定多家企业:已加入企业也能继续申请绑定其他企业。
|
||||
// 「是否已绑定该企业 / 是否重复待审」由 CreateJoinApply 内部按 tid 判定。
|
||||
var req struct {
|
||||
Tid uint64 `json:"tid"`
|
||||
ApplicantName string `json:"applicant_name"`
|
||||
@@ -429,10 +448,7 @@ func (c *OnboardingController) ApplyCreate() {
|
||||
if cl == nil {
|
||||
return
|
||||
}
|
||||
if c.hasTenant(uint64(cl.UserID)) {
|
||||
c.fail(400, "你已加入企业,无需重复申请")
|
||||
return
|
||||
}
|
||||
// 多租户:已有企业也允许再创建一家(同身份只允许一条待审创建申请,由 CreateTenantApply 校验)
|
||||
var req services.TenantCreateApplyInput
|
||||
if !c.readJSON(&req) {
|
||||
return
|
||||
|
||||
Reference in new issue
Block a user