Files
lone-services/services/equipment/internal/logic/authorizationItemsLogic.go
T
2026-10-21 16:06:37 +08:00

103 lines
2.6 KiB
Go

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)
}