func GetModelNameByWhereAndGroup(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Company string Product string IsSystemAdd string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } where := " company = '" + info.Company + "'" if info.Product != "" { where += " and product = '" + info.Product + "'" } if info.IsSystemAdd != "" { where += " and is_system_add = '" + info.IsSystemAdd + "'" } mod, err := repo.GetModelNameByWhereAndGroup(where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
func BatchDeleteVm(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var infos []struct { ID uint } if err := r.DecodeJSONPayload(&infos); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } for _, info := range infos { _, errDevice := repo.DeleteVmDeviceById(info.ID) if errDevice != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errDevice.Error()}) return } } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func GetDeviceNumByStatus(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Status string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } info.Status = strings.TrimSpace(info.Status) var where string where = " where t1.id > 0 " where += " and t1.status = '" + info.Status + "'" //总条数 count, err := repo.CountDevice(where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } result := make(map[string]interface{}) result["count"] = count w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": result}) }
//重装 func BatchReInstall(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var infos []struct { ID uint } if err := r.DecodeJSONPayload(&infos); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } for _, info := range infos { _, err := repo.ReInstallDeviceById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } //log device, err := repo.GetDeviceById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } logContent := make(map[string]interface{}) logContent["data"] = device json, err := json.Marshal(logContent) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "操作失败:" + err.Error()}) return } _, errAddLog := repo.AddDeviceLog(info.ID, "重装设备", "operate", string(json)) if errAddLog != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAddLog.Error()}) return } _, errLog := repo.UpdateDeviceLogTypeByDeviceIdAndType(info.ID, "install", "install_history") if errLog != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errLog.Error()}) return } /* //删除LOG _, errLog := repo.DeleteDeviceLogByDeviceID(info.ID) if errLog != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errLog.Error()}) return } */ } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func ValidateSn(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Sn string } info.Sn = strings.TrimSpace(info.Sn) if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } if info.Sn == "" { w.WriteJSON(map[string]interface{}{"Status": "failure", "Message": "SN参数不能为空!", "Content": ""}) return } count, err := repo.CountDeviceBySn(info.Sn) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "failure", "Message": "参数错误!"}) return } if count > 0 { w.WriteJSON(map[string]interface{}{"Status": "failure", "Message": "该SN已存在,继续填写会覆盖旧的数据!"}) } else { w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "SN填写正确!"}) } }
//获取cidr信息 func GetCidrInfoByNetwork(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { _, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } logger, ok := middleware.LoggerFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Network string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } info.Network = strings.TrimSpace(info.Network) //处理网段 network, err := util.GetCidrInfo(info.Network, logger) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": network}) }
func UpdateMyInfo(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint Password string Name string PhoneNumber string Permission string Status string Role string AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } info.Password = strings.TrimSpace(info.Password) info.Name = strings.TrimSpace(info.Name) info.PhoneNumber = strings.TrimSpace(info.PhoneNumber) info.AccessToken = strings.TrimSpace(info.AccessToken) _, errAccessToken := VerifyAccessToken(info.AccessToken, ctx, false) if errAccessToken != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAccessToken.Error()}) return } user, err := repo.GetUserById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if info.Password == "" { info.Password = user.Password } else { encodePassword, err := util.EncodePassword(info.Password) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } info.Password = encodePassword } info.Permission = user.Permission info.Status = user.Status info.Role = user.Role mod, err := repo.UpdateUserById(info.ID, info.Password, info.Name, info.PhoneNumber, info.Permission, info.Status, info.Role) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
func FormatLocationToTreeByPid(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Pid uint SelectPid uint } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } //var initContent []map[string]interface{} mods, err := repo.FormatLocationToTreeByPid(info.Pid, nil, 0, info.SelectPid) //mods, err := repo.FormatLocationToTreeByPid(info.Pid) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mods}) }
func SavePlatformConfig(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Name string Content string AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } info.AccessToken = strings.TrimSpace(info.AccessToken) _, errVerify := VerifyAccessPurview(info.AccessToken, ctx, true, w, r) if errVerify != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errVerify.Error()}) return } info.Name = strings.TrimSpace(info.Name) info.Content = strings.TrimSpace(info.Content) if info.Name == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "请将信息填写完整!"}) return } count, err := repo.CountPlatformConfigByName(info.Name) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if count > 0 { platformConfig, err := repo.GetPlatformConfigByName(info.Name) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } _, errUpdate := repo.UpdatePlatformConfigById(platformConfig.ID, info.Name, info.Content) if errUpdate != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errUpdate.Error()}) return } } else { _, err := repo.AddPlatformConfig(info.Name, info.Content) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func DeleteUserById(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } _, errAccessToken := VerifyAccessToken(info.AccessToken, ctx, true) if errAccessToken != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAccessToken.Error()}) return } osConfig, err := repo.DeleteUserById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } errAssign := repo.AssignManufacturerNewOnwer(uint(0), info.ID) if errAssign != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAssign.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": osConfig}) }
func GetNetworkList(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Limit uint Offset uint } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } mods, err := repo.GetNetworkListWithPage(info.Limit, info.Offset) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } result := make(map[string]interface{}) result["list"] = mods //总条数 count, err := repo.CountNetwork() if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } result["recordCount"] = count w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": result}) }
func GetScanDeviceProduct(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Company string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } info.Company = strings.TrimSpace(info.Company) var where string where = "device_id = 0 and company = '" + info.Company + "'" mod, err := repo.GetManufacturerProductByGroup(where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
func GetScanDeviceModelName(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Company string Product string UserID uint } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } info.Company = strings.TrimSpace(info.Company) info.Product = strings.TrimSpace(info.Product) var where string where = "device_id = 0 and company = '" + info.Company + "'" if info.Product != "" { where += " and product = '" + info.Product + "'" } if info.UserID > uint(0) { where += " and user_id = '" + fmt.Sprintf("%d", info.UserID) + "'" } mod, err := repo.GetManufacturerModelNameByGroup(where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
func DeleteNetworkById(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } _, errVerify := VerifyAccessPurview(info.AccessToken, ctx, true, w, r) if errVerify != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errVerify.Error()}) return } mod, err := repo.DeleteNetworkById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } _, errDelete := repo.DeleteIpByNetworkId(info.ID) if errDelete != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errDelete.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
func DeleteHardwareById(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } hardware, err := repo.GetHardwareById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } if hardware.IsSystemAdd == "Yes" { //w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "系统添加的配置不允许删除!"}) //return } mod, err := repo.DeleteHardwareById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
func DeleteLocationById(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } info.AccessToken = strings.TrimSpace(info.AccessToken) _, errVerify := VerifyAccessPurview(info.AccessToken, ctx, true, w, r) if errVerify != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errVerify.Error()}) return } locationIds, err := repo.FormatChildLocationIdById(info.ID, "", ",") if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } count, err := repo.CountDeviceByWhere("location_id in (" + locationIds + ")") if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } if count > 0 { devices, err := repo.GetDeviceByWhere("location_id in (" + locationIds + ")") if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } var str string for k, device := range devices { if k != len(devices)-1 { str += device.Sn + "," } else { str += device.Sn } } w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "下列设备正在使用此位置,不能删除! <br />SN:(" + str + ")"}) return } mod, err := repo.DeleteLocationById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
//添加 func AddHardware(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Company string Product string ModelName string Raid string Oob string Bios string IsSystemAdd string Tpl string Data string Source string Version string Status string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } info.Company = strings.TrimSpace(info.Company) info.Product = strings.TrimSpace(info.Product) info.ModelName = strings.TrimSpace(info.ModelName) info.IsSystemAdd = strings.TrimSpace(info.IsSystemAdd) info.Tpl = strings.TrimSpace(info.Tpl) info.Data = strings.TrimSpace(info.Data) info.Source = strings.TrimSpace(info.Source) info.Version = strings.TrimSpace(info.Version) info.Status = strings.TrimSpace(info.Status) if info.Company == "" || info.Product == "" || info.ModelName == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "请将信息填写完整!"}) return } count, err := repo.CountHardwareByCompanyAndProductAndName(info.Company, info.Product, info.ModelName) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if count > 0 { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "该硬件型号已存在!"}) return } _, errAdd := repo.AddHardware(info.Company, info.Product, info.ModelName, info.Raid, info.Oob, info.Bios, info.IsSystemAdd, info.Tpl, info.Data, info.Source, info.Version, info.Status) if errAdd != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAdd.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func GetDeviceInstallCallbackList(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { DeviceId uint } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } where := fmt.Sprintf("device_id = %d", info.DeviceId) order := "id asc" list, err := repo.GetDeviceInstallCallbackByWhere(where, order) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } var rows []model.DeviceInstallCallback for _, callback := range list { device, err := repo.GetDeviceById(callback.DeviceID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } callback.Content = strings.Replace(callback.Content, "<{sn}>", device.Sn, -1) callback.Content = strings.Replace(callback.Content, "<{hostname}>", device.Hostname, -1) callback.Content = strings.Replace(callback.Content, "<{ip}>", device.Ip, -1) callback.Content = strings.Replace(callback.Content, "<{manage_ip}>", device.ManageIp, -1) if device.NetworkID > uint(0) { network, _ := repo.GetNetworkById(device.NetworkID) callback.Content = strings.Replace(callback.Content, "<{gateway}>", network.Gateway, -1) callback.Content = strings.Replace(callback.Content, "<{netmask}>", network.Netmask, -1) } if device.ManageNetworkID > uint(0) { manageNetwork, _ := repo.GetManageNetworkById(device.ManageNetworkID) callback.Content = strings.Replace(callback.Content, "<{manage_gateway}>", manageNetwork.Gateway, -1) callback.Content = strings.Replace(callback.Content, "<{manage_netmask}>", manageNetwork.Netmask, -1) } callback.Content = strings.Replace(callback.Content, "\n", "<br />", -1) callback.RunResult = strings.Replace(callback.RunResult, "\n", "<br />", -1) rows = append(rows, callback) } result := make(map[string]interface{}) result["list"] = rows w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": result}) }
func BatchAssignManufacturerOnwer(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var infos []struct { ID uint UserID uint AccessToken string } session, errSession := GetSession(w, r) if errSession != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + errSession.Error()}) return } if err := r.DecodeJSONPayload(&infos); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } for _, info := range infos { if session.ID <= uint(0) { accessTokenUser, errAccessToken := VerifyAccessToken(info.AccessToken, ctx, false) if errAccessToken != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAccessToken.Error()}) return } session.ID = accessTokenUser.ID session.Role = accessTokenUser.Role } if session.Role != "Administrator" { w.WriteJSON(map[string]interface{}{"Status": "failure", "Message": "权限不足!"}) return } manufacturer, err := repo.GetManufacturerById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } _, errUpdate := repo.AssignManufacturerOnwer(manufacturer.ID, info.UserID) if errUpdate != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errUpdate.Error()}) return } } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func GetUserList(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Limit uint Offset uint Status string AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } session, errSession := GetSession(w, r) if errSession != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + errSession.Error()}) return } if session.Username == "" { _, errAccessToken := VerifyAccessToken(info.AccessToken, ctx, true) if errAccessToken != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAccessToken.Error()}) return } } var where = "" if info.Status != "" { where += " and status = '" + info.Status + "'" } mods, err := repo.GetUserListWithPage(info.Limit, info.Offset, where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } result := make(map[string]interface{}) result["list"] = mods //总条数 count, err := repo.CountUser(where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } result["recordCount"] = count w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": result}) }
func UpdateOsConfigById(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint Name string Pxe string AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } info.AccessToken = strings.TrimSpace(info.AccessToken) _, errVerify := VerifyAccessPurview(info.AccessToken, ctx, true, w, r) if errVerify != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errVerify.Error()}) return } info.Name = strings.TrimSpace(info.Name) info.Pxe = strings.TrimSpace(info.Pxe) info.Pxe = strings.Replace(info.Pxe, "\r\n", "\n", -1) if info.Name == "" || info.Pxe == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "请将信息填写完整!"}) return } count, err := repo.CountOsConfigByNameAndId(info.Name, info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if count > 0 { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "该操作系统版本已存在!"}) return } osConfig, err := repo.UpdateOsConfigById(info.ID, info.Name, info.Pxe) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": osConfig}) }
func GetVmDeviceLogByDeviceIdAndType(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { DeviceID uint Type string Order string MaxID uint } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } if info.Order == "" { info.Order = "id DESC" } mods, err := repo.GetVmDeviceLogListByDeviceIDAndType(info.DeviceID, info.Type, info.Order, info.MaxID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } type log struct { ID uint DeviceID uint Title string Type string Content string CreatedAt utils.ISOTime UpdatedAt utils.ISOTime } var result []log for _, v := range mods { var row log row.ID = v.ID row.DeviceID = v.DeviceID row.Title = v.Title row.Type = v.Type row.Content = v.Content row.CreatedAt = utils.ISOTime(v.CreatedAt) row.UpdatedAt = utils.ISOTime(v.UpdatedAt) result = append(result, row) } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": result}) }
//添加 func AddSystemConfig(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Name string Content string AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } info.Name = strings.TrimSpace(info.Name) info.Content = strings.TrimSpace(info.Content) info.Content = strings.Replace(info.Content, "\r\n", "\n", -1) info.AccessToken = strings.TrimSpace(info.AccessToken) _, errVerify := VerifyAccessPurview(info.AccessToken, ctx, true, w, r) if errVerify != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errVerify.Error()}) return } if info.Name == "" || info.Content == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "请将信息填写完整!"}) return } count, err := repo.CountSystemConfigByName(info.Name) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if count > 0 { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "该系统模板名已存在!"}) return } _, errAdd := repo.AddSystemConfig(info.Name, info.Content) if errAdd != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAdd.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func GetHardwareList(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Limit uint Offset uint Company string Product string ModelName string IsSystemAdd string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } var where string if info.Company != "" { where += " and company = '" + info.Company + "' " } if info.Product != "" { where += " and product = '" + info.Product + "' " } if info.ModelName != "" { where += " and model_name = '" + info.ModelName + "' " } if info.IsSystemAdd != "" { where += " and is_system_add = '" + info.IsSystemAdd + "' " } mods, err := repo.GetHardwareListWithPage(info.Limit, info.Offset, where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } result := make(map[string]interface{}) result["list"] = mods //总条数 count, err := repo.CountHardware(where) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } result["recordCount"] = count w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": result}) }
//添加 func AddLocation(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Pid uint Name string AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } info.Name = strings.TrimSpace(info.Name) info.AccessToken = strings.TrimSpace(info.AccessToken) _, errVerify := VerifyAccessPurview(info.AccessToken, ctx, true, w, r) if errVerify != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errVerify.Error()}) return } if info.Name == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "请将信息填写完整!"}) return } count, err := repo.CountLocationByNameAndPid(info.Name, info.Pid) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if count > 0 { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "该位置名已存在!"}) return } _, errAdd := repo.AddLocation(info.Pid, info.Name) if errAdd != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAdd.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func LoginOut(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { AccessToken string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } info.AccessToken = strings.TrimSpace(info.AccessToken) session, err := store.Get(r.Request, "user-authentication") if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } /* sessionUser, err := GetSession(w, r) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } */ _, errToken := repo.DeleteUserAccessTokenByToken(info.AccessToken) if errToken != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errToken.Error()}) return } delete(session.Values, "ID") delete(session.Values, "Username") delete(session.Values, "Name") delete(session.Values, "Role") delete(session.Values, "AccessToken") session.Save(r.Request, w) w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }
func IsInPreInstallList(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { w.Header().Add("Content-type", "application/json; charset=utf-8") repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误", "Content": ""}) return } var info struct { Sn string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误", "Content": ""}) return } info.Sn = strings.TrimSpace(info.Sn) if info.Sn == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "SN参数不能为空!"}) return } deviceId, err := repo.GetDeviceIdBySn(info.Sn) result := make(map[string]string) if err != nil { result["Result"] = "false" w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "该设备不在安装列表里", "Content": result}) return } device, err := repo.GetDeviceById(deviceId) if err != nil { result["Result"] = "false" w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "该设备不在安装列表里", "Content": result}) return } if device.Status == "pre_install" || device.Status == "installing" { result["Result"] = "true" w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "该设备在安装列表里", "Content": result}) } else { result["Result"] = "false" w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "该设备不在安装列表里", "Content": result}) } }
func GetUserById(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } mod, err := repo.GetUserById(info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } type UserWithTime struct { ID uint Username string Password string Name string PhoneNumber string Permission string Status string Role string CreatedAt utils.ISOTime UpdatedAt utils.ISOTime } var user UserWithTime user.ID = mod.ID user.Username = mod.Username user.Name = mod.Name user.PhoneNumber = mod.PhoneNumber user.Permission = mod.Permission user.Status = mod.Status user.Role = mod.Role user.CreatedAt = utils.ISOTime(mod.CreatedAt) user.UpdatedAt = utils.ISOTime(mod.UpdatedAt) w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": user}) }
func UpdateSystemConfigById(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { ID uint Name string Content string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误" + err.Error()}) return } info.Name = strings.TrimSpace(info.Name) info.Content = strings.TrimSpace(info.Content) if info.Name == "" || info.Content == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "请将信息填写完整!"}) return } count, err := repo.CountSystemConfigByNameAndId(info.Name, info.ID) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if count > 0 { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "该系统模板名已存在!"}) return } mod, err := repo.UpdateSystemConfigById(info.ID, info.Name, info.Content) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功", "Content": mod}) }
//添加OS操作系统 func AddOsConfig(ctx context.Context, w rest.ResponseWriter, r *rest.Request) { repo, ok := middleware.RepoFromContext(ctx) if !ok { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "内部服务器错误"}) return } var info struct { Name string Pxe string } if err := r.DecodeJSONPayload(&info); err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "参数错误"}) return } info.Name = strings.TrimSpace(info.Name) info.Pxe = strings.TrimSpace(info.Pxe) if info.Name == "" || info.Pxe == "" { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "请将信息填写完整!"}) return } count, err := repo.CountOsConfigByName(info.Name) if err != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": err.Error()}) return } if count > 0 { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": "该操作系统版本已存在!"}) return } _, errAdd := repo.AddOsConfig(info.Name, info.Pxe) if errAdd != nil { w.WriteJSON(map[string]interface{}{"Status": "error", "Message": errAdd.Error()}) return } w.WriteJSON(map[string]interface{}{"Status": "success", "Message": "操作成功"}) }