Explorar o código

FIX:优化客户端订单列表搜索

zoie hai 11 meses
pai
achega
19e43ffc39

+ 2 - 5
app/admin/controller/applet_customer.go

@@ -218,7 +218,7 @@ func (e AppletCustomerController) GetProfile(c *gin.Context) {
 // @Security Bearer
 func (e AppletCustomerController) GetOrderPage(c *gin.Context) {
 	s := service.Order{}
-	req := dto.OrderGetPageReq{}
+	req := dto.AppletOrderGetPageReq{}
 	err := e.MakeContext(c).
 		MakeOrm().
 		Bind(&req, binding.Query).
@@ -230,14 +230,11 @@ func (e AppletCustomerController) GetOrderPage(c *gin.Context) {
 		return
 	}
 
-	//数据权限检查
-	p := actions.GetPermissionFromContext(c)
-
 	list := make([]model.Order, 0)
 	var count int64
 	req.CustomerId = service.GetAppletCustomerId(c) + "_"
 	req.Source = 2
-	err = s.GetPage(&req, &list, &count, p)
+	err = s.AppletGetPage(&req, &list, &count)
 	if err != nil {
 		e.Error(500, err, err.Error())
 		return

+ 15 - 0
app/admin/service/dto/order.go

@@ -284,3 +284,18 @@ func (s *OrderUpdateStateReq) Generate(order *model.Order) {
 func (s *OrderUpdateStateReq) GetId() interface{} {
 	return s.Id
 }
+
+type AppletOrderGetPageReq struct {
+	dto.Pagination `search:"-"`
+	State          int    `form:"state" search:"-"`                                                 // 订单状态 1-已下单 2-已派送 3-已送达 4-已取消
+	Source         int    `form:"source" search:"type:exact;column:source;table:order"`             // 订单状态 1-坐席下单 2-小程序
+	OrderStartTime string `form:"orderStartTime" search:"type:gte;column:order_time;table:order"`   // 下单开始时间
+	OrderEndTime   string `form:"orderEndTime" search:"type:lte;column:order_time;table:order"`     // 下单结束时间
+	Phone          string `form:"phone" search:"type:contains;column:phone;table:order"`            // 客户电话
+	CustomerId     string `form:"customerId" search:"type:contains;column:customer_id;table:order"` // 客户id
+	OrderOrder
+}
+
+func (m *AppletOrderGetPageReq) GetNeedSearch() interface{} {
+	return *m
+}

+ 36 - 4
app/admin/service/order.go

@@ -112,7 +112,7 @@ func (e *Order) AppletInsert(c *dto.OrderAppletInsertReq) error {
 		}
 	}()
 	// 查询小程序客户是否存在
-	customerId := c.CustomerId + "_" + utils.ToString(c.DeptId)
+	storeCustomerId := c.CustomerId + "_" + utils.ToString(c.DeptId)
 	var customer model.Customer
 	err = e.Orm.
 		Where("id = ?", c.CustomerId).
@@ -132,7 +132,7 @@ func (e *Order) AppletInsert(c *dto.OrderAppletInsertReq) error {
 	var storeCustomer model.Customer
 
 	err = e.Orm.
-		Where("id = ?", customerId).
+		Where("id = ?", storeCustomerId).
 		First(&storeCustomer).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
@@ -141,7 +141,7 @@ func (e *Order) AppletInsert(c *dto.OrderAppletInsertReq) error {
 			// 添加客户
 			obj := model.Customer{
 				ProvCustomer: model.ProvCustomer{
-					Id:             customerId,
+					Id:             storeCustomerId,
 					PrincipalName:  customer.Name,
 					PrincipalPhone: customer.PrincipalPhone,
 					ShopName:       customer.Name,
@@ -194,7 +194,7 @@ func (e *Order) AppletInsert(c *dto.OrderAppletInsertReq) error {
 
 	// 添加订单
 	c.Generate(&data)
-	data.CustomerId = customerId
+	data.CustomerId = storeCustomerId
 	err = tx.Create(&data).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
@@ -474,3 +474,35 @@ func (e *Order) UpdateState(c *dto.OrderUpdateStateReq, p *actions.DataPermissio
 
 	return nil
 }
+
+func AppletOrderState(state int) func(db *gorm.DB) *gorm.DB {
+
+	return func(db *gorm.DB) *gorm.DB {
+		if state == 0 {
+			return db
+		}
+		if state == 1 || state == 2 {
+			return db.Where("state = 1 or state = 2 ")
+		}
+		return db.Where("state = ? ", state)
+	}
+}
+
+func (e *Order) AppletGetPage(c *dto.AppletOrderGetPageReq, list *[]model.Order, count *int64) error {
+	var err error
+	var data model.Order
+	err = e.Orm.Model(&data).
+		Scopes(
+			AppletOrderState(c.State),
+			cDto.MakeCondition(c.GetNeedSearch()),
+			cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
+		).
+		Preload("Customer").Preload("Store").Preload("User").Preload("Goods").Preload("Spec").
+		Find(list).Limit(-1).Offset(-1).
+		Count(count).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.GetFailedErr
+	}
+	return nil
+}