123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package services
- import (
- "encoding/json"
- "eta/eta_mobile/models"
- excel3 "eta/eta_mobile/models/data_manage/excel"
- "eta/eta_mobile/models/system"
- "eta/eta_mobile/services/data/data_manage_permission"
- "eta/eta_mobile/utils"
- "fmt"
- "time"
- )
- // UpdateExcelEditMark 更新表格当前更新状态
- // status 枚举值 1:编辑中,0:完成编辑, 2:只做查询
- func UpdateExcelEditMark(excelInfoId, nowUserId, status int, nowUserName string) (ret models.MarkReportResp, err error) {
- //更新标记key
- key := fmt.Sprint(`crm:excel:edit:`, excelInfoId)
- opUserId, e := utils.Rc.RedisInt(key)
- var opUser models.MarkReportItem
- if e != nil {
- opUserInfoStr, tErr := utils.Rc.RedisString(key)
- if tErr == nil {
- tErr = json.Unmarshal([]byte(opUserInfoStr), &opUser)
- if tErr == nil {
- opUserId = opUser.AdminId
- }
- }
- }
- if opUserId > 0 && opUserId != nowUserId {
- editor := opUser.Editor
- if editor == "" {
- //查询账号的用户姓名
- otherInfo, e := system.GetSysAdminById(opUserId)
- if e != nil {
- err = fmt.Errorf("查询其他编辑者信息失败")
- return
- }
- editor = otherInfo.RealName
- }
- ret.Status = 1
- ret.Msg = fmt.Sprintf("当前%s正在编辑中", editor)
- ret.Editor = editor
- return
- }
- if status == 1 {
- nowUser := &models.MarkReportItem{AdminId: nowUserId, Editor: nowUserName}
- bt, e := json.Marshal(nowUser)
- if e != nil {
- err = fmt.Errorf("格式化编辑者信息失败")
- return
- }
- if opUserId > 0 {
- utils.Rc.Do("SETEX", key, int64(300), string(bt)) //3分钟缓存
- } else {
- utils.Rc.SetNX(key, string(bt), time.Second*60*3) //3分钟缓存
- }
- } else if status == 0 {
- //清除编辑缓存
- _ = utils.Rc.Delete(key)
- }
- return
- }
- // GetBalanceExcelIdsByAdminId 获取用户有权限的平衡表excelIds
- func GetBalanceExcelIdsByAdminId(adminId int, condition string, pars []interface{}, permissionEdbIdList, permissionClassifyIdList []int) (authIds []int, err error) {
- //找到当前协作人相关的表格ID
- obj := new(excel3.ExcelWorker)
- existList, err := obj.GetBySysUserId(adminId)
- if err != nil {
- //br.Msg = "获取表格协作人失败!"
- //br.ErrMsg = "获取表格协作人失败,Err:" + err.Error()
- return
- }
- var excelIds []int
- newCondition := condition
- newPars := pars
- if len(existList) > 0 {
- for _, v := range existList {
- excelIds = append(excelIds, v.ExcelInfoId)
- }
- newCondition += fmt.Sprintf(` AND ( excel_info_id IN (%s) or sys_user_id = ?)`, utils.GetOrmInReplace(len(excelIds)))
- newPars = append(newPars, excelIds, adminId)
- } else {
- newCondition += ` AND sys_user_id = ? `
- newPars = append(newPars, adminId)
- }
- //获取表格信息
- tmpList, e := excel3.GetNoContentExcelListByConditionNoPage(newCondition, newPars)
- if e != nil && e.Error() != utils.ErrNoRow() {
- //br.Success = true
- //br.Msg = "获取表格信息失败"
- //br.ErrMsg = "获取表格信息失败,Err:" + e.Error()
- return
- }
- classifyIdListTmp := make([]int, 0)
- for _, v := range tmpList {
- classifyIdListTmp = append(classifyIdListTmp, v.ExcelClassifyId)
- }
- classifyMap := make(map[int]*excel3.ExcelClassify)
- // 分类信息
- if len(classifyIdListTmp) > 0 {
- classifyListTmp, e := excel3.GetClassifyByIdList(classifyIdListTmp)
- if e != nil {
- //br.Msg = "获取表格分类信息失败"
- //br.ErrMsg = "获取表格分类列表数据失败,Err:" + e.Error()
- return
- }
- for _, v := range classifyListTmp {
- classifyMap[v.ExcelClassifyId] = v
- }
- }
- excelIds = make([]int, 0)
- for _, v := range tmpList {
- // 数据权限
- if classifyInfo, ok := classifyMap[v.ExcelClassifyId]; ok {
- v.HaveOperaAuth = data_manage_permission.CheckExcelPermissionByPermissionIdList(v.IsJoinPermission, classifyInfo.IsJoinPermission, v.ExcelInfoId, v.ExcelClassifyId, permissionEdbIdList, permissionClassifyIdList)
- if v.HaveOperaAuth {
- excelIds = append(excelIds, v.ExcelInfoId)
- }
- }
- }
- authIds = excelIds
- return
- }
|