package final import ( "fmt" "strings" "zhiyuan/pkg/db" "github.com/gin-gonic/gin" ) type FinalMatAuxiliaryBrand struct { ID int64 `json:"id" prop:"add:false"` AuxiliaryId int64 `json:"auxiliaryId" label:"辅材类型" type:"int" prop:"edit" search:"="` Name string `json:"name" label:"名称" type:"string" prop:"add edit" search:"like"` SupplierIds string `json:"supplierIds" label:"材料商" type:"string" prop:"add edit"` AreaId int64 `json:"area_id" label:"区域" type:"int" prop:"add edit" search:"="` OrderAt int64 `json:"order_at" prop:"add:false select:false"` DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"` CreatedAt int64 `json:"created_at" prop:"add:false"` UpdatedAt int64 `json:"updated_at" prop:"add:false"` db.BaseModel } func (FinalMatAuxiliaryBrand) TableName() string { return "zy_final_mat_auxiliary_brand" } func (model FinalMatAuxiliaryBrand) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { return true } func (model FinalMatAuxiliaryBrand) ListAfter(c *gin.Context, data map[string]interface{}, list []map[string]interface{}) []map[string]interface{} { ids := make([]int64, 0) idmap := make(map[int64]int) for i, v := range list { id, _ := db.ToInt64(v["id"]) ids = append(ids, id) idmap[id] = i } datas, _ := db.GetModelMap(db.Type(FinalMatAuxiliaryItemMoblie{}), map[string]interface{}{ fmt.Sprintf("`%s`.`brandId` in", FinalMatAuxiliaryItemMoblie{}.TableName()): ids, fmt.Sprintf("`%s`.`deleted_at`", FinalMatAuxiliaryItemMoblie{}.TableName()): 0, }, nil) for _, v := range datas { id, _ := db.ToInt64(v["brandId"]) if n, ok := idmap[id]; ok { items := make([]map[string]interface{}, 0) if is, ok := list[n]["items"].([]map[string]interface{}); ok { items = is } items = append(items, v) list[n]["items"] = items list[n]["item_"+db.ToString(v["itemId"])] = v["matId"] list[n]["item_"+db.ToString(v["itemId"])+"_name"] = v["name"] } } return list } func (FinalMatAuxiliaryBrand) OnePrivilege(c *gin.Context, id int64) bool { return true } func (FinalMatAuxiliaryBrand) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error { return nil } func (FinalMatAuxiliaryBrand) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error { for name, value := range post { s := strings.Split(name, "_") if len(s) == 2 && s[0] == "item" { if itemId, ok := db.ToInt64(s[1]); ok { matId, _ := db.ToInt64(value) var item FinalMatAuxiliaryItem db.GetModel(map[string]interface{}{ "brandId": id, "itemId": itemId, "deleted_at": 0, }, &item) if item.ID == 0 { _, err := db.InsertModel(db.Type(item), map[string]interface{}{ "brandId": id, "itemId": itemId, "matId": matId, }) if err != nil { return err } } else { err := db.UpdateModel(db.Type(item), item.ID, map[string]interface{}{ "matId": matId, }) if err != nil { return err } } } } } return nil } func (FinalMatAuxiliaryBrand) DelPrivilege(c *gin.Context, id int64) error { return nil } func (FinalMatAuxiliaryBrand) OrderField() string { return "order_at" } func (FinalMatAuxiliaryBrand) Page() bool { return false } func (FinalMatAuxiliaryBrand) Count() bool { return true } func (model FinalMatAuxiliaryBrand) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel { return []db.JoinModel{} }