java全家桶之56: go对接java erp

        本文展示了Go语言实现的Java平台功能,主要包括用户令牌管理和权限验证。通过Goplatform结构体实现令牌获取、用户信息查询等功能,使用Redis存储会话数据。CheckToken方法验证请求头中的access-token有效性,Query方法演示了如何在实际业务中应用令牌验证。代码示例包含完整的ErpUser用户模型定义和基于Gin框架的API接口实现,展示了从请求处理到Redis数据操作的全流程。

java实现

现在新功能使用go

package javaplatform

import (
    "context"
    "gitee.com/gowebframe/webframe/goconfig/base/basedto"
    "gitee.com/gowebframe/webframe/goconfig/ichublog/golog"
    "gitee.com/gowebframe/webframe/goconfig/ichubredis"
    "gitee.com/gowebframe/webframe/goweb/pagemodel"
    "github.com/gin-gonic/gin"
    "goapi/domain/service/apimodel"

    "github.com/gogf/gf/v2/container/gvar"
)

type Goplatform struct {
    basedto.BaseEntitySingle
}

func NewGoplatform() *Goplatform {
    return &Goplatform{}
}
func (self *Goplatform) tokenKey(token string) string {

    return "session:mgr:" + token
}
func (self *Goplatform) GetToken(token string) string {

    return self.GetTokenUser(token).String()
}
func (self *Goplatform) GetTokenUser(token string) *gvar.Var {
    key := self.tokenKey(token)
    value, err := ichubredis.FindBeanGredisClient().Redis.HGet(context.Background(), key, "user")

    if err != nil {
       golog.Error(err, value)
    }
    return value
}
func (self *Goplatform) GetTokenUser2Result(token string) *pagemodel.IchubResult[*apimodel.ErpUser] {
    key := self.tokenKey(token)
    value, err := ichubredis.FindBeanGredisClient().Redis.HGet(context.Background(), key, "user")

    if err != nil {
       golog.Error(err, value)
    }
    var ret = pagemodel.DefaultIchubResult[*apimodel.ErpUser]()
    if value != nil && value.String() != "" {
       ret.Data = apimodel.NewErpUser().FromJson(value.Bytes()).(*apimodel.ErpUser)
       ret.Exist = true
    }
    return ret
}

func (self *Goplatform) GetToken2Result(ctx *gin.Context) *pagemodel.IchubResult[*apimodel.ErpUser] {
    var token = ctx.GetHeader("access-token")
    return self.GetTokenUser2Result(token)
}
func (self *Goplatform) CheckToken(ctx *gin.Context) bool {
    var token = ctx.GetHeader("access-token")

    if token == "" {
       return false
    }
    return self.GetToken2Result(ctx).Exist
}
package apimodel

import "gitee.com/gowebframe/webframe/goconfig/base/basedto"

type ErpUser struct {
    basedto.BaseEntity
    Class     string        `json:"@class"`
    Id        int           `json:"id"`
    Username  string        `json:"username"`
    Passwd    string        `json:"passwd"`
    Realname  string        `json:"realname"`
    CorpId    int           `json:"corpId"`
    OrgId     int           `json:"orgId"`
    MobileNo  string        `json:"mobileNo"`
    Email     string        `json:"email"`
    Status    int           `json:"status"`
    Remark    string        `json:"remark"`
    CreateBy  int           `json:"createBy"`
    CreateOn  []interface{} `json:"createOn"`
    OpBy      int           `json:"opBy"`
    OpOn      []interface{} `json:"opOn"`
    ExtParams string        `json:"extParams"`
    SysOrg    interface{}   `json:"sysOrg"`
    SysRoles  interface{}   `json:"sysRoles"`
}

func NewErpUser() *ErpUser {
    var u = &ErpUser{}
    u.InitProxy(u)
    return u
}
// @Summary Query
// @Tags    部门服务
// @Produce json
// @Param   Access-Token   header    string true   "鉴权Token"
// @Param         body      body   uibase.UiPageRequest   true   "请求参数"
// @Success       200       {object}   uibase.UiPageResult    "成功"
// @Failure 400    {object}   string          "请求错误"
// @Failure 500    {object}   string          "内部错误"
// @Router     /dept/query [post]
func (this *DeptFuncService) Query(ctx *gin.Context) {

    if exist := javaplatform.FindBeanGoplatform().CheckToken(ctx); !exist {
       golog.Error("token过期或者空,请登录!")
       ctx.IndentedJSON(200, basedto.ResultFailMsg("请登录"))
       return
    }

    var req = uibase.FindBeanUiPageRequest()
    var err = this.ParseBodyOnly(ctx, req)
    if err != nil {
       golog.Error("dept Query ParseBodyOnly err:", err)
    }

    var ret = uidto.FindBeanDeptRequest().UiQueryResult(req)
    if ret.IsFailed() {
       golog.Error("dept Query ret:", ret)
    }
    ctx.IndentedJSON(200, ret)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leijmdas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值