package excel import ( "encoding/json" "eta/eta_api/models" "eta/eta_api/models/data_manage/excel" "eta/eta_api/models/data_manage/excel/request" "eta/eta_api/models/data_manage/excel/response" "eta/eta_api/models/system" "eta/eta_api/services/data/data_manage_permission" excel2 "eta/eta_api/services/data/excel" "eta/eta_api/utils" "strconv" "strings" "time" ) // GetChildTable // @Title 获取子表 // @Description 获取子表 // @Param request body request.MixedTableCellDataReq true "type json string" // @router /excel_info/child_table [get] func (c *ExcelInfoController) GetChildTable() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() sysUser := c.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } parentId, _ := c.GetInt("ParentId") if parentId <= 0 { br.Msg = "请选择父表" return } list := make([]*excel.ExcelInfo, 0) // 查询所有子表 childList, err := excel.GetChildExcelInfoByParentId(parentId) if err != nil { br.Msg = "查询子表失败" return } if len(childList) > 0 { list = childList } data := &response.BalanceChildTableResp{List: list} br.Ret = 200 br.Success = true br.Msg = "查询成功" br.Data = data } // Rename // @Title 表格重命名接口 // @Description 表格重命名接口 // @Param request body request.EditExcelInfoReq true "type json string" // @Success 200 {object} response.AddExcelInfoResp // @router /excel_info/rename [post] func (c *ExcelInfoController) Rename() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() sysUser := c.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req request.RenameExcelInfoReq err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.ExcelInfoId <= 0 { br.Msg = "请传入ETA表格标识!" return } req.ExcelName = strings.Trim(req.ExcelName, " ") if req.ExcelName == "" { br.Msg = "请填写表格名称!" br.IsSendEmail = false return } excelInfo, err := excel.GetExcelInfoById(req.ExcelInfoId) if err != nil { br.Msg = "获取ETA表格失败" br.ErrMsg = "获取ETA表格失败,Err:" + err.Error() return } //判断表格是否存在 var condition string var pars []interface{} condition += " AND excel_info_id != ? AND excel_classify_id=? AND excel_name=? AND parent_id=?" pars = append(pars, req.ExcelInfoId, excelInfo.ExcelClassifyId, req.ExcelName, excelInfo.ParentId) // 获取分类下是否存在该表格名称 count, err := excel.GetExcelInfoCountByCondition(condition, pars) if err != nil { br.Msg = "ETA判断表格名称是否存在失败" br.ErrMsg = "判断ETA表格名称是否存在失败,Err:" + err.Error() return } if count > 0 { br.Msg = "ETA表格名称已存在,请重新填写" br.IsSendEmail = false return } // todo 操作权限校验, 增加协作人判断 { // 数据权限 haveOperaAuth, err := data_manage_permission.CheckExcelPermissionByExcelInfoId(excelInfo.ExcelInfoId, excelInfo.ExcelClassifyId, excelInfo.IsJoinPermission, c.SysUser.AdminId) if err != nil { br.Msg = "获取ETA表格失败" br.ErrMsg = "获取ETA表格权限失败,Err:" + err.Error() return } button := excel2.GetExcelInfoOpButton(sysUser, excelInfo.SysUserId, excelInfo.Source, haveOperaAuth) if !button.OpButton { br.Msg = "无操作权限" br.Msg = "无操作权限" br.IsSendEmail = false return } } excelInfo.ModifyTime = time.Now() excelInfo.ExcelName = req.ExcelName excelInfo.UpdateUserId = sysUser.AdminId excelInfo.UpdateUserRealName = sysUser.RealName // 自动保存时不会传缩略图,也就不更新这个字段 updateExcelInfoParams := []string{"ModifyTime", "ExcelName", "UpdateUserId", "UpdateUserRealName"} err = excelInfo.Update(updateExcelInfoParams) if err != nil { br.Msg = "保存失败" br.ErrMsg = "保存失败,Err:" + err.Error() return } resp := response.AddExcelInfoResp{ ExcelInfoId: excelInfo.ExcelInfoId, UniqueCode: excelInfo.UniqueCode, } //删除公共图库那边的缓存 _ = utils.Rc.Delete(utils.HZ_CHART_LIB_EXCEL_TABLE_DETAIL + ":" + excelInfo.UniqueCode) br.Ret = 200 br.Success = true br.Msg = "修改成功" br.Data = resp br.IsAddLog = true } // SaveExcelWorker // @Title 新增编辑表格协作人接口 // @Description 新增编辑表格协作人接口 // @Param request body request.EditExcelInfoReq true "type json string" // @Success 200 {object} response.AddExcelInfoResp // @router /excel_info/worker/save [post] func (c *ExcelInfoController) SaveExcelWorker() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() sysUser := c.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req request.SaveExcelInfoWorkerReq err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.ExcelInfoId <= 0 { br.Msg = "请传入ETA表格标识!" return } excelInfo, err := excel.GetExcelInfoById(req.ExcelInfoId) if err != nil { br.Msg = "获取ETA表格失败" br.ErrMsg = "获取ETA表格失败,Err:" + err.Error() return } if excelInfo.SysUserId != sysUser.AdminId { br.Msg = "您没有权限操作!" br.ErrMsg = "您没有权限操作!" return } // todo 操作权限校验, 增加协作人判断 { // 数据权限 haveOperaAuth, err := data_manage_permission.CheckExcelPermissionByExcelInfoId(excelInfo.ExcelInfoId, excelInfo.ExcelClassifyId, excelInfo.IsJoinPermission, c.SysUser.AdminId) if err != nil { br.Msg = "获取ETA表格失败" br.ErrMsg = "获取ETA表格权限失败,Err:" + err.Error() return } button := excel2.GetExcelInfoOpButton(sysUser, excelInfo.SysUserId, excelInfo.Source, haveOperaAuth) if !button.OpButton { br.Msg = "无操作权限" br.Msg = "无操作权限" br.IsSendEmail = false return } } obj := new(excel.ExcelWorker) notDeleteWorkerIds := make([]string, 0) workerMap := make(map[int]struct{}) if req.SysUserIds != "" { notDeleteWorkerIds = strings.Split(req.SysUserIds, ",") } existList, err := obj.GetByExcelInfoId(req.ExcelInfoId) if err != nil { br.Msg = "获取表格协作人失败!" br.ErrMsg = "获取表格协作人失败,Err:" + err.Error() return } for _, v := range existList { workerMap[v.SysUserId] = struct{}{} } addIds := make([]int, 0) for _, v := range notDeleteWorkerIds { id, _ := strconv.Atoi(v) if _, ok := workerMap[id]; !ok { addIds = append(addIds, id) } } // 查询协作人姓名 adminList, err := system.GetAdminListByIdListWithoutEnable(addIds) addList := make([]*excel.ExcelWorker, 0) for _, v := range adminList { addList = append(addList, &excel.ExcelWorker{ ExcelInfoId: req.ExcelInfoId, SysUserId: v.AdminId, SysUserRealName: v.RealName, CreateTime: time.Now(), ModifyTime: time.Now(), }) } // 保存协作人 err = obj.AddWorker(req.ExcelInfoId, addList, notDeleteWorkerIds) if err != nil { br.Msg = "保存失败" br.ErrMsg = "保存失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "操作成功" }