Prechádzať zdrojové kódy

更新总后台grpc

jyq 4 rokov pred
rodič
commit
48000a4da8

+ 189 - 19
proto/client/bsw/im/im.proto

@@ -9,36 +9,75 @@ enum ErrorCode{
   OK = 0;
   PARAM = 4001;
   Exist = 4002;
+  Token = 4003;
 }
 
-// metadata 中需要字段 token 用作登录验证, sys_token用作系统验证
+// metadata: 综合管理系统前端调用需要字段 token 用作登录验证;子系统调用需要字段 sys_token 用作系统验证
 service Api {
   rpc SignUpUserCode (SignUpRequest) returns (SignUpReply) {}
   rpc SignUpPhone (SignUpRequest) returns (SignUpReply) {}
-  rpc SignInUserCode (SignInPasswordRequest) returns (SignInReply)  {}
-  rpc SignInWithPhonePassword (SignInPasswordRequest) returns (SignInReply)  {}
-  rpc SessionCheck (SessionCheckRequest) returns (SessionCheckReply)  {}
-  rpc SignOut (DefaultRequest) returns (DefaultReply)  {}
 
-  rpc SelfInfo (DefaultRequest) returns (UserInfo)  {}
+  rpc SignInUserCode (SignInPasswordRequest) returns (TokenParam)  {}
+  rpc SignInWithPhonePassword (SignInPasswordRequest) returns (TokenParam)  {}
 
-  rpc ServiceSaveList (SaveServiceListRequest) returns (DefaultReply)  {}
+  // ---子系统专用---
 
+  // 检查token有效性
+  rpc SubSessionCheck (TokenParam) returns (SessionCheckReply)  {}
+  // 检查token所属用户是否拥有调用service权限
+  rpc SubPermissionListCheck (PermissionCheck) returns (PermissionCheckReply)  {}
+  // 登出传入token
+  rpc SubSignOut (TokenParam) returns (DefaultReply)  {}
+  // 批量保存service
+  rpc SubServiceSaveList (SaveServiceListRequest) returns (DefaultReply)  {}
+
+  // ---子系统专用---
+
+  // 用户列表
+  rpc UserList (UserListRequest) returns (UserListReply)  {}
+  // 单个用户信息详情
+  rpc UserGetInfo (UserGetInfoRequest) returns (UserInfo)  {}
+  // 用户添加多个角色
   rpc UserAddRoles(UserRolesRequest) returns (DefaultReply)  {}
+  // 用户移除多个角色
   rpc UserRemoveRoles(UserRolesRequest) returns (DefaultReply)  {}
-
+  // 用户获取栏目列表
+  rpc UserGetColumnList(UserGetColumnListRequest) returns (UserGetColumnListReply)  {}
+  // 创建角色
   rpc RoleCreate(CreateRoleRequest) returns (DefaultReply)  {}
+  // 角色列表
   rpc RoleList(RoleListRequest) returns (RoleListReply)  {}
+  // 角色编辑
   rpc RoleEdit(Role) returns (DefaultReply)  {}
+  // 角色添加多个service权限
   rpc RoleAddPermissions(RolePermissionRequest) returns (DefaultReply)  {}
+  // 角色移除多个service权限
   rpc RoleRemovePermissions(RolePermissionRequest) returns (DefaultReply)  {}
 
+  // service权限列表
+  rpc ServiceList(ServiceListRequest) returns (ServiceListReply)  {}
+  // 移除service
+  rpc ServiceRemoveList(ServiceRemoveRequest) returns (DefaultReply)  {}
+
+  rpc ShopCreate (CreateShopRequest) returns (CreateReply)  {}
+  rpc ShopList (ShopListRequest) returns (ShopListReply)  {}
+  rpc SystemAddShop (SystemAddShopRequest) returns (DefaultReply)  {}
+  rpc SystemAddUser (SystemAddUserRequest) returns (DefaultReply)  {}
+  // ---总后台专用API---
 
-  // 总后台专用API
-  rpc IMSystemCreate (CreateSystemRequest) returns (SignInReply)  {}
+  rpc IMSystemCreate (CreateSystemRequest) returns (TokenParam)  {}
+  rpc IMSignOut (DefaultRequest) returns (DefaultReply)  {}
+  rpc IMSelfInfo (DefaultRequest) returns (UserInfo)  {}
+  rpc IMMessageRcv (DefaultRequest) returns (stream Message)  {}
+
+  // ---总后台专用API---
 }
 message DefaultRequest{
 }
+message TokenParam{
+  string token = 1;
+}
+
 message DefaultReply{}
 
 message SignUpReply{
@@ -53,14 +92,10 @@ message SignInPasswordRequest {
   int64 expirationSec = 4;
 }
 
-
-message SignInReply {
-  string token = 1;
-}
-
 enum Status{
-  Ban = 0;
-  On = 1;
+  Null = 0;
+  Ban = 1;
+  On = 2;
   Delete = 9;
 }
 
@@ -75,7 +110,6 @@ message SignUpRequest {
   string question = 8;
   string answer = 9;
   string memo = 10;
-
 }
 
 message UserInfo {
@@ -86,17 +120,30 @@ message UserInfo {
   string phone = 5 ;
   string qq = 7;
   string memo = 11;
+  Status status = 12;
 }
 
+message CreateReply{
+  int64 id = 1;
+}
 
-message SessionCheckRequest {
+message PermissionCheck {
   string token = 1;
+  int64  shopId = 2;
+  // servicePath全路径,区分大小写,如User/List
+  repeated string servicePathList = 3;
 }
 
+
 message SessionCheckReply {
   int64 userId = 1;
 }
 
+message PermissionCheckReply{
+  repeated bool resultList = 1;
+}
+
+
 message Service {
   string path = 1;
   string memo = 2;
@@ -113,6 +160,30 @@ message CreateSystemRequest{
   string memo = 4;
 }
 
+message UserGetColumnListRequest{
+  int64 userId = 1;
+  int64 shopId = 2;
+  // 最顶层为0
+  int32 parentId = 3;
+  // 仅综合管理后台调用有效
+  int64 sysId = 4;
+}
+
+message Column{
+  string name = 1;
+  string url = 2;
+  string code = 3;
+  // 顺序
+  int32 sn = 4;
+  Status status = 5;
+  bool navShow = 6;
+  int64 id = 7;
+}
+
+message UserGetColumnListReply{
+  repeated Column list = 1;
+}
+
 message CreateRoleRequest{
   string name = 1;
   string memo = 2;
@@ -131,6 +202,24 @@ message RoleListRequest{
   int64 sysId = 2;
 }
 
+message UserListRequest{
+  // 0为全部
+  int64 roleId = 1;
+  Status status = 2;
+  // 模糊查询
+  string name = 3;
+  int64 lcstypeid = 4;
+  // 仅总后台请求时有效
+  int64 sysId = 5;
+}
+
+message UserListReply{
+  repeated UserInfo list = 1;
+}
+
+message UserGetInfoRequest{
+  int64 userId = 1;
+}
 message UserRolesRequest{
   int64 userId = 1;
   repeated int64 roleIdList = 2;
@@ -143,4 +232,85 @@ message RoleListReply {
 message RolePermissionRequest{
   int64 roleId = 1;
   repeated string servicePath = 2;
+}
+
+message ServiceListRequest{
+  // 仅总系统有效
+  int64 sysId = 1;
+}
+
+message ServiceListReply{
+  repeated Service list = 1;
+}
+
+message ServiceRemoveRequest{
+  repeated string pathList = 1;
+}
+
+message CreateShopRequest{
+    string name = 1;
+    string key = 2;
+    //上级商家Id
+    int64  sId = 3;
+    string addr = 4;
+    string phone = 5;
+    string contacts =6;
+    int64 createUser = 7;
+}
+
+message ShopListRequest{
+  // 子系统调用时,0:展示所有商家,大于0则展示本系统商家
+  int64 sysId = 1;
+  // 模糊查询
+  string name = 2;
+  // Status_Null查询全部
+  Status status = 3;
+  //上级商家Id, -1 时查询全部
+  int64 sId = 4;
+}
+
+message ShopInfo{
+  int64 shopId          =1;
+  string name           =2;
+  int64 sId             =3;
+  string addr           =4;
+  string phone          =5;
+  string contacts       =6;
+  Status status         =7;
+  int64 created_at      =8;
+  int64 created_user    =9;
+  int64 updated_at      =10;
+  int64 updated_user    =11;
+}
+
+message ShopListReply{
+  repeated ShopInfo list = 1;
+}
+
+message SystemAddShopRequest{
+  // 仅总后台调用有效
+  int64 sysId = 1;
+  int64 shopId = 2;
+}
+
+
+message SystemAddUserRequest{
+  // 仅总后台调用有效
+  int64 sysId = 1;
+  int64 userId = 2;
+}
+
+message Message{
+    int64 id  = 1;
+    string title = 2;
+    string content = 3;
+    enum Level{
+      Null = 0;
+      Normal = 1;
+      Warn = 2;
+      Error = 3;
+    }
+
+    Level level = 4;
+    int64 createAt = 5;
 }

+ 1 - 1
proto/server/base.proto

@@ -6,7 +6,7 @@ enum ErrorCode{
   OK = 0;
 }
 
-// metadata 中需要字段 token 用作登录验证
+// metadata 中需要字段 tokefrgen n 用作登录验证
 service Api {
   rpc SignUp (SignUpRequest) returns (DefaultReply) {}
   rpc SignIn (SignInRequest) returns (SignInReply)  {}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 519 - 120
repository/grpc/bsw/im/im/im.pb.go


+ 561 - 71
repository/grpc/bsw/im/im/im_grpc.pb.go

@@ -20,21 +20,48 @@ const _ = grpc.SupportPackageIsVersion7
 type ApiClient interface {
 	SignUpUserCode(ctx context.Context, in *SignUpRequest, opts ...grpc.CallOption) (*SignUpReply, error)
 	SignUpPhone(ctx context.Context, in *SignUpRequest, opts ...grpc.CallOption) (*SignUpReply, error)
-	SignInUserCode(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*SignInReply, error)
-	SignInWithPhonePassword(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*SignInReply, error)
-	SessionCheck(ctx context.Context, in *SessionCheckRequest, opts ...grpc.CallOption) (*SessionCheckReply, error)
-	SignOut(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*DefaultReply, error)
-	SelfInfo(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*UserInfo, error)
-	ServiceSaveList(ctx context.Context, in *SaveServiceListRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	SignInUserCode(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*TokenParam, error)
+	SignInWithPhonePassword(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*TokenParam, error)
+	// 检查token有效性
+	SubSessionCheck(ctx context.Context, in *TokenParam, opts ...grpc.CallOption) (*SessionCheckReply, error)
+	// 检查token所属用户是否拥有调用service权限
+	SubPermissionListCheck(ctx context.Context, in *PermissionCheck, opts ...grpc.CallOption) (*PermissionCheckReply, error)
+	// 登出传入token
+	SubSignOut(ctx context.Context, in *TokenParam, opts ...grpc.CallOption) (*DefaultReply, error)
+	// 批量保存service
+	SubServiceSaveList(ctx context.Context, in *SaveServiceListRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	// 用户列表
+	UserList(ctx context.Context, in *UserListRequest, opts ...grpc.CallOption) (*UserListReply, error)
+	// 单个用户信息详情
+	UserGetInfo(ctx context.Context, in *UserGetInfoRequest, opts ...grpc.CallOption) (*UserInfo, error)
+	// 用户添加多个角色
 	UserAddRoles(ctx context.Context, in *UserRolesRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	// 用户移除多个角色
 	UserRemoveRoles(ctx context.Context, in *UserRolesRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	// 用户获取栏目列表
+	UserGetColumnList(ctx context.Context, in *UserGetColumnListRequest, opts ...grpc.CallOption) (*UserGetColumnListReply, error)
+	// 创建角色
 	RoleCreate(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	// 角色列表
 	RoleList(ctx context.Context, in *RoleListRequest, opts ...grpc.CallOption) (*RoleListReply, error)
+	// 角色编辑
 	RoleEdit(ctx context.Context, in *Role, opts ...grpc.CallOption) (*DefaultReply, error)
+	// 角色添加多个service权限
 	RoleAddPermissions(ctx context.Context, in *RolePermissionRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	// 角色移除多个service权限
 	RoleRemovePermissions(ctx context.Context, in *RolePermissionRequest, opts ...grpc.CallOption) (*DefaultReply, error)
-	// 总后台专用API
-	IMSystemCreate(ctx context.Context, in *CreateSystemRequest, opts ...grpc.CallOption) (*SignInReply, error)
+	// service权限列表
+	ServiceList(ctx context.Context, in *ServiceListRequest, opts ...grpc.CallOption) (*ServiceListReply, error)
+	// 移除service
+	ServiceRemoveList(ctx context.Context, in *ServiceRemoveRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	ShopCreate(ctx context.Context, in *CreateShopRequest, opts ...grpc.CallOption) (*CreateReply, error)
+	ShopList(ctx context.Context, in *ShopListRequest, opts ...grpc.CallOption) (*ShopListReply, error)
+	SystemAddShop(ctx context.Context, in *SystemAddShopRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	SystemAddUser(ctx context.Context, in *SystemAddUserRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	IMSystemCreate(ctx context.Context, in *CreateSystemRequest, opts ...grpc.CallOption) (*TokenParam, error)
+	IMSignOut(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*DefaultReply, error)
+	IMSelfInfo(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*UserInfo, error)
+	IMMessageRcv(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (Api_IMMessageRcvClient, error)
 }
 
 type apiClient struct {
@@ -63,8 +90,8 @@ func (c *apiClient) SignUpPhone(ctx context.Context, in *SignUpRequest, opts ...
 	return out, nil
 }
 
-func (c *apiClient) SignInUserCode(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*SignInReply, error) {
-	out := new(SignInReply)
+func (c *apiClient) SignInUserCode(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*TokenParam, error) {
+	out := new(TokenParam)
 	err := c.cc.Invoke(ctx, "/im.Api/SignInUserCode", in, out, opts...)
 	if err != nil {
 		return nil, err
@@ -72,8 +99,8 @@ func (c *apiClient) SignInUserCode(ctx context.Context, in *SignInPasswordReques
 	return out, nil
 }
 
-func (c *apiClient) SignInWithPhonePassword(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*SignInReply, error) {
-	out := new(SignInReply)
+func (c *apiClient) SignInWithPhonePassword(ctx context.Context, in *SignInPasswordRequest, opts ...grpc.CallOption) (*TokenParam, error) {
+	out := new(TokenParam)
 	err := c.cc.Invoke(ctx, "/im.Api/SignInWithPhonePassword", in, out, opts...)
 	if err != nil {
 		return nil, err
@@ -81,36 +108,54 @@ func (c *apiClient) SignInWithPhonePassword(ctx context.Context, in *SignInPassw
 	return out, nil
 }
 
-func (c *apiClient) SessionCheck(ctx context.Context, in *SessionCheckRequest, opts ...grpc.CallOption) (*SessionCheckReply, error) {
+func (c *apiClient) SubSessionCheck(ctx context.Context, in *TokenParam, opts ...grpc.CallOption) (*SessionCheckReply, error) {
 	out := new(SessionCheckReply)
-	err := c.cc.Invoke(ctx, "/im.Api/SessionCheck", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/im.Api/SubSessionCheck", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *apiClient) SignOut(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
-	out := new(DefaultReply)
-	err := c.cc.Invoke(ctx, "/im.Api/SignOut", in, out, opts...)
+func (c *apiClient) SubPermissionListCheck(ctx context.Context, in *PermissionCheck, opts ...grpc.CallOption) (*PermissionCheckReply, error) {
+	out := new(PermissionCheckReply)
+	err := c.cc.Invoke(ctx, "/im.Api/SubPermissionListCheck", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *apiClient) SelfInfo(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*UserInfo, error) {
-	out := new(UserInfo)
-	err := c.cc.Invoke(ctx, "/im.Api/SelfInfo", in, out, opts...)
+func (c *apiClient) SubSignOut(ctx context.Context, in *TokenParam, opts ...grpc.CallOption) (*DefaultReply, error) {
+	out := new(DefaultReply)
+	err := c.cc.Invoke(ctx, "/im.Api/SubSignOut", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *apiClient) ServiceSaveList(ctx context.Context, in *SaveServiceListRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
+func (c *apiClient) SubServiceSaveList(ctx context.Context, in *SaveServiceListRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
 	out := new(DefaultReply)
-	err := c.cc.Invoke(ctx, "/im.Api/ServiceSaveList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/im.Api/SubServiceSaveList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) UserList(ctx context.Context, in *UserListRequest, opts ...grpc.CallOption) (*UserListReply, error) {
+	out := new(UserListReply)
+	err := c.cc.Invoke(ctx, "/im.Api/UserList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) UserGetInfo(ctx context.Context, in *UserGetInfoRequest, opts ...grpc.CallOption) (*UserInfo, error) {
+	out := new(UserInfo)
+	err := c.cc.Invoke(ctx, "/im.Api/UserGetInfo", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -135,6 +180,15 @@ func (c *apiClient) UserRemoveRoles(ctx context.Context, in *UserRolesRequest, o
 	return out, nil
 }
 
+func (c *apiClient) UserGetColumnList(ctx context.Context, in *UserGetColumnListRequest, opts ...grpc.CallOption) (*UserGetColumnListReply, error) {
+	out := new(UserGetColumnListReply)
+	err := c.cc.Invoke(ctx, "/im.Api/UserGetColumnList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *apiClient) RoleCreate(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
 	out := new(DefaultReply)
 	err := c.cc.Invoke(ctx, "/im.Api/RoleCreate", in, out, opts...)
@@ -180,8 +234,62 @@ func (c *apiClient) RoleRemovePermissions(ctx context.Context, in *RolePermissio
 	return out, nil
 }
 
-func (c *apiClient) IMSystemCreate(ctx context.Context, in *CreateSystemRequest, opts ...grpc.CallOption) (*SignInReply, error) {
-	out := new(SignInReply)
+func (c *apiClient) ServiceList(ctx context.Context, in *ServiceListRequest, opts ...grpc.CallOption) (*ServiceListReply, error) {
+	out := new(ServiceListReply)
+	err := c.cc.Invoke(ctx, "/im.Api/ServiceList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) ServiceRemoveList(ctx context.Context, in *ServiceRemoveRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
+	out := new(DefaultReply)
+	err := c.cc.Invoke(ctx, "/im.Api/ServiceRemoveList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) ShopCreate(ctx context.Context, in *CreateShopRequest, opts ...grpc.CallOption) (*CreateReply, error) {
+	out := new(CreateReply)
+	err := c.cc.Invoke(ctx, "/im.Api/ShopCreate", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) ShopList(ctx context.Context, in *ShopListRequest, opts ...grpc.CallOption) (*ShopListReply, error) {
+	out := new(ShopListReply)
+	err := c.cc.Invoke(ctx, "/im.Api/ShopList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) SystemAddShop(ctx context.Context, in *SystemAddShopRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
+	out := new(DefaultReply)
+	err := c.cc.Invoke(ctx, "/im.Api/SystemAddShop", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) SystemAddUser(ctx context.Context, in *SystemAddUserRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
+	out := new(DefaultReply)
+	err := c.cc.Invoke(ctx, "/im.Api/SystemAddUser", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) IMSystemCreate(ctx context.Context, in *CreateSystemRequest, opts ...grpc.CallOption) (*TokenParam, error) {
+	out := new(TokenParam)
 	err := c.cc.Invoke(ctx, "/im.Api/IMSystemCreate", in, out, opts...)
 	if err != nil {
 		return nil, err
@@ -189,27 +297,104 @@ func (c *apiClient) IMSystemCreate(ctx context.Context, in *CreateSystemRequest,
 	return out, nil
 }
 
+func (c *apiClient) IMSignOut(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*DefaultReply, error) {
+	out := new(DefaultReply)
+	err := c.cc.Invoke(ctx, "/im.Api/IMSignOut", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) IMSelfInfo(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (*UserInfo, error) {
+	out := new(UserInfo)
+	err := c.cc.Invoke(ctx, "/im.Api/IMSelfInfo", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *apiClient) IMMessageRcv(ctx context.Context, in *DefaultRequest, opts ...grpc.CallOption) (Api_IMMessageRcvClient, error) {
+	stream, err := c.cc.NewStream(ctx, &Api_ServiceDesc.Streams[0], "/im.Api/IMMessageRcv", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &apiIMMessageRcvClient{stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+type Api_IMMessageRcvClient interface {
+	Recv() (*Message, error)
+	grpc.ClientStream
+}
+
+type apiIMMessageRcvClient struct {
+	grpc.ClientStream
+}
+
+func (x *apiIMMessageRcvClient) Recv() (*Message, error) {
+	m := new(Message)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
 // ApiServer is the server API for Api service.
 // All implementations must embed UnimplementedApiServer
 // for forward compatibility
 type ApiServer interface {
 	SignUpUserCode(context.Context, *SignUpRequest) (*SignUpReply, error)
 	SignUpPhone(context.Context, *SignUpRequest) (*SignUpReply, error)
-	SignInUserCode(context.Context, *SignInPasswordRequest) (*SignInReply, error)
-	SignInWithPhonePassword(context.Context, *SignInPasswordRequest) (*SignInReply, error)
-	SessionCheck(context.Context, *SessionCheckRequest) (*SessionCheckReply, error)
-	SignOut(context.Context, *DefaultRequest) (*DefaultReply, error)
-	SelfInfo(context.Context, *DefaultRequest) (*UserInfo, error)
-	ServiceSaveList(context.Context, *SaveServiceListRequest) (*DefaultReply, error)
+	SignInUserCode(context.Context, *SignInPasswordRequest) (*TokenParam, error)
+	SignInWithPhonePassword(context.Context, *SignInPasswordRequest) (*TokenParam, error)
+	// 检查token有效性
+	SubSessionCheck(context.Context, *TokenParam) (*SessionCheckReply, error)
+	// 检查token所属用户是否拥有调用service权限
+	SubPermissionListCheck(context.Context, *PermissionCheck) (*PermissionCheckReply, error)
+	// 登出传入token
+	SubSignOut(context.Context, *TokenParam) (*DefaultReply, error)
+	// 批量保存service
+	SubServiceSaveList(context.Context, *SaveServiceListRequest) (*DefaultReply, error)
+	// 用户列表
+	UserList(context.Context, *UserListRequest) (*UserListReply, error)
+	// 单个用户信息详情
+	UserGetInfo(context.Context, *UserGetInfoRequest) (*UserInfo, error)
+	// 用户添加多个角色
 	UserAddRoles(context.Context, *UserRolesRequest) (*DefaultReply, error)
+	// 用户移除多个角色
 	UserRemoveRoles(context.Context, *UserRolesRequest) (*DefaultReply, error)
+	// 用户获取栏目列表
+	UserGetColumnList(context.Context, *UserGetColumnListRequest) (*UserGetColumnListReply, error)
+	// 创建角色
 	RoleCreate(context.Context, *CreateRoleRequest) (*DefaultReply, error)
+	// 角色列表
 	RoleList(context.Context, *RoleListRequest) (*RoleListReply, error)
+	// 角色编辑
 	RoleEdit(context.Context, *Role) (*DefaultReply, error)
+	// 角色添加多个service权限
 	RoleAddPermissions(context.Context, *RolePermissionRequest) (*DefaultReply, error)
+	// 角色移除多个service权限
 	RoleRemovePermissions(context.Context, *RolePermissionRequest) (*DefaultReply, error)
-	// 总后台专用API
-	IMSystemCreate(context.Context, *CreateSystemRequest) (*SignInReply, error)
+	// service权限列表
+	ServiceList(context.Context, *ServiceListRequest) (*ServiceListReply, error)
+	// 移除service
+	ServiceRemoveList(context.Context, *ServiceRemoveRequest) (*DefaultReply, error)
+	ShopCreate(context.Context, *CreateShopRequest) (*CreateReply, error)
+	ShopList(context.Context, *ShopListRequest) (*ShopListReply, error)
+	SystemAddShop(context.Context, *SystemAddShopRequest) (*DefaultReply, error)
+	SystemAddUser(context.Context, *SystemAddUserRequest) (*DefaultReply, error)
+	IMSystemCreate(context.Context, *CreateSystemRequest) (*TokenParam, error)
+	IMSignOut(context.Context, *DefaultRequest) (*DefaultReply, error)
+	IMSelfInfo(context.Context, *DefaultRequest) (*UserInfo, error)
+	IMMessageRcv(*DefaultRequest, Api_IMMessageRcvServer) error
 	mustEmbedUnimplementedApiServer()
 }
 
@@ -223,23 +408,29 @@ func (UnimplementedApiServer) SignUpUserCode(context.Context, *SignUpRequest) (*
 func (UnimplementedApiServer) SignUpPhone(context.Context, *SignUpRequest) (*SignUpReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SignUpPhone not implemented")
 }
-func (UnimplementedApiServer) SignInUserCode(context.Context, *SignInPasswordRequest) (*SignInReply, error) {
+func (UnimplementedApiServer) SignInUserCode(context.Context, *SignInPasswordRequest) (*TokenParam, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SignInUserCode not implemented")
 }
-func (UnimplementedApiServer) SignInWithPhonePassword(context.Context, *SignInPasswordRequest) (*SignInReply, error) {
+func (UnimplementedApiServer) SignInWithPhonePassword(context.Context, *SignInPasswordRequest) (*TokenParam, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SignInWithPhonePassword not implemented")
 }
-func (UnimplementedApiServer) SessionCheck(context.Context, *SessionCheckRequest) (*SessionCheckReply, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SessionCheck not implemented")
+func (UnimplementedApiServer) SubSessionCheck(context.Context, *TokenParam) (*SessionCheckReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SubSessionCheck not implemented")
+}
+func (UnimplementedApiServer) SubPermissionListCheck(context.Context, *PermissionCheck) (*PermissionCheckReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SubPermissionListCheck not implemented")
 }
-func (UnimplementedApiServer) SignOut(context.Context, *DefaultRequest) (*DefaultReply, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SignOut not implemented")
+func (UnimplementedApiServer) SubSignOut(context.Context, *TokenParam) (*DefaultReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SubSignOut not implemented")
 }
-func (UnimplementedApiServer) SelfInfo(context.Context, *DefaultRequest) (*UserInfo, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SelfInfo not implemented")
+func (UnimplementedApiServer) SubServiceSaveList(context.Context, *SaveServiceListRequest) (*DefaultReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SubServiceSaveList not implemented")
 }
-func (UnimplementedApiServer) ServiceSaveList(context.Context, *SaveServiceListRequest) (*DefaultReply, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ServiceSaveList not implemented")
+func (UnimplementedApiServer) UserList(context.Context, *UserListRequest) (*UserListReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UserList not implemented")
+}
+func (UnimplementedApiServer) UserGetInfo(context.Context, *UserGetInfoRequest) (*UserInfo, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UserGetInfo not implemented")
 }
 func (UnimplementedApiServer) UserAddRoles(context.Context, *UserRolesRequest) (*DefaultReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method UserAddRoles not implemented")
@@ -247,6 +438,9 @@ func (UnimplementedApiServer) UserAddRoles(context.Context, *UserRolesRequest) (
 func (UnimplementedApiServer) UserRemoveRoles(context.Context, *UserRolesRequest) (*DefaultReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method UserRemoveRoles not implemented")
 }
+func (UnimplementedApiServer) UserGetColumnList(context.Context, *UserGetColumnListRequest) (*UserGetColumnListReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UserGetColumnList not implemented")
+}
 func (UnimplementedApiServer) RoleCreate(context.Context, *CreateRoleRequest) (*DefaultReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method RoleCreate not implemented")
 }
@@ -262,9 +456,36 @@ func (UnimplementedApiServer) RoleAddPermissions(context.Context, *RolePermissio
 func (UnimplementedApiServer) RoleRemovePermissions(context.Context, *RolePermissionRequest) (*DefaultReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method RoleRemovePermissions not implemented")
 }
-func (UnimplementedApiServer) IMSystemCreate(context.Context, *CreateSystemRequest) (*SignInReply, error) {
+func (UnimplementedApiServer) ServiceList(context.Context, *ServiceListRequest) (*ServiceListReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ServiceList not implemented")
+}
+func (UnimplementedApiServer) ServiceRemoveList(context.Context, *ServiceRemoveRequest) (*DefaultReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ServiceRemoveList not implemented")
+}
+func (UnimplementedApiServer) ShopCreate(context.Context, *CreateShopRequest) (*CreateReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ShopCreate not implemented")
+}
+func (UnimplementedApiServer) ShopList(context.Context, *ShopListRequest) (*ShopListReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ShopList not implemented")
+}
+func (UnimplementedApiServer) SystemAddShop(context.Context, *SystemAddShopRequest) (*DefaultReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SystemAddShop not implemented")
+}
+func (UnimplementedApiServer) SystemAddUser(context.Context, *SystemAddUserRequest) (*DefaultReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SystemAddUser not implemented")
+}
+func (UnimplementedApiServer) IMSystemCreate(context.Context, *CreateSystemRequest) (*TokenParam, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method IMSystemCreate not implemented")
 }
+func (UnimplementedApiServer) IMSignOut(context.Context, *DefaultRequest) (*DefaultReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method IMSignOut not implemented")
+}
+func (UnimplementedApiServer) IMSelfInfo(context.Context, *DefaultRequest) (*UserInfo, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method IMSelfInfo not implemented")
+}
+func (UnimplementedApiServer) IMMessageRcv(*DefaultRequest, Api_IMMessageRcvServer) error {
+	return status.Errorf(codes.Unimplemented, "method IMMessageRcv not implemented")
+}
 func (UnimplementedApiServer) mustEmbedUnimplementedApiServer() {}
 
 // UnsafeApiServer may be embedded to opt out of forward compatibility for this service.
@@ -350,74 +571,110 @@ func _Api_SignInWithPhonePassword_Handler(srv interface{}, ctx context.Context,
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Api_SessionCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SessionCheckRequest)
+func _Api_SubSessionCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(TokenParam)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(ApiServer).SessionCheck(ctx, in)
+		return srv.(ApiServer).SubSessionCheck(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/im.Api/SessionCheck",
+		FullMethod: "/im.Api/SubSessionCheck",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ApiServer).SessionCheck(ctx, req.(*SessionCheckRequest))
+		return srv.(ApiServer).SubSessionCheck(ctx, req.(*TokenParam))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Api_SignOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DefaultRequest)
+func _Api_SubPermissionListCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PermissionCheck)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(ApiServer).SignOut(ctx, in)
+		return srv.(ApiServer).SubPermissionListCheck(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/im.Api/SignOut",
+		FullMethod: "/im.Api/SubPermissionListCheck",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ApiServer).SignOut(ctx, req.(*DefaultRequest))
+		return srv.(ApiServer).SubPermissionListCheck(ctx, req.(*PermissionCheck))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Api_SelfInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DefaultRequest)
+func _Api_SubSignOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(TokenParam)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(ApiServer).SelfInfo(ctx, in)
+		return srv.(ApiServer).SubSignOut(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/im.Api/SelfInfo",
+		FullMethod: "/im.Api/SubSignOut",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ApiServer).SelfInfo(ctx, req.(*DefaultRequest))
+		return srv.(ApiServer).SubSignOut(ctx, req.(*TokenParam))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Api_ServiceSaveList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+func _Api_SubServiceSaveList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(SaveServiceListRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(ApiServer).ServiceSaveList(ctx, in)
+		return srv.(ApiServer).SubServiceSaveList(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/im.Api/ServiceSaveList",
+		FullMethod: "/im.Api/SubServiceSaveList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ApiServer).ServiceSaveList(ctx, req.(*SaveServiceListRequest))
+		return srv.(ApiServer).SubServiceSaveList(ctx, req.(*SaveServiceListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_UserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UserListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).UserList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/UserList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).UserList(ctx, req.(*UserListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_UserGetInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UserGetInfoRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).UserGetInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/UserGetInfo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).UserGetInfo(ctx, req.(*UserGetInfoRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
@@ -458,6 +715,24 @@ func _Api_UserRemoveRoles_Handler(srv interface{}, ctx context.Context, dec func
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Api_UserGetColumnList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UserGetColumnListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).UserGetColumnList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/UserGetColumnList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).UserGetColumnList(ctx, req.(*UserGetColumnListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _Api_RoleCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(CreateRoleRequest)
 	if err := dec(in); err != nil {
@@ -548,6 +823,114 @@ func _Api_RoleRemovePermissions_Handler(srv interface{}, ctx context.Context, de
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Api_ServiceList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ServiceListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).ServiceList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/ServiceList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).ServiceList(ctx, req.(*ServiceListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_ServiceRemoveList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ServiceRemoveRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).ServiceRemoveList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/ServiceRemoveList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).ServiceRemoveList(ctx, req.(*ServiceRemoveRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_ShopCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateShopRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).ShopCreate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/ShopCreate",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).ShopCreate(ctx, req.(*CreateShopRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_ShopList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ShopListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).ShopList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/ShopList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).ShopList(ctx, req.(*ShopListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_SystemAddShop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SystemAddShopRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).SystemAddShop(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/SystemAddShop",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).SystemAddShop(ctx, req.(*SystemAddShopRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_SystemAddUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SystemAddUserRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).SystemAddUser(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/SystemAddUser",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).SystemAddUser(ctx, req.(*SystemAddUserRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _Api_IMSystemCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(CreateSystemRequest)
 	if err := dec(in); err != nil {
@@ -566,6 +949,63 @@ func _Api_IMSystemCreate_Handler(srv interface{}, ctx context.Context, dec func(
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Api_IMSignOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DefaultRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).IMSignOut(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/IMSignOut",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).IMSignOut(ctx, req.(*DefaultRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_IMSelfInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DefaultRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ApiServer).IMSelfInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/im.Api/IMSelfInfo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ApiServer).IMSelfInfo(ctx, req.(*DefaultRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Api_IMMessageRcv_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(DefaultRequest)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(ApiServer).IMMessageRcv(m, &apiIMMessageRcvServer{stream})
+}
+
+type Api_IMMessageRcvServer interface {
+	Send(*Message) error
+	grpc.ServerStream
+}
+
+type apiIMMessageRcvServer struct {
+	grpc.ServerStream
+}
+
+func (x *apiIMMessageRcvServer) Send(m *Message) error {
+	return x.ServerStream.SendMsg(m)
+}
+
 // Api_ServiceDesc is the grpc.ServiceDesc for Api service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -590,20 +1030,28 @@ var Api_ServiceDesc = grpc.ServiceDesc{
 			Handler:    _Api_SignInWithPhonePassword_Handler,
 		},
 		{
-			MethodName: "SessionCheck",
-			Handler:    _Api_SessionCheck_Handler,
+			MethodName: "SubSessionCheck",
+			Handler:    _Api_SubSessionCheck_Handler,
+		},
+		{
+			MethodName: "SubPermissionListCheck",
+			Handler:    _Api_SubPermissionListCheck_Handler,
+		},
+		{
+			MethodName: "SubSignOut",
+			Handler:    _Api_SubSignOut_Handler,
 		},
 		{
-			MethodName: "SignOut",
-			Handler:    _Api_SignOut_Handler,
+			MethodName: "SubServiceSaveList",
+			Handler:    _Api_SubServiceSaveList_Handler,
 		},
 		{
-			MethodName: "SelfInfo",
-			Handler:    _Api_SelfInfo_Handler,
+			MethodName: "UserList",
+			Handler:    _Api_UserList_Handler,
 		},
 		{
-			MethodName: "ServiceSaveList",
-			Handler:    _Api_ServiceSaveList_Handler,
+			MethodName: "UserGetInfo",
+			Handler:    _Api_UserGetInfo_Handler,
 		},
 		{
 			MethodName: "UserAddRoles",
@@ -613,6 +1061,10 @@ var Api_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "UserRemoveRoles",
 			Handler:    _Api_UserRemoveRoles_Handler,
 		},
+		{
+			MethodName: "UserGetColumnList",
+			Handler:    _Api_UserGetColumnList_Handler,
+		},
 		{
 			MethodName: "RoleCreate",
 			Handler:    _Api_RoleCreate_Handler,
@@ -633,11 +1085,49 @@ var Api_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "RoleRemovePermissions",
 			Handler:    _Api_RoleRemovePermissions_Handler,
 		},
+		{
+			MethodName: "ServiceList",
+			Handler:    _Api_ServiceList_Handler,
+		},
+		{
+			MethodName: "ServiceRemoveList",
+			Handler:    _Api_ServiceRemoveList_Handler,
+		},
+		{
+			MethodName: "ShopCreate",
+			Handler:    _Api_ShopCreate_Handler,
+		},
+		{
+			MethodName: "ShopList",
+			Handler:    _Api_ShopList_Handler,
+		},
+		{
+			MethodName: "SystemAddShop",
+			Handler:    _Api_SystemAddShop_Handler,
+		},
+		{
+			MethodName: "SystemAddUser",
+			Handler:    _Api_SystemAddUser_Handler,
+		},
 		{
 			MethodName: "IMSystemCreate",
 			Handler:    _Api_IMSystemCreate_Handler,
 		},
+		{
+			MethodName: "IMSignOut",
+			Handler:    _Api_IMSignOut_Handler,
+		},
+		{
+			MethodName: "IMSelfInfo",
+			Handler:    _Api_IMSelfInfo_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "IMMessageRcv",
+			Handler:       _Api_IMMessageRcv_Handler,
+			ServerStreams: true,
+		},
 	},
-	Streams:  []grpc.StreamDesc{},
 	Metadata: "im.proto",
 }

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov