JySceneUserAuthServiceImpl.java 28 KB

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