JySceneUserAuthServiceImpl.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639
  1. package com.fdkankan.manage.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.extra.servlet.ServletUtil;
  4. import cn.hutool.jwt.JWTUtil;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.fdkankan.common.util.JwtUtil;
  9. import com.fdkankan.manage.common.PageInfo;
  10. import com.fdkankan.manage.common.RedisKeyUtil;
  11. import com.fdkankan.manage.common.ResultCode;
  12. import com.fdkankan.manage.entity.*;
  13. import com.fdkankan.manage.exception.BusinessException;
  14. import com.fdkankan.manage.mapper.IJySceneUserAuthMapper;
  15. import com.fdkankan.manage.service.*;
  16. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  17. import com.fdkankan.manage.util.AesUtil;
  18. import com.fdkankan.manage.vo.request.SceneParam;
  19. import com.fdkankan.manage.vo.response.CheckOtherVo;
  20. import com.fdkankan.manage.vo.response.ManageLoginResponse;
  21. import com.fdkankan.manage.vo.response.SceneAuthVo;
  22. import com.fdkankan.manage.vo.response.SceneUserAuthVo;
  23. import com.fdkankan.redis.util.RedisUtil;
  24. import lombok.extern.slf4j.Slf4j;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.apache.tomcat.util.security.Escape;
  27. import org.joda.time.DateTime;
  28. import org.springframework.beans.BeanUtils;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.stereotype.Service;
  31. import java.util.*;
  32. import java.util.concurrent.TimeUnit;
  33. import java.util.stream.Collectors;
  34. /**
  35. * <p>
  36. * 服务实现类
  37. * </p>
  38. *
  39. * @author
  40. * @since 2023-08-24
  41. */
  42. @Service
  43. @Slf4j
  44. public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapper, JySceneUserAuth> implements IJySceneUserAuthService {
  45. @Autowired
  46. IJyUserService jyUserService;
  47. @Autowired
  48. IJySceneAuthService jySceneAuthService;
  49. @Autowired
  50. ISceneProService sceneProService;
  51. @Autowired
  52. IScenePlusService scenePlusService;
  53. @Autowired
  54. ISysUserService sysUserService;
  55. @Autowired
  56. ICaseService caseService;
  57. @Override
  58. public Object getAuthType(SceneParam param) {
  59. if(StringUtils.isBlank(param.getNum()) || param.getCaseId() == null){
  60. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  61. }
  62. if(StringUtils.isNotBlank(param.getNum()) && param.getCaseId() !=null){
  63. param.setCaseId(null);
  64. }
  65. JySceneAuth jySceneAuth = null;
  66. if(StringUtils.isNotBlank(param.getNum())){
  67. caseService.checkNumInCase(param.getNum());
  68. ScenePlus plus = scenePlusService.getByNum(param.getNum());
  69. if(plus == null){
  70. throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
  71. }
  72. jySceneAuth = jySceneAuthService.getByNum(param.getNum());
  73. if(jySceneAuth == null ){
  74. return new JySceneAuth(0);
  75. }
  76. }
  77. if(param.getCaseId() != null){
  78. Case caseEntity = caseService.getById(param.getCaseId());
  79. if(caseEntity == null){
  80. throw new BusinessException(ResultCode.CASE_NOT_EXIST);
  81. }
  82. jySceneAuth = jySceneAuthService.getByCaseId(param.getCaseId());
  83. if(jySceneAuth == null ){
  84. return new JySceneAuth(0);
  85. }
  86. }
  87. return jySceneAuth;
  88. }
  89. @Override
  90. public Object getAuthList(SceneParam param) {
  91. if(StringUtils.isBlank(param.getNum()) || param.getCaseId() == null){
  92. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  93. }
  94. if(StringUtils.isNotBlank(param.getNum()) && param.getCaseId() !=null){
  95. param.setCaseId(null);
  96. }
  97. Long sceneUserId = null;
  98. JyUser loginUser = null;
  99. Long sysRoleId = null;
  100. if(StringUtils.isNotBlank(param.getNum())){
  101. ScenePlus plus = scenePlusService.getByNum(param.getNum());
  102. if(plus == null){
  103. throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
  104. }
  105. caseService.checkNumInCase(param.getNum());
  106. sceneUserId = plus.getUserId();
  107. }
  108. if(param.getCaseId() != null){
  109. Case caseEntity = caseService.getById(param.getCaseId());
  110. if(caseEntity == null){
  111. throw new BusinessException(ResultCode.CASE_NOT_EXIST);
  112. }
  113. JyUser jyUser = jyUserService.getBySysId(caseEntity.getSysUserId());
  114. if(jyUser == null){
  115. throw new BusinessException(ResultCode.USER_NOT_EXIST);
  116. }
  117. sceneUserId = jyUser.getUserId();
  118. }
  119. if(StpUtil.isLogin()){
  120. loginUser = jyUserService.getBySysId(StpUtil.getLoginId());
  121. SysUser byId = sysUserService.getById(Long.valueOf(StpUtil.getLoginId().toString()));
  122. sysRoleId = byId.getRoleId();
  123. }else {
  124. if(StringUtils.isNotBlank(param.getRyId())){
  125. loginUser = jyUserService.getByRyId(param.getRyId());
  126. }
  127. if(StringUtils.isNotBlank(param.getRyNo())){
  128. loginUser = jyUserService.getByRyNo(param.getRyNo());
  129. }
  130. if(loginUser != null){
  131. SysUser byId = sysUserService.getById(loginUser.getSysUserId());
  132. sysRoleId = byId.getRoleId();
  133. }
  134. }
  135. if(loginUser == null){
  136. throw new BusinessException(ResultCode.USER_NOT_EXIST);
  137. }
  138. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  139. if(StringUtils.isNotBlank(param.getNum())){
  140. wrapper.eq(JySceneUserAuth::getNum,param.getNum());
  141. }
  142. if(param.getCaseId() != null){
  143. wrapper.eq(JySceneUserAuth::getCaseId,param.getCaseId());
  144. }
  145. wrapper.eq(JySceneUserAuth::getAuthType,param.getAuthType());
  146. if(!sceneUserId.equals(loginUser.getUserId()) && sysRoleId!=null && sysRoleId == 47L ){
  147. List<Integer> ids = new ArrayList<>();
  148. getSubAuthorIdsById(loginUser.getId(),param.getNum(),param.getCaseId(),ids);
  149. if(ids.size()<=0){
  150. return PageInfo.PageInfo(new Page(param.getPageNum(),param.getPageSize()));
  151. }
  152. wrapper.in(JySceneUserAuth::getAuthorId,ids);
  153. }
  154. wrapper.orderByDesc(JySceneUserAuth::getCreateTime);
  155. Page<JySceneUserAuth> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  156. List<Integer> jyUserIds = page.getRecords().stream().map(JySceneUserAuth::getJyUserId).collect(Collectors.toList());
  157. HashMap<Integer, JyUser> map = jyUserService.getByIds(jyUserIds);
  158. for (JySceneUserAuth jySceneUserAuth : page.getRecords()) {
  159. JyUser jyUser = map.get(jySceneUserAuth.getJyUserId());
  160. if(jyUser != null){
  161. jySceneUserAuth.setRyId(jyUser.getRyId());
  162. jySceneUserAuth.setRyNickName(jyUser.getRyNickName());
  163. jySceneUserAuth.setRyNo(jyUser.getRyNo());
  164. }
  165. }
  166. return PageInfo.PageInfo(page);
  167. }
  168. private void getSubAuthorIdsById(Integer id,String num,Integer caseId,List<Integer> ids) {
  169. ids.add(id);
  170. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  171. if(StringUtils.isNotBlank(num)){
  172. wrapper.eq(JySceneUserAuth::getNum,num);
  173. }
  174. if(caseId != null){
  175. wrapper.eq(JySceneUserAuth::getCaseId,caseId);
  176. }
  177. wrapper.eq(JySceneUserAuth::getAuthorId,id);
  178. List<JySceneUserAuth> list = this.list(wrapper);
  179. if(list.size() >0){
  180. for (JySceneUserAuth auth : list) {
  181. ids.add(auth.getAuthorId());
  182. getSubAuthorIdsById(auth.getId(),num,caseId,ids);
  183. }
  184. }
  185. }
  186. @Override
  187. public void setAuthType(JySceneUserAuth param) {
  188. if(StringUtils.isBlank(param.getNum()) || param.getCaseId() == null || param.getAuthType() == null){
  189. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  190. }
  191. if(StringUtils.isNotBlank(param.getNum()) && param.getCaseId() !=null){
  192. param.setCaseId(null);
  193. }
  194. if(StringUtils.isNotBlank(param.getNum())){
  195. ScenePlus plus = scenePlusService.getByNum(param.getNum());
  196. if( plus == null){
  197. throw new BusinessException(ResultCode.SCENE_NOT_EXITS);
  198. }
  199. jySceneAuthService.updateAuthTypeByNum(param.getNum(),param.getAuthType());
  200. }
  201. if(param.getCaseId() != null){
  202. Case caseEntity = caseService.getById(param.getCaseId());
  203. if(caseEntity == null){
  204. throw new BusinessException(ResultCode.CASE_NOT_EXIST);
  205. }
  206. jySceneAuthService.updateAuthTypeByCaseId(param.getCaseId(),param.getAuthType());
  207. }
  208. }
  209. @Override
  210. public synchronized void addAuth(JySceneUserAuth param) {
  211. if(StringUtils.isBlank(param.getNum()) || param.getCaseId() == null ){
  212. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  213. }
  214. JyUser jyUser = null;
  215. if(StringUtils.isNotBlank(param.getRyId()) ){
  216. jyUser = jyUserService.getByRyId(param.getRyId());
  217. if(jyUser == null){
  218. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  219. }
  220. }
  221. if(StringUtils.isNotBlank(param.getRyNo()) ){
  222. jyUser = jyUserService.getByRyNo(param.getRyNo());
  223. if(jyUser == null){
  224. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  225. }
  226. }
  227. if(jyUser == null){
  228. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  229. }
  230. Long sceneUserId = null;
  231. JySceneUserAuth jySceneUserAuth = null;
  232. if(StringUtils.isNotBlank(param.getNum())){
  233. ScenePlus plus = scenePlusService.getByNum(param.getNum());
  234. if(plus == null){
  235. throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
  236. }
  237. caseService.checkNumInCase(param.getNum());
  238. sceneUserId = plus.getUserId();
  239. jySceneUserAuth = jySceneUserAuthService.getByNumAndJyUserId(jyUser.getId(), param.getNum(),param.getAuthType());
  240. }
  241. if(param.getCaseId() != null){
  242. Case caseEntity = caseService.getById(param.getCaseId());
  243. if(caseEntity == null){
  244. throw new BusinessException(ResultCode.CASE_NOT_EXIST);
  245. }
  246. JyUser jyUser2 = jyUserService.getBySysId(caseEntity.getSysUserId());
  247. if(jyUser2 == null){
  248. throw new BusinessException(ResultCode.USER_NOT_EXIST);
  249. }
  250. sceneUserId = jyUser2.getUserId();
  251. jySceneUserAuth = jySceneUserAuthService.getByCaseIdAndJyUserId(jyUser.getId(), param.getCaseId(),param.getAuthType());
  252. }
  253. if(jySceneUserAuth != null && param.getCanDel() != 1){
  254. throw new BusinessException(ResultCode.SCENE_AUTH_EXITS);
  255. }
  256. if(jySceneUserAuth != null && param.getCanDel() == 1){
  257. param.setId(jySceneUserAuth.getId());
  258. }
  259. if(sceneUserId.equals(jyUser.getUserId())){
  260. throw new BusinessException(ResultCode.AUTH_ERROR);
  261. }
  262. JyUser sceneJyUser = null;
  263. if(StpUtil.isLogin()){
  264. sceneJyUser = jyUserService.getBySysId(StpUtil.getLoginId());
  265. }else {
  266. sceneJyUser = jyUserService.getByUserId(sceneUserId);
  267. }
  268. if(param.getCanEditLook() == 1 || param.getCanAuthLook() == 1){
  269. param.setIsAuthor(1);
  270. }
  271. if(param.getCanEditLook() == 1 ){
  272. param.setCanAuthLook(1);
  273. }
  274. if(param.getCanEditLook() == 0 && param.getCanAuthLook() == 0){
  275. param.setIsAuthor(0);
  276. }
  277. JySceneAuth jySceneAuth = null;
  278. if(StringUtils.isNotBlank(param.getNum())){
  279. jySceneAuth = jySceneAuthService.getByNum(param.getNum());
  280. }
  281. if(param.getCaseId() != null){
  282. jySceneAuth = jySceneAuthService.getByCaseId(param.getCaseId());
  283. }
  284. if(jySceneAuth == null){
  285. jySceneAuth = new JySceneAuth(param.getAuthType());
  286. if(StringUtils.isNotBlank(param.getNum())){
  287. jySceneAuth.setNum(param.getNum());
  288. }
  289. if(param.getCaseId() != null){
  290. jySceneAuth.setCaseId(param.getCaseId());
  291. }
  292. jySceneAuthService.save(jySceneAuth);
  293. }
  294. param.setJyUserId(jyUser.getId());
  295. param.setAuthorId(sceneJyUser.getId());
  296. this.saveOrUpdate(param);
  297. }
  298. @Override
  299. public void delAuth(JySceneUserAuth param) {
  300. if(param.getId() == null){
  301. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  302. }
  303. this.removeById(param.getId());
  304. }
  305. @Override
  306. public JySceneUserAuth getByNumAndJyUserId(Integer jyUserId, String num,Integer authType) {
  307. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  308. wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);
  309. wrapper.eq(JySceneUserAuth::getNum,num);
  310. wrapper.eq(JySceneUserAuth::getAuthType,authType);
  311. return this.getOne(wrapper);
  312. }
  313. @Override
  314. public JySceneUserAuth getByCaseIdAndJyUserId(Integer jyUserId, Integer caseId, Integer authType) {
  315. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  316. wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);
  317. wrapper.eq(JySceneUserAuth::getCaseId,caseId);
  318. wrapper.eq(JySceneUserAuth::getAuthType,authType);
  319. return this.getOne(wrapper);
  320. }
  321. @Override
  322. public JySceneUserAuth getByNumAndRyId(String num, String ryId) {
  323. JyUser jyUser = jyUserService.getByRyId(ryId);
  324. if(jyUser == null){
  325. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  326. }
  327. JySceneAuth jySceneAuth = jySceneAuthService.getByNum(num);
  328. if(jySceneAuth == null){
  329. throw new BusinessException(ResultCode.DEL_AUTH_ERROR);
  330. }
  331. return this.getByNumAndJyUserId(jyUser.getId(),num,jySceneAuth.getAuthType());
  332. }
  333. @Override
  334. public JySceneUserAuth getByNumAndRyNo(String num, String ryNo) {
  335. JyUser jyUser = jyUserService.getByRyNo(ryNo);
  336. if(jyUser == null){
  337. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  338. }
  339. JySceneAuth jySceneAuth = jySceneAuthService.getByNum(num);
  340. if(jySceneAuth == null){
  341. throw new BusinessException(ResultCode.DEL_AUTH_ERROR);
  342. }
  343. return this.getByNumAndJyUserId(jyUser.getId(),num,jySceneAuth.getAuthType());
  344. }
  345. @Override
  346. public JySceneUserAuth getByCaseIdAndRyId(Integer caseId, String ryId) {
  347. JyUser jyUser = jyUserService.getByRyId(ryId);
  348. if(jyUser == null){
  349. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  350. }
  351. JySceneAuth jySceneAuth = jySceneAuthService.getByCaseId(caseId);
  352. if(jySceneAuth == null){
  353. throw new BusinessException(ResultCode.DEL_AUTH_ERROR);
  354. }
  355. return this.getByCaseIdAndJyUserId(jyUser.getId(),caseId,jySceneAuth.getAuthType());
  356. }
  357. @Override
  358. public JySceneUserAuth getByCaseIdAndRyNo(Integer caseId, String ryNo) {
  359. JyUser jyUser = jyUserService.getByRyNo(ryNo);
  360. if(jyUser == null){
  361. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  362. }
  363. JySceneAuth jySceneAuth = jySceneAuthService.getByCaseId(caseId);
  364. if(jySceneAuth == null){
  365. throw new BusinessException(ResultCode.DEL_AUTH_ERROR);
  366. }
  367. return this.getByCaseIdAndJyUserId(jyUser.getId(),caseId,jySceneAuth.getAuthType());
  368. }
  369. @Override
  370. public Object checkAuthOther(JySceneUserAuth param) {
  371. if(StringUtils.isBlank(param.getNum())){
  372. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  373. }
  374. ScenePro pro = sceneProService.getByNum(param.getNum());
  375. ScenePlus plus = scenePlusService.getByNum(param.getNum());
  376. if(pro == null && plus == null){
  377. throw new BusinessException(ResultCode.SCENE_NOT_EXITS);
  378. }
  379. Long sceneUserId = pro == null ? plus.getUserId() :pro.getUserId();
  380. CheckOtherVo vo = new CheckOtherVo();
  381. SysUser byId = sysUserService.getById(Long.valueOf(StpUtil.getLoginId().toString()));
  382. JyUser jyUser = jyUserService.getBySysId(byId.getId());
  383. if( byId.getRoleId() != 47L || jyUser.getUserId().equals(sceneUserId)){
  384. vo.setIsAuthor(1);
  385. vo.setEditAuth(1);
  386. vo.setLookAuth(1);
  387. }else {
  388. JySceneUserAuth auth = jySceneUserAuthService.getByNumAndJyUserId(jyUser.getId(), param.getNum(),param.getAuthType());
  389. if(auth !=null){
  390. if(auth.getCanAuthLook() == 1 ){
  391. vo.setLookAuth(auth.getLookAuth());
  392. vo.setLookEndTime(auth.getLookEndTime());
  393. }
  394. if(auth.getCanEditLook() == 1){
  395. vo.setEditAuth(auth.getEditAuth());
  396. vo.setEditEndTime(auth.getEditEndTime());
  397. }
  398. }
  399. }
  400. return vo;
  401. }
  402. @Autowired
  403. RedisUtil redisUtil;
  404. @Autowired
  405. IJySceneUserAuthService jySceneUserAuthService;
  406. @Autowired
  407. IJyUserShareService jyUserShareService;
  408. @Autowired
  409. ManageService manageService;
  410. @Autowired
  411. IJyUserPlatformService jyUserPlatformService;
  412. @Override
  413. public Object checkNumAuth(String num,String token,String clientIP,String userName,String password) {
  414. if(StringUtils.isBlank(num)){
  415. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  416. }
  417. log.info("checkNumAuth-----------num:{},token:{},userName:{},password:{}",num,token,userName,password);
  418. ScenePro pro = sceneProService.getByNum(num);
  419. ScenePlus plus = scenePlusService.getByNum(num);
  420. if(pro == null && plus == null){
  421. throw new BusinessException(ResultCode.SCENE_NOT_EXITS);
  422. }
  423. Long sceneUserId = pro == null ? plus.getUserId():pro.getUserId();
  424. SceneAuthVo sceneAuthVo = new SceneAuthVo();
  425. JySceneAuth jySceneAuth = jySceneAuthService.getByNum(num);
  426. if(jySceneAuth!=null && jySceneAuth.getAuthType() == 1){
  427. sceneAuthVo.setViewAuth(true);
  428. }
  429. List<Case> caseList = caseService.getCaseByNum(num);
  430. for (Case aCase : caseList) {
  431. JySceneAuth jySceneAuth1 = jySceneAuthService.getByCaseId(aCase.getCaseId());
  432. if(jySceneAuth1!=null && jySceneAuth1.getAuthType() == 1){
  433. sceneAuthVo.setViewAuth(true);
  434. break;
  435. }
  436. }
  437. if(StringUtils.isBlank(token) && (StringUtils.isBlank(userName) || StringUtils.isBlank(password))){
  438. return sceneAuthVo;
  439. }
  440. Long sysUserId = null;
  441. if(StringUtils.isNotBlank(token)){
  442. String redisKey = String.format(RedisKeyUtil.loginToken,token);
  443. if( !redisUtil.hasKey(redisKey) ){
  444. return sceneAuthVo;
  445. }
  446. String userStr = redisUtil.get(redisKey);
  447. ManageLoginResponse result = JSONObject.parseObject(userStr,ManageLoginResponse.class);
  448. Long userId = result.getUserId();
  449. if(userId == null){
  450. redisUtil.del(redisKey);
  451. throw new BusinessException(ResultCode.USER_NOT_LOGIN);
  452. }else {
  453. redisUtil.expire(redisKey,2 * 60 * 60);
  454. }
  455. sysUserId = result.getId();
  456. }
  457. if(StringUtils.isNotBlank(userName) && StringUtils.isNotBlank(password)){
  458. ManageLoginResponse login = manageService.login(clientIP, userName, password,true);
  459. sysUserId = login.getId();
  460. }
  461. if(sysUserId == null){
  462. return sceneAuthVo;
  463. }
  464. SysUser byId = sysUserService.getById(sysUserId);
  465. if(byId.getRoleId() == 1L ){
  466. sceneAuthVo.setViewAuth(true);
  467. sceneAuthVo.setEditAuth(true);
  468. return sceneAuthVo;
  469. }
  470. if(byId.getRoleId() == 45L || byId.getRoleId() == 48L){
  471. Integer loginPlatformId = jyUserPlatformService.getLoginPlatformId();
  472. if(loginPlatformId != null){
  473. List<Long> byUserIdPlatform = jyUserService.getByUserIdPlatform(loginPlatformId);
  474. if(byUserIdPlatform.contains(sceneUserId)){
  475. sceneAuthVo.setViewAuth(true);
  476. sceneAuthVo.setEditAuth(true);
  477. return sceneAuthVo;
  478. }
  479. }
  480. }
  481. JyUser jyUser = jyUserService.getBySysId(byId.getId());
  482. //if(jySceneAuth != null && jySceneAuth.getAuthType() == 0){
  483. if(jySceneAuth != null ){
  484. JySceneUserAuth jySceneUserAuth = jySceneUserAuthService.getByNumAndJyUserId(jyUser.getId(), num,jySceneAuth.getAuthType());
  485. setFlag(jySceneUserAuth,sceneAuthVo);
  486. }
  487. if(!caseList.isEmpty()){
  488. for (Case aCase : caseList) {
  489. JySceneUserAuth jySceneUserAuth = jySceneUserAuthService.getByCaseIdAndJyUserId(jyUser.getId(), aCase.getCaseId(),jySceneAuth.getAuthType());
  490. setFlag(jySceneUserAuth,sceneAuthVo);
  491. }
  492. }
  493. if(pro != null && jyUser.getUserId().equals(pro.getUserId())){
  494. sceneAuthVo.setViewAuth(true);
  495. sceneAuthVo.setEditAuth(true);
  496. sceneAuthVo.setIsAuthor(true);
  497. }
  498. if(plus != null && jyUser.getUserId().equals(plus.getUserId())){
  499. sceneAuthVo.setViewAuth(true);
  500. sceneAuthVo.setEditAuth(true);
  501. sceneAuthVo.setIsAuthor(true);
  502. }
  503. if(!sceneAuthVo.getViewAuth()){
  504. List<JyUserShare> jyUserShares = jyUserShareService.getByJyUserId(jyUser.getId());
  505. List<Integer> mainUserIds = jyUserShares.stream().map(JyUserShare::getMainJyUserId).collect(Collectors.toList());
  506. HashMap<Integer,Long> roleMap = new HashMap<>();
  507. if(!mainUserIds.isEmpty()){
  508. List<JyUser> jyUsers = jyUserService.listByIds(mainUserIds);
  509. Set<Long> sysIds = jyUsers.stream().map(JyUser::getSysUserId).collect(Collectors.toSet());
  510. HashMap<Long, SysUser> byIds = sysUserService.getByIds(sysIds);
  511. jyUsers.forEach( e-> roleMap.put(e.getId(),byIds.get(e.getSysUserId()).getRoleId()));
  512. for (JyUser user : jyUsers) {
  513. Long roleId = roleMap.get(user.getId());
  514. if(user.getPlatformId() != null && (roleId == 1L || roleId == 45L || roleId == 48L)){
  515. sceneAuthVo.setViewAuth(true);
  516. }else if(user.getUserId().equals(sceneUserId)){
  517. sceneAuthVo.setViewAuth(true);
  518. }
  519. }
  520. }
  521. }
  522. return sceneAuthVo;
  523. }
  524. private void setFlag(JySceneUserAuth jySceneUserAuth,SceneAuthVo sceneAuthVo){
  525. if(jySceneUserAuth != null){
  526. Date date = new Date();
  527. if(jySceneUserAuth.getLookAuth() == 1 ||
  528. ( jySceneUserAuth.getLookAuth() == 2 && jySceneUserAuth.getLookEndTime().getTime() >date.getTime())){
  529. sceneAuthVo.setViewAuth(true);
  530. }
  531. if(jySceneUserAuth.getEditAuth() == 1 ||
  532. (jySceneUserAuth.getEditAuth() == 2 && jySceneUserAuth.getEditEndTime().getTime() >date.getTime())){
  533. sceneAuthVo.setEditAuth(true);
  534. }
  535. }
  536. }
  537. @Override
  538. public List<JySceneUserAuth> getByJyUserId(Integer jyUserId) {
  539. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  540. wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);
  541. return this.list(wrapper);
  542. }
  543. @Override
  544. public void delByJyUserId(Integer jyUserId) {
  545. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  546. wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);
  547. this.remove(wrapper);
  548. }
  549. @Override
  550. public HashMap<String, List<JySceneUserAuth>> getByNumList(List<String> numList) {
  551. HashMap<String, List<JySceneUserAuth>> map = new HashMap<>();
  552. if(numList.isEmpty()){
  553. return map;
  554. }
  555. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  556. wrapper.in(JySceneUserAuth::getNum,numList);
  557. List<JySceneUserAuth> list = this.list(wrapper);
  558. for (JySceneUserAuth e : list) {
  559. String key = e.getNum() + "_"+ e.getAuthType();
  560. map.computeIfAbsent(key, k -> new ArrayList<>());
  561. map.get(key).add(e);
  562. }
  563. return map;
  564. }
  565. @Override
  566. public HashMap<String, List<JySceneUserAuth>> getByNumList(List<String> numList,Integer jyUserId) {
  567. HashMap<String, List<JySceneUserAuth>> map = new HashMap<>();
  568. if(numList.isEmpty()){
  569. return map;
  570. }
  571. LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
  572. wrapper.in(JySceneUserAuth::getNum,numList);
  573. wrapper.eq(JySceneUserAuth::getAuthorId,jyUserId);
  574. List<JySceneUserAuth> list = this.list(wrapper);
  575. for (JySceneUserAuth e : list) {
  576. String key = e.getNum() + "_"+ e.getAuthType();
  577. map.computeIfAbsent(key, k -> new ArrayList<>());
  578. map.get(key).add(e);
  579. }
  580. return map;
  581. }
  582. }