package logic import ( "context" "shorturl/rpc/transform/internal/svc" "shorturl/rpc/transform/model" transform "shorturl/rpc/transform/pb" "github.com/tal-tech/go-zero/core/hash" "github.com/tal-tech/go-zero/core/logx" ) type ShortenLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewShortenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ShortenLogic { return &ShortenLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *ShortenLogic) Shorten(in *transform.ShortenReq) (*transform.ShortenResp, error) { key := hash.Md5Hex([]byte(in.Url))[:6] _, err := l.svcCtx.Model.Insert(model.Shorturl{ Shorten: key, Url: in.Url, }) if err != nil { return nil, err } return &transform.ShortenResp{ Shorten: key, }, nil }