Browse Source

添加协作人接口

xyxie 10 months ago
parent
commit
575053b5da

+ 112 - 8
controllers/data_manage/excel/balance_table.go

@@ -6,9 +6,11 @@ import (
 	"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"
 )
@@ -106,14 +108,8 @@ func (c *ExcelInfoController) Rename() {
 	//判断表格是否存在
 	var condition string
 	var pars []interface{}
-	condition += " AND excel_info_id != ? "
-	pars = append(pars, req.ExcelInfoId)
-
-	condition += " AND excel_classify_id=? "
-	pars = append(pars, excelInfo.ExcelClassifyId)
-
-	condition += " AND excel_name=? "
-	pars = append(pars, req.ExcelName)
+	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)
@@ -174,3 +170,111 @@ func (c *ExcelInfoController) Rename() {
 	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 = "操作成功"
+}

+ 74 - 0
models/data_manage/excel/excel_worker.go

@@ -0,0 +1,74 @@
+package excel
+
+import (
+	"eta/eta_api/utils"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type ExcelWorker struct {
+	ExcelWorkerId   int       `orm:"column(excel_worker_id);pk"`
+	ExcelInfoId     int       `description:"表格id"`
+	SysUserId       int       `description:"创建人"`
+	SysUserRealName string    `description:"创建人姓名"`
+	ModifyTime      time.Time `description:"修改时间"`
+	CreateTime      time.Time `description:"创建时间"`
+}
+
+func (e *ExcelWorker) TableName() string {
+	return "excel_worker"
+}
+
+// 新增 协作人
+func (e *ExcelWorker) AddWorker(excelInfoId int, addWorkers []*ExcelWorker, notDeleteWorkers []string) (err error) {
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+	if len(notDeleteWorkers) > 0 {
+		sql := `delete from excel_worker where excel_info_id = ? and sys_user_id not in (` + utils.GetOrmInReplace(len(notDeleteWorkers)) + `)`
+		_, err = o.Raw(sql, excelInfoId, notDeleteWorkers).Exec()
+		if err != nil {
+			return
+		}
+	} else if len(notDeleteWorkers) == 0 { // 清空协作人
+		sql := `delete from excel_worker where excel_info_id = ? `
+		_, err = o.Raw(sql, excelInfoId).Exec()
+		if err != nil {
+			return
+		}
+	}
+	if len(addWorkers) > 0 {
+		_, err = o.InsertMulti(len(addWorkers), addWorkers)
+	}
+	return
+}
+
+// 修改
+func (e *ExcelWorker) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(e, cols...)
+	return
+}
+
+// 删除
+func (e *ExcelWorker) Delete() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Delete(e)
+	return
+}
+
+// 查询
+func (e *ExcelWorker) GetByExcelInfoId(excelInfoId int) (items []*ExcelWorker, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `select * from excel_worker where excel_info_id = ? `
+	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+	return
+}

+ 5 - 0
models/data_manage/excel/request/excel_info.go

@@ -144,3 +144,8 @@ type RenameExcelInfoReq struct {
 	ExcelInfoId int    `description:"ETA表格ID"`
 	ExcelName   string `description:"表格名称"`
 }
+
+type SaveExcelInfoWorkerReq struct {
+	ExcelInfoId int    `description:"ETA表格ID"`
+	SysUserIds  string `description:"协作人ID 用英文逗号拼接"`
+}

+ 3 - 0
models/db.go

@@ -501,6 +501,9 @@ func initExcel() {
 		new(excel.ExcelSheet),      //ETA excel sheet
 		new(excel.ExcelSheetData),  //ETA excel sheet data
 		new(excel.ExcelEdbMapping), //ETA excel 与 指标 的关系表
+		new(excel.ExcelWorker),     // 平衡表协作人表格
+		new(excel.ExcelChartEdb),   // 平衡表做图指标
+		new(excel.ExcelChartData),  // 平衡表作图数据
 	)
 }
 

+ 9 - 0
routers/commentsRouter.go

@@ -1015,6 +1015,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "SaveExcelWorker",
+            Router: `/excel_info/worker/save`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartClassifyController"],
         beego.ControllerComments{
             Method: "AddChartClassify",