...
|
...
|
@@ -2,8 +2,15 @@ package user |
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
"fmt"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/gateway/authlib"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/tool"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr"
|
|
|
"strconv"
|
|
|
|
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
|
)
|
...
|
...
|
@@ -23,6 +30,67 @@ func NewSystemUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Sy |
|
|
}
|
|
|
|
|
|
func (l *SystemUserInfoLogic) SystemUserInfo(req *types.SystemUserInfoRequest) (resp *types.SystemUserInfoResponse, err error) {
|
|
|
var (
|
|
|
conn = l.svcCtx.DefaultDBConn()
|
|
|
userToken = contextdata.GetUserTokenFromCtx(l.ctx)
|
|
|
response *authlib.DataUserMe
|
|
|
company *domain.Company
|
|
|
companyId int64
|
|
|
code = tool.Krand(6, tool.KC_RAND_KIND_ALL)
|
|
|
)
|
|
|
if response, err = l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{
|
|
|
Token: req.Token,
|
|
|
}); err != nil {
|
|
|
return nil, xerr.NewErrMsgErr("获取用户资料失败", err)
|
|
|
}
|
|
|
|
|
|
companyId, _ = strconv.ParseInt(response.CurrentCompany.ID, 10, 64)
|
|
|
resp = &types.SystemUserInfoResponse{}
|
|
|
resp.UserName = response.User.NickName
|
|
|
resp.UserId, _ = strconv.ParseInt(response.User.ID, 10, 64)
|
|
|
resp.Avatar = response.User.Avatar
|
|
|
resp.CompanyName = response.CurrentCompany.Name
|
|
|
resp.CompanyId = companyId
|
|
|
resp.Code = code
|
|
|
|
|
|
if companyId != userToken.CompanyId {
|
|
|
return nil, xerr.NewErrMsgErr("获取用户资料失败", fmt.Errorf("当前登录公司信息不匹配"))
|
|
|
}
|
|
|
company, err = l.svcCtx.CompanyRepository.FindOne(l.ctx, conn, userToken.CompanyId)
|
|
|
// 新建公司
|
|
|
if err == domain.ErrNotFound {
|
|
|
company = &domain.Company{
|
|
|
Id: companyId,
|
|
|
Name: response.CurrentCompany.Name,
|
|
|
Logo: response.CurrentCompany.Logo,
|
|
|
Code: code,
|
|
|
}
|
|
|
if company, err = l.svcCtx.CompanyRepository.Insert(l.ctx, conn, company); err != nil {
|
|
|
return nil, xerr.NewErrMsgErr("获取用户资料失败", err)
|
|
|
}
|
|
|
err = nil
|
|
|
return
|
|
|
}
|
|
|
if err != nil {
|
|
|
return nil, xerr.NewErrMsgErr("获取用户资料失败", err)
|
|
|
}
|
|
|
resp.Code = company.Code
|
|
|
// 更新公司
|
|
|
if response.CurrentCompany != nil {
|
|
|
var changed bool
|
|
|
if response.CurrentCompany.Name != "" && response.CurrentCompany.Name != company.Name {
|
|
|
company.Name = response.CurrentCompany.Name
|
|
|
changed = true
|
|
|
}
|
|
|
if response.CurrentCompany.Logo != "" && response.CurrentCompany.Logo != company.Logo {
|
|
|
company.Logo = response.CurrentCompany.Logo
|
|
|
changed = true
|
|
|
}
|
|
|
if changed {
|
|
|
if company, err = l.svcCtx.CompanyRepository.UpdateWithVersion(l.ctx, conn, company); err != nil {
|
|
|
return nil, xerr.NewErrMsgErr("获取用户资料失败", err)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return
|
|
|
} |
...
|
...
|
|