This commit is contained in:
2026-09-24 08:34:32 +08:00
parent 9b876701c3
commit e5fff985cf
15 changed files with 616 additions and 55 deletions
@@ -0,0 +1,101 @@
package logic
import (
"context"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/services/order/internal/dao"
"lone-services/services/order/internal/model"
"strconv"
"lone-services/rpc/order/pb"
"lone-services/services/order/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type WebSaleItemsLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewWebSaleItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *WebSaleItemsLogic {
return &WebSaleItemsLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *WebSaleItemsLogic) WebSaleItems(in *order.WebSaleItemsRequest) (*order.Response, error) {
adminInfo := utils.GetUserFromCtx(l.ctx)
if adminInfo.ID < utils.NumberOne {
return l.fail(utils.ErrorNoLoginInfo)
}
var info []dao.OrderSaleItems
w := modelbase.Params{
Page: int(in.Page),
Size: int(in.Size),
Order: "id desc",
Eq: map[string]string{"status": utils.StringStatusOk},
}
w.Like = make(map[string]string)
if len(in.Name) > utils.NumberZero {
w.Like["sale_name LIKE ? "] = "%%" + in.Name + "%%"
}
if in.SaleId > utils.NumberZero {
saleInfo, sErr := svc.GetSaleInfo(l.svcCtx.SaleName, in.SaleId)
if sErr != utils.Ok {
return l.fail(sErr)
}
if saleInfo.SaleId != adminInfo.SaleId {
return l.fail(utils.SetError(utils.Fail, "无权限访问"))
}
w.Eq["sale_id"] = strconv.FormatInt(in.SaleId, utils.NumberTen)
} else {
w.Eq["sale_id"] = strconv.FormatInt(adminInfo.ID, utils.NumberTen)
}
if len(in.Time) > utils.NumberOne {
w.Other["create_time > ?"] = in.Time[utils.NumberZero]
w.Other["create_time < ?"] = in.Time[utils.NumberOne]
}
items, err := model.OrderModel{}.Init().Page(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
var orderSn []string
for _, v := range info {
orderSn = append(orderSn, v.OrderSn)
}
if len(orderSn) > utils.NumberZero {
w = modelbase.Params{In: map[string][]string{"order_sn": orderSn}}
var products []dao.OrderProducts
err = model.OrderProductModel{}.Init().Items(w, &products)
if err != nil {
return l.ok(items)
}
tmpProducts := map[string][]dao.OrderProducts{}
for _, v := range products {
tmpProducts[v.OrderSn] = append(tmpProducts[v.OrderSn], v)
}
for key, v := range info {
if val, ok := tmpProducts[v.OrderSn]; ok {
info[key].ProductItems = val
}
}
}
items.Items = info
return l.ok(items)
}
@@ -0,0 +1,76 @@
package logic
import (
"context"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/rpc/order/pb"
"lone-services/services/order/internal/dao"
"lone-services/services/order/internal/model"
"lone-services/services/order/internal/svc"
"strconv"
"github.com/zeromicro/go-zero/core/logx"
)
type WebStoreItemsLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewWebStoreItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *WebStoreItemsLogic {
return &WebStoreItemsLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *WebStoreItemsLogic) WebStoreItems(in *order.WebStoreItemsRequest) (*order.Response, error) {
adminInfo := utils.GetUserFromCtx(l.ctx)
if adminInfo.ID < utils.NumberOne {
return l.fail(utils.ErrorNoLoginInfo)
}
var info []dao.OrderStoreItems
w := modelbase.Params{
Page: int(in.Page),
Size: int(in.Size),
Order: "id desc",
Eq: map[string]string{"store_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), "status": utils.StringStatusOk},
}
items, err := model.OrderModel{}.Init().Page(w, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.Fail)
}
var orderSn []string
for _, v := range info {
orderSn = append(orderSn, v.OrderSn)
}
if len(orderSn) > utils.NumberZero {
w = modelbase.Params{In: map[string][]string{"order_sn": orderSn}}
var products []dao.OrderProducts
err = model.OrderProductModel{}.Init().Items(w, &products)
if err != nil {
return l.ok(items)
}
tmpProducts := map[string][]dao.OrderProducts{}
for _, v := range products {
tmpProducts[v.OrderSn] = append(tmpProducts[v.OrderSn], v)
}
for key, v := range info {
if val, ok := tmpProducts[v.OrderSn]; ok {
info[key].ProductItems = val
}
}
}
items.Items = info
return l.ok(items)
}