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
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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": "设备编码不能为空",
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user