package dispatch import ( "fmt" "zhiyuan/pkg/db" "zhiyuan/services/admin" "github.com/gin-gonic/gin" ) type DispatchSite struct { ID int64 `json:"id" prop:"add:false"` Username string `json:"username" label:"业主姓名" type:"string" prop:"add edit" search:"like"` Phone string `json:"phone" label:"手机号码" type:"string" prop:"add edit" search:"like"` Village string `json:"village" label:"小区名称" type:"string" prop:"edit" search:"like"` Address string `json:"address" label:"房屋地址" type:"string" prop:"edit" search:"like"` RoomNo string `json:"room_no" label:"楼栋房号" type:"string" prop:"edit" search:"like"` Area string `json:"area" label:"面积" type:"string" prop:"edit"` ShopId int64 `json:"shop_id" label:"门店" type:"int" prop:"add edit" search:"="` ManagerId int64 `json:"manager_id" label:"项目经理" type:"int" prop:"add edit" search:"="` ProjectLeaderId int64 `json:"project_leader_id" label:"工程队长" type:"int" prop:"add edit" 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"` db.BaseModel } func (DispatchSite) TableName() string { return "zy_dispatch_site" } func (model DispatchSite) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { if !admin.IsSuperAdmin(c.GetInt("adminID")) { adminID := s.Param(c.GetInt("adminID")) where := fmt.Sprintf("`%s`.`manager_id` = %s OR `%s`.`project_leader_id` = %s OR `%s`.`created_id` = %s", model.TableName(), adminID, model.TableName(), adminID, model.TableName(), adminID) if admin.CheckAuth([]string{"dispatch:verify"}, c.GetInt("adminID")) { info, _ := admin.GetInfoByID(c.GetInt("adminID"), nil, nil) if info == nil { return false } where = fmt.Sprintf("%s OR FIND_IN_SET(`%s`.`shop_id`, %s)", where, model.TableName(), s.Param(info.ShopIds)) } s.Where = append(s.Where, fmt.Sprintf("(%s)", where)) } if search, ok := data["search"]; ok { search = s.Param(fmt.Sprintf("%%%s%%", search)) s.Where = append(s.Where, fmt.Sprintf("`%s`.`username` LIKE %s OR `%s`.`phone` LIKE %s OR `%s`.`village` LIKE %s OR `%s`.`address` LIKE %s", model.TableName(), search, model.TableName(), search, model.TableName(), search, model.TableName(), search)) } return true } func (DispatchSite) OnePrivilege(c *gin.Context, id int64) bool { return true } func (DispatchSite) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error { data["created_id"] = c.GetInt("adminID") return nil } func (DispatchSite) AddAfter(c *gin.Context, id int64, post map[string]interface{}, data map[string]interface{}) { types := make([]DispatchType, 0) db.GetModel(map[string]interface{}{ "deleted_at": 0, }, &types) for _, v := range types { db.InsertModel(db.Type(DispatchSiteTable{}), map[string]interface{}{ "type_id": v.ID, "site_id": id, }) } } func (DispatchSite) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error { return nil } func (DispatchSite) DelPrivilege(c *gin.Context, id int64) error { return nil } func (DispatchSite) Page() bool { return false } func (DispatchSite) Count() bool { return true } type JoinAdmin struct { db.BaseModel } func (JoinAdmin) TableName() string { return "zy_admin" } type DispatchSiteMobile struct { ManagerName string `json:"manager_name" type:"string" prop:"select:manager.username"` ManagerPhone string `json:"manager_phone" type:"string" prop:"select:manager.phone"` ManagerHeadImgUrl string `json:"manager_headimgurl" type:"string" prop:"select:manager.headimgurl"` TableCount int64 `json:"table_count" type:"int" prop:"select:count(dispatchsitetable.id)"` Uncount int64 `json:"uncount" type:"int" prop:"select:count(IF(dispatchsitetable.state=0,dispatchsitetable.id,NULL))"` HandleCount int64 `json:"handle_count" type:"int" prop:"select:count(IF((dispatchsitetable.state>0)AND(dispatchsitetable.state<5),dispatchsitetable.id,NULL))"` FinishCount int64 `json:"finish_count" type:"int" prop:"select:count(IF(dispatchsitetable.state=5,dispatchsitetable.id,NULL))"` Count1 int64 `json:"count1" type:"int" prop:"select:count(IF(dispatchsitetable.state=1,dispatchsitetable.id,NULL))"` Count2 int64 `json:"count2" type:"int" prop:"select:count(IF(dispatchsitetable.state=2,dispatchsitetable.id,NULL))"` Count3 int64 `json:"count3" type:"int" prop:"select:count(IF(dispatchsitetable.state=3,dispatchsitetable.id,NULL))"` Count4 int64 `json:"count4" type:"int" prop:"select:count(IF(dispatchsitetable.state=4,dispatchsitetable.id,NULL))"` DispatchSite } func (model DispatchSiteMobile) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { if state, ok := data["state"]; ok { if n, ok := db.ToInt64(state); ok { switch n { case 1: s.Having = append(s.Having, "count(IF(dispatchsitetable.state>0,dispatchsitetable.id,NULL)) = 0") case 2: s.Having = append(s.Having, "count(IF((dispatchsitetable.state>0)AND(dispatchsitetable.state<5),dispatchsitetable.id,NULL)) != 0") case 3: s.Having = append(s.Having, "count(IF(dispatchsitetable.state<5,dispatchsitetable.id,NULL)) = 0") case 4: s.Having = append(s.Having, "count(IF(dispatchsitetable.state=1,dispatchsitetable.id,NULL)) != 0") case 5: s.Having = append(s.Having, "count(IF(dispatchsitetable.state=2,dispatchsitetable.id,NULL)) != 0") case 6: s.Having = append(s.Having, "count(IF(dispatchsitetable.state=3,dispatchsitetable.id,NULL)) != 0") case 7: s.Having = append(s.Having, "count(IF(dispatchsitetable.state=4,dispatchsitetable.id,NULL)) != 0") } } } return model.DispatchSite.ListPrivilege(c, data, s) } func (model DispatchSiteMobile) GroupBy() string { return fmt.Sprintf("`%s`.`id`", model.TableName()) } func (model DispatchSiteMobile) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel { return []db.JoinModel{ { Model: JoinAdmin{}, As: "manager", On: []string{"`manager`.`id` = " + model.TableName() + ".`manager_id`"}, }, { Model: DispatchSiteTable{}, As: "dispatchsitetable", On: []string{"`dispatchsitetable`.`site_id` = " + model.TableName() + ".`id` AND `dispatchsitetable`.`state` != -1"}, }, } }