pkg.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package pkg
  2. import (
  3. "errors"
  4. "zhiyuan/models"
  5. "zhiyuan/pkg/app"
  6. "zhiyuan/pkg/db"
  7. "zhiyuan/pkg/param/material"
  8. "zhiyuan/pkg/utils"
  9. "zhiyuan/services/form"
  10. "zhiyuan/services/material/pick"
  11. "zhiyuan/services/structs/calc"
  12. )
  13. var MatPkg models.MatPkg
  14. func Count(where map[string]interface{}) (int64, error) {
  15. return db.Count(MatPkg.TableName(), where)
  16. }
  17. func GetPkgs(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.MatPkg, error) {
  18. if page.PageNum > 0 && page.PageSize > 0 {
  19. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  20. }
  21. return MatPkg.GetMulti(where, fields, retVal)
  22. }
  23. func GetPkg(where map[string]interface{}, fields []string, dest interface{}) (*models.MatPkg, error) {
  24. return MatPkg.GetOne(where, fields, dest)
  25. }
  26. func pkgMap(form form.MaterialPkgAdd) (map[string]interface{}, error) {
  27. pkgMap := map[string]interface{}{
  28. "pkg_name": form.PkgName,
  29. }
  30. return pkgMap, nil
  31. }
  32. func Copy(f form.MaterialPkgCopy) (int64, error) {
  33. // 判断来源 id 是否存在
  34. pkgInfo, err := GetPkg(map[string]interface{}{"id": f.FromID}, nil, nil)
  35. if pkgInfo == nil {
  36. return 0, err
  37. }
  38. // 判断目的 id 报价是否为空
  39. if bidCheck, _ := pick.MatPick.GetOne(map[string]interface{}{"pkg_id": f.ToID}, nil, nil); bidCheck != nil {
  40. return 0, errors.New("该套餐已设置,不能重复设置")
  41. }
  42. 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}}"
  43. return db.InsertRaw(sql, map[string]interface{}{"from_id": f.FromID, "to_id": f.ToID})
  44. }
  45. func Add(form form.MaterialPkgAdd) (int64, error) {
  46. pkgMap, err := pkgMap(form)
  47. if err != nil {
  48. return 0, err
  49. }
  50. return db.InsertOne(MatPkg.TableName(), pkgMap)
  51. }
  52. func Edit(form form.MaterialPkgAdd, id int) (int64, error) {
  53. pkgMap, err := pkgMap(form)
  54. if err != nil {
  55. return 0, err
  56. }
  57. return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, pkgMap)
  58. }
  59. func ShowHome(form form.MaterialPkgShowHome, id int) (int64, error) {
  60. if !utils.IsContain([]int{0, 1}, form.Type) {
  61. return 0, errors.New("参数有误")
  62. }
  63. pkgMap := map[string]interface{}{
  64. "show_home": form.Type,
  65. }
  66. return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, pkgMap)
  67. }
  68. func EditRoomPic(form form.MaterialPkgRoomPic, id int) (int64, error) {
  69. pkgInfo, _ := GetPkg(map[string]interface{}{"id": id}, nil, nil)
  70. roomPic := make(map[int]string)
  71. if pkgInfo.RoomPics == "" {
  72. for _, v := range material.Params.RoomType {
  73. if v.ID > 0 {
  74. roomPic[v.ID] = ""
  75. }
  76. }
  77. } else {
  78. utils.JsonDecode(pkgInfo.RoomPics).To(&roomPic)
  79. }
  80. roomPic[form.RoomType] = form.Pic
  81. return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, map[string]interface{}{"room_pics": utils.JsonEncode(roomPic)})
  82. }
  83. func EditOutline(form calc.Outline, id int) (int64, error) {
  84. return db.Update(MatPkg.TableName(), map[string]interface{}{"id": id}, map[string]interface{}{"outline": utils.JsonEncode(form)})
  85. }