add apis
CI / changes (push) Successful in 1m35s
CI / ad (push) Successful in 32s
CI / admin (push) Successful in 25s
CI / bff (push) Successful in 22s
CI / chore (push) Successful in 27s
CI / equipment (push) Successful in 24s
CI / express (push) Successful in 24s
CI / factory (push) Successful in 22s
CI / message (push) Successful in 21s
CI / order (push) Successful in 23s
CI / payment (push) Successful in 23s
CI / percutaneous (push) Successful in 21s
CI / product (push) Successful in 22s
CI / record (push) Successful in 21s
CI / sale (push) Successful in 21s
CI / support (push) Successful in 22s
CI / task (push) Successful in 23s
CI / user (push) Successful in 23s
CI / water (push) Successful in 24s
CI / wecom (push) Successful in 24s

This commit is contained in:
2026-10-21 16:56:57 +08:00
parent 413eb97de7
commit fa465a01f0
8 changed files with 166 additions and 48 deletions
+11
View File
@@ -319,6 +319,17 @@ func RandString(num uint8) string {
return string(res)
}
func RandNumber(num uint8) string {
chars := "123456789"
rand.Seed(time.Now().UnixNano())
res := make([]byte, num)
for i := range res {
res[i] = chars[rand.Intn(len(chars))]
}
return string(res)
}
// ExcelColumn 定义导出的列:表头 + 对应结构体字段
type ExcelColumn struct {
Header string // 表头显示名称
Binary file not shown.
+7
View File
@@ -429,6 +429,13 @@ service Equipment {
};
};
rpc AuthorizationCode(EmptyRequest) returns(Response){
option (google.api.http) = {
post: "/api/v3/device/authorization/code"
body: "*"
};
};
rpc InternalBindAdd(InternalBindAddRequest) returns(Response);
rpc InternalBindInfo(InternalBindInfoRequest) returns(Response);
+46 -43
View File
@@ -2345,7 +2345,7 @@ const file_equipment_equipment_proto_rawDesc = "" +
"\x02id\x18\x01 \x01(\x03R\x02id\"A\n" +
"\x11ApiVersionRequest\x12\x12\n" +
"\x04type\x18\x01 \x01(\x05R\x04type\x12\x18\n" +
"\aversion\x18\x02 \x01(\tR\aversion2\xcc\x1b\n" +
"\aversion\x18\x02 \x01(\tR\aversion2\xbd\x1c\n" +
"\tEquipment\x12Y\n" +
"\x05Items\x12\x17.equipment.ItemsRequest\x1a\x13.equipment.Response\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\x12\x17/admin/v3/version/items\x12T\n" +
"\x04Info\x12\x14.equipment.IdRequest\x1a\x13.equipment.Response\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\x12\x16/admin/v3/version/info\x12\\\n" +
@@ -2383,7 +2383,8 @@ const file_equipment_equipment_proto_rawDesc = "" +
"\x11AuthorizationBind\x12#.equipment.AuthorizationBindRequest\x1a\x13.equipment.Response\",\x82\xd3\xe4\x93\x02&:\x01*\"!/api/v3/device/authorization/bind\x12\x81\x01\n" +
"\x13AuthorizationCancel\x12%.equipment.AuthorizationCancelRequest\x1a\x13.equipment.Response\".\x82\xd3\xe4\x93\x02(:\x01*\"#/api/v3/device/authorization/cancel\x12\x84\x01\n" +
"\x14AuthorizationControl\x12&.equipment.AuthorizationControlRequest\x1a\x13.equipment.Response\"/\x82\xd3\xe4\x93\x02):\x01*\"$/api/v3/device/authorization/control\x12q\n" +
"\x12AuthorizationItems\x12\x17.equipment.EmptyRequest\x1a\x13.equipment.Response\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v3/device/authorization/items\x12I\n" +
"\x12AuthorizationItems\x12\x17.equipment.EmptyRequest\x1a\x13.equipment.Response\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v3/device/authorization/items\x12o\n" +
"\x11AuthorizationCode\x12\x17.equipment.EmptyRequest\x1a\x13.equipment.Response\",\x82\xd3\xe4\x93\x02&:\x01*\"!/api/v3/device/authorization/code\x12I\n" +
"\x0fInternalBindAdd\x12!.equipment.InternalBindAddRequest\x1a\x13.equipment.Response\x12K\n" +
"\x10InternalBindInfo\x12\".equipment.InternalBindInfoRequest\x1a\x13.equipment.Response\x12R\n" +
"\x0fInternalUserAdd\x12\".equipment.InternalUserInfoRequest\x1a\x1b.equipment.InternalResponse\x12Y\n" +
@@ -2469,47 +2470,49 @@ var file_equipment_equipment_proto_depIdxs = []int32{
16, // 28: equipment.Equipment.AuthorizationCancel:input_type -> equipment.AuthorizationCancelRequest
17, // 29: equipment.Equipment.AuthorizationControl:input_type -> equipment.AuthorizationControlRequest
19, // 30: equipment.Equipment.AuthorizationItems:input_type -> equipment.EmptyRequest
10, // 31: equipment.Equipment.InternalBindAdd:input_type -> equipment.InternalBindAddRequest
11, // 32: equipment.Equipment.InternalBindInfo:input_type -> equipment.InternalBindInfoRequest
28, // 33: equipment.Equipment.InternalUserAdd:input_type -> equipment.InternalUserInfoRequest
28, // 34: equipment.Equipment.InternalUserEditNumber:input_type -> equipment.InternalUserInfoRequest
0, // 35: equipment.Equipment.Items:output_type -> equipment.Response
0, // 36: equipment.Equipment.Info:output_type -> equipment.Response
0, // 37: equipment.Equipment.Create:output_type -> equipment.Response
0, // 38: equipment.Equipment.Edit:output_type -> equipment.Response
0, // 39: equipment.Equipment.Status:output_type -> equipment.Response
0, // 40: equipment.Equipment.MaskItems:output_type -> equipment.Response
0, // 41: equipment.Equipment.BeansItems:output_type -> equipment.Response
0, // 42: equipment.Equipment.BindExpiry:output_type -> equipment.Response
0, // 43: equipment.Equipment.UserBind:output_type -> equipment.Response
0, // 44: equipment.Equipment.ApiMaskAdd:output_type -> equipment.Response
0, // 45: equipment.Equipment.ApiBindItems:output_type -> equipment.Response
0, // 46: equipment.Equipment.ApiUnBind:output_type -> equipment.Response
0, // 47: equipment.Equipment.ApiBindAdd:output_type -> equipment.Response
0, // 48: equipment.Equipment.ApiBindExpiry:output_type -> equipment.Response
0, // 49: equipment.Equipment.ApiBindExpiryGet:output_type -> equipment.Response
0, // 50: equipment.Equipment.ApiBeansAdd:output_type -> equipment.Response
0, // 51: equipment.Equipment.ApiBeansLast:output_type -> equipment.Response
0, // 52: equipment.Equipment.ApiBeansItems:output_type -> equipment.Response
0, // 53: equipment.Equipment.ApiMaskUse:output_type -> equipment.Response
0, // 54: equipment.Equipment.ApiMaskUsedItems:output_type -> equipment.Response
0, // 55: equipment.Equipment.ApiMaskStoreUse:output_type -> equipment.Response
0, // 56: equipment.Equipment.ApiMaskStoreUseItems:output_type -> equipment.Response
0, // 57: equipment.Equipment.ApiVersion:output_type -> equipment.Response
0, // 58: equipment.Equipment.ApiBindInfo:output_type -> equipment.Response
0, // 59: equipment.Equipment.ApiBindUpdate:output_type -> equipment.Response
0, // 60: equipment.Equipment.ApiCheckMask:output_type -> equipment.Response
0, // 61: equipment.Equipment.ApiEditName:output_type -> equipment.Response
0, // 62: equipment.Equipment.AuthorizationBind:output_type -> equipment.Response
0, // 63: equipment.Equipment.AuthorizationCancel:output_type -> equipment.Response
0, // 64: equipment.Equipment.AuthorizationControl:output_type -> equipment.Response
0, // 65: equipment.Equipment.AuthorizationItems:output_type -> equipment.Response
0, // 66: equipment.Equipment.InternalBindAdd:output_type -> equipment.Response
0, // 67: equipment.Equipment.InternalBindInfo:output_type -> equipment.Response
29, // 68: equipment.Equipment.InternalUserAdd:output_type -> equipment.InternalResponse
29, // 69: equipment.Equipment.InternalUserEditNumber:output_type -> equipment.InternalResponse
35, // [35:70] is the sub-list for method output_type
0, // [0:35] is the sub-list for method input_type
19, // 31: equipment.Equipment.AuthorizationCode:input_type -> equipment.EmptyRequest
10, // 32: equipment.Equipment.InternalBindAdd:input_type -> equipment.InternalBindAddRequest
11, // 33: equipment.Equipment.InternalBindInfo:input_type -> equipment.InternalBindInfoRequest
28, // 34: equipment.Equipment.InternalUserAdd:input_type -> equipment.InternalUserInfoRequest
28, // 35: equipment.Equipment.InternalUserEditNumber:input_type -> equipment.InternalUserInfoRequest
0, // 36: equipment.Equipment.Items:output_type -> equipment.Response
0, // 37: equipment.Equipment.Info:output_type -> equipment.Response
0, // 38: equipment.Equipment.Create:output_type -> equipment.Response
0, // 39: equipment.Equipment.Edit:output_type -> equipment.Response
0, // 40: equipment.Equipment.Status:output_type -> equipment.Response
0, // 41: equipment.Equipment.MaskItems:output_type -> equipment.Response
0, // 42: equipment.Equipment.BeansItems:output_type -> equipment.Response
0, // 43: equipment.Equipment.BindExpiry:output_type -> equipment.Response
0, // 44: equipment.Equipment.UserBind:output_type -> equipment.Response
0, // 45: equipment.Equipment.ApiMaskAdd:output_type -> equipment.Response
0, // 46: equipment.Equipment.ApiBindItems:output_type -> equipment.Response
0, // 47: equipment.Equipment.ApiUnBind:output_type -> equipment.Response
0, // 48: equipment.Equipment.ApiBindAdd:output_type -> equipment.Response
0, // 49: equipment.Equipment.ApiBindExpiry:output_type -> equipment.Response
0, // 50: equipment.Equipment.ApiBindExpiryGet:output_type -> equipment.Response
0, // 51: equipment.Equipment.ApiBeansAdd:output_type -> equipment.Response
0, // 52: equipment.Equipment.ApiBeansLast:output_type -> equipment.Response
0, // 53: equipment.Equipment.ApiBeansItems:output_type -> equipment.Response
0, // 54: equipment.Equipment.ApiMaskUse:output_type -> equipment.Response
0, // 55: equipment.Equipment.ApiMaskUsedItems:output_type -> equipment.Response
0, // 56: equipment.Equipment.ApiMaskStoreUse:output_type -> equipment.Response
0, // 57: equipment.Equipment.ApiMaskStoreUseItems:output_type -> equipment.Response
0, // 58: equipment.Equipment.ApiVersion:output_type -> equipment.Response
0, // 59: equipment.Equipment.ApiBindInfo:output_type -> equipment.Response
0, // 60: equipment.Equipment.ApiBindUpdate:output_type -> equipment.Response
0, // 61: equipment.Equipment.ApiCheckMask:output_type -> equipment.Response
0, // 62: equipment.Equipment.ApiEditName:output_type -> equipment.Response
0, // 63: equipment.Equipment.AuthorizationBind:output_type -> equipment.Response
0, // 64: equipment.Equipment.AuthorizationCancel:output_type -> equipment.Response
0, // 65: equipment.Equipment.AuthorizationControl:output_type -> equipment.Response
0, // 66: equipment.Equipment.AuthorizationItems:output_type -> equipment.Response
0, // 67: equipment.Equipment.AuthorizationCode:output_type -> equipment.Response
0, // 68: equipment.Equipment.InternalBindAdd:output_type -> equipment.Response
0, // 69: equipment.Equipment.InternalBindInfo:output_type -> equipment.Response
29, // 70: equipment.Equipment.InternalUserAdd:output_type -> equipment.InternalResponse
29, // 71: equipment.Equipment.InternalUserEditNumber:output_type -> equipment.InternalResponse
36, // [36:72] is the sub-list for method output_type
0, // [0:36] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
+40 -2
View File
@@ -50,6 +50,7 @@ const (
Equipment_AuthorizationCancel_FullMethodName = "/equipment.Equipment/AuthorizationCancel"
Equipment_AuthorizationControl_FullMethodName = "/equipment.Equipment/AuthorizationControl"
Equipment_AuthorizationItems_FullMethodName = "/equipment.Equipment/AuthorizationItems"
Equipment_AuthorizationCode_FullMethodName = "/equipment.Equipment/AuthorizationCode"
Equipment_InternalBindAdd_FullMethodName = "/equipment.Equipment/InternalBindAdd"
Equipment_InternalBindInfo_FullMethodName = "/equipment.Equipment/InternalBindInfo"
Equipment_InternalUserAdd_FullMethodName = "/equipment.Equipment/InternalUserAdd"
@@ -94,8 +95,9 @@ type EquipmentClient interface {
AuthorizationCancel(ctx context.Context, in *AuthorizationCancelRequest, opts ...grpc.CallOption) (*Response, error)
// 更改打开权限开关
AuthorizationControl(ctx context.Context, in *AuthorizationControlRequest, opts ...grpc.CallOption) (*Response, error)
// 更改打用户端获取授权列表开权限开关
// 用户端获取授权列表
AuthorizationItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error)
AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error)
InternalBindAdd(ctx context.Context, in *InternalBindAddRequest, opts ...grpc.CallOption) (*Response, error)
InternalBindInfo(ctx context.Context, in *InternalBindInfoRequest, opts ...grpc.CallOption) (*Response, error)
// 添加用户信息
@@ -422,6 +424,16 @@ func (c *equipmentClient) AuthorizationItems(ctx context.Context, in *EmptyReque
return out, nil
}
func (c *equipmentClient) AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(Response)
err := c.cc.Invoke(ctx, Equipment_AuthorizationCode_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *equipmentClient) InternalBindAdd(ctx context.Context, in *InternalBindAddRequest, opts ...grpc.CallOption) (*Response, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(Response)
@@ -500,8 +512,9 @@ type EquipmentServer interface {
AuthorizationCancel(context.Context, *AuthorizationCancelRequest) (*Response, error)
// 更改打开权限开关
AuthorizationControl(context.Context, *AuthorizationControlRequest) (*Response, error)
// 更改打用户端获取授权列表开权限开关
// 用户端获取授权列表
AuthorizationItems(context.Context, *EmptyRequest) (*Response, error)
AuthorizationCode(context.Context, *EmptyRequest) (*Response, error)
InternalBindAdd(context.Context, *InternalBindAddRequest) (*Response, error)
InternalBindInfo(context.Context, *InternalBindInfoRequest) (*Response, error)
// 添加用户信息
@@ -611,6 +624,9 @@ func (UnimplementedEquipmentServer) AuthorizationControl(context.Context, *Autho
func (UnimplementedEquipmentServer) AuthorizationItems(context.Context, *EmptyRequest) (*Response, error) {
return nil, status.Error(codes.Unimplemented, "method AuthorizationItems not implemented")
}
func (UnimplementedEquipmentServer) AuthorizationCode(context.Context, *EmptyRequest) (*Response, error) {
return nil, status.Error(codes.Unimplemented, "method AuthorizationCode not implemented")
}
func (UnimplementedEquipmentServer) InternalBindAdd(context.Context, *InternalBindAddRequest) (*Response, error) {
return nil, status.Error(codes.Unimplemented, "method InternalBindAdd not implemented")
}
@@ -1202,6 +1218,24 @@ func _Equipment_AuthorizationItems_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler)
}
func _Equipment_AuthorizationCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(EmptyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(EquipmentServer).AuthorizationCode(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Equipment_AuthorizationCode_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(EquipmentServer).AuthorizationCode(ctx, req.(*EmptyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Equipment_InternalBindAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(InternalBindAddRequest)
if err := dec(in); err != nil {
@@ -1405,6 +1439,10 @@ var Equipment_ServiceDesc = grpc.ServiceDesc{
MethodName: "AuthorizationItems",
Handler: _Equipment_AuthorizationItems_Handler,
},
{
MethodName: "AuthorizationCode",
Handler: _Equipment_AuthorizationCode_Handler,
},
{
MethodName: "InternalBindAdd",
Handler: _Equipment_InternalBindAdd_Handler,
@@ -83,8 +83,9 @@ type (
AuthorizationCancel(ctx context.Context, in *AuthorizationCancelRequest, opts ...grpc.CallOption) (*Response, error)
// 更改打开权限开关
AuthorizationControl(ctx context.Context, in *AuthorizationControlRequest, opts ...grpc.CallOption) (*Response, error)
// 更改打用户端获取授权列表开权限开关
// 用户端获取授权列表
AuthorizationItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error)
AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error)
InternalBindAdd(ctx context.Context, in *InternalBindAddRequest, opts ...grpc.CallOption) (*Response, error)
InternalBindInfo(ctx context.Context, in *InternalBindInfoRequest, opts ...grpc.CallOption) (*Response, error)
// 添加用户信息
@@ -258,12 +259,17 @@ func (m *defaultEquipment) AuthorizationControl(ctx context.Context, in *Authori
return client.AuthorizationControl(ctx, in, opts...)
}
// 更改打用户端获取授权列表开权限开关
// 用户端获取授权列表
func (m *defaultEquipment) AuthorizationItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) {
client := equipment.NewEquipmentClient(m.cli.Conn())
return client.AuthorizationItems(ctx, in, opts...)
}
func (m *defaultEquipment) AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) {
client := equipment.NewEquipmentClient(m.cli.Conn())
return client.AuthorizationCode(ctx, in, opts...)
}
func (m *defaultEquipment) InternalBindAdd(ctx context.Context, in *InternalBindAddRequest, opts ...grpc.CallOption) (*Response, error) {
client := equipment.NewEquipmentClient(m.cli.Conn())
return client.InternalBindAdd(ctx, in, opts...)
@@ -0,0 +1,48 @@
package logic
import (
"context"
"lone-services/pkg/redis"
"lone-services/pkg/utils"
"lone-services/services/equipment/internal/dao"
"strconv"
"time"
"lone-services/rpc/equipment/pb"
"lone-services/services/equipment/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type AuthorizationCodeLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewAuthorizationCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AuthorizationCodeLogic {
return &AuthorizationCodeLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *AuthorizationCodeLogic) AuthorizationCode(in *equipment.EmptyRequest) (*equipment.Response, error) {
adminInfo := utils.GetUserFromCtx(l.ctx)
if adminInfo.ID < utils.NumberOne {
return l.fail(utils.ErrorNoLoginInfo)
}
key := dao.CodeName + strconv.FormatInt(adminInfo.ID, utils.NumberTen)
code := utils.RandNumber(utils.NumberSix)
out := utils.GetConfigInt("code.out-time")
_, err := redis.Client.Set(l.ctx, key, code, time.Duration(out)*time.Second).Result()
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
return l.ok(code)
}
@@ -177,12 +177,17 @@ func (s *EquipmentServer) AuthorizationControl(ctx context.Context, in *equipmen
return l.AuthorizationControl(in)
}
// 更改打用户端获取授权列表开权限开关
// 用户端获取授权列表
func (s *EquipmentServer) AuthorizationItems(ctx context.Context, in *equipment.EmptyRequest) (*equipment.Response, error) {
l := logic.NewAuthorizationItemsLogic(ctx, s.svcCtx)
return l.AuthorizationItems(in)
}
func (s *EquipmentServer) AuthorizationCode(ctx context.Context, in *equipment.EmptyRequest) (*equipment.Response, error) {
l := logic.NewAuthorizationCodeLogic(ctx, s.svcCtx)
return l.AuthorizationCode(in)
}
func (s *EquipmentServer) InternalBindAdd(ctx context.Context, in *equipment.InternalBindAddRequest) (*equipment.Response, error) {
l := logic.NewInternalBindAddLogic(ctx, s.svcCtx)
return l.InternalBindAdd(in)