package leader import ( "strings" "zhiyuan/pkg/app" adminParam "zhiyuan/pkg/param/admin" "zhiyuan/pkg/utils" "zhiyuan/services/admin" "zhiyuan/services/aftersale/supervisor" "zhiyuan/services/dept" "zhiyuan/services/form" "zhiyuan/services/role" "github.com/gin-gonic/gin" ) func SupervisorList(c *gin.Context) { type SupervisorList struct { ID int `json:"id"` UserName string `json:"username"` Phone string `json:"phone"` RoleIds string `json:"role_ids"` RoleNames string `json:"role_names"` } adminInfo := admin.GetAdminCache(c.GetInt("adminID")) supervisorList := make([]*SupervisorList, 0) if adminInfo.DeptID == 24 { dept.GetSubDeptIds(1, []int{}) } where := map[string]string{ "where": " deleted_at=0", "_order_by": "id desc", } param := make(map[string]interface{}) if adminInfo.DeptID != 24 { where["where"] = where["where"] + " AND dept_id IN {{dept_id}}" param["dept_id"] = []int{adminInfo.DeptID, 24} } where["where"] = where["where"] + " AND FIND_IN_SET({{role_id}}, role_ids)" param["role_id"] = adminParam.SupervisorRoleId // site_id if adminInfo := admin.GetAdminCache(c.GetInt("adminID")); adminInfo.SiteID > 0 { where["where"] += " AND (site_id={{site_id}} or site_id=0)" param["site_id"] = adminInfo.SiteID } if _, err := supervisor.GetList(where, param, &supervisorList); err != nil { app.Error(c, err.Error()) return } // get role name roleListMap := make(map[int]string) if roleList, err := role.GetList(nil, []string{"id, name"}, app.Page{}, nil); err == nil { for _, v := range roleList { roleListMap[v.ID] = v.Name } } for k, v := range supervisorList { roleNames := "" roleSlice := strings.Split(v.RoleIds, ",") for _, vv := range roleSlice { roleNames += "," + roleListMap[utils.ToInt(vv)] } v.RoleNames = strings.TrimLeft(roleNames, ",") supervisorList[k] = v } app.Success(c, supervisorList) } func SupervisorEdit(c *gin.Context) { id := utils.StrTo(c.Param("id")).MustInt() if id <= 0 { app.Error(c, "supervisor id must be a number") return } var form form.SupervisorAdd if app.Bind(c, &form) != nil { return } form.AdminID = c.GetInt("adminID") if err := supervisor.Edit(form, id); err != nil { app.ErrorMsg(c, err.Error(), nil) return } app.Success(c, nil) } func SupervisorAdd(c *gin.Context) { var form form.SupervisorAdd if app.Bind(c, &form) != nil { return } form.AdminID = c.GetInt("adminID") supervisorID, err := supervisor.Add(form) if err != nil { app.ErrorMsg(c, err.Error(), nil) return } app.Success(c, gin.H{"supervisor_id": supervisorID}) }