103 lines
2.6 KiB
Go
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)
|
|
}
|