瀏覽代碼

feat: 调整借口

2637309949 4 年之前
父節點
當前提交
13e3b8900f

+ 2 - 1
go.mod

@@ -6,7 +6,8 @@ require (
 	git.i2edu.net/i2/go-zero v1.0.0
 	github.com/go-sql-driver/mysql v1.6.0 // indirect
 	github.com/golang/protobuf v1.4.2
-	github.com/iancoleman/strcase v0.1.3 // indirect
+	github.com/thoas/go-funk v0.8.0 // indirect
 	go.uber.org/automaxprocs v1.4.0 // indirect
 	google.golang.org/grpc v1.29.1
+	google.golang.org/protobuf v1.26.0-rc.1 // indirect
 )

+ 6 - 14
go.sum

@@ -1,6 +1,4 @@
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-git.i2edu.net/i2/go-zero v0.0.0-20210611055653-34fed21a23cd h1:tGrad9Wk9+IlxsO65FFVugFRqdAEhSz5vnGUetOrt8g=
-git.i2edu.net/i2/go-zero v0.0.0-20210611055653-34fed21a23cd/go.mod h1:a9idDtfMmMXrZIHyDg6XnYjWuCpKG0I6zv6Vo9Fpncc=
 git.i2edu.net/i2/go-zero v1.0.0 h1:tB6YOQ4PwOkZwIrzXV+fv6rZajohZbdsBTLw+PHjo3E=
 git.i2edu.net/i2/go-zero v1.0.0/go.mod h1:a9idDtfMmMXrZIHyDg6XnYjWuCpKG0I6zv6Vo9Fpncc=
 github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
@@ -39,7 +37,6 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee
 github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28=
 github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
 github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -49,7 +46,6 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumC
 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4 h1:qk/FSDDxo05wdJH28W+p5yivv7LuLYLRXPPD8KQCtZs=
 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/emicklei/proto v1.9.0 h1:l0QiNT6Qs7Yj0Mb4X6dnWBQer4ebei2BFcgQLbGqUDc=
 github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A=
 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -57,7 +53,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
 github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
-github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
 github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
 github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
@@ -108,8 +103,9 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
 github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -130,8 +126,6 @@ github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplb
 github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/iancoleman/strcase v0.1.2/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
-github.com/iancoleman/strcase v0.1.3 h1:dJBk1m2/qjL1twPLf68JND55vvivMupZ4wIzE8CTdBw=
-github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
 github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
 github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
@@ -157,7 +151,6 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
 github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -215,7 +208,6 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@@ -235,20 +227,19 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/thoas/go-funk v0.8.0 h1:JP9tKSvnpFVclYgDM0Is7FD9M4fhPvqA0s0BsXmzSRQ=
+github.com/thoas/go-funk v0.8.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6 h1:lYIiVDtZnyTWlNwiAxLj0bbpTcx1BWCFhXjfsvmPdNc=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU=
 github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryBNl9eKOeqQ58Y/Qpo3Q9QNxKHX5uzzQ=
 github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb h1:ZkM6LRnq40pR1Ox0hTHlnpkcOTuFIDQpZ1IN8rKKhX0=
 github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ=
-github.com/zeromicro/antlr v0.0.1 h1:CQpIn/dc0pUjgGQ81y98s/NGOm2Hfru2NNio2I9mQgk=
 github.com/zeromicro/antlr v0.0.1/go.mod h1:nfpjEwFR6Q4xGDJMcZnCL9tEfQRgszMwu3rDz2Z+p5M=
 go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg=
 go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
@@ -375,8 +366,9 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
-google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

+ 26 - 5
internal/logic/getuserlogic.go

@@ -4,9 +4,11 @@ import (
 	"context"
 
 	"git.i2edu.net/i2/i2-bill-erp/internal/svc"
+	"git.i2edu.net/i2/i2-bill-erp/model"
 	"git.i2edu.net/i2/i2-bill-erp/transform"
 
 	"git.i2edu.net/i2/go-zero/core/logx"
+	"git.i2edu.net/i2/go-zero/core/stores/sqlc"
 )
 
 type GetUserLogic struct {
@@ -23,13 +25,32 @@ func NewGetUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserLo
 	}
 }
 
-func (l *GetUserLogic) GetUser(in *transform.Request) (*transform.Response, error) {
-	// todo: add your logic here and delete this line
-	tfr := transform.Response{}
-	user, err := l.svcCtx.SysUserModel.FindOne(in.Id)
+func (l *GetUserLogic) GetUser(in *transform.UserRequest) (*transform.UserResponse, error) {
+	tfr, user := transform.UserResponse{}, &model.SysUser{}
+	var err error
+	if in.Id != "" {
+		user, err = l.svcCtx.SysUserModel.FindOne(in.Id)
+		if err != nil && err != sqlc.ErrNotFound {
+			return nil, err
+		}
+	} else if in.Phone != "" {
+		user, err = l.svcCtx.SysUserModel.FindOneByPhone(in.Phone)
+		if err != nil && err != sqlc.ErrNotFound {
+			return nil, err
+		}
+	}
+	tfr.Id = user.Id
+	tfr.Phone = user.Mobile
+	tfr.Status = user.Status.Int64
+	ext, err := l.svcCtx.ErpUtil.InRoles(user.Id, "TMKZHUGUAN", "LAMK", "TMKmanager", "TMKassistant", "NetTMKdirector", "NetTMKassistant", "LAMKM", "LATMK")
 	if err != nil {
 		return nil, err
 	}
-	tfr.Id = user.Id
+	tfr.IsJzMk = ext
+	mk, err := l.svcCtx.MktPartTimeUser.FindOneByPhone(in.Phone)
+	if err == nil && mk.Id != 0 {
+		tfr.IsJzMem = true
+		return nil, err
+	}
 	return &tfr, nil
 }

+ 1 - 1
internal/server/transformserver.go

@@ -21,7 +21,7 @@ func NewTransformServer(svcCtx *svc.ServiceContext) *TransformServer {
 	}
 }
 
-func (s *TransformServer) GetUser(ctx context.Context, in *transform.Request) (*transform.Response, error) {
+func (s *TransformServer) GetUser(ctx context.Context, in *transform.UserRequest) (*transform.UserResponse, error) {
 	l := logic.NewGetUserLogic(ctx, s.svcCtx)
 	return l.GetUser(in)
 }

+ 84 - 7
internal/svc/servicecontext.go

@@ -1,22 +1,99 @@
 package svc
 
 import (
+	"fmt"
+	"strings"
+
 	"git.i2edu.net/i2/i2-bill-erp/internal/config"
 	"git.i2edu.net/i2/i2-bill-erp/model"
+	"github.com/thoas/go-funk"
 
+	"git.i2edu.net/i2/go-zero/core/stores/sqlc"
 	"git.i2edu.net/i2/go-zero/core/stores/sqlx"
 )
 
+// RoleIdsMap 定义角色映射
+var RoleIdsMap = map[string]string{
+	"TA":                     "0149c7c3-0c84-4609-9d73-688c176d0b26",
+	"VP(Vice President)":     "0256f33b-8a08-4b4e-9d00-ffda70a4f117",
+	"TMKZHUGUAN":             "03303f2e-011c-42d2-abad-7716479f2f2e",
+	"LAMK":                   "1",
+	"HQLAFin":                "108",
+	"FT":                     "11",
+	"LACTAman":               "113",
+	"HQFinD":                 "147",
+	"TMKmanager":             "156",
+	"TMKassistant":           "160",
+	"fzjl":                   "165",
+	"NetTMKdirector":         "176",
+	"CRM":                    "178",
+	"NetTMKassistant":        "184",
+	"CWCN":                   "1c24104c-53ed-4cd7-b082-c08723e05ef0",
+	"LAEC":                   "2",
+	"QGYG":                   "2554652e-9c42-4dbd-8fed-9415d1ee52f0",
+	"LATAM":                  "2719ca1d-0181-4a33-9285-c6bf7297c128",
+	"LANEC":                  "297da937-cbe5-4f45-862f-048aafd9a312",
+	"student/readingStudent": "945e25cf-feb8-44a5-8878-c394412baa16",
+	"LAMKM":                  "302de654-7547-4ff7-adfa-18e64bfec4ba",
+	"LAFAM":                  "307a0f29-29bb-45df-9ab3-b147d659842c",
+	"LAschoolmaster":         "4",
+	"LAECM":                  "50f777c3-401b-4846-aa4d-951e09260d70",
+	"waishibuHR":             "5b16322d-1538-4cea-b22b-77d439ce1ae8",
+	"LATMK":                  "612f71b2-51cb-409c-8a59-265699a179f2",
+	"XZ":                     "61fe4159-4859-4e45-a9df-3b22dfb24b03",
+	"zjl":                    "6a5f288a-3ebe-4d7a-b95e-74fbea7450a4",
+	"chanpin":                "a50e1e15-9626-40e7-94de-36cddc6f4d7c",
+	"sql":                    "afe1266c-679e-44f2-9a7a-ac362bb4679a",
+	"network":                "c3cae708-3490-46c4-968c-d7e3c2a2159f",
+	"HR":                     "d3ad774a-b71a-4be1-92d4-ab1087485c67",
+	"EC-zongjian":            "dc277f9a-4052-46ae-acfb-1151ccf16139",
+	"CWZG":                   "dfe858a6-614d-4fa1-873d-39aef650d35d",
+	"test":                   "e018daef-295b-4511-80fe-79887a1ac406",
+	"EA":                     "e828a24c-9a81-4d8e-b158-8c93e74c7aca",
+	"LAWL":                   "f0c63d0b-d0fc-4a1e-9897-01bbb6aa1b58",
+	"LAadmin":                "fc3560f6-e728-490f-aeea-613ed44668fa",
+}
+
 type ServiceContext struct {
-	Config       config.Config
-	StudentModel model.StudentModel
-	SysUserModel model.SysUserModel
+	Config          config.Config
+	SqlConn         sqlx.SqlConn
+	ErpUtil         *ErpUtil
+	StudentModel    model.StudentModel
+	SysUserModel    model.SysUserModel
+	MktPartTimeUser model.MktPartTimeUserModel
+}
+
+type ErpUtil struct {
+	Config  config.Config
+	SqlConn sqlx.SqlConn
+}
+
+func (rp *ErpUtil) InRoles(userId string, roles ...string) (bool, error) {
+	user := model.SysUser{}
+	role := strings.Join(funk.Map(roles, func(r string) string { return fmt.Sprintf("'%v'", r) }).([]string), ",")
+	err := rp.SqlConn.QueryRow(&user, fmt.Sprintf(`SELECT sys_user_role.user_id id FROM sys_user_role
+	left join sys_role on sys_role.id=sys_user_role.role_id 
+	where sys_role.code in (%v) and sys_role.del_flag=0 and sys_user_role.del_flag=0 and sys_user_role.user_id=?`, role), userId)
+	switch err {
+	case nil:
+		return false, nil
+	case sqlc.ErrNotFound:
+		return false, nil
+	default:
+		return true, nil
+	}
 }
 
 func NewServiceContext(c config.Config) *ServiceContext {
-	return &ServiceContext{
-		Config:       c,
-		StudentModel: model.NewStudentModel(sqlx.NewMysql(c.DataSource), c.Cache),
-		SysUserModel: model.NewSysUserModel(sqlx.NewMysql(c.DataSource), c.Cache),
+	sc := ServiceContext{
+		Config:  c,
+		SqlConn: sqlx.NewMysql(c.DataSource),
+		ErpUtil: &ErpUtil{},
 	}
+	sc.StudentModel = model.NewStudentModel(sc.SqlConn, c.Cache)
+	sc.SysUserModel = model.NewSysUserModel(sc.SqlConn, c.Cache)
+	sc.MktPartTimeUser = model.NewMktPartTimeUserModel(sc.SqlConn, c.Cache)
+	sc.ErpUtil.SqlConn = sc.SqlConn
+	sc.ErpUtil.Config = sc.Config
+	return &sc
 }

+ 15 - 0
model/mkt_part_time_user.sql

@@ -0,0 +1,15 @@
+CREATE TABLE `mkt_part_time_user` (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+  `ipone_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+  `sex` int DEFAULT NULL,
+  `create_by` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+  `create_time` datetime DEFAULT NULL,
+  `last_update_by` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+  `last_update_time` datetime DEFAULT NULL,
+  `del_flag` tinyint DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  KEY `IDX_mkt_part_time_user_ipone_number` (`ipone_number`),
+  KEY `IDX_mkt_part_time_user_name` (`name`),
+  KEY `IDX_mkt_part_time_user_sex` (`sex`)
+) ENGINE=InnoDB AUTO_INCREMENT=4358 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

+ 126 - 0
model/mktparttimeusermodel.go

@@ -0,0 +1,126 @@
+package model
+
+import (
+	"database/sql"
+	"fmt"
+	"strings"
+
+	"git.i2edu.net/i2/go-zero/core/stores/cache"
+	"git.i2edu.net/i2/go-zero/core/stores/sqlc"
+	"git.i2edu.net/i2/go-zero/core/stores/sqlx"
+	"git.i2edu.net/i2/go-zero/core/stringx"
+	"git.i2edu.net/i2/go-zero/tools/goctl/model/sql/builderx"
+)
+
+var (
+	mktPartTimeUserFieldNames          = builderx.RawFieldNames(&MktPartTimeUser{})
+	mktPartTimeUserRows                = strings.Join(mktPartTimeUserFieldNames, ",")
+	mktPartTimeUserRowsExpectAutoSet   = strings.Join(stringx.Remove(mktPartTimeUserFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
+	mktPartTimeUserRowsWithPlaceHolder = strings.Join(stringx.Remove(mktPartTimeUserFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
+
+	cacheMktPartTimeUserIdPrefix    = "cache:mktPartTimeUser:id:"
+	cacheMktPartTimeUserPhonePrefix = "cache:mktPartTimeUser:phone:"
+)
+
+type (
+	MktPartTimeUserModel interface {
+		Insert(data MktPartTimeUser) (sql.Result, error)
+		FindOne(id int64) (*MktPartTimeUser, error)
+		FindOneByPhone(id string) (*MktPartTimeUser, error)
+		Update(data MktPartTimeUser) error
+		Delete(id int64) error
+	}
+
+	defaultMktPartTimeUserModel struct {
+		sqlc.CachedConn
+		table string
+	}
+
+	MktPartTimeUser struct {
+		Id             int64          `db:"id"`
+		Name           sql.NullString `db:"name"`
+		Sex            sql.NullInt64  `db:"sex"`
+		CreateBy       sql.NullString `db:"create_by"`
+		CreateTime     sql.NullTime   `db:"create_time"`
+		LastUpdateBy   sql.NullString `db:"last_update_by"`
+		LastUpdateTime sql.NullTime   `db:"last_update_time"`
+		IponeNumber    sql.NullString `db:"ipone_number"`
+		DelFlag        sql.NullInt64  `db:"del_flag"`
+	}
+)
+
+func NewMktPartTimeUserModel(conn sqlx.SqlConn, c cache.CacheConf) MktPartTimeUserModel {
+	return &defaultMktPartTimeUserModel{
+		CachedConn: sqlc.NewConn(conn, c),
+		table:      "`mkt_part_time_user`",
+	}
+}
+
+func (m *defaultMktPartTimeUserModel) Insert(data MktPartTimeUser) (sql.Result, error) {
+	query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?)", m.table, mktPartTimeUserRowsExpectAutoSet)
+	ret, err := m.ExecNoCache(query, data.Name, data.Sex, data.CreateBy, data.LastUpdateBy, data.LastUpdateTime, data.IponeNumber, data.DelFlag)
+
+	return ret, err
+}
+
+func (m *defaultMktPartTimeUserModel) FindOne(id int64) (*MktPartTimeUser, error) {
+	mktPartTimeUserIdKey := fmt.Sprintf("%s%v", cacheMktPartTimeUserIdPrefix, id)
+	var resp MktPartTimeUser
+	err := m.QueryRow(&resp, mktPartTimeUserIdKey, func(conn sqlx.SqlConn, v interface{}) error {
+		query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", mktPartTimeUserRows, m.table)
+		return conn.QueryRow(v, query, id)
+	})
+	switch err {
+	case nil:
+		return &resp, nil
+	case sqlc.ErrNotFound:
+		return nil, ErrNotFound
+	default:
+		return nil, err
+	}
+}
+
+func (m *defaultMktPartTimeUserModel) FindOneByPhone(phone string) (*MktPartTimeUser, error) {
+	mktPartTimeUserPhoneKey := fmt.Sprintf("%s%v", cacheMktPartTimeUserPhonePrefix, phone)
+	var resp MktPartTimeUser
+	err := m.QueryRow(&resp, mktPartTimeUserPhoneKey, func(conn sqlx.SqlConn, v interface{}) error {
+		query := fmt.Sprintf("select %s from %s where `ipone_number` = ? limit 1", mktPartTimeUserRows, m.table)
+		return conn.QueryRow(v, query, phone)
+	})
+	switch err {
+	case nil:
+		return &resp, nil
+	case sqlc.ErrNotFound:
+		return nil, ErrNotFound
+	default:
+		return nil, err
+	}
+}
+
+func (m *defaultMktPartTimeUserModel) Update(data MktPartTimeUser) error {
+	mktPartTimeUserIdKey := fmt.Sprintf("%s%v", cacheMktPartTimeUserIdPrefix, data.Id)
+	_, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
+		query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, mktPartTimeUserRowsWithPlaceHolder)
+		return conn.Exec(query, data.Name, data.Sex, data.CreateBy, data.LastUpdateBy, data.LastUpdateTime, data.IponeNumber, data.DelFlag, data.Id)
+	}, mktPartTimeUserIdKey)
+	return err
+}
+
+func (m *defaultMktPartTimeUserModel) Delete(id int64) error {
+
+	mktPartTimeUserIdKey := fmt.Sprintf("%s%v", cacheMktPartTimeUserIdPrefix, id)
+	_, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
+		query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
+		return conn.Exec(query, id)
+	}, mktPartTimeUserIdKey)
+	return err
+}
+
+func (m *defaultMktPartTimeUserModel) formatPrimary(primary interface{}) string {
+	return fmt.Sprintf("%s%v", cacheMktPartTimeUserIdPrefix, primary)
+}
+
+func (m *defaultMktPartTimeUserModel) queryPrimary(conn sqlx.SqlConn, v, primary interface{}) error {
+	query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", mktPartTimeUserRows, m.table)
+	return conn.QueryRow(v, query, primary)
+}

+ 20 - 1
model/sysusermodel.go

@@ -19,13 +19,15 @@ var (
 	sysUserRowsExpectAutoSet   = strings.Join(stringx.Remove(sysUserFieldNames, "`create_time`", "`update_time`"), ",")
 	sysUserRowsWithPlaceHolder = strings.Join(stringx.Remove(sysUserFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
 
-	cacheSysUserIdPrefix = "cache:sysUser:id:"
+	cacheSysUserIdPrefix    = "cache:sysUser:id:"
+	cacheSysUserPhonePrefix = "cache:sysUser:phone:"
 )
 
 type (
 	SysUserModel interface {
 		Insert(data SysUser) (sql.Result, error)
 		FindOne(id string) (*SysUser, error)
+		FindOneByPhone(id string) (*SysUser, error)
 		Update(data SysUser) error
 		Delete(id string) error
 	}
@@ -91,6 +93,23 @@ func (m *defaultSysUserModel) FindOne(id string) (*SysUser, error) {
 	}
 }
 
+func (m *defaultSysUserModel) FindOneByPhone(phone string) (*SysUser, error) {
+	sysUserIPhoneKey := fmt.Sprintf("%s%v", cacheSysUserPhonePrefix, phone)
+	var resp SysUser
+	err := m.QueryRow(&resp, sysUserIPhoneKey, func(conn sqlx.SqlConn, v interface{}) error {
+		query := fmt.Sprintf("select %s from %s where `mobile` = ? limit 1", sysUserRows, m.table)
+		return conn.QueryRow(v, query, cacheSysUserPhonePrefix)
+	})
+	switch err {
+	case nil:
+		return &resp, nil
+	case sqlc.ErrNotFound:
+		return nil, ErrNotFound
+	default:
+		return nil, err
+	}
+}
+
 func (m *defaultSysUserModel) Update(data SysUser) error {
 	sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, data.Id)
 	_, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {

+ 1 - 0
start.sh

@@ -7,6 +7,7 @@ goctl rpc proto -src transform.proto -dir .
 ### GEN MODEL
 goctl model mysql ddl -c -src model/student.sql -dir model
 goctl model mysql ddl -c -src model/sys_user.sql -dir model
+goctl model mysql ddl -c -src model/mkt_part_time_user.sql -dir model
 
 ### RUN RPC SRV 
 go run transform.go -f etc/transform.yaml 

+ 5 - 3
transform.proto

@@ -2,18 +2,20 @@ syntax = "proto3";
 
 package transform;
 
-message Request {
+message UserRequest {
   string id = 1;
   string phone = 2;
 }
 
-message Response {
+message UserResponse {
   string id = 1;
   string phone = 2;
   string roles = 3;
   int64 status = 4;
+  bool isJzMem = 5;
+  bool isJzMk  = 6;
 }
 
 service Transform {
-  rpc GetUser(Request) returns(Response);
+  rpc GetUser(UserRequest) returns(UserResponse);
 }

+ 75 - 57
transform/transform.pb.go

@@ -24,7 +24,7 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
-type Request struct {
+type UserRequest struct {
 	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	Phone                string   `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -32,128 +32,146 @@ type Request struct {
 	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Request) Reset()         { *m = Request{} }
-func (m *Request) String() string { return proto.CompactTextString(m) }
-func (*Request) ProtoMessage()    {}
-func (*Request) Descriptor() ([]byte, []int) {
+func (m *UserRequest) Reset()         { *m = UserRequest{} }
+func (m *UserRequest) String() string { return proto.CompactTextString(m) }
+func (*UserRequest) ProtoMessage()    {}
+func (*UserRequest) Descriptor() ([]byte, []int) {
 	return fileDescriptor_cb4a498eeb2ba07d, []int{0}
 }
 
-func (m *Request) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Request.Unmarshal(m, b)
+func (m *UserRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UserRequest.Unmarshal(m, b)
 }
-func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Request.Marshal(b, m, deterministic)
+func (m *UserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UserRequest.Marshal(b, m, deterministic)
 }
-func (m *Request) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Request.Merge(m, src)
+func (m *UserRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UserRequest.Merge(m, src)
 }
-func (m *Request) XXX_Size() int {
-	return xxx_messageInfo_Request.Size(m)
+func (m *UserRequest) XXX_Size() int {
+	return xxx_messageInfo_UserRequest.Size(m)
 }
-func (m *Request) XXX_DiscardUnknown() {
-	xxx_messageInfo_Request.DiscardUnknown(m)
+func (m *UserRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UserRequest.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_Request proto.InternalMessageInfo
+var xxx_messageInfo_UserRequest proto.InternalMessageInfo
 
-func (m *Request) GetId() string {
+func (m *UserRequest) GetId() string {
 	if m != nil {
 		return m.Id
 	}
 	return ""
 }
 
-func (m *Request) GetPhone() string {
+func (m *UserRequest) GetPhone() string {
 	if m != nil {
 		return m.Phone
 	}
 	return ""
 }
 
-type Response struct {
+type UserResponse struct {
 	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	Phone                string   `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"`
 	Roles                string   `protobuf:"bytes,3,opt,name=roles,proto3" json:"roles,omitempty"`
 	Status               int64    `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
+	IsJzMem              bool     `protobuf:"varint,5,opt,name=isJzMem,proto3" json:"isJzMem,omitempty"`
+	IsJzMk               bool     `protobuf:"varint,6,opt,name=isJzMk,proto3" json:"isJzMk,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Response) Reset()         { *m = Response{} }
-func (m *Response) String() string { return proto.CompactTextString(m) }
-func (*Response) ProtoMessage()    {}
-func (*Response) Descriptor() ([]byte, []int) {
+func (m *UserResponse) Reset()         { *m = UserResponse{} }
+func (m *UserResponse) String() string { return proto.CompactTextString(m) }
+func (*UserResponse) ProtoMessage()    {}
+func (*UserResponse) Descriptor() ([]byte, []int) {
 	return fileDescriptor_cb4a498eeb2ba07d, []int{1}
 }
 
-func (m *Response) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Response.Unmarshal(m, b)
+func (m *UserResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UserResponse.Unmarshal(m, b)
 }
-func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Response.Marshal(b, m, deterministic)
+func (m *UserResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UserResponse.Marshal(b, m, deterministic)
 }
-func (m *Response) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Response.Merge(m, src)
+func (m *UserResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UserResponse.Merge(m, src)
 }
-func (m *Response) XXX_Size() int {
-	return xxx_messageInfo_Response.Size(m)
+func (m *UserResponse) XXX_Size() int {
+	return xxx_messageInfo_UserResponse.Size(m)
 }
-func (m *Response) XXX_DiscardUnknown() {
-	xxx_messageInfo_Response.DiscardUnknown(m)
+func (m *UserResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_UserResponse.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_Response proto.InternalMessageInfo
+var xxx_messageInfo_UserResponse proto.InternalMessageInfo
 
-func (m *Response) GetId() string {
+func (m *UserResponse) GetId() string {
 	if m != nil {
 		return m.Id
 	}
 	return ""
 }
 
-func (m *Response) GetPhone() string {
+func (m *UserResponse) GetPhone() string {
 	if m != nil {
 		return m.Phone
 	}
 	return ""
 }
 
-func (m *Response) GetRoles() string {
+func (m *UserResponse) GetRoles() string {
 	if m != nil {
 		return m.Roles
 	}
 	return ""
 }
 
-func (m *Response) GetStatus() int64 {
+func (m *UserResponse) GetStatus() int64 {
 	if m != nil {
 		return m.Status
 	}
 	return 0
 }
 
+func (m *UserResponse) GetIsJzMem() bool {
+	if m != nil {
+		return m.IsJzMem
+	}
+	return false
+}
+
+func (m *UserResponse) GetIsJzMk() bool {
+	if m != nil {
+		return m.IsJzMk
+	}
+	return false
+}
+
 func init() {
-	proto.RegisterType((*Request)(nil), "transform.Request")
-	proto.RegisterType((*Response)(nil), "transform.Response")
+	proto.RegisterType((*UserRequest)(nil), "transform.UserRequest")
+	proto.RegisterType((*UserResponse)(nil), "transform.UserResponse")
 }
 
 func init() { proto.RegisterFile("transform.proto", fileDescriptor_cb4a498eeb2ba07d) }
 
 var fileDescriptor_cb4a498eeb2ba07d = []byte{
-	// 169 bytes of a gzipped FileDescriptorProto
+	// 203 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2f, 0x29, 0x4a, 0xcc,
 	0x2b, 0x4e, 0xcb, 0x2f, 0xca, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x84, 0x0b, 0x28,
-	0xe9, 0x73, 0xb1, 0x07, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0xf1, 0x71, 0x31, 0x65, 0xa6,
-	0x48, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x31, 0x65, 0xa6, 0x08, 0x89, 0x70, 0xb1, 0x16, 0x64,
-	0xe4, 0xe7, 0xa5, 0x4a, 0x30, 0x81, 0x85, 0x20, 0x1c, 0xa5, 0x38, 0x2e, 0x8e, 0xa0, 0xd4, 0xe2,
-	0x82, 0xfc, 0xbc, 0xe2, 0x54, 0xe2, 0x74, 0x80, 0x44, 0x8b, 0xf2, 0x73, 0x52, 0x8b, 0x25, 0x98,
-	0x21, 0xa2, 0x60, 0x8e, 0x90, 0x18, 0x17, 0x5b, 0x71, 0x49, 0x62, 0x49, 0x69, 0xb1, 0x04, 0x8b,
-	0x02, 0xa3, 0x06, 0x73, 0x10, 0x94, 0x67, 0x64, 0xcf, 0xc5, 0x19, 0x02, 0x73, 0x9d, 0x90, 0x11,
-	0x17, 0xbb, 0x7b, 0x6a, 0x49, 0x68, 0x71, 0x6a, 0x91, 0x90, 0x90, 0x1e, 0xc2, 0x17, 0x50, 0x17,
-	0x4b, 0x09, 0xa3, 0x88, 0x41, 0x1c, 0x95, 0xc4, 0x06, 0xf6, 0xa3, 0x31, 0x20, 0x00, 0x00, 0xff,
-	0xff, 0x1e, 0x2a, 0x08, 0x8a, 0xf6, 0x00, 0x00, 0x00,
+	0x19, 0x73, 0x71, 0x87, 0x16, 0xa7, 0x16, 0x05, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0xf1,
+	0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x31, 0x65, 0xa6, 0x08, 0x89,
+	0x70, 0xb1, 0x16, 0x64, 0xe4, 0xe7, 0xa5, 0x4a, 0x30, 0x81, 0x85, 0x20, 0x1c, 0xa5, 0x29, 0x8c,
+	0x5c, 0x3c, 0x10, 0x5d, 0xc5, 0x05, 0xf9, 0x79, 0xc5, 0xa9, 0xc4, 0x69, 0x03, 0x89, 0x16, 0xe5,
+	0xe7, 0xa4, 0x16, 0x4b, 0x30, 0x43, 0x44, 0xc1, 0x1c, 0x21, 0x31, 0x2e, 0xb6, 0xe2, 0x92, 0xc4,
+	0x92, 0xd2, 0x62, 0x09, 0x16, 0x05, 0x46, 0x0d, 0xe6, 0x20, 0x28, 0x4f, 0x48, 0x82, 0x8b, 0x3d,
+	0xb3, 0xd8, 0xab, 0xca, 0x37, 0x35, 0x57, 0x82, 0x55, 0x81, 0x51, 0x83, 0x23, 0x08, 0xc6, 0x05,
+	0xe9, 0x00, 0x33, 0xb3, 0x25, 0xd8, 0xc0, 0x12, 0x50, 0x9e, 0x91, 0x3b, 0x17, 0x67, 0x08, 0xcc,
+	0x63, 0x42, 0x56, 0x5c, 0xec, 0xee, 0xa9, 0x25, 0x20, 0x57, 0x0a, 0x89, 0xe9, 0x21, 0x02, 0x00,
+	0xc9, 0xb3, 0x52, 0xe2, 0x18, 0xe2, 0x10, 0xef, 0x24, 0xb1, 0x81, 0x83, 0xc9, 0x18, 0x10, 0x00,
+	0x00, 0xff, 0xff, 0x14, 0x18, 0x85, 0x2f, 0x39, 0x01, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -168,7 +186,7 @@ const _ = grpc.SupportPackageIsVersion4
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type TransformClient interface {
-	GetUser(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error)
+	GetUser(ctx context.Context, in *UserRequest, opts ...grpc.CallOption) (*UserResponse, error)
 }
 
 type transformClient struct {
@@ -179,8 +197,8 @@ func NewTransformClient(cc *grpc.ClientConn) TransformClient {
 	return &transformClient{cc}
 }
 
-func (c *transformClient) GetUser(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) {
-	out := new(Response)
+func (c *transformClient) GetUser(ctx context.Context, in *UserRequest, opts ...grpc.CallOption) (*UserResponse, error) {
+	out := new(UserResponse)
 	err := c.cc.Invoke(ctx, "/transform.Transform/GetUser", in, out, opts...)
 	if err != nil {
 		return nil, err
@@ -190,14 +208,14 @@ func (c *transformClient) GetUser(ctx context.Context, in *Request, opts ...grpc
 
 // TransformServer is the server API for Transform service.
 type TransformServer interface {
-	GetUser(context.Context, *Request) (*Response, error)
+	GetUser(context.Context, *UserRequest) (*UserResponse, error)
 }
 
 // UnimplementedTransformServer can be embedded to have forward compatible implementations.
 type UnimplementedTransformServer struct {
 }
 
-func (*UnimplementedTransformServer) GetUser(ctx context.Context, req *Request) (*Response, error) {
+func (*UnimplementedTransformServer) GetUser(ctx context.Context, req *UserRequest) (*UserResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetUser not implemented")
 }
 
@@ -206,7 +224,7 @@ func RegisterTransformServer(s *grpc.Server, srv TransformServer) {
 }
 
 func _Transform_GetUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Request)
+	in := new(UserRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
@@ -218,7 +236,7 @@ func _Transform_GetUser_Handler(srv interface{}, ctx context.Context, dec func(i
 		FullMethod: "/transform.Transform/GetUser",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(TransformServer).GetUser(ctx, req.(*Request))
+		return srv.(TransformServer).GetUser(ctx, req.(*UserRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }

+ 4 - 4
transformclient/transform.go

@@ -14,11 +14,11 @@ import (
 )
 
 type (
-	Request  = transform.Request
-	Response = transform.Response
+	UserRequest  = transform.UserRequest
+	UserResponse = transform.UserResponse
 
 	Transform interface {
-		GetUser(ctx context.Context, in *Request) (*Response, error)
+		GetUser(ctx context.Context, in *UserRequest) (*UserResponse, error)
 	}
 
 	defaultTransform struct {
@@ -32,7 +32,7 @@ func NewTransform(cli zrpc.Client) Transform {
 	}
 }
 
-func (m *defaultTransform) GetUser(ctx context.Context, in *Request) (*Response, error) {
+func (m *defaultTransform) GetUser(ctx context.Context, in *UserRequest) (*UserResponse, error) {
 	client := transform.NewTransformClient(m.cli.Conn())
 	return client.GetUser(ctx, in)
 }