AdminCopyrightApiController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. package com.goafanti.admin.controller;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.TreeMap;
  6. import javax.annotation.Resource;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.validation.Valid;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.beans.BeanUtils;
  12. import org.springframework.validation.BindingResult;
  13. import org.springframework.validation.FieldError;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import org.springframework.web.bind.annotation.RequestParam;
  17. import org.springframework.web.bind.annotation.RestController;
  18. import com.goafanti.admin.service.AdminService;
  19. import com.goafanti.common.bo.Result;
  20. import com.goafanti.common.constant.AFTConstants;
  21. import com.goafanti.common.constant.ErrorConstants;
  22. import com.goafanti.common.controller.CertifyApiController;
  23. import com.goafanti.common.enums.AttachmentType;
  24. import com.goafanti.common.enums.CopyrightFields;
  25. import com.goafanti.common.enums.CopyrightStatus;
  26. import com.goafanti.common.model.Admin;
  27. import com.goafanti.common.model.CopyrightInfo;
  28. import com.goafanti.common.model.CopyrightLog;
  29. import com.goafanti.common.model.User;
  30. import com.goafanti.copyright.bo.CopyrightInfoDetail;
  31. import com.goafanti.copyright.bo.InputCopyright;
  32. import com.goafanti.copyright.service.CopyrightInfoService;
  33. import com.goafanti.core.shiro.token.TokenManager;
  34. import com.goafanti.user.service.UserService;
  35. @RestController
  36. @RequestMapping(value = "/api/admin/copyright")
  37. public class AdminCopyrightApiController extends CertifyApiController {
  38. @Resource
  39. private CopyrightInfoService copyrightInfoService;
  40. @Resource
  41. private UserService userService;
  42. @Resource
  43. private AdminService adminService;
  44. @RequestMapping(value = "/apply", method = RequestMethod.POST)
  45. public Result newApply(@Valid InputCopyright inputInfo, BindingResult bindingResult) {
  46. Result res = new Result();
  47. if (handleBindingError(res, bindingResult)) {
  48. return res;
  49. }
  50. if (!checkAdminLogin(res)) {
  51. return res;
  52. }
  53. if (StringUtils.isBlank(inputInfo.getUid())) {
  54. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
  55. return res;
  56. }
  57. User curUser = userService.selectByPrimaryKey(inputInfo.getUid());
  58. if (!checkCertify(res, curUser)) {
  59. return res;
  60. }
  61. CopyrightInfo ci = new CopyrightInfo();
  62. BeanUtils.copyProperties(inputInfo, ci);
  63. ci.setUid(curUser.getId());
  64. if (StringUtils.isBlank(ci.getPrincipal())) {
  65. ci.setStatus(CopyrightStatus.CREATE.getCode());
  66. ci.setPrincipal(TokenManager.getAdminId());
  67. } else {
  68. ci.setStatus(CopyrightStatus.DELIVERD.getCode());
  69. }
  70. copyrightInfoService.insert(ci);
  71. res.setData(ci);
  72. return res;
  73. }
  74. @RequestMapping(value = "/modify", method = RequestMethod.POST)
  75. public Result modify(String id, @Valid InputCopyright inputInfo, BindingResult bindingResult) {
  76. Result res = new Result();
  77. if (handleBindingError(res, bindingResult)) {
  78. return res;
  79. }
  80. if (!checkAdminLogin(res)) {
  81. return res;
  82. }
  83. if (StringUtils.isBlank(id)) {
  84. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到软著", "软著申请id"));
  85. return res;
  86. }
  87. CopyrightInfo oci = copyrightInfoService.selectByPrimaryKey(id);
  88. if (oci == null) {
  89. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "找不到软著", "软著申请"));
  90. return res;
  91. }
  92. CopyrightInfo ci = new CopyrightInfo();
  93. CopyrightLog cl = new CopyrightLog();
  94. BeanUtils.copyProperties(oci, ci);
  95. BeanUtils.copyProperties(inputInfo, ci);
  96. BeanUtils.copyProperties(inputInfo, cl);
  97. ci.setId(oci.getId());
  98. ci.setUid(oci.getUid());
  99. if (CopyrightStatus.CIRCULATION.getCode() == ci.getStatus()) {
  100. ci.setStatus(CopyrightStatus.DELIVERD.getCode());
  101. }
  102. if (CopyrightStatus.SETTLEMENT.getCode() == ci.getStatus()) {
  103. ci.setStatus(CopyrightStatus.AUTHORIZED.getCode());
  104. }
  105. cl.setCid(oci.getId());
  106. cl.setOperator(TokenManager.getAdminId());
  107. copyrightInfoService.updateByPrimaryKeySelective(ci, cl);
  108. res.setData(1);
  109. return res;
  110. }
  111. @RequestMapping(value = "/upload", method = RequestMethod.POST)
  112. public Result upload(String id, String sign, HttpServletRequest req) {
  113. Result res = new Result();
  114. if (!checkAdminLogin(res)) {
  115. return res;
  116. }
  117. if (StringUtils.isEmpty(id)) {
  118. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  119. return res;
  120. }
  121. CopyrightInfo ci = copyrightInfoService.selectByPrimaryKey(id);
  122. if (ci == null) {
  123. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  124. return res;
  125. }
  126. AttachmentType attachmentType = AttachmentType.getField(sign);
  127. if (attachmentType == AttachmentType.COPYRIGHT_APPLY || attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  128. String filePath = handleFile(res, true, req, attachmentType.getCode(), ci.getUid(), ci.getId());
  129. if (attachmentType == AttachmentType.COPYRIGHT_APPLY) {
  130. ci.setApplicationUrl(filePath);
  131. } else if (attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  132. ci.setCertificateUrl(filePath);
  133. }
  134. copyrightInfoService.updateByPrimaryKey(ci);
  135. res.setData(filePath);
  136. } else {
  137. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  138. }
  139. return res;
  140. }
  141. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  142. public Result delete(@RequestParam(name = "id[]", required = false) String[] ids) {
  143. Result res = new Result();
  144. if (!checkAdminLogin(res)) {
  145. return res;
  146. }
  147. if (ids == null || ids.length < 1) {
  148. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
  149. } else {
  150. res.setData(copyrightInfoService.batchDeleteByPrimaryKey(Arrays.asList(ids)));
  151. }
  152. return res;
  153. }
  154. @RequestMapping(value = "/list", method = RequestMethod.GET)
  155. public Result list(String province, String unitName, String uid, String copyrightName, String status, String pageNo,
  156. String pageSize, @RequestParam(name = "createTime[]", required = false) String[] createTime,
  157. @RequestParam(name = "acceptTime[]", required = false) String[] acceptTime,
  158. @RequestParam(name = "authTime[]", required = false) String[] authTime) {
  159. Result res = new Result();
  160. if (!checkAdminLogin(res)) {
  161. return res;
  162. }
  163. res.setData(copyrightInfoService.listMyCopyrightInfo(province, unitName, copyrightName,
  164. CopyrightStatus.getStatus(status), createTime, acceptTime, authTime, getPageNo(pageNo),
  165. getPageSize(pageSize), uid));
  166. return res;
  167. }
  168. @RequestMapping(value = "/detail", method = RequestMethod.GET)
  169. public Result detail(String id) {
  170. Result res = new Result();
  171. if (!checkAdminLogin(res)) {
  172. return res;
  173. }
  174. if (StringUtils.isBlank(id)) {
  175. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "公司"));
  176. } else {
  177. res.setData(copyrightInfoService.findByPrimaryKey(id));
  178. }
  179. return res;
  180. }
  181. @RequestMapping(value = "/logs", method = RequestMethod.GET)
  182. public Result logs(String id) {
  183. Result res = new Result();
  184. if (!checkAdminLogin(res)) {
  185. return res;
  186. }
  187. if (StringUtils.isBlank(id)) {
  188. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "软著申请id"));
  189. } else {
  190. res.setData(copyrightInfoService.findLogsByPrimaryKey(id));
  191. }
  192. return res;
  193. }
  194. @RequestMapping(value = "/download", method = RequestMethod.GET)
  195. public Result download(String id, String sign, HttpServletResponse response) {
  196. Result res = new Result();
  197. if (!checkAdminLogin(res)) {
  198. return res;
  199. }
  200. if (StringUtils.isEmpty(id)) {
  201. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  202. return res;
  203. }
  204. CopyrightInfoDetail ci = copyrightInfoService.findByPrimaryKey(id);
  205. if (ci == null) {
  206. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  207. return res;
  208. }
  209. AttachmentType attachmentType = AttachmentType.getField(sign);
  210. if (attachmentType == AttachmentType.COPYRIGHT_APPLY || attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  211. if (attachmentType == AttachmentType.COPYRIGHT_APPLY) {
  212. downloadFile(response, ci.getApplicationUrlDownloadFileName(), ci.getApplicationUrl());
  213. } else if (attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  214. downloadFile(response, ci.getCertificateUrlDownloadFileName(), ci.getCertificateUrl());
  215. }
  216. } else {
  217. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  218. }
  219. return res;
  220. }
  221. @RequestMapping(value = "/status", method = RequestMethod.GET)
  222. public Result status() {
  223. Result res = new Result();
  224. if (!checkAdminLogin(res)) {
  225. return res;
  226. }
  227. res.setData(disposeStatus());
  228. return res;
  229. }
  230. /**
  231. * 软著咨询师下拉
  232. *
  233. * @return
  234. */
  235. @RequestMapping(value = "/getConsultant", method = RequestMethod.GET)
  236. public Result getConsultant() {
  237. Result res = new Result();
  238. List<Admin> list = adminService.selectCopyrightConsultant();
  239. Map<String, String> map = new TreeMap<String, String>();
  240. for (Admin o : list) {
  241. map.put(o.getId(), o.getName());
  242. }
  243. res.setData(map);
  244. return res;
  245. }
  246. /**
  247. * 软著负责人下拉
  248. *
  249. * @return
  250. */
  251. @RequestMapping(value = "/getPrincipal", method = RequestMethod.GET)
  252. public Result getPrincipal() {
  253. Result res = new Result();
  254. List<Admin> list = adminService.selectCopyrightPrincipal();
  255. Map<String, String> map = new TreeMap<String, String>();
  256. for (Admin o : list) {
  257. map.put(o.getId(), o.getName());
  258. }
  259. res.setData(map);
  260. return res;
  261. }
  262. private boolean handleBindingError(Result res, BindingResult bindingResult) {
  263. if (bindingResult.hasErrors()) {
  264. for (FieldError fe : bindingResult.getFieldErrors()) {
  265. Class<?> clazz = bindingResult.getFieldType(fe.getField());
  266. if (clazz != null && "java.util.Date".equals(clazz.getName())) {
  267. res.getError()
  268. .add(buildError(ErrorConstants.PARAM_PATTERN_ERROR, "日期格式错误",
  269. CopyrightFields.getFieldDesc(fe.getField()), AFTConstants.YYYYMMDDHHMMSS)
  270. .buildField(fe.getField()));
  271. } else {
  272. res.getError()
  273. .add(buildErrorByMsg(fe.getDefaultMessage(), CopyrightFields.getFieldDesc(fe.getField()))
  274. .buildField(fe.getField()));
  275. }
  276. }
  277. return true;
  278. }
  279. return false;
  280. }
  281. private Map<String, String> disposeStatus() {
  282. Map<String, String> status = new TreeMap<String, String>();
  283. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  284. for (CopyrightStatus p : CopyrightStatus.values()) {
  285. status.put(p.getCode().toString(), p.getDesc());
  286. status.remove(CopyrightStatus.OTHER.getCode().toString());
  287. }
  288. } else {
  289. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.CREATE.getCode())) {
  290. status.put(CopyrightStatus.CREATE.getCode().toString(), CopyrightStatus.CREATE.getDesc());
  291. }
  292. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.DELIVERD.getCode())) {
  293. status.put(CopyrightStatus.DELIVERD.getCode().toString(), CopyrightStatus.DELIVERD.getDesc());
  294. }
  295. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.SUBMIT.getCode())) {
  296. status.put(CopyrightStatus.SUBMIT.getCode().toString(), CopyrightStatus.SUBMIT.getDesc());
  297. }
  298. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.ACCEPT.getCode())) {
  299. status.put(CopyrightStatus.ACCEPT.getCode().toString(), CopyrightStatus.ACCEPT.getDesc());
  300. }
  301. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.AMEND.getCode())) {
  302. status.put(CopyrightStatus.AMEND.getCode().toString(), CopyrightStatus.AMEND.getDesc());
  303. }
  304. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.REJECT.getCode())) {
  305. status.put(CopyrightStatus.REJECT.getCode().toString(), CopyrightStatus.REJECT.getDesc());
  306. }
  307. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.AUTHORIZED.getCode())) {
  308. status.put(CopyrightStatus.AUTHORIZED.getCode().toString(), CopyrightStatus.AUTHORIZED.getDesc());
  309. }
  310. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.CALLBACK.getCode())) {
  311. status.put(CopyrightStatus.CALLBACK.getCode().toString(), CopyrightStatus.CALLBACK.getDesc());
  312. }
  313. }
  314. return status;
  315. }
  316. }