Merge branch 'develop' of git.ailuowan.com:zzw/lone-services into develop
CI / changes (push) Successful in 1m34s
CI / ad (push) Successful in 5s
CI / admin (push) Successful in 2s
CI / bff (push) Successful in 2s
CI / chore (push) Successful in 2s
CI / equipment (push) Successful in 2s
CI / express (push) Successful in 3s
CI / factory (push) Successful in 2s
CI / message (push) Successful in 2s
CI / order (push) Successful in 3s
CI / payment (push) Successful in 2s
CI / percutaneous (push) Successful in 2s
CI / product (push) Successful in 2s
CI / record (push) Successful in 2s
CI / sale (push) Successful in 2s
CI / store (push) Successful in 31s
CI / support (push) Successful in 3s
CI / task (push) Successful in 2s
CI / user (push) Successful in 2s
CI / water (push) Successful in 2s
CI / wecom (push) Successful in 2s

This commit is contained in:
zzw
2026-10-22 10:14:08 +08:00
19 changed files with 1231 additions and 162 deletions
+71 -30
View File
@@ -14,36 +14,39 @@ import (
)
type (
ApiBeansAddRequest = equipment.ApiBeansAddRequest
ApiBeansItemsRequest = equipment.ApiBeansItemsRequest
ApiBindAddRequest = equipment.ApiBindAddRequest
ApiBindExpiryGetRequest = equipment.ApiBindExpiryGetRequest
ApiBindExpiryRequest = equipment.ApiBindExpiryRequest
ApiBindInfoRequest = equipment.ApiBindInfoRequest
ApiBindUpdateRequest = equipment.ApiBindUpdateRequest
ApiEditNameRequest = equipment.ApiEditNameRequest
ApiMaskAddRequest = equipment.ApiMaskAddRequest
ApiMaskUseRequest = equipment.ApiMaskUseRequest
ApiMaskUsedItemsRequest = equipment.ApiMaskUsedItemsRequest
ApiUnBindRequest = equipment.ApiUnBindRequest
ApiVersionRequest = equipment.ApiVersionRequest
BeansItemsRequest = equipment.BeansItemsRequest
BindExpiryRequest = equipment.BindExpiryRequest
CreateRequest = equipment.CreateRequest
EditRequest = equipment.EditRequest
EmptyRequest = equipment.EmptyRequest
IdRequest = equipment.IdRequest
IdStringRequest = equipment.IdStringRequest
InternalBindAddRequest = equipment.InternalBindAddRequest
InternalBindInfoRequest = equipment.InternalBindInfoRequest
InternalResponse = equipment.InternalResponse
InternalUserInfoRequest = equipment.InternalUserInfoRequest
ItemsRequest = equipment.ItemsRequest
MaskItemsRequest = equipment.MaskItemsRequest
Response = equipment.Response
SetExpiryRequest = equipment.SetExpiryRequest
StatusRequest = equipment.StatusRequest
UserBindRequest = equipment.UserBindRequest
ApiBeansAddRequest = equipment.ApiBeansAddRequest
ApiBeansItemsRequest = equipment.ApiBeansItemsRequest
ApiBindAddRequest = equipment.ApiBindAddRequest
ApiBindExpiryGetRequest = equipment.ApiBindExpiryGetRequest
ApiBindExpiryRequest = equipment.ApiBindExpiryRequest
ApiBindInfoRequest = equipment.ApiBindInfoRequest
ApiBindUpdateRequest = equipment.ApiBindUpdateRequest
ApiEditNameRequest = equipment.ApiEditNameRequest
ApiMaskAddRequest = equipment.ApiMaskAddRequest
ApiMaskUseRequest = equipment.ApiMaskUseRequest
ApiMaskUsedItemsRequest = equipment.ApiMaskUsedItemsRequest
ApiUnBindRequest = equipment.ApiUnBindRequest
ApiVersionRequest = equipment.ApiVersionRequest
AuthorizationBindRequest = equipment.AuthorizationBindRequest
AuthorizationCancelRequest = equipment.AuthorizationCancelRequest
AuthorizationControlRequest = equipment.AuthorizationControlRequest
BeansItemsRequest = equipment.BeansItemsRequest
BindExpiryRequest = equipment.BindExpiryRequest
CreateRequest = equipment.CreateRequest
EditRequest = equipment.EditRequest
EmptyRequest = equipment.EmptyRequest
IdRequest = equipment.IdRequest
IdStringRequest = equipment.IdStringRequest
InternalBindAddRequest = equipment.InternalBindAddRequest
InternalBindInfoRequest = equipment.InternalBindInfoRequest
InternalResponse = equipment.InternalResponse
InternalUserInfoRequest = equipment.InternalUserInfoRequest
ItemsRequest = equipment.ItemsRequest
MaskItemsRequest = equipment.MaskItemsRequest
Response = equipment.Response
SetExpiryRequest = equipment.SetExpiryRequest
StatusRequest = equipment.StatusRequest
UserBindRequest = equipment.UserBindRequest
Equipment interface {
Items(ctx context.Context, in *ItemsRequest, opts ...grpc.CallOption) (*Response, error)
@@ -74,6 +77,15 @@ type (
ApiBindUpdate(ctx context.Context, in *ApiBindUpdateRequest, opts ...grpc.CallOption) (*Response, error)
ApiCheckMask(ctx context.Context, in *IdStringRequest, opts ...grpc.CallOption) (*Response, error)
ApiEditName(ctx context.Context, in *ApiEditNameRequest, opts ...grpc.CallOption) (*Response, error)
// 授权绑定
AuthorizationBind(ctx context.Context, in *AuthorizationBindRequest, opts ...grpc.CallOption) (*Response, error)
// 解绑授权
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)
// 添加用户信息
@@ -229,6 +241,35 @@ func (m *defaultEquipment) ApiEditName(ctx context.Context, in *ApiEditNameReque
return client.ApiEditName(ctx, in, opts...)
}
// 授权绑定
func (m *defaultEquipment) AuthorizationBind(ctx context.Context, in *AuthorizationBindRequest, opts ...grpc.CallOption) (*Response, error) {
client := equipment.NewEquipmentClient(m.cli.Conn())
return client.AuthorizationBind(ctx, in, opts...)
}
// 解绑授权
func (m *defaultEquipment) AuthorizationCancel(ctx context.Context, in *AuthorizationCancelRequest, opts ...grpc.CallOption) (*Response, error) {
client := equipment.NewEquipmentClient(m.cli.Conn())
return client.AuthorizationCancel(ctx, in, opts...)
}
// 更改打开权限开关
func (m *defaultEquipment) AuthorizationControl(ctx context.Context, in *AuthorizationControlRequest, opts ...grpc.CallOption) (*Response, error) {
client := equipment.NewEquipmentClient(m.cli.Conn())
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,37 @@
package dao
import (
"lone-services/pkg/utils"
)
type AuthorizationRecordInfo struct {
Id int64 `gorm:"column:id;type:int;not null;autoIncrement" json:"id"`
StoreId int64 `gorm:"column:store_id;type:int;not null" json:"store_id"` // 美容院ID
UserId int64 `gorm:"column:user_id;type:int;not null" json:"user_id"` // 用户ID
Datetime utils.CustomTime `gorm:"column:datetime;type:datetime;default:NULL" json:"datetime"` // 绑定时间
Status int32 `gorm:"column:status;type:tinyint;default:1" json:"status"` // 2未授权 1 已授权
Open int32 `gorm:"column:open;type:tinyint(1);not null;default:1" json:"open"` // 是否开启展示,1为默认开启,2为关闭
CreateAt utils.CustomTime `gorm:"column:create_at;type:datetime;default:CURRENT_TIMESTAMP" json:"create_at"` // 创建时间
}
type AuthorizationRecordCreate struct {
Id int64 `gorm:"column:id;type:int;not null;autoIncrement" json:"id"`
StoreId int64 `gorm:"column:store_id;type:int;not null" json:"store_id"` // 美容院ID
UserId int64 `gorm:"column:user_id;type:int;not null" json:"user_id"` // 用户ID
Datetime utils.CustomTime `gorm:"column:datetime;type:datetime;default:NULL" json:"datetime"` // 绑定时间
Status int32 `gorm:"column:status;type:tinyint;default:1" json:"status"` // 2未授权 1 已授权
Open int32 `gorm:"column:open;type:tinyint(1);not null;default:1" json:"open"` // 是否开启展示,1为默认开启,2为关闭
}
type AuthorizationRecordItems struct {
Id int64 `json:"id"`
StoreId int64 `json:"store_id"` // 美容院ID
Status int32 `json:"status"` // 2未授权 1 已授权
Open int32 `json:"open"` // 是否开启展示,1为默认开启,2为关闭
StoreName string `json:"store_name"`
District string `json:"district"`
Address string `json:"address"`
DistrictArr []int64 `json:"district_arr"`
UsageCount int32 `json:"usage_count"`
}
@@ -0,0 +1,29 @@
package dao
import (
"lone-services/pkg/utils"
)
const CodeName = "bind:code:"
type CodeBindInfo struct {
Id int64 `gorm:"column:id;type:int;not null;autoIncrement" json:"id"` // ID
UserId int64 `gorm:"column:user_id;type:int;default:0" json:"user_id"` // 用户ID
Step int32 `gorm:"column:step;type:tinyint;default:1" json:"step"` // 步骤
Bluetooth string `gorm:"column:bluetooth;type:char(30);not null;default:''" json:"bluetooth"` // 蓝牙
Cmos string `gorm:"column:cmos;type:char(30);not null;default:''" json:"cmos"` // 芯片
Status int32 `gorm:"column:status;type:tinyint(1);default:1" json:"status"` // 装态。1为正常,2为删除
Type int32 `gorm:"column:type;type:tinyint(1);default:1" json:"type"` // 类型,1为园屏,2为卵型屏
CreateTime utils.CustomTime `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"` // 添加时间
UpdateTime utils.CustomTime `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP;onUpdate:CURRENT_TIMESTAMP" json:"update_time"` // 更新时间
}
type CodeBindCreate struct {
Id int64 `gorm:"column:id;type:int;not null;autoIncrement" json:"id"` // ID
UserId int64 `gorm:"column:user_id;type:int;default:0" json:"user_id"` // 用户ID
Step int32 `gorm:"column:step;type:tinyint;default:1" json:"step"` // 步骤
Bluetooth string `gorm:"column:bluetooth;type:char(30);not null;default:''" json:"bluetooth"` // 蓝牙
Cmos string `gorm:"column:cmos;type:char(30);not null;default:''" json:"cmos"` // 芯片
Status int32 `gorm:"column:status;type:tinyint(1);default:1" json:"status"` // 装态。1为正常,2为删除
Type int32 `gorm:"column:type;type:tinyint(1);default:1" json:"type"` // 类型,1为园屏,2为卵型屏
}
@@ -0,0 +1,90 @@
package logic
import (
"context"
"lone-services/pkg/modelbase"
"lone-services/pkg/redis"
"lone-services/pkg/utils"
"lone-services/services/equipment/internal/dao"
"lone-services/services/equipment/internal/model"
"lone-services/services/equipment/validator"
"strconv"
"lone-services/rpc/equipment/pb"
"lone-services/services/equipment/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type AuthorizationBindLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewAuthorizationBindLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AuthorizationBindLogic {
return &AuthorizationBindLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *AuthorizationBindLogic) AuthorizationBind(in *equipment.AuthorizationBindRequest) (*equipment.Response, error) {
var v validator.CodeBindValidator
if fail := l.checkParams(in, &v); fail != nil {
return fail, nil
}
adminInfo := utils.GetUserFromCtx(l.ctx)
if adminInfo.ID < utils.NumberOne {
return l.fail(utils.ErrorNoLoginInfo)
}
key := dao.CodeName + strconv.FormatInt(in.StoreId, utils.NumberTen)
redisCode, err := redis.Client.Get(l.ctx, key).Result()
if err != nil {
l.Logger.Error(err)
return l.out(utils.Fail, "获取Code失败")
}
if redisCode != in.Code {
return l.out(utils.Fail, "Code不匹配")
}
w := modelbase.Params{Eq: map[string]string{
"store_id": strconv.Itoa(int(in.StoreId)), "user_id": strconv.Itoa(int(adminInfo.ID))}}
var info dao.AuthorizationRecordCreate
err = model.AuthorizationRecordModel{}.Init().GetOne(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
if info.Id > utils.NumberZero {
info.Status = utils.StatusOk
info.Datetime = utils.Now()
_, err = model.AuthorizationRecordModel{}.Init().Edit(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
} else {
info.StoreId = in.StoreId
info.UserId = adminInfo.ID
err = model.AuthorizationRecordModel{}.Init().Create(&info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
}
_, err = redis.Client.Del(l.ctx, key).Result()
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
return l.ok(utils.Ok)
}
@@ -0,0 +1,65 @@
package logic
import (
"context"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/services/equipment/internal/dao"
"lone-services/services/equipment/internal/model"
"lone-services/services/equipment/validator"
"strconv"
"lone-services/rpc/equipment/pb"
"lone-services/services/equipment/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type AuthorizationCancelLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewAuthorizationCancelLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AuthorizationCancelLogic {
return &AuthorizationCancelLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// AuthorizationCancel 解绑绑定
func (l *AuthorizationCancelLogic) AuthorizationCancel(in *equipment.AuthorizationCancelRequest) (*equipment.Response, error) {
var v validator.CancelBindValidator
if fail := l.checkParams(in, &v); fail != nil {
return fail, nil
}
adminInfo := utils.GetUserFromCtx(l.ctx)
if adminInfo.ID < utils.NumberOne {
return l.fail(utils.ErrorNoLoginInfo)
}
w := modelbase.Params{Eq: map[string]string{
"store_id": strconv.Itoa(int(in.StoreId)), "user_id": strconv.Itoa(int(adminInfo.ID))}}
var info dao.AuthorizationRecordCreate
err := model.AuthorizationRecordModel{}.Init().GetOne(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
if info.Id < utils.NumberOne {
return l.fail(utils.ErrorNotFund)
}
info.Status = utils.StatusFail
_, err = model.AuthorizationRecordModel{}.Init().Edit(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
return l.ok(utils.NumberOne)
}
@@ -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)
}
@@ -0,0 +1,66 @@
package logic
import (
"context"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/services/equipment/internal/dao"
"lone-services/services/equipment/internal/model"
"lone-services/services/equipment/validator"
"strconv"
"lone-services/rpc/equipment/pb"
"lone-services/services/equipment/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type AuthorizationControlLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewAuthorizationControlLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AuthorizationControlLogic {
return &AuthorizationControlLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 更改打开权限开关
func (l *AuthorizationControlLogic) AuthorizationControl(in *equipment.AuthorizationControlRequest) (*equipment.Response, error) {
var v validator.ControlBindValidator
if fail := l.checkParams(in, &v); fail != nil {
return fail, nil
}
adminInfo := utils.GetUserFromCtx(l.ctx)
if adminInfo.ID < utils.NumberOne {
return l.fail(utils.ErrorNoLoginInfo)
}
w := modelbase.Params{Eq: map[string]string{
"store_id": strconv.Itoa(int(in.StoreId)), "user_id": strconv.Itoa(int(adminInfo.ID))}}
var info dao.AuthorizationRecordCreate
err := model.AuthorizationRecordModel{}.Init().GetOne(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
if info.Id < utils.NumberOne {
return l.fail(utils.ErrorNotFund)
}
info.Open = in.Open
_, err = model.AuthorizationRecordModel{}.Init().Edit(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
return l.ok(utils.NumberOne)
}
@@ -0,0 +1,102 @@
package logic
import (
"context"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/services/equipment/internal/dao"
"lone-services/services/equipment/internal/model"
"strconv"
"lone-services/rpc/equipment/pb"
"lone-services/services/equipment/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type AuthorizationItemsLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewAuthorizationItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AuthorizationItemsLogic {
return &AuthorizationItemsLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// AuthorizationItems 用户端获取授权列表
func (l *AuthorizationItemsLogic) AuthorizationItems(in *equipment.EmptyRequest) (*equipment.Response, error) {
adminInfo := utils.GetUserFromCtx(l.ctx)
if adminInfo.ID < utils.NumberOne {
return l.fail(utils.ErrorNoLoginInfo)
}
w := modelbase.Params{Eq: map[string]string{
"user_id": strconv.Itoa(int(adminInfo.ID))}}
var info []dao.AuthorizationRecordInfo
err := model.AuthorizationRecordModel{}.Init().Items(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
ids := make(map[int64]int64)
for _, v := range info {
ids[v.StoreId] = v.StoreId
}
var items []dao.AuthorizationRecordItems
if len(ids) < utils.NumberOne {
return l.ok(items)
}
idsSlice := make([]int64, 0, len(ids))
for k := range ids {
idsSlice = append(idsSlice, k)
}
storeItems := svc.GetStores(idsSlice, l.svcCtx.StoreSvcName)
storeIdItems := make(map[int64]dao.AuthorizationRecordItems)
for _, val := range storeItems {
arr := utils.StrToStrArr(val.DistrictIds, utils.DecollatorComma)
districtIds := []int64{}
for _, arrItem := range arr {
num, _ := strconv.Atoi(arrItem)
districtIds = append(districtIds, int64(num))
}
ww := modelbase.Params{Eq: map[string]string{
"store_id": strconv.Itoa(int(val.Id)),
"user_id": strconv.Itoa(int(adminInfo.ID))}}
storeNumber, err := model.AuthorizationRecordModel{}.Init().CountNumber(ww)
if err != nil {
l.Logger.Error(err)
}
storeIdItems[val.Id] = dao.AuthorizationRecordItems{
Address: val.Address,
StoreName: val.Name,
District: val.ProvinceName + val.CityName + val.CountyName,
DistrictArr: districtIds,
UsageCount: int32(storeNumber),
}
}
for _, v := range info {
item, ok := storeIdItems[v.StoreId]
if !ok {
continue
}
item.Id = v.Id
item.Open = v.Open
item.Status = v.Status
item.StoreId = v.StoreId
items = append(items, item)
}
return l.ok(items)
}
@@ -0,0 +1,23 @@
package model
import (
"lone-services/pkg/modelbase"
"lone-services/services/equipment/internal/dao"
)
type AuthorizationRecordModel struct {
modelbase.Base
}
func (m AuthorizationRecordModel) TableName() string {
return modelbase.Prefix() + "authorization_record"
}
func (m AuthorizationRecordModel) Init() AuthorizationRecordModel {
m.Table = m.TableName()
return m
}
func (m AuthorizationRecordModel) Create(data *dao.AuthorizationRecordCreate) error {
return m.Base.Create(data)
}
@@ -0,0 +1,23 @@
package model
import (
"lone-services/pkg/modelbase"
"lone-services/services/equipment/internal/dao"
)
type CodeBindModel struct {
modelbase.Base
}
func (m CodeBindModel) TableName() string {
return modelbase.Prefix() + "code_bind"
}
func (m CodeBindModel) Init() CodeBindModel {
m.Table = m.TableName()
return m
}
func (m CodeBindModel) Create(data *dao.CodeBindCreate) error {
return m.Base.Create(data)
}
@@ -159,6 +159,35 @@ func (s *EquipmentServer) ApiEditName(ctx context.Context, in *equipment.ApiEdit
return l.ApiEditName(in)
}
// 授权绑定
func (s *EquipmentServer) AuthorizationBind(ctx context.Context, in *equipment.AuthorizationBindRequest) (*equipment.Response, error) {
l := logic.NewAuthorizationBindLogic(ctx, s.svcCtx)
return l.AuthorizationBind(in)
}
// 解绑授权
func (s *EquipmentServer) AuthorizationCancel(ctx context.Context, in *equipment.AuthorizationCancelRequest) (*equipment.Response, error) {
l := logic.NewAuthorizationCancelLogic(ctx, s.svcCtx)
return l.AuthorizationCancel(in)
}
// 更改打开权限开关
func (s *EquipmentServer) AuthorizationControl(ctx context.Context, in *equipment.AuthorizationControlRequest) (*equipment.Response, error) {
l := logic.NewAuthorizationControlLogic(ctx, s.svcCtx)
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)
@@ -48,3 +48,20 @@ func GetStore(id int64, name string) dao.StoreInfo {
return storeInfo
}
func GetStores(ids []int64, name string) []*store.InfoResponse {
cli, err := GetRpcClient(name)
if err != nil {
logx.Error(err)
return nil
}
client := store.NewStoreClient(cli.Conn())
items, err := client.GetInfoByIds(context.Background(), &store.IdsRequest{Ids: ids})
if err != nil {
logx.Errorf("get store err: %v", err)
return nil
}
return items.Items
}
+41
View File
@@ -0,0 +1,41 @@
package validator
import "lone-services/pkg/validate"
type CodeBindValidator struct {
Code string `form:"code" json:"code" validate:"required"`
StoreId int64 `form:"store_id" json:"store_id" validate:"required"`
}
// GetMessage 提示消息
func (p CodeBindValidator) GetMessage() validate.ValidatorMessages {
return validate.ValidatorMessages{
"Code.required": "验证码不能为空",
"StoreId.required": "门店ID不能为空",
}
}
type CancelBindValidator struct {
StoreId int64 `form:"store_id" json:"store_id" validate:"required"`
}
// GetMessage 提示消息
func (p CancelBindValidator) GetMessage() validate.ValidatorMessages {
return validate.ValidatorMessages{
"StoreId.required": "门店ID不能为空",
}
}
type ControlBindValidator struct {
StoreId int64 `form:"store_id" json:"store_id" validate:"required"`
Open int32 `form:"open" json:"open" validate:"required,oneof:1 2"`
}
// GetMessage 提示消息
func (p ControlBindValidator) GetMessage() validate.ValidatorMessages {
return validate.ValidatorMessages{
"StoreId.required": "门店ID不能为空",
"Open.required": "开启展示不能为空",
"Open.oneof": "开启展示只能是1或2",
}
}
@@ -0,0 +1,23 @@
package validator
import "lone-services/pkg/validate"
type UsageRecordsValidator struct {
Id int64 `form:"id" json:"id" validate:"required"`
HostCode string `form:"host_code" json:"host_code" validate:"required"`
ImportMode int32 `form:"import_mode" json:"import_mode"`
PoreFormingStrength int32 `form:"pore_forming_strength" json:"pore_forming_strength"`
ImportStrength int32 `form:"import_strength" json:"import_strength"`
FacialMaskId string `form:"facial_mask_id" json:"facial_mask_id"`
Ts int32 `form:"t_s" json:"t_s"`
Rs int32 `form:"r_s" json:"r_s"`
Ls int32 `form:"l_s" json:"l_s"`
}
// GetMessage 提示消息
func (p UsageRecordsValidator) GetMessage() validate.ValidatorMessages {
return validate.ValidatorMessages{
"Id.required": "ID不能为空",
"HostCode.required": "设备编码不能为空",
}
}