package db import ( "applet/app/utils" "applet/app/utils/logx" "applet/supply/db/model" "errors" "fmt" "reflect" "time" "xorm.io/xorm" ) // 获取所有类目原始数据 func GetAllCategory(Db *xorm.Engine) (GoodsCategoryList *[]model.GoodsCategory, err error) { var categoryList []model.GoodsCategory err = Db.Find(&categoryList) GoodsCategoryList = &categoryList return } func GetCategoryListByMcId(Db *xorm.Engine, mcId string, level string) (GoodsCategoryList *[]model.GoodsCategory, err error) { var categoryList []model.GoodsCategory if mcId == "0" { if level == "" { err = Db.Find(&categoryList) } else { err = Db.Where("level = ?", level).Find(&categoryList) } } else { if level == "" { err = Db.Where("mc_id = ?", mcId).Find(&categoryList) } else { err = Db.Where("mc_id = ?", mcId).And("level = ?", level).Find(&categoryList) } } GoodsCategoryList = &categoryList return } // CategoryListFindByParams 通过传入的参数查询数据(多条) func CategoryListFindByParams(Db *xorm.Engine, params map[string]interface{}) (*[]model.GoodsCategory, error) { var m []model.GoodsCategory if params["value"] == nil { return nil, errors.New("参数有误") } if params["key"] == nil { //查询全部数据 err := Db.Find(&m) if err != nil { return nil, logx.Error(err) } return &m, nil } else { if reflect.TypeOf(params["value"]).Kind() == reflect.Slice { //指定In查询 if err := Db.In(utils.AnyToString(params["key"]), params["value"]).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } else { var query = fmt.Sprintf("%s =?", params["key"]) err := Db.Where(query, params["value"]).Find(&m) if err != nil { return nil, logx.Error(err) } return &m, nil } } } func GetCategoryById(Db *xorm.Engine, pid string) (GoodsCategoryList *model.GoodsCategory, err error) { var m model.GoodsCategory has, err := Db.Where("id=?", pid).Get(&m) if has == false || err != nil { return nil, err } return &m, nil } func UpdateCategoryById(eg *xorm.Engine, m *model.GoodsCategory, columns ...string) error { var ( affected int64 err error ) if columns == nil || len(columns) == 0 { affected, err = eg.Where("id = ?", m.Id).AllCols().Update(m) } else { affected, err = eg.Where("id = ?", m.Id).Cols(columns...).Update(m) } if err != nil { return err } if affected == 0 { return errors.New("更新类目数据失败,稍后再试") } return nil } func CategoryInsert(Db *xorm.Engine, m *model.GoodsCategory) (int, error) { _, err := Db.InsertOne(m) if err != nil { return 0, err } return m.Id, nil } func UpdateOrInsert(Db *xorm.Engine, m *model.GoodsCategory) error { if m.Id != 0 { err := UpdateCategoryById(Db, m) if err != nil { return err } } else { m.CreateAt = time.Now() _, err := CategoryInsert(Db, m) if err != nil { return err } } return nil }