package system import ( "context" "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" v1 "git.5iot.com/iotlcm-public/iotlcm-admin-svr/api/system/v1" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/consts" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/library/contexts" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/library/event" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/library/mcache" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/service" ) func (c *ControllerV1) Login(ctx context.Context, req *v1.LoginReq) (res *v1.LoginRes, err error) { userOut, token, err := service.SysAuth().Login(ctx, &model.LoginParams{ CaptchaID: req.CaptchaID, CaptchaValue: req.CaptchaValue, Username: req.Username, Password: req.Password, TenantId: req.TenantId, }) if err != nil { return nil, err } return &v1.LoginRes{ ID: userOut.ID, Username: userOut.Username, NickName: userOut.NickName, Avatar: userOut.Avatar, AccessToken: token, }, nil } func (c *ControllerV1) RefreshToken(ctx context.Context, req *v1.RefreshTokenReq) (res *v1.RefreshTokenRes, err error) { return nil, gerror.NewCode(gcode.CodeNotImplemented) } func (c *ControllerV1) SendSmsLoginCode(ctx context.Context, req *v1.SendSmsLoginCodeReq) (res *v1.SendSmsLoginCodeRes, err error) { if err = service.SysAuth().SendSmsLoginCode(ctx, req.Phone); err != nil { return nil, err } return &v1.SendSmsLoginCodeRes{}, nil } func (c *ControllerV1) SmsLogin(ctx context.Context, req *v1.SmsLoginReq) (res *v1.SmsLoginRes, err error) { userOut, token, err := service.SysAuth().LoginByPhoneCode(ctx, req.Phone, req.Code) if err != nil { return nil, err } return &v1.SmsLoginRes{ ID: userOut.ID, Username: userOut.Username, NickName: userOut.NickName, Avatar: userOut.Avatar, AccessToken: token, }, nil } func (c *ControllerV1) Logout(ctx context.Context, req *v1.LogoutReq) (res *v1.LogoutRes, err error) { token, _ := service.SysAuth().GetAccessToken(ctx) service.SysUserOnline().DeleteByToken(ctx, token) event.EventsInstance().Emit(ctx, consts.EventKeyUserLogout, contexts.GetUserId(ctx)) return &v1.LogoutRes{ Data: "ι€€ε‡ΊζˆεŠŸ", Status: 200, }, nil } func (c *ControllerV1) GetAccessCodes(ctx context.Context, req *v1.GetAccessCodesReq) (res *v1.GetAccessCodesRes, err error) { if req.IsCache { accessCodes, _, err := mcache.GetUserAccessCodeList(ctx, contexts.GetUserId(ctx)) if err != nil { return nil, err } res = &v1.GetAccessCodesRes{ Data: accessCodes, } } else { accessCodes, roleDataAccessCodes, err := service.SysAuth().GetUserAccessCodeList(ctx, contexts.GetUserId(ctx)) if err != nil { return nil, err } mcache.SetUserAccessCodeList(ctx, contexts.GetUserId(ctx), accessCodes) mcache.SetUserRoleDataAccessCodeList(ctx, contexts.GetUserId(ctx), roleDataAccessCodes) res = &v1.GetAccessCodesRes{ Data: accessCodes, } } return res, nil } func (c *ControllerV1) TenantList(ctx context.Context, req *v1.TenantListReq) (res *v1.TenantListRes, err error) { tenantList, _, err := service.SysTenant().List(ctx, &model.SysTenantListParam{ Status: consts.SysDeptStatusNormal, }) if err != nil { return nil, err } tenantEnabled := false if len(tenantList) > 1 { tenantEnabled = true } voList := make([]v1.TenantListData, 0) for _, tenant := range tenantList { voList = append(voList, v1.TenantListData{ CompanyName: tenant.CompanyName, Domain: tenant.Domain, TenantId: tenant.TenantId, }) } return &v1.TenantListRes{ TenantEnabled: tenantEnabled, VoList: voList, }, nil }