package logic import ( "context" "strconv" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" sale "lone-services/rpc/sale/pb" "lone-services/services/sale/internal/dao" "lone-services/services/sale/internal/model" "lone-services/services/sale/internal/svc" "lone-services/services/sale/validator" "github.com/zeromicro/go-zero/core/logx" ) type ItemsLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ItemsLogic { return &ItemsLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *ItemsLogic) Items(in *sale.ItemsReq) (*sale.Response, error) { var req validator.ItemsValidator if msg := validate.ValidateFromProto(in, &req); msg != utils.StringEmpty { return outResponse(utils.ErrorParams, msg), nil } page := int(req.Page) size := int(req.PageSize) if page < modelbase.DefaultPage { page = modelbase.DefaultPage } if size < modelbase.DefaultPage { size = modelbase.DefaultSize } w := modelbase.Params{ Eq: map[string]string{}, Page: page, Size: size, Order: "id desc", Like: map[string]string{}, In: map[string][]string{ "status": { strconv.Itoa(int(dao.SaleStatusEnabled)), strconv.Itoa(int(dao.SaleStatusDisabled)), }, }, } if req.Type > utils.NumberZero { w.Eq["type"] = strconv.Itoa(int(req.Type)) } if req.SaleId > utils.NumberZero { w.Eq["sale_id"] = strconv.FormatInt(req.SaleId, 10) } if req.Status > utils.NumberZero { delete(w.In, "status") w.Eq["status"] = strconv.Itoa(int(req.Status)) } if req.Name != utils.StringEmpty { w.Like["name LIKE ?"] = "%" + req.Name + "%" } var list []dao.SaleInfo result, err := model.SaleModel{}.Init().Page(w, &list) if err != nil { l.Errorf("sale items: %v", err) return failResponse(utils.Fail), nil } for i := range list { maskSaleMobile(&list[i]) } return okResponse(map[string]any{ "count": result.Count, "items": list, }), nil }