123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- package dto
- import (
- "cold-delivery/common/global"
- "fmt"
- "gogs.baozhida.cn/zoie/OAuth-core/tools/search"
- "gorm.io/gorm"
- "strings"
- )
- type GeneralDelDto struct {
- Id int `uri:"id" json:"id" validate:"required"`
- Ids []int `json:"ids"`
- }
- func (g GeneralDelDto) GetIds() []int {
- ids := make([]int, 0)
- if g.Id != 0 {
- ids = append(ids, g.Id)
- }
- if len(g.Ids) > 0 {
- for _, id := range g.Ids {
- if id > 0 {
- ids = append(ids, id)
- }
- }
- } else {
- if g.Id > 0 {
- ids = append(ids, g.Id)
- }
- }
- if len(ids) <= 0 {
- //方式全部删除
- ids = append(ids, 0)
- }
- return ids
- }
- type GeneralGetDto struct {
- Id int `uri:"id" json:"id" validate:"required"`
- }
- func MakeCondition(q interface{}) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- condition := &search.GormCondition{
- GormPublic: search.GormPublic{},
- Join: make([]*search.GormJoin, 0),
- }
- search.ResolveSearchQuery(global.Driver, q, condition)
- for _, join := range condition.Join {
- if join == nil {
- continue
- }
- db = db.Joins(join.JoinOn)
- for k, v := range join.Where {
- db = db.Where(k, v...)
- }
- for k, v := range join.Or {
- db = db.Or(k, v...)
- }
- for _, o := range join.Order {
- db = db.Order(o)
- }
- }
- for k, v := range condition.Where {
- db = db.Where(k, v...)
- }
- for k, v := range condition.Or {
- db = db.Or(k, v...)
- }
- var orContains string
- for k, v := range condition.OrContains {
- orContains += fmt.Sprintf(" OR %v '%v'", k, v[0])
- }
- if len(orContains) > 0 {
- db = db.Where(strings.TrimLeft(orContains, " OR"))
- }
- for _, o := range condition.Order {
- db = db.Order(o)
- }
- return db
- }
- }
- //func MakeCondition(q interface{}) func(db *gorm.DB) *gorm.DB {
- // return func(db *gorm.DB) *gorm.DB {
- // // 检查是否是WaybillGetPageReq类型
- // req, ok := q.(*dto2.WaybillGetPageReq)
- // if !ok {
- // // 如果不是WaybillGetPageReq类型,则继续正常的处理逻辑
- // return makeNormalCondition(q)(db)
- // }
- //
- // // 特别处理Status字段
- // if req.Status == 1 {
- // // 添加一个额外的条件来匹配status=7
- // db = db.Or("status = ?", model.WaybillStatusoverrule)
- // }
- //
- // // 继续使用search.ResolveSearchQuery来处理其他条件
- // condition := &search.GormCondition{
- // GormPublic: search.GormPublic{},
- // Join: make([]*search.GormJoin, 0),
- // }
- // search.ResolveSearchQuery(global.Driver, q, condition)
- //
- // for _, join := range condition.Join {
- // if join == nil {
- // continue
- // }
- // db = db.Joins(join.JoinOn)
- // for k, v := range join.Where {
- // db = db.Where(k, v...)
- // }
- // for k, v := range join.Or {
- // db = db.Or(k, v...)
- // }
- // for _, o := range join.Order {
- // db = db.Order(o)
- // }
- // }
- // for k, v := range condition.Where {
- // db = db.Where(k, v...)
- // }
- // for k, v := range condition.Or {
- // db = db.Or(k, v...)
- // }
- // var orContains string
- // for k, v := range condition.OrContains {
- // orContains += fmt.Sprintf(" OR %v '%v'", k, v[0])
- // }
- // if len(orContains) > 0 {
- // db = db.Where(strings.TrimLeft(orContains, " OR"))
- // }
- // for _, o := range condition.Order {
- // db = db.Order(o)
- // }
- // return db
- // }
- //}
- //
- //// 辅助函数:用于处理非WaybillGetPageReq类型的正常情况
- //func makeNormalCondition(q interface{}) func(db *gorm.DB) *gorm.DB {
- // return func(db *gorm.DB) *gorm.DB {
- // condition := &search.GormCondition{
- // GormPublic: search.GormPublic{},
- // Join: make([]*search.GormJoin, 0),
- // }
- // search.ResolveSearchQuery(global.Driver, q, condition)
- //
- // for _, join := range condition.Join {
- // if join == nil {
- // continue
- // }
- // db = db.Joins(join.JoinOn)
- // for k, v := range join.Where {
- // db = db.Where(k, v...)
- // }
- // for k, v := range join.Or {
- // db = db.Or(k, v...)
- // }
- // for _, o := range join.Order {
- // db = db.Order(o)
- // }
- // }
- // for k, v := range condition.Where {
- // db = db.Where(k, v...)
- // }
- // for k, v := range condition.Or {
- // db = db.Or(k, v...)
- // }
- // var orContains string
- // for k, v := range condition.OrContains {
- // orContains += fmt.Sprintf(" OR %v '%v'", k, v[0])
- // }
- // if len(orContains) > 0 {
- // db = db.Where(strings.TrimLeft(orContains, " OR"))
- // }
- // for _, o := range condition.Order {
- // db = db.Order(o)
- // }
- // return db
- // }
- //}
- func Paginate(pageSize, pageIndex int) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- offset := (pageIndex - 1) * pageSize
- if offset < 0 {
- offset = 0
- }
- return db.Offset(offset).Limit(pageSize)
- }
- }
|