package item import ( "zhiyuan/models" "zhiyuan/pkg/app" "zhiyuan/pkg/db" itemParam "zhiyuan/pkg/param/material/item" "zhiyuan/services/form" ) var Params = itemParam.Params var MatItem models.MatItem func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.MatItem, error) { if page.PageNum > 0 && page.PageSize > 0 { where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize)) } return MatItem.GetMulti(where, fields, retVal) } func Count(where map[string]interface{}) (int64, error) { return db.Count(MatItem.TableName(), where) } func GetOne(where map[string]interface{}, fields []string, dest interface{}) (*models.MatItem, error) { return MatItem.GetOne(where, fields, dest) } func Del(id int) error { _, err := db.DeleteSoft(MatItem.TableName(), map[string]interface{}{"id": id}) return err } func GetTypeMapByIds(typeIDs []int) map[int]string { typeListMap := make(map[int]string) if len(typeIDs) > 0 { if itemList, err := GetTypeList(nil, []string{"id, type_name"}, app.Page{}, nil); err == nil { for _, v := range itemList { typeListMap[v.ID] = v.TypeName } } } return typeListMap } func Add(form form.MaterialItemAdd) (int64, error) { itemMap := map[string]interface{}{ "item_name": form.ItemName, "brand_id": form.BrandID, "type_id": form.TypeID, "unit": form.Unit, "level": form.Level, "pic": form.Pic, } itemID, err := db.InsertOne(MatItem.TableName(), itemMap) if err != nil { return 0, err } detailMap := map[string]interface{}{ "item_id": itemID, "content": form.Content, } if detail, _ := GetDetailOne(map[string]interface{}{"item_id": itemID}, nil, nil); detail == nil { db.InsertOne(MatItemDetail.TableName(), detailMap) } else { db.Update(MatItemDetail.TableName(), map[string]interface{}{"id": detail.ID}, detailMap) } if len(form.Colors) > 0 { BatchAdd(form.Colors, int(itemID)) } return itemID, nil } func Edit(form form.MaterialItemAdd, id int) (int64, error) { itemMap := map[string]interface{}{ "item_name": form.ItemName, "brand_id": form.BrandID, "type_id": form.TypeID, "unit": form.Unit, "level": form.Level, "pic": form.Pic, } detailMap := map[string]interface{}{ "item_id": id, "content": form.Content, } if detail, _ := GetDetailOne(map[string]interface{}{"item_id": id}, nil, nil); detail == nil { db.InsertOne(MatItemDetail.TableName(), detailMap) } else { db.Update(MatItemDetail.TableName(), map[string]interface{}{"id": detail.ID}, detailMap) } DelOptionsByItem(id) if len(form.Colors) > 0 { BatchAdd(form.Colors, id) } return db.Update(MatItem.TableName(), map[string]interface{}{"id": id}, itemMap) }