/* * @description: 项目设置相关--管理员可访问 * @Author: CP * @Date: 2020-10-09 10:35:38 * @FilePath: \construction_management\web\api\project_setting_api.go */ package api import ( "fmt" "github.com/kataras/iris/v12" "go.mod/services" "go.mod/web/utils" "go.mod/web/viewmodels" ) type ProjectSettingApi struct { //框架-web应用上下文环境 Ctx iris.Context // 需要用的service ServiceProjectAccount services.ProjectAccountService ServiceProject services.ProjectService ServiceBidAccount services.BidAccountService } // @Summary 获得项目账号列表 // @Tags 项目设置-管理员 // @Description id获得单条信息
// @Accept json // @Produce json // @Security ApiKeyAuth // @Param id body string false "账号ID" // @Success 200 {object} viewmodels.ProjectAccount "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/account [get] func (c *ProjectSettingApi) GetAccount() { // 获得项目ID projectIdInt, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } // 获得账号ID AccountData := viewmodels.ProjectAccount{} err = c.Ctx.ReadJSON(&AccountData) if err != nil { // 获得所有项目下的账号 dataList := c.ServiceProjectAccount.GetAll(projectIdInt) c.Ctx.JSON(iris.Map{ "code": 0, "msg": "", "data": dataList, }) } else { // 获得单个账号ID id, err := utils.GetDecryptId(AccountData.Id) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": err}) return } accountData := c.ServiceProjectAccount.Get(id, projectIdInt) c.Ctx.JSON(iris.Map{ "code": 0, "msg": "", "data": accountData, }) } } // @Summary 检索账号信息 // @Tags 项目设置-管理员 // @Description 检索字段:账号 姓名 单位 手机 前匹配 // @Accept json // @Produce json // @Security ApiKeyAuth // @Param name body string true "检索内容" // @Success 200 {object} viewmodels.ProjectAccount "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/account/search [get] func (c *ProjectSettingApi) GetAccountSearch() { // 获得项目ID projectIdInt, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } // c.Ctx.Header("X-CSRF-Token", csrf.Token(c.Ctx)) // 获得检索关键字 AccountData := viewmodels.ProjectAccount{} err = c.Ctx.ReadForm(&AccountData) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("JSON转换异常, error=%s", err)}) return } // 检索 dataList := c.ServiceProjectAccount.Search(AccountData.Name, projectIdInt) c.Ctx.JSON(iris.Map{ "code": 0, "msg": "", "data": dataList, }) } // @Summary 创建账号 // @Tags 项目设置-管理员 // @Description 新增账号 // @Accept json // @Produce json // @Security ApiKeyAuth // @Param account body string true "账号" // @Param password body string true "密码" // @Param role body int true "角色ID" // @Param name body string true "姓名" // @Param company body string true "公司" // @Param position body string true "职位" // @Param mobile body string true "手机" // @Param telephone body string true "座机" // @Param accountGroup body int true "账号组" // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/account/create [post] func (c *ProjectSettingApi) PostAccountCreate() { ErrMsg := "" // 验证内容 AccountData, err := c.ServiceProjectAccount.ValidRule(c.Ctx) if err != nil { ErrMsg = utils.FormValidError(err) c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", ErrMsg)}) return } else { projectId, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } // 新增账号信息 err = c.ServiceProjectAccount.Add(AccountData, projectId) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } c.Ctx.JSON(iris.Map{"code": 0, "msg": "新增成功"}) } } // @Summary 编辑账号 // @Tags 项目设置-管理员 // @Description 编辑账号 // @Accept json // @Produce json // @Security ApiKeyAuth // @Param id body string true "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ) // @Param role body int true "角色ID" // @Param name body string true "姓名" // @Param company body string true "公司" // @Param position body string true "职位" // @Param telephone body string true "座机" // @Param accountGroup body int true "账号组" // @Param X-CSRF-Token header string true "csrf" // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/account/save [post] func (c *ProjectSettingApi) PostAccountSave() { // 验证内容 AccountData, err := c.ServiceProjectAccount.ValidRule(c.Ctx) if err != nil { ErrMsg := utils.FormValidError(err) c.Ctx.JSON(iris.Map{"code": -1, "msg": ErrMsg}) return } else { // 获得更新账号ID id, err := utils.GetDecryptId(AccountData.Id) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } projectId, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } err = c.ServiceProjectAccount.Save(AccountData, id, projectId) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } c.Ctx.JSON(iris.Map{"code": 0, "msg": "编辑成功"}) } } // @Summary 账号启用/禁用 // @Tags 项目设置-管理员 // @Description 账号启用/禁用 // @Accept json // @Produce json // @Security ApiKeyAuth // @Param id body string true "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ) // @Param enable body int true "启用/禁用" // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/account/enable [post] func (c *ProjectSettingApi) PostAccountEnable() { // 修改验证方式——TODO accountVaild := viewmodels.ProjectAccount{} err := c.Ctx.ReadJSON(&accountVaild) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": "参数错误"}) return } // 账号ID校验 id, err := utils.GetDecryptId(accountVaild.Id) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": "账号异常"}) return } // 项目ID projectId, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": "账号异常"}) return } err = c.ServiceProjectAccount.Enable(id, projectId, accountVaild.Enable) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": err}) return } c.Ctx.JSON(iris.Map{"code": 0, "msg": "操作成功"}) } // @Summary 删除账号 // @Tags 项目设置-管理员 // @Description 删除账号 // @Accept json // @Produce json // @Security ApiKeyAuth // @Param id body string true "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ) // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/account/delete [post] func (c *ProjectSettingApi) PostAccountDelete() { accountVaild := viewmodels.ProjectAccount{} err := c.Ctx.ReadJSON(&accountVaild) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": "参数错误"}) return } // 账号ID校验 id, err := utils.GetDecryptId(accountVaild.Id) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": "账号异常"}) return } // 项目ID projectId, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": "账号异常"}) return } err = c.ServiceProjectAccount.Delete(id, projectId) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": err}) return } c.Ctx.JSON(iris.Map{"code": 0, "msg": "操作成功"}) } // @Summary 设置账号密码 // @Tags 项目设置-管理员 // @Description 设置账号密码 // @Accept json // @Produce json // @Security ApiKeyAuth // @Param id body string true "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ) // @Param account body string true "账号" default(textoopd) // @Param password body string true "密码" default(ww123456) // @Param X-CSRF-Token header string true "csrf" // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/account/change [post] func (c *ProjectSettingApi) PostAccountChange() { // 验证内容 AccountData, err := c.ServiceProjectAccount.ValidRule(c.Ctx) if err != nil { ErrMsg := utils.FormValidError(err) c.Ctx.JSON(iris.Map{"code": -1, "msg": ErrMsg}) return } else { // 获得更新账号ID id, err := utils.GetDecryptId(AccountData.Id) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } projectId, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } err = c.ServiceProjectAccount.ChangeAccount(id, projectId, AccountData) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } c.Ctx.JSON(iris.Map{"code": 0, "msg": "编辑成功"}) } } // @Summary 获取项目信息 // @Tags 项目设置-管理员 // @Description 获取项目信息 // @Accept json // @Produce json // @Security ApiKeyAuth // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/project [get] func (c *ProjectSettingApi) GetProject() { projectId, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } projectdata, err := c.ServiceProject.Get(projectId) userId, _ := utils.GetDecryptId(projectdata.UserId) accountData := c.ServiceProjectAccount.Get(userId, projectId) data := make(map[string]interface{}) data["project"] = projectdata data["account"] = accountData if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)}) return } else { c.Ctx.JSON(iris.Map{"code": 0, "msg": "操作成功", "data": data}) } } // @Summary 保存项目信息 // @Tags 项目设置-管理员 // @Description 保存项目信息 // @Accept json // @Produce json // @Security ApiKeyAuth // @Param name body string true "账号ID" default(红旗大桥) // @Param X-CSRF-Token header string true "csrf" // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}" // @Router /api/projectSetting/project/save [post] func (c *ProjectSettingApi) PostProjectSave() { ProjectData, err := c.ServiceProject.ValidRule(c.Ctx) if err != nil { ErrMsg := utils.FormValidError(err) c.Ctx.JSON(iris.Map{"code": -1, "msg": ErrMsg}) return } else { // 项目ID projectId, err := utils.GetProjectId(c.Ctx) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": "账号异常"}) return } err = c.ServiceProject.Save(projectId, ProjectData) if err != nil { c.Ctx.JSON(iris.Map{"code": -1, "msg": err}) return } c.Ctx.JSON(iris.Map{"code": 0, "msg": "操作成功"}) } }