FileNodeManagerService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. package com.bosshand.virgo.file.service;
  2. import com.bosshand.virgo.exception.ServiceException;
  3. import com.bosshand.virgo.file.dao.*;
  4. import com.bosshand.virgo.file.model.*;
  5. import com.bosshand.virgo.file.util.AliyunOSSUtil;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import java.io.InputStream;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. @Service
  12. public class FileNodeManagerService {
  13. @Autowired
  14. private FileNodeProjectModelDao fileNodeProjectModelDao;
  15. @Autowired
  16. private FileNodeProjectDao fileNodeProjectDao;
  17. @Autowired
  18. private FileNodeOrganizationModelDao fileNodeOrganizationModelDao;
  19. @Autowired
  20. private FileNodeOrganizationDao fileNodeOrganizationDao;
  21. @Autowired
  22. private FielNodeProjectSetPermissionsDao fielNodeProjectSetPermissionsDao;
  23. @Autowired
  24. private FileNodeUserSetPermissionsDao fileNodeUserSetPermissionsDao;
  25. //*****************************************************************
  26. // FileNodeOrganization
  27. //*****************************************************************
  28. public List<FileNodeOrganization> organizationFolder(Long[] ids) {
  29. return fileNodeOrganizationDao.organizationFolder(ids);
  30. }
  31. public List<FileNodeOrganization> generateFileNodeOrganization(int projectId, int organizationId, int organizationTypeId) {
  32. List<FileNodeOrganization> nodes = fileNodeOrganizationDao.list(FileNodeOrganization.ROOT_ID, projectId, organizationId);
  33. if (nodes.size() > 0) {
  34. return nodes;
  35. }
  36. List<FileNodeOrganizationModel> list = fileNodeOrganizationModelDao.listByOrganizationTypeId(organizationTypeId);
  37. for (FileNodeOrganizationModel model : list) {
  38. if (model.getParentId() == FileNodeOrganization.ROOT_ID) {
  39. FileNodeOrganization fileNodeOrganization = new FileNodeOrganization(model.getParentId(), model.getName(), model.isDirectory(), model.getNode(), projectId, organizationId, model.getPermissions());
  40. fileNodeOrganizationDao.insert(fileNodeOrganization);
  41. saveList(model.getId(), fileNodeOrganization.getId(), projectId, organizationId, list);
  42. }
  43. }
  44. return fileNodeOrganizationDao.list(FileNodeOrganization.ROOT_ID, projectId, organizationId);
  45. }
  46. private void saveList(int parentId, int fileNodeOrganizationId, int projectId, int organizationId, List<FileNodeOrganizationModel> slist) {
  47. List<FileNodeOrganizationModel> list = new ArrayList<>();
  48. for (FileNodeOrganizationModel s : slist) {
  49. if (s.getParentId() == parentId) {
  50. list.add(s);
  51. }
  52. }
  53. if (list.size() > 0) {
  54. for (FileNodeOrganizationModel model : list) {
  55. FileNodeOrganization fileNodeOrganization = new FileNodeOrganization(fileNodeOrganizationId, model.getName(), model.isDirectory(), model.getNode(), projectId, organizationId, model.getPermissions());
  56. fileNodeOrganizationDao.insert(fileNodeOrganization);
  57. saveList(model.getId(), fileNodeOrganization.getId(), projectId, organizationId, slist);
  58. }
  59. }
  60. }
  61. public FileNodeOrganization getFileNodeOrganization(int id) throws ServiceException {
  62. return fileNodeOrganizationDao.get(id);
  63. }
  64. public byte[] getFileNodeOrganizationNode(int id) {
  65. FileNodeOrganization fileNodeOrganization = fileNodeOrganizationDao.get(id);
  66. return AliyunOSSUtil.getByte(fileNodeOrganization.getNode());
  67. }
  68. public FileNodeOrganization createFileNodeOrganization(InputStream is, String name, int parentId) throws ServiceException {
  69. if (parentId != FileNodeOrganization.ROOT_ID) {
  70. FileNodeOrganization parentNode = getFileNodeOrganization(parentId);
  71. if (parentNode == null || !parentNode.isDirectory()) {
  72. throw new ServiceException("Incorrect parent");
  73. }
  74. }
  75. FileNodeOrganization fileInfo = new FileNodeOrganization();
  76. fileInfo.setName(name);
  77. fileInfo.setParentId(parentId);
  78. fileInfo.setDirectory(false);
  79. fileInfo.setNode(AliyunOSSUtil.upload(is));
  80. fileNodeOrganizationDao.insert(fileInfo);
  81. return fileInfo;
  82. }
  83. public FileNodeOrganization createDirFileNodeOrganization(FileNodeOrganization fileNode, int parentId) throws ServiceException {
  84. if (parentId != FileNodeOrganization.ROOT_ID) {
  85. FileNodeOrganization parentNode = getFileNodeOrganization(parentId);
  86. if (parentNode == null || !parentNode.isDirectory()) {
  87. throw new ServiceException("Incorrect parent");
  88. }
  89. }
  90. fileNode.setDirectory(true);
  91. fileNode.setParentId(parentId);
  92. fileNodeOrganizationDao.insert(fileNode);
  93. return fileNode;
  94. }
  95. public void deleteFileNodeOrganization(int id) throws ServiceException {
  96. FileNodeOrganization node = fileNodeOrganizationDao.get(id);
  97. if (node == null) {
  98. throw new ServiceException("node not found");
  99. }
  100. if (node.isDirectory()) {
  101. throw new ServiceException("node is a directory");
  102. }
  103. AliyunOSSUtil.delete(node.getNode());
  104. fileNodeOrganizationDao.remove(id);
  105. }
  106. public void deleteDirFileNodeOrganization(int id) throws ServiceException {
  107. FileNodeOrganization node = fileNodeOrganizationDao.get(id);
  108. if (node == null) {
  109. throw new ServiceException("node not found");
  110. }
  111. if (node.isDirectory()) {
  112. fileNodeOrganizationDao.remove(id);
  113. } else {
  114. deleteFileNodeOrganization(id);
  115. }
  116. }
  117. public void updateFileNodeOrganization(FileNodeOrganization fileNode) {
  118. fileNodeOrganizationDao.update(fileNode);
  119. }
  120. public List<FileNodeOrganization> listOrganization(int parentId) {
  121. return fileNodeOrganizationDao.listByParentId(parentId);
  122. }
  123. public boolean validationPasswordFileNodeOrganization(int id, String password) {
  124. FileNodeOrganization validationPassword = fileNodeOrganizationDao.validationPassword(id, password);
  125. if (validationPassword != null) {
  126. return true;
  127. }
  128. return false;
  129. }
  130. //*****************************************************************
  131. // FileNodeProject
  132. //*****************************************************************
  133. public List<FileNodeProject> projectFolder(Long[] ids) {
  134. return fileNodeProjectDao.projectFolder(ids);
  135. }
  136. public List<FileNodeProject> generateFileNodeProject(int projectId) {
  137. List<FileNodeProject> nodes = fileNodeProjectDao.list(FileNodeProject.ROOT_ID, projectId);
  138. if (nodes.size() > 0) {
  139. return nodes;
  140. }
  141. List<FileNodeProjectModel> list = fileNodeProjectModelDao.listAll();
  142. for (FileNodeProjectModel model : list) {
  143. if (model.getParentId() == FileNodeProject.ROOT_ID) {
  144. FileNodeProject fileNodeProject = new FileNodeProject(model.getParentId(), model.getName(), model.isDirectory(), model.getNode(), projectId, model.getPermissions());
  145. fileNodeProjectDao.insert(fileNodeProject);
  146. saveProjectList(model.getId(), fileNodeProject.getId(), projectId, list);
  147. }
  148. }
  149. return fileNodeProjectDao.list(FileNodeProject.ROOT_ID, projectId);
  150. }
  151. private void saveProjectList(int parentId, int fileNodeProjectId, int projectId, List<FileNodeProjectModel> slist) {
  152. List<FileNodeProjectModel> list = new ArrayList<>();
  153. for (FileNodeProjectModel s : slist) {
  154. if (s.getParentId() == parentId) {
  155. list.add(s);
  156. }
  157. }
  158. if (list.size() > 0) {
  159. for (FileNodeProjectModel model : list) {
  160. FileNodeProject fileNodeProject = new FileNodeProject(fileNodeProjectId, model.getName(), model.isDirectory(), model.getNode(), projectId, model.getPermissions());
  161. fileNodeProjectDao.insert(fileNodeProject);
  162. saveProjectList(model.getId(), fileNodeProject.getId(), projectId, slist);
  163. }
  164. }
  165. }
  166. public FileNodeProject getFileNodeProject(int id) throws ServiceException {
  167. return fileNodeProjectDao.get(id);
  168. }
  169. public byte[] getFileNodeProjectNode(int id) {
  170. FileNodeProject fileNodeProject = fileNodeProjectDao.get(id);
  171. return AliyunOSSUtil.getByte(fileNodeProject.getNode());
  172. }
  173. public FileNodeProject createFileNodeProject(InputStream is, String name, int parentId) throws ServiceException {
  174. if (parentId != FileNodeProject.ROOT_ID) {
  175. FileNodeProject parentNode = getFileNodeProject(parentId);
  176. if (parentNode == null || !parentNode.isDirectory()) {
  177. throw new ServiceException("Incorrect parent");
  178. }
  179. }
  180. FileNodeProject fileInfo = new FileNodeProject();
  181. fileInfo.setName(name);
  182. fileInfo.setParentId(parentId);
  183. fileInfo.setDirectory(false);
  184. fileInfo.setNode(AliyunOSSUtil.upload(is));
  185. fileNodeProjectDao.insert(fileInfo);
  186. return fileInfo;
  187. }
  188. public FileNodeProject createDirFileNodeProject(FileNodeProject fileNode, int parentId) throws ServiceException {
  189. if (parentId != FileNodeProject.ROOT_ID) {
  190. FileNodeProject parentNode = getFileNodeProject(parentId);
  191. if (parentNode == null || !parentNode.isDirectory()) {
  192. throw new ServiceException("Incorrect parent");
  193. }
  194. }
  195. fileNode.setDirectory(true);
  196. fileNode.setParentId(parentId);
  197. fileNodeProjectDao.insert(fileNode);
  198. return fileNode;
  199. }
  200. public void deleteFileNodeProject(int id) throws ServiceException {
  201. FileNodeProject node = fileNodeProjectDao.get(id);
  202. if (node == null) {
  203. throw new ServiceException("node not found");
  204. }
  205. if (node.isDirectory()) {
  206. throw new ServiceException("node is a directory");
  207. }
  208. AliyunOSSUtil.delete(node.getNode());
  209. fileNodeProjectDao.remove(id);
  210. }
  211. public void deleteDirFileNodeProject(int id) throws ServiceException {
  212. FileNodeProject node = fileNodeProjectDao.get(id);
  213. if (node == null) {
  214. throw new ServiceException("node not found");
  215. }
  216. if (node.isDirectory()) {
  217. fileNodeProjectDao.remove(id);
  218. } else {
  219. deleteFileNodeOrganization(id);
  220. }
  221. }
  222. public void updateFileNodeProject(FileNodeProject fileNode) {
  223. fileNodeProjectDao.update(fileNode);
  224. }
  225. public List<FileNodeProject> listProject(int parentId) {
  226. return fileNodeProjectDao.listByParentId(parentId);
  227. }
  228. //*****************************************************************
  229. // SetPermissions
  230. //*****************************************************************
  231. public void setPermissions(FielNodeProjectSetPermissions permissions) {
  232. fielNodeProjectSetPermissionsDao.insert(permissions);
  233. }
  234. public void updatePermissions(FielNodeProjectSetPermissions permissions) {
  235. fielNodeProjectSetPermissionsDao.update(permissions);
  236. }
  237. public FielNodeProjectSetPermissions getPermissions(int fileNodeProjectId, int organizationId) {
  238. FielNodeProjectSetPermissions permissions = fielNodeProjectSetPermissionsDao.getPermissions(fileNodeProjectId, organizationId);
  239. if (permissions != null) {
  240. permissions.setPassword(null);
  241. }
  242. return permissions;
  243. }
  244. public boolean validationPassword(int id, String password) {
  245. FielNodeProjectSetPermissions validationPassword = fielNodeProjectSetPermissionsDao.validationPassword(id, password);
  246. if (validationPassword != null) {
  247. return true;
  248. }
  249. return false;
  250. }
  251. public FielNodeProjectSetPermissions showPassword(int fileNodeProjectId, int organizationId) {
  252. return fielNodeProjectSetPermissionsDao.getPermissions(fileNodeProjectId, organizationId);
  253. }
  254. //*****************************************************************
  255. // SetUserPermissions
  256. //*****************************************************************
  257. public void setUserPermissions(FileNodeUserSetPermissions permissions) {
  258. fileNodeUserSetPermissionsDao.insert(permissions);
  259. }
  260. public void updateUserPermissions(FileNodeUserSetPermissions permissions) {
  261. fileNodeUserSetPermissionsDao.update(permissions);
  262. }
  263. public FileNodeUserSetPermissions getUserOrganizationPermissions(int fileNodeOrganizationId,int userId) {
  264. return fileNodeUserSetPermissionsDao.getOrganizationPermissions(fileNodeOrganizationId, userId);
  265. }
  266. public FileNodeUserSetPermissions getUserProjectPermissions(int fileNodeProjectId,int userId) {
  267. return fileNodeUserSetPermissionsDao.getProjectPermissions(fileNodeProjectId, userId);
  268. }
  269. }