feat:完善信息

This commit is contained in:
henry
2021-10-08 17:33:19 +08:00
parent fe75ad1aec
commit 2191f0ea3f
15 changed files with 288 additions and 215 deletions

View File

@ -1,115 +1,26 @@
package user
import (
"SciencesServer/app/basic/config"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/enterprise/model"
"SciencesServer/app/service"
config2 "SciencesServer/config"
"SciencesServer/serve/orm"
"SciencesServer/utils"
"errors"
"gorm.io/gorm"
"time"
)
type Instance struct{ *service.SessionEnterprise }
type InstanceHandle func(enterprise *service.SessionEnterprise) *Instance
type InstanceBasic struct {
Avatar string `json:"avatar"` // 头像
Name string `json:"name"` // 名称
Email string `json:"email"` // 邮箱
}
type (
// InstancePerfectParams 完善信息参数
InstancePerfectParams struct {
*InstanceBasic
*config.Area
}
)
type (
// InstanceInfoReturn 基本信息返回
InstanceInfoReturn struct {
Name string `json:"name"`
Avatar string `json:"avatar"` // 头像
Identity string `json:"identity"`
SelectIdentity string `json:"select_identity"` // 最后一次选中的身份信息
Name string `json:"name"` // 名称
Avatar string `json:"avatar"` // 头像
Identity int `json:"identity"` // 具体身份
SelectIdentity int `json:"select_identity"` // 最后一次选中的身份信息
}
)
// Info 基本信息
func (c *Instance) Info() *InstanceInfoReturn {
return &InstanceInfoReturn{Name: c.Name}
}
// Perfect 完善信息
func (c *Instance) Perfect(params *InstancePerfectParams) error {
// 查询用户身份信息
mUserTenant := model.NewUserTenant()
_, err := model2.FirstField(mUserTenant.UserTenant, []string{"id", "name", "identity"},
model2.NewWhere("uuid", c.UID))
if err != nil {
return err
}
mUserTenant.Avatar = params.Avatar
mUserTenant.Name = params.Name
mUserTenant.Email = params.Email
mUserTenant.Area = model2.Area{Province: params.Province, City: params.City, District: params.District, Address: params.Address}
// 更新身份信息,提交审核
if mUserTenant.Identity == 0 {
mUserTenant.Identity = c.CurrentIdentity
mUserTenant.Status = model2.UserTenantStatusForExamining
}
orm.GetDB().Transaction(func(tx *gorm.DB) error {
return nil
})
return nil
}
// ChangeIdentity 更改身份信息
func (c *Instance) ChangeIdentity(identity int) error {
if _, has := config.TenantUserIdentityData[identity]; !has {
return errors.New("未知的身份信息")
}
if c.CurrentIdentity == identity {
return nil
}
// 已存在相应的身份,更新最后
if c.Identity&identity > 0 {
mUserTenant := model.NewUserTenant()
// 查询用户身份信息
_, err := model2.FirstField(mUserTenant.UserTenant, []string{"id", "uuid", "identity"},
model2.NewWhere("uuid", c.UID), model2.NewWhere("identity", identity))
if err != nil {
return err
}
//c.UID = mUserTenant.UUID
now := time.Now()
if err = orm.GetDB().Transaction(func(tx *gorm.DB) error {
if err = model2.UpdatesWhere(mUserTenant.UserTenant, map[string]interface{}{
"selected": model2.UserTenantSelectedForNo, "updated_at": now,
}, []*model2.ModelWhere{model2.NewWhere("uuid", c.UID)}, tx); err != nil {
return err
}
return model2.UpdatesWhere(mUserTenant.UserTenant, map[string]interface{}{
"selected": model2.UserTenantSelectedForYes, "updated_at": now,
}, []*model2.ModelWhere{model2.NewWhere("uuid", c.UID),
model2.NewWhere("identity", identity)}, tx)
}); err != nil {
return err
}
}
c.CurrentIdentity = identity
service.Publish(config2.EventForRedisHashProduce, config2.RedisKeyForAccount, utils.UintToString(c.UID), c.SessionEnterprise)
return nil
return &InstanceInfoReturn{Name: c.Name, Avatar: c.Avatar, Identity: c.Identity, SelectIdentity: c.SelectIdentity}
}
func NewInstance() InstanceHandle {