dispatch_order.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package dispatch
  2. import (
  3. "errors"
  4. "fmt"
  5. "zhiyuan/pkg/db"
  6. "github.com/gin-gonic/gin"
  7. )
  8. type DispatchOrder struct {
  9. ID int64 `json:"id" prop:"add:false"`
  10. TableId int64 `json:"table_id" label:"表" type:"int" prop:"add" search:"="`
  11. WorkerId int64 `json:"worker_id" label:"工人" type:"int" prop:"add" search:"="`
  12. State int64 `json:"state" label:"状态" type:"int" prop:"add:false edit" default:"0" search:"="`
  13. CreatedId int64 `json:"created_id" label:"创建人员" type:"int" prop:"add:false" search:"="`
  14. DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
  15. CreatedAt int64 `json:"created_at" prop:"add:false"`
  16. UpdatedAt int64 `json:"updated_at" prop:"add:false"`
  17. WorkerName string `json:"worker_name" label:"工人姓名" prop:"add:false select:worker.name"`
  18. WorkerPhone string `json:"worker_phone" label:"工人电话" prop:"add:false select:worker.phone"`
  19. Username string `json:"username" label:"业主姓名" prop:"select:dispatchsite.username" search:"like"`
  20. Phone string `json:"phone" label:"手机号码" prop:"select:dispatchsite.phone" search:"like"`
  21. Village string `json:"village" label:"小区名称" prop:"select:dispatchsite.village" search:"like"`
  22. Address string `json:"address" label:"房屋地址" prop:"select:dispatchsite.address" search:"like"`
  23. RoomNo string `json:"room_no" label:"楼栋房号" prop:"select:dispatchsite.room_no" search:"like"`
  24. Area string `json:"area" label:"面积" prop:"select:dispatchsite.area"`
  25. ManagerId int64 `json:"manager_id" label:"项目经理" prop:"select:dispatchsite.manager_id"`
  26. ManagerName string `json:"manager_name" prop:"select:manager.username"`
  27. ManagerPhone string `json:"manager_phone" prop:"select:manager.phone"`
  28. ManagerHeadImgUrl string `json:"manager_headimgurl" prop:"select:manager.headimgurl"`
  29. Name string `json:"name" label:"类别名称" prop:"select:dispatchtype.name"`
  30. Budget float64 `json:"budget" label:"工价" prop:"select:table.budget"`
  31. Image string `json:"image" label:"图片" prop:"select:table.image""`
  32. TableWorkerId int64 `json:"table_worker_id" label:"图片" prop:"select:table.worker_id""`
  33. db.BaseModel
  34. }
  35. func (DispatchOrder) TableName() string {
  36. return "zy_dispatch_order"
  37. }
  38. func (model DispatchOrder) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  39. if search, ok := data["search"]; ok {
  40. search = s.Param(fmt.Sprintf("%%%s%%", search))
  41. s.Where = append(s.Where, fmt.Sprintf("`dispatchsite`.`username` LIKE %s OR `dispatchsite`.`phone` LIKE %s OR `dispatchsite`.`village` LIKE %s OR `dispatchsite`.`address` LIKE %s", search, search, search, search))
  42. }
  43. return true
  44. }
  45. func (DispatchOrder) OnePrivilege(c *gin.Context, id int64) bool {
  46. return true
  47. }
  48. func (DispatchOrder) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
  49. data["created_id"] = c.GetInt("adminID")
  50. tableID, _ := db.ToInt64(data["table_id"])
  51. var model DispatchSiteTable
  52. db.GetModel(map[string]interface{}{
  53. "id": tableID,
  54. }, &model)
  55. if model.ID == 0 || model.WorkerId != 0 {
  56. return errors.New("项目已分配工人")
  57. }
  58. orders, _ := db.GetModelMap(db.Type(DispatchOrder{}), map[string]interface{}{"table_id": tableID, "state": 0}, nil)
  59. if len(orders) != 0 {
  60. return errors.New("项目已派单")
  61. }
  62. return nil
  63. }
  64. func (DispatchOrder) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
  65. state, _ := db.ToInt64(data["state"])
  66. if state == 1 {
  67. var model DispatchOrder
  68. db.GetModel(map[string]interface{}{
  69. "id": id,
  70. }, &model)
  71. if model.ID == 0 || model.State != 0 {
  72. return errors.New("没有权限")
  73. }
  74. var table DispatchSiteTable
  75. db.GetModel(map[string]interface{}{
  76. "id": model.TableId,
  77. }, &table)
  78. if table.ID == 0 || table.WorkerId != 0 {
  79. return errors.New("没有权限")
  80. }
  81. err := db.UpdateModel(db.Type(table), model.TableId, map[string]interface{}{
  82. "worker_id": model.WorkerId,
  83. })
  84. if err != nil {
  85. return errors.New("没有权限")
  86. }
  87. err = db.UpdateModels(db.Type(model), map[string]interface{}{
  88. "id !=": id,
  89. "table_id": model.TableId,
  90. "state": 0,
  91. }, map[string]interface{}{
  92. "state": 3,
  93. })
  94. if err != nil {
  95. return errors.New("没有权限")
  96. }
  97. }
  98. return nil
  99. }
  100. func (DispatchOrder) DelPrivilege(c *gin.Context, id int64) error {
  101. return nil
  102. }
  103. func (DispatchOrder) Page() bool {
  104. return false
  105. }
  106. func (DispatchOrder) Count() bool {
  107. return true
  108. }
  109. func (model DispatchOrder) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
  110. return []db.JoinModel{{
  111. Model: JoinWorker{},
  112. As: "worker",
  113. On: []string{"`worker`.`id` = " + model.TableName() + ".`worker_id`"},
  114. }, {
  115. Model: DispatchSiteTable{},
  116. As: "table",
  117. On: []string{"`table`.`id` = " + model.TableName() + ".`table_id`"},
  118. }, {
  119. Model: DispatchType{},
  120. As: "dispatchtype",
  121. On: []string{"`dispatchtype`.`id` = `table`.`type_id`"},
  122. }, {
  123. Model: DispatchSite{},
  124. As: "dispatchsite",
  125. On: []string{"`dispatchsite`.`id` = `table`.`site_id`"},
  126. }, {
  127. Model: JoinAdmin{},
  128. As: "manager",
  129. On: []string{"`manager`.`id` = `dispatchsite`.`manager_id`"},
  130. }}
  131. }