package dispatch import ( "errors" "fmt" "zhiyuan/pkg/db" "github.com/gin-gonic/gin" ) type DispatchOrder struct { ID int64 `json:"id" prop:"add:false"` TableId int64 `json:"table_id" label:"表" type:"int" prop:"add" search:"="` WorkerId int64 `json:"worker_id" label:"工人" type:"int" prop:"add" search:"="` State int64 `json:"state" label:"状态" type:"int" prop:"add:false edit" default:"0" search:"="` CreatedId int64 `json:"created_id" label:"创建人员" type:"int" prop:"add:false" search:"="` 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"` WorkerName string `json:"worker_name" label:"工人姓名" prop:"add:false select:worker.name"` WorkerPhone string `json:"worker_phone" label:"工人电话" prop:"add:false select:worker.phone"` Username string `json:"username" label:"业主姓名" prop:"select:dispatchsite.username" search:"like"` Phone string `json:"phone" label:"手机号码" prop:"select:dispatchsite.phone" search:"like"` Village string `json:"village" label:"小区名称" prop:"select:dispatchsite.village" search:"like"` Address string `json:"address" label:"房屋地址" prop:"select:dispatchsite.address" search:"like"` RoomNo string `json:"room_no" label:"楼栋房号" prop:"select:dispatchsite.room_no" search:"like"` Area string `json:"area" label:"面积" prop:"select:dispatchsite.area"` ManagerId int64 `json:"manager_id" label:"项目经理" prop:"select:dispatchsite.manager_id"` ManagerName string `json:"manager_name" prop:"select:manager.username"` ManagerPhone string `json:"manager_phone" prop:"select:manager.phone"` ManagerHeadImgUrl string `json:"manager_headimgurl" prop:"select:manager.headimgurl"` Name string `json:"name" label:"类别名称" prop:"select:dispatchtype.name"` Budget float64 `json:"budget" label:"工价" prop:"select:table.budget"` Image string `json:"image" label:"图片" prop:"select:table.image""` TableWorkerId int64 `json:"table_worker_id" label:"图片" prop:"select:table.worker_id""` db.BaseModel } func (DispatchOrder) TableName() string { return "zy_dispatch_order" } func (model DispatchOrder) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { if search, ok := data["search"]; ok { search = s.Param(fmt.Sprintf("%%%s%%", search)) 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)) } return true } func (DispatchOrder) OnePrivilege(c *gin.Context, id int64) bool { return true } func (DispatchOrder) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error { data["created_id"] = c.GetInt("adminID") tableID, _ := db.ToInt64(data["table_id"]) var model DispatchSiteTable db.GetModel(map[string]interface{}{ "id": tableID, }, &model) if model.ID == 0 || model.WorkerId != 0 { return errors.New("项目已分配工人") } orders, _ := db.GetModelMap(db.Type(DispatchOrder{}), map[string]interface{}{"table_id": tableID, "state": 0}, nil) if len(orders) != 0 { return errors.New("项目已派单") } return nil } func (DispatchOrder) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error { state, _ := db.ToInt64(data["state"]) if state == 1 { var model DispatchOrder db.GetModel(map[string]interface{}{ "id": id, }, &model) if model.ID == 0 || model.State != 0 { return errors.New("没有权限") } var table DispatchSiteTable db.GetModel(map[string]interface{}{ "id": model.TableId, }, &table) if table.ID == 0 || table.WorkerId != 0 { return errors.New("没有权限") } err := db.UpdateModel(db.Type(table), model.TableId, map[string]interface{}{ "worker_id": model.WorkerId, }) if err != nil { return errors.New("没有权限") } err = db.UpdateModels(db.Type(model), map[string]interface{}{ "id !=": id, "table_id": model.TableId, "state": 0, }, map[string]interface{}{ "state": 3, }) if err != nil { return errors.New("没有权限") } } return nil } func (DispatchOrder) DelPrivilege(c *gin.Context, id int64) error { return nil } func (DispatchOrder) Page() bool { return false } func (DispatchOrder) Count() bool { return true } func (model DispatchOrder) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel { return []db.JoinModel{{ Model: JoinWorker{}, As: "worker", On: []string{"`worker`.`id` = " + model.TableName() + ".`worker_id`"}, }, { Model: DispatchSiteTable{}, As: "table", On: []string{"`table`.`id` = " + model.TableName() + ".`table_id`"}, }, { Model: DispatchType{}, As: "dispatchtype", On: []string{"`dispatchtype`.`id` = `table`.`type_id`"}, }, { Model: DispatchSite{}, As: "dispatchsite", On: []string{"`dispatchsite`.`id` = `table`.`site_id`"}, }, { Model: JoinAdmin{}, As: "manager", On: []string{"`manager`.`id` = `dispatchsite`.`manager_id`"}, }} }