package pkg import ( "errors" "zhiyuan/models" "zhiyuan/pkg/app" "zhiyuan/pkg/db" "zhiyuan/pkg/param/material" "zhiyuan/pkg/utils" "zhiyuan/services/form" "zhiyuan/services/material/pick" "zhiyuan/services/structs/calc" ) var MatPkg models.MatPkg func Count(where map[string]interface{}) (int64, error) { return db.Count(MatPkg.TableName(), where) } func GetPkgs(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.MatPkg, error) { if page.PageNum > 0 && page.PageSize > 0 { where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize)) } return MatPkg.GetMulti(where, fields, retVal) } func GetPkg(where map[string]interface{}, fields []string, dest interface{}) (*models.MatPkg, error) { return MatPkg.GetOne(where, fields, dest) } func pkgMap(form form.MaterialPkgAdd) (map[string]interface{}, error) { pkgMap := map[string]interface{}{ "pkg_name": form.PkgName, } return pkgMap, nil } func Copy(f form.MaterialPkgCopy) (int64, error) { // 判断来源 id 是否存在 pkgInfo, err := GetPkg(map[string]interface{}{"id": f.FromID}, nil, nil) if pkgInfo == nil { return 0, err } // 判断目的 id 报价是否为空 if bidCheck, _ := pick.MatPick.GetOne(map[string]interface{}{"pkg_id": f.ToID}, nil, nil); bidCheck != nil { return 0, errors.New("该套餐已设置,不能重复设置") } sql := "INSERT INTO zy_mat_pick(room_type, pkg_id, pick_name, `standard`, cycle, confirm_type) SELECT room_type, {{to_id}}, pick_name, standard, `cycle`, confirm_type FROM zy_mat_pick WHERE pkg_id={{from_id}}" return db.InsertRaw(sql, map[string]interface{}{"from_id": f.FromID, "to_id": f.ToID}) } func Add(form form.MaterialPkgAdd) (int64, error) { pkgMap, err := pkgMap(form) if err != nil { return 0, err } return db.InsertOne(MatPkg.TableName(), pkgMap) } func Edit(form form.MaterialPkgAdd, id int) (int64, error) { pkgMap, err := pkgMap(form) if err != nil { return 0, err } return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, pkgMap) } func ShowHome(form form.MaterialPkgShowHome, id int) (int64, error) { if !utils.IsContain([]int{0, 1}, form.Type) { return 0, errors.New("参数有误") } pkgMap := map[string]interface{}{ "show_home": form.Type, } return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, pkgMap) } func EditRoomPic(form form.MaterialPkgRoomPic, id int) (int64, error) { pkgInfo, _ := GetPkg(map[string]interface{}{"id": id}, nil, nil) roomPic := make(map[int]string) if pkgInfo.RoomPics == "" { for _, v := range material.Params.RoomType { if v.ID > 0 { roomPic[v.ID] = "" } } } else { utils.JsonDecode(pkgInfo.RoomPics).To(&roomPic) } roomPic[form.RoomType] = form.Pic return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, map[string]interface{}{"room_pics": utils.JsonEncode(roomPic)}) } func EditOutline(form calc.Outline, id int) (int64, error) { return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, map[string]interface{}{"outline": utils.JsonEncode(form)}) }