代码规范过滤,移除冗余代码,替换掉不推荐的包

This commit is contained in:
孟帅
2023-05-30 12:09:40 +08:00
parent c8a808fcfd
commit b2ef3487d3
74 changed files with 564 additions and 741 deletions

View File

@@ -40,6 +40,10 @@ func Build(ctx context.Context, sk Skeleton, conf *model.BuildAddonConfig) (err
return path
})
if err != nil {
return
}
for _, path := range list {
if !gfile.IsReadable(path) {
err = fmt.Errorf("file%v is unreadable, please check permissions", path)

View File

@@ -89,7 +89,7 @@ func GetModule(name string) Module {
// GetSkeletons 获取所有模块骨架
func GetSkeletons() (list []*Skeleton) {
var keys []string
for k, _ := range modules {
for k := range modules {
keys = append(keys, k)
}

View File

@@ -66,5 +66,4 @@ func SetAdapter(ctx context.Context) {
// 通用缓存
cache = gcache.New()
cache.SetAdapter(adapter)
return
}

View File

@@ -120,7 +120,6 @@ func (c *AdapterFile) UpdateExpire(ctx context.Context, key interface{}, duratio
oldTTL = int64(expire)
if oldTTL == -2 {
// It does not exist.
oldTTL = -1
return
}
oldDuration = time.Duration(oldTTL) * time.Second

View File

@@ -286,7 +286,9 @@ func (a *adapter) loadPolicyRule(rule policyRule, model model.Model) {
ruleText += ", " + rule.V5
}
persist.LoadPolicyLine(ruleText, model)
if err := persist.LoadPolicyLine(ruleText, model); err != nil {
panic(err)
}
}
// 构建策略规则

View File

@@ -3,7 +3,6 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package views
import (
@@ -236,7 +235,6 @@ func setDefaultList(field *sysin.GenCodesColumnListModel) {
if df, ok := defaultListSwitch[field.Name]; ok {
field.IsList = df
}
return
}
// setDefaultExport 设置默认导出
@@ -256,7 +254,6 @@ func setDefaultExport(field *sysin.GenCodesColumnListModel) {
if df, ok := defaultExportSwitch[field.Name]; ok {
field.IsExport = df
}
return
}
// setDefaultQuery 设置默认查询

View File

@@ -97,12 +97,14 @@ func (l *gCurd) initInput(ctx context.Context, in *CurdPreviewInput) (err error)
in.content.Views = make(map[string]*sysin.GenFile)
// 加载主表配置
err = in.In.MasterColumns.Scan(&in.masterFields)
if err != nil {
return err
if err = in.In.MasterColumns.Scan(&in.masterFields); err != nil {
return
}
if len(in.masterFields) == 0 {
in.masterFields, err = DoTableColumns(ctx, sysin.GenCodesColumnListInp{Name: in.In.DbName, Table: in.In.TableName}, in.DaoConfig)
if in.masterFields, err = DoTableColumns(ctx, sysin.GenCodesColumnListInp{Name: in.In.DbName, Table: in.In.TableName}, in.DaoConfig); err != nil {
return
}
}
// 主键属性
@@ -112,9 +114,8 @@ func (l *gCurd) initInput(ctx context.Context, in *CurdPreviewInput) (err error)
}
// 加载选项
err = in.In.Options.Scan(&in.options)
if err != nil {
return err
if err = in.In.Options.Scan(&in.options); err != nil {
return
}
initStep(in)
@@ -131,8 +132,7 @@ func (l *gCurd) initInput(ctx context.Context, in *CurdPreviewInput) (err error)
}
in.options.ApiPrefix = apiPrefix
err = checkCurdPath(in.Config.Application.Crud.Templates[in.In.GenTemplate], in.In.AddonName)
if err != nil {
if err = checkCurdPath(in.Config.Application.Crud.Templates[in.In.GenTemplate], in.In.AddonName); err != nil {
return
}
in.options.TemplateGroup = in.Config.Application.Crud.Templates[in.In.GenTemplate].MasterPackage
@@ -338,9 +338,7 @@ func (l *gCurd) DoPreview(ctx context.Context, in *CurdPreviewInput) (res *sysin
}
in.content.Config = in.Config
res = new(sysin.GenCodesPreviewModel)
res = in.content
return
}

View File

@@ -19,7 +19,7 @@ const (
LogicWhereComments = "\n\t// 查询%s\n"
LogicWhereNoSupport = "\t// TODO 暂不支持生成[ %s ]查询方式,请自行补充此处代码!"
LogicListSimpleSelect = "\tfields, err := hgorm.GenSelect(ctx, sysin.%sListModel{}, dao.%s)\n\tif err != nil {\n\t\treturn\n\t}"
LogicListJoinSelect = "\t//关联表select\n\tfields, err := hgorm.GenJoinSelect(ctx, %sin.%sListModel{}, dao.%s, []*hgorm.Join{\n%v\t})"
LogicListJoinSelect = "\t//关联表select\n\tfields, err := hgorm.GenJoinSelect(ctx, %sin.%sListModel{}, dao.%s, []*hgorm.Join{\n%v\t})\n\n\tif err != nil {\n\t\treturn\n\t}"
LogicListJoinOnRelation = "\t// 关联表%s\n\tmod = mod.%s(hgorm.GenJoinOnRelation(\n\t\tdao.%s.Table(), dao.%s.Columns().%s, // 主表表名,关联字段\n\t\tdao.%s.Table(), \"%s\", dao.%s.Columns().%s, // 关联表表名,别名,关联字段\n\t)...)\n\n"
LogicEditUpdate = "\t\t_, err = s.Model(ctx%s).\n\t\t\tFields(%sin.%sUpdateFields{}).\n\t\t\tWherePri(in.%s).Data(in).Update()\n\t\treturn "
LogicEditInsert = "\t_, err = s.Model(ctx, &handler.Option{FilterAuth: false}).\n\t\tFields(%sin.%sInsertFields{}).\n\t\tData(in).Insert()"

View File

@@ -31,9 +31,9 @@ func (l *gCurd) webIndexTplData(ctx context.Context, in *CurdPreviewInput) (g.Ma
iconsImport = append(iconsImport, " PlusOutlined")
}
// 编辑
if in.options.Step.HasEdit {
}
//// 编辑
//if in.options.Step.HasEdit {
//}
// 导出
if in.options.Step.HasExport {
@@ -64,17 +64,17 @@ func (l *gCurd) webIndexTplData(ctx context.Context, in *CurdPreviewInput) (g.Ma
// 没有需要查询的字段则隐藏搜索表单
isSearchForm := false
for _, field := range in.masterFields {
if field.IsQuery == true {
if field.IsQuery {
isSearchForm = true
break
}
}
if isSearchForm == false {
if !isSearchForm {
if len(in.options.Join) > 0 {
LoopOut:
for _, v := range in.options.Join {
for _, column := range v.Columns {
if column.IsQuery == true {
if column.IsQuery {
isSearchForm = true
break LoopOut
}

View File

@@ -15,7 +15,7 @@ import (
"hotgo/internal/consts"
"hotgo/internal/model"
"hotgo/internal/model/input/sysin"
"io/ioutil"
"os"
"strings"
)
@@ -77,7 +77,7 @@ func removeEndWrap(comment string) string {
// ImportSql 导出sql文件
func ImportSql(ctx context.Context, path string) error {
rows, err := ioutil.ReadFile(path)
rows, err := os.ReadFile(path)
if err != nil {
return err
}

View File

@@ -3,7 +3,6 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package hgorm
// dao.
@@ -195,7 +194,7 @@ func IsUnique(ctx context.Context, dao interface{}, where g.Map, message string,
if count > 0 {
if message == "" {
for k, _ := range where {
for k := range where {
message = fmt.Sprintf("in the table%s, %v not uniqued", d.Table(), where[k])
break
}

View File

@@ -27,7 +27,6 @@ var CityLabel = gdb.HookHandler{
g.Log().Warningf(ctx, "hook.CityLabel parse err:%+v", err)
}
result[index]["cityLabel"] = gvar.New(cityLabel)
return
}
for i, record := range result {

View File

@@ -96,14 +96,12 @@ func NewClient(config *ClientConfig) (client *Client, err error) {
if config.ConnectInterval <= 0 {
client.connectInterval = 5 * time.Second
//client.Logger.Debugf(client.Ctx, "invalid connectInterval, reset to %v", client.connectInterval)
} else {
client.connectInterval = config.ConnectInterval
}
if config.Timeout <= 0 {
client.timeout = 10 * time.Second
//client.Logger.Debugf(client.Ctx, "invalid timeout, reset to %v", client.timeout)
} else {
client.timeout = config.Timeout
}
@@ -204,7 +202,7 @@ reconnect:
client.Lock()
if client.closeFlag {
client.Unlock()
conn.Close()
_ = conn.Close()
client.Logger.Debugf(client.Ctx, "client connect but closeFlag is true")
return
}
@@ -226,7 +224,7 @@ func (client *Client) read() {
client.Close()
client.Logger.Debugf(client.Ctx, "client are about to be reconnected..")
time.Sleep(client.connectInterval)
client.Start()
_ = client.Start()
}()
for {
@@ -383,6 +381,6 @@ func (client *Client) RpcRequest(ctx context.Context, data interface{}) (res int
}
return client.rpc.Request(key, func() {
client.Write(data)
_ = client.Write(data)
})
}

View File

@@ -26,7 +26,7 @@ func (client *Client) stopCron() {
func (client *Client) startCron() {
// 心跳超时检查
if gcron.Search(client.getCronKey(consts.TCPCronHeartbeatVerify)) == nil {
gcron.AddSingleton(client.Ctx, "@every 600s", func(ctx context.Context) {
_, _ = gcron.AddSingleton(client.Ctx, "@every 600s", func(ctx context.Context) {
if client.heartbeat < gtime.Timestamp()-600 {
client.Logger.Debugf(client.Ctx, "client heartbeat timeout, about to reconnect..")
client.Destroy()
@@ -36,7 +36,7 @@ func (client *Client) startCron() {
// 心跳
if gcron.Search(client.getCronKey(consts.TCPCronHeartbeat)) == nil {
gcron.AddSingleton(client.Ctx, "@every 120s", func(ctx context.Context) {
_, _ = gcron.AddSingleton(client.Ctx, "@every 120s", func(ctx context.Context) {
client.serverHeartbeat()
}, client.getCronKey(consts.TCPCronHeartbeat))
}

View File

@@ -7,7 +7,6 @@ package tcp
import (
"context"
"github.com/gogf/gf/v2/net/gtcp"
"github.com/gogf/gf/v2/net/gtrace"
"hotgo/internal/consts"
)
@@ -24,11 +23,6 @@ func initCtx(ctx context.Context, model *Context) (newCtx context.Context, cance
return
}
// SetCtx 设置上下文变量
func SetCtx(ctx context.Context, model *Context) {
context.WithValue(ctx, consts.ContextTCPKey, model)
}
// GetCtx 获得上下文变量如果没有设置那么返回nil
func GetCtx(ctx context.Context) *Context {
value := ctx.Value(consts.ContextTCPKey)
@@ -40,23 +34,3 @@ func GetCtx(ctx context.Context) *Context {
}
return nil
}
// GetCtxConn .
func GetCtxConn(ctx context.Context) *gtcp.Conn {
c := GetCtx(ctx)
if c == nil {
return nil
}
return c.Conn
}
// GetCtxAuth 认证元数据
func GetCtxAuth(ctx context.Context) *AuthMeta {
c := GetCtx(ctx)
if c == nil {
return nil
}
return c.Auth
}

View File

@@ -64,7 +64,7 @@ func MsgPkg(data interface{}, auth *AuthMeta, traceID string) string {
// doHandleRouterMsg 处理路由消息
func doHandleRouterMsg(fun RouterHandler, ctx context.Context, cancel context.CancelFunc, args ...interface{}) {
GoPool.Add(ctx, func(ctx context.Context) {
_ = GoPool.Add(ctx, func(ctx context.Context) {
fun(ctx, args...)
cancel()
})

View File

@@ -23,7 +23,6 @@ type ClientConn struct {
Conn *gtcp.Conn
Auth *AuthMeta
heartbeat int64
mutex sync.Mutex
}
type ServerConfig struct {
@@ -88,11 +87,9 @@ func NewServer(config *ServerConfig) (server *Server, err error) {
func (server *Server) accept(conn *gtcp.Conn) {
defer func() {
server.mutexConns.Lock()
conn.Close()
_ = conn.Close()
// 从登录列表中移除
if _, ok := server.clients[conn.RemoteAddr().String()]; ok {
delete(server.clients, conn.RemoteAddr().String())
}
delete(server.clients, conn.RemoteAddr().String())
server.mutexConns.Unlock()
}()
@@ -282,14 +279,14 @@ func (server *Server) Close() {
server.mutexConns.Lock()
for _, client := range server.clients {
client.Conn.Close()
_ = client.Conn.Close()
}
server.clients = nil
server.mutexConns.Unlock()
server.wgConns.Wait()
if server.ln != nil {
server.ln.Close()
_ = server.ln.Close()
}
server.wgLn.Wait()
}
@@ -345,6 +342,6 @@ func (server *Server) RpcRequest(ctx context.Context, client *ClientConn, data i
}
return server.rpc.Request(key, func() {
server.Write(client.Conn, data)
_ = server.Write(client.Conn, data)
})
}

View File

@@ -26,13 +26,13 @@ func (server *Server) stopCron() {
func (server *Server) startCron() {
// 心跳超时检查
if gcron.Search(server.getCronKey(consts.TCPCronHeartbeatVerify)) == nil {
gcron.AddSingleton(server.Ctx, "@every 300s", func(ctx context.Context) {
_, _ = gcron.AddSingleton(server.Ctx, "@every 300s", func(ctx context.Context) {
if server.clients == nil {
return
}
for _, client := range server.clients {
if client.heartbeat < gtime.Timestamp()-300 {
client.Conn.Close()
_ = client.Conn.Close()
server.Logger.Debugf(server.Ctx, "client heartbeat timeout, close conn. auth:%+v", client.Auth)
}
}
@@ -41,13 +41,13 @@ func (server *Server) startCron() {
// 认证检查
if gcron.Search(server.getCronKey(consts.TCPCronAuthVerify)) == nil {
gcron.AddSingleton(server.Ctx, "@every 300s", func(ctx context.Context) {
_, _ = gcron.AddSingleton(server.Ctx, "@every 300s", func(ctx context.Context) {
if server.clients == nil {
return
}
for _, client := range server.clients {
if client.Auth.EndAt.Before(gtime.Now()) {
client.Conn.Close()
_ = client.Conn.Close()
server.Logger.Debugf(server.Ctx, "client auth expired, close conn. auth:%+v", client.Auth)
}
}

View File

@@ -37,14 +37,14 @@ func (server *Server) onServerLogin(ctx context.Context, args ...interface{}) {
if err != nil {
res.Code = 1
res.Message = err.Error()
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
return
}
if models == nil {
res.Code = 2
res.Message = "授权信息不存在"
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
return
}
@@ -52,28 +52,28 @@ func (server *Server) onServerLogin(ctx context.Context, args ...interface{}) {
if _, err = VerifySign(in, models.Appid, models.SecretKey); err != nil {
res.Code = 3
res.Message = "签名错误,请联系管理员"
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
return
}
if models.Status != consts.StatusEnabled {
res.Code = 4
res.Message = "授权已禁用,请联系管理员"
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
return
}
if models.Group != in.Group {
res.Code = 5
res.Message = "你登录的授权分组未得到授权,请联系管理员"
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
return
}
if models.EndAt.Before(gtime.Now()) {
res.Code = 6
res.Message = "授权已过期,请联系管理员"
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
return
}
@@ -83,7 +83,7 @@ func (server *Server) onServerLogin(ctx context.Context, args ...interface{}) {
if _, ok2 := allowedIps[ip]; !ok2 {
res.Code = 7
res.Message = "IP(" + ip + ")未授权,请联系管理员"
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
return
}
}
@@ -92,18 +92,17 @@ func (server *Server) onServerLogin(ctx context.Context, args ...interface{}) {
clients := server.getAppIdClients(models.Appid)
online := len(clients) + 1
if online > models.OnlineLimit {
online = 0
res2 := new(msgin.ResponseServerLogin)
res2.Code = 8
res2.Message = "授权登录端超出上限已进行记录。请立即终止操作。如有疑问请联系管理员"
for _, client := range clients {
server.Write(client.Conn, res2)
client.Conn.Close()
_ = server.Write(client.Conn, res2)
_ = client.Conn.Close()
}
// 当前连接也踢掉
server.Write(user.Conn, res2)
user.Conn.Close()
_ = server.Write(user.Conn, res2)
_ = user.Conn.Close()
return
}
@@ -135,7 +134,7 @@ func (server *Server) onServerLogin(ctx context.Context, args ...interface{}) {
res.AppId = in.AppId
res.Code = consts.TCPMsgCodeSuccess
server.Write(user.Conn, res)
_ = server.Write(user.Conn, res)
}
func (server *Server) onServerHeartbeat(ctx context.Context, args ...interface{}) {
@@ -161,6 +160,5 @@ func (server *Server) onServerHeartbeat(ctx context.Context, args ...interface{}
}
res.Code = consts.TCPMsgCodeSuccess
server.Write(client.Conn, res)
_ = server.Write(client.Conn, res)
}

View File

@@ -40,5 +40,4 @@ func NotifyCall(ctx context.Context, in payin.NotifyCallFuncInp) {
}
})
}
return
}

View File

@@ -58,10 +58,10 @@ func consumerListen(ctx context.Context, job consumerStrategy) {
if listenErr := consumer.ListenReceiveMsgDo(topic, func(mqMsg MqMsg) {
err = job.Handle(ctx, mqMsg)
if err != nil {
// 遇到错误,重新加入到队列
//queue.Push(topic, mqMsg.Body)
}
//if err != nil {
// // 遇到错误,重新加入到队列
// //queue.Push(topic, mqMsg.Body)
//}
// 记录消费队列日志
ConsumerLog(ctx, topic, mqMsg, err)

View File

@@ -6,7 +6,6 @@ import (
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"os"
"path"
"path/filepath"
@@ -119,7 +118,7 @@ func (r *reader) close() {
func (r *reader) sync() {
name := path.Join(r.config.Path, indexFile)
data, _ := json.Marshal(&r.checkpoint)
_ = ioutil.WriteFile(name, data, filePerm)
_ = os.WriteFile(name, data, filePerm)
}
// restore index and offset
@@ -131,7 +130,7 @@ func (r *reader) restore() (err error) {
r.sync()
}
data, _ := ioutil.ReadFile(name)
data, _ := os.ReadFile(name)
_ = json.Unmarshal(data, &r.checkpoint)
r.index, r.offset = r.checkpoint.Index, r.checkpoint.Offset

View File

@@ -16,7 +16,6 @@ import (
)
type KafkaMq struct {
endPoints []string
Partitions int32
producerIns sarama.AsyncProducer
consumerIns sarama.ConsumerGroup
@@ -128,7 +127,7 @@ func RegisterKafkaMqConsumer(connOpt KafkaConfig) (client MqConsumer, err error)
if err != nil {
return
}
if validateVersion(kfkVersion) == false {
if !validateVersion(kfkVersion) {
kfkVersion = sarama.V2_4_0_0
}
@@ -175,7 +174,7 @@ func doRegisterKafkaProducer(connOpt KafkaConfig, mqIns *KafkaMq) (err error) {
if err != nil {
return
}
if validateVersion(kfkVersion) == false {
if !validateVersion(kfkVersion) {
kfkVersion = sarama.V2_4_0_0
}

View File

@@ -168,7 +168,7 @@ func NewConsumer(groupName string) (mqClient MqConsumer, err error) {
randTag := string(charset.RandomCreateBytes(6))
// 是否支持创建多个消费者
if config.Kafka.MultiConsumer == false {
if !config.Kafka.MultiConsumer {
randTag = "001"
}

View File

@@ -33,7 +33,7 @@ func (r *RedisMq) SendByteMsg(topic string, body []byte) (mqMsg MqMsg, err error
if r.poolName == "" {
return mqMsg, gerror.New("RedisMq producer not register")
}
if topic == "" {
return mqMsg, gerror.New("RedisMq topic is empty")
}
@@ -213,7 +213,7 @@ func getRandMsgId() string {
}
func (r *RedisMq) loopReadDelayQueue(key string) (resCh chan MqMsg, errCh chan error) {
resCh = make(chan MqMsg, 0)
resCh = make(chan MqMsg)
errCh = make(chan error, 1)
go func() {
@@ -245,8 +245,8 @@ func (r *RedisMq) loopReadDelayQueue(key string) (resCh chan MqMsg, errCh chan e
errCh <- err
return
} else if pop.IsEmpty() {
conn.ZRem(ctx, key, listK)
conn.Del(ctx, listK)
_, _ = conn.ZRem(ctx, key, listK)
_, _ = conn.Del(ctx, listK)
break
} else {
var mqMsg MqMsg

View File

@@ -7,8 +7,6 @@ package queue
import (
"context"
"errors"
"fmt"
"github.com/apache/rocketmq-client-go/v2"
"github.com/apache/rocketmq-client-go/v2/consumer"
"github.com/apache/rocketmq-client-go/v2/primitive"
@@ -57,7 +55,7 @@ func (r *RocketMq) SendMsg(topic string, body string) (mqMsg MqMsg, err error) {
// SendByteMsg 生产数据
func (r *RocketMq) SendByteMsg(topic string, body []byte) (mqMsg MqMsg, err error) {
if r.producerIns == nil {
return mqMsg, errors.New("RocketMq producer not register")
return mqMsg, gerror.New("rocketMq producer not register")
}
result, err := r.producerIns.SendSync(context.Background(), &primitive.Message{
@@ -69,7 +67,7 @@ func (r *RocketMq) SendByteMsg(topic string, body []byte) (mqMsg MqMsg, err erro
return
}
if result.Status != primitive.SendOK {
return mqMsg, errors.New(fmt.Sprintf("RocketMq producer send msg error status:%v", result.Status))
return mqMsg, gerror.Newf("rocketMq producer send msg error status:%v", result.Status)
}
mqMsg = MqMsg{
@@ -89,7 +87,7 @@ func (r *RocketMq) SendDelayMsg(topic string, body string, delaySecond int64) (m
// ListenReceiveMsgDo 消费数据
func (r *RocketMq) ListenReceiveMsgDo(topic string, receiveDo func(mqMsg MqMsg)) (err error) {
if r.consumerIns == nil {
return errors.New("RocketMq consumer not register")
return gerror.New("rocketMq consumer not register")
}
err = r.consumerIns.Subscribe(topic, consumer.MessageSelector{}, func(ctx context.Context, msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) {
@@ -105,15 +103,13 @@ func (r *RocketMq) ListenReceiveMsgDo(topic string, receiveDo func(mqMsg MqMsg))
})
if err != nil {
return err
return
}
err = r.consumerIns.Start()
if err != nil {
r.consumerIns.Unsubscribe(topic)
return err
if err = r.consumerIns.Start(); err != nil {
_ = r.consumerIns.Unsubscribe(topic)
return
}
return
}
@@ -145,7 +141,6 @@ func RegisterRocketMqProducer(endPoints []string, groupName string, retry int) (
if err != nil {
return nil, err
}
return mqIns, nil
}
@@ -167,6 +162,5 @@ func RegisterRocketMqConsumer(endPoints []string, groupName string) (mqIns *Rock
if err != nil {
return nil, err
}
return mqIns, nil
}

View File

@@ -70,7 +70,6 @@ func CreateClient(accessKeyId *string, accessKeySecret *string) (_result *dysmsa
}
// 访问的域名
config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
_result = &dysmsapi20170525.Client{}
_result, _err = dysmsapi20170525.NewClient(config)
return _result, _err
}

View File

@@ -247,7 +247,6 @@ func ParseLoginUser(r *ghttp.Request) (user *model.Identity, err error) {
refreshToken()
})
user = new(model.Identity)
user = claims.Identity
return
}