item.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package item
  2. import (
  3. "zhiyuan/models"
  4. "zhiyuan/pkg/app"
  5. "zhiyuan/pkg/db"
  6. itemParam "zhiyuan/pkg/param/material/item"
  7. "zhiyuan/services/form"
  8. )
  9. var Params = itemParam.Params
  10. var MatItem models.MatItem
  11. func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.MatItem, error) {
  12. if page.PageNum > 0 && page.PageSize > 0 {
  13. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  14. }
  15. return MatItem.GetMulti(where, fields, retVal)
  16. }
  17. func Count(where map[string]interface{}) (int64, error) {
  18. return db.Count(MatItem.TableName(), where)
  19. }
  20. func GetOne(where map[string]interface{}, fields []string, dest interface{}) (*models.MatItem, error) {
  21. return MatItem.GetOne(where, fields, dest)
  22. }
  23. func Del(id int) error {
  24. _, err := db.DeleteSoft(MatItem.TableName(), map[string]interface{}{"id": id})
  25. return err
  26. }
  27. func GetTypeMapByIds(typeIDs []int) map[int]string {
  28. typeListMap := make(map[int]string)
  29. if len(typeIDs) > 0 {
  30. if itemList, err := GetTypeList(nil, []string{"id, type_name"}, app.Page{}, nil); err == nil {
  31. for _, v := range itemList {
  32. typeListMap[v.ID] = v.TypeName
  33. }
  34. }
  35. }
  36. return typeListMap
  37. }
  38. func Add(form form.MaterialItemAdd) (int64, error) {
  39. itemMap := map[string]interface{}{
  40. "item_name": form.ItemName,
  41. "brand_id": form.BrandID,
  42. "type_id": form.TypeID,
  43. "unit": form.Unit,
  44. "level": form.Level,
  45. "pic": form.Pic,
  46. }
  47. itemID, err := db.InsertOne(MatItem.TableName(), itemMap)
  48. if err != nil {
  49. return 0, err
  50. }
  51. detailMap := map[string]interface{}{
  52. "item_id": itemID,
  53. "content": form.Content,
  54. }
  55. if detail, _ := GetDetailOne(map[string]interface{}{"item_id": itemID}, nil, nil); detail == nil {
  56. db.InsertOne(MatItemDetail.TableName(), detailMap)
  57. } else {
  58. db.Update(MatItemDetail.TableName(), map[string]interface{}{"id": detail.ID}, detailMap)
  59. }
  60. if len(form.Colors) > 0 {
  61. BatchAdd(form.Colors, int(itemID))
  62. }
  63. return itemID, nil
  64. }
  65. func Edit(form form.MaterialItemAdd, id int) (int64, error) {
  66. itemMap := map[string]interface{}{
  67. "item_name": form.ItemName,
  68. "brand_id": form.BrandID,
  69. "type_id": form.TypeID,
  70. "unit": form.Unit,
  71. "level": form.Level,
  72. "pic": form.Pic,
  73. }
  74. detailMap := map[string]interface{}{
  75. "item_id": id,
  76. "content": form.Content,
  77. }
  78. if detail, _ := GetDetailOne(map[string]interface{}{"item_id": id}, nil, nil); detail == nil {
  79. db.InsertOne(MatItemDetail.TableName(), detailMap)
  80. } else {
  81. db.Update(MatItemDetail.TableName(), map[string]interface{}{"id": detail.ID}, detailMap)
  82. }
  83. DelOptionsByItem(id)
  84. if len(form.Colors) > 0 {
  85. BatchAdd(form.Colors, id)
  86. }
  87. return db.Update(MatItem.TableName(), map[string]interface{}{"id": id}, itemMap)
  88. }