JySceneUserAuthServiceImpl.java 29 KB

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