AdminCopyrightApiController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  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 = "/circulation", method = RequestMethod.POST)
  45. public Result circulation(@RequestParam(name = "ids[]", required = false) String[] ids, @Valid InputCopyright ic,
  46. BindingResult bindingResult, String recordTimeFormattedDate) {
  47. Result res = new Result();
  48. if (bindingResult.hasErrors()) {
  49. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  50. CopyrightFields.getFieldDesc(bindingResult.getFieldError().getField())));
  51. return res;
  52. }
  53. if (ids == null || ids.length < 1) {
  54. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
  55. return res;
  56. }
  57. if (null == ic.getStatus()) {
  58. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到流转状态", "流转状态"));
  59. return res;
  60. }
  61. if (StringUtils.isBlank(ic.getPrincipal())) {
  62. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到负责人", "负责人"));
  63. return res;
  64. }
  65. if (StringUtils.isBlank(recordTimeFormattedDate)) {
  66. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到记录流转时间", "记录流转时间"));
  67. return res;
  68. }
  69. if (CopyrightStatus.DELIVERD.getCode() != ic.getStatus()
  70. && CopyrightStatus.CIRCULATION.getCode() != ic.getStatus()
  71. && CopyrightStatus.SETTLEMENT.getCode() != ic.getStatus()) {
  72. res.getError().add(buildError(ErrorConstants.STATUS_ERROR, "仅派单、流转、结款可操作!"));
  73. return res;
  74. }
  75. CopyrightLog cl = new CopyrightLog();
  76. BeanUtils.copyProperties(ic, cl);
  77. res.setData(copyrightInfoService.batchCirculation(ids, recordTimeFormattedDate, cl));
  78. return res;
  79. }
  80. @RequestMapping(value = "/apply", method = RequestMethod.POST)
  81. public Result newApply(@Valid InputCopyright inputInfo, BindingResult bindingResult) {
  82. Result res = new Result();
  83. if (handleBindingError(res, bindingResult)) {
  84. return res;
  85. }
  86. if (!checkAdminLogin(res)) {
  87. return res;
  88. }
  89. if (StringUtils.isBlank(inputInfo.getUid())) {
  90. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
  91. return res;
  92. }
  93. if (StringUtils.isBlank(inputInfo.getSalesman())) {
  94. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到营销员", "营销员"));
  95. return res;
  96. }
  97. User curUser = userService.selectByPrimaryKey(inputInfo.getUid());
  98. if (!checkCertify(res, curUser)) {
  99. return res;
  100. }
  101. String salesman = inputInfo.getSalesman();
  102. CopyrightInfo ci = new CopyrightInfo();
  103. BeanUtils.copyProperties(inputInfo, ci);
  104. ci.setUid(curUser.getId());
  105. copyrightInfoService.saveCopyright(ci, salesman);
  106. res.setData(ci);
  107. return res;
  108. }
  109. @RequestMapping(value = "/modify", method = RequestMethod.POST)
  110. public Result modify(String id, @Valid InputCopyright inputInfo, BindingResult bindingResult) {
  111. Result res = new Result();
  112. if (handleBindingError(res, bindingResult)) {
  113. return res;
  114. }
  115. if (StringUtils.isBlank(id)) {
  116. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到软著", "软著申请id"));
  117. return res;
  118. }
  119. CopyrightInfo oci = copyrightInfoService.selectByPrimaryKey(id);
  120. if (oci == null) {
  121. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "找不到软著", "软著申请"));
  122. return res;
  123. }
  124. if (CopyrightStatus.CALLBACK.getCode() == oci.getStatus()) {
  125. res.getError().add(buildError(ErrorConstants.RECORD_CALLBACK, "当前记录已退单,无法修改!"));
  126. return res;
  127. }
  128. if (CopyrightStatus.SETTLEMENT.getCode() == oci.getStatus()) {
  129. res.getError().add(buildError(ErrorConstants.RECORD_SETTLEMENT, "当前记录已结款,无法修改!"));
  130. return res;
  131. }
  132. CopyrightInfo ci = new CopyrightInfo();
  133. CopyrightLog cl = new CopyrightLog();
  134. BeanUtils.copyProperties(oci, ci);
  135. BeanUtils.copyProperties(inputInfo, ci);
  136. BeanUtils.copyProperties(inputInfo, cl);
  137. ci.setId(oci.getId());
  138. ci.setUid(oci.getUid());
  139. if (CopyrightStatus.CIRCULATION.getCode() == ci.getStatus()) {
  140. ci.setStatus(CopyrightStatus.DELIVERD.getCode());
  141. }
  142. if (CopyrightStatus.SETTLEMENT.getCode() == ci.getStatus()) {
  143. ci.setStatus(CopyrightStatus.AUTHORIZED.getCode());
  144. }
  145. cl.setCid(oci.getId());
  146. cl.setOperator(TokenManager.getAdminId());
  147. copyrightInfoService.updateByPrimaryKeySelective(ci, cl);
  148. res.setData(1);
  149. return res;
  150. }
  151. @RequestMapping(value = "/upload", method = RequestMethod.POST)
  152. public Result upload(String id, String sign, HttpServletRequest req) {
  153. Result res = new Result();
  154. if (!checkAdminLogin(res)) {
  155. return res;
  156. }
  157. if (StringUtils.isEmpty(id)) {
  158. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  159. return res;
  160. }
  161. CopyrightInfo ci = copyrightInfoService.selectByPrimaryKey(id);
  162. if (ci == null) {
  163. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  164. return res;
  165. }
  166. if (CopyrightStatus.CALLBACK.getCode() == ci.getStatus()) {
  167. res.getError().add(buildError(ErrorConstants.RECORD_CALLBACK, "当前记录已退单,无法修改!"));
  168. return res;
  169. }
  170. if (CopyrightStatus.SETTLEMENT.getCode() == ci.getStatus()) {
  171. res.getError().add(buildError(ErrorConstants.RECORD_SETTLEMENT, "当前记录已结款,无法修改!"));
  172. return res;
  173. }
  174. AttachmentType attachmentType = AttachmentType.getField(sign);
  175. if (attachmentType == AttachmentType.COPYRIGHT_APPLY || attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  176. String filePath = handleFile(res, true, req, attachmentType.getCode(), ci.getUid(), ci.getId());
  177. if (attachmentType == AttachmentType.COPYRIGHT_APPLY) {
  178. ci.setApplicationUrl(filePath);
  179. } else if (attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  180. ci.setCertificateUrl(filePath);
  181. }
  182. copyrightInfoService.updateByPrimaryKey(ci);
  183. res.setData(filePath);
  184. } else {
  185. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  186. }
  187. return res;
  188. }
  189. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  190. public Result delete(@RequestParam(name = "id[]", required = false) String[] ids) {
  191. Result res = new Result();
  192. if (!checkAdminLogin(res)) {
  193. return res;
  194. }
  195. if (ids == null || ids.length < 1) {
  196. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
  197. } else {
  198. res.setData(copyrightInfoService.batchDeleteByPrimaryKey(Arrays.asList(ids)));
  199. }
  200. return res;
  201. }
  202. @RequestMapping(value = "/list", method = RequestMethod.GET)
  203. public Result list(String contractId, Integer province, String unitName, String uid, String copyrightName, String status, String pageNo,
  204. String pageSize, @RequestParam(name = "createTime[]", required = false) String[] createTime,
  205. @RequestParam(name = "acceptTime[]", required = false) String[] acceptTime,
  206. @RequestParam(name = "authTime[]", required = false) String[] authTime) {
  207. Result res = new Result();
  208. if (!checkAdminLogin(res)) {
  209. return res;
  210. }
  211. res.setData(copyrightInfoService.listMyCopyrightInfo(contractId, province, unitName, copyrightName,
  212. CopyrightStatus.getStatus(status), createTime, acceptTime, authTime, getPageNo(pageNo),
  213. getPageSize(pageSize), uid));
  214. return res;
  215. }
  216. @RequestMapping(value = "/detail", method = RequestMethod.GET)
  217. public Result detail(String id) {
  218. Result res = new Result();
  219. if (!checkAdminLogin(res)) {
  220. return res;
  221. }
  222. if (StringUtils.isBlank(id)) {
  223. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "公司"));
  224. } else {
  225. res.setData(copyrightInfoService.findByPrimaryKey(id));
  226. }
  227. return res;
  228. }
  229. @RequestMapping(value = "/logs", method = RequestMethod.GET)
  230. public Result logs(String id) {
  231. Result res = new Result();
  232. if (!checkAdminLogin(res)) {
  233. return res;
  234. }
  235. if (StringUtils.isBlank(id)) {
  236. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "软著申请id"));
  237. } else {
  238. res.setData(copyrightInfoService.findLogsByPrimaryKey(id));
  239. }
  240. return res;
  241. }
  242. @RequestMapping(value = "/download", method = RequestMethod.GET)
  243. public Result download(String id, String sign, HttpServletResponse response) {
  244. Result res = new Result();
  245. if (!checkAdminLogin(res)) {
  246. return res;
  247. }
  248. if (StringUtils.isEmpty(id)) {
  249. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  250. return res;
  251. }
  252. CopyrightInfoDetail ci = copyrightInfoService.findByPrimaryKey(id);
  253. if (ci == null) {
  254. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "软著id"));
  255. return res;
  256. }
  257. AttachmentType attachmentType = AttachmentType.getField(sign);
  258. if (attachmentType == AttachmentType.COPYRIGHT_APPLY || attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  259. if (attachmentType == AttachmentType.COPYRIGHT_APPLY) {
  260. downloadFile(response, ci.getApplicationUrlDownloadFileName(), ci.getApplicationUrl());
  261. } else if (attachmentType == AttachmentType.COPYRIGHT_AUTH) {
  262. downloadFile(response, ci.getCertificateUrlDownloadFileName(), ci.getCertificateUrl());
  263. }
  264. } else {
  265. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  266. }
  267. return res;
  268. }
  269. @RequestMapping(value = "/status", method = RequestMethod.GET)
  270. public Result status() {
  271. Result res = new Result();
  272. if (!checkAdminLogin(res)) {
  273. return res;
  274. }
  275. res.setData(disposeStatus());
  276. return res;
  277. }
  278. /**
  279. * 软著咨询师下拉
  280. *
  281. * @return
  282. */
  283. @RequestMapping(value = "/getConsultant", method = RequestMethod.GET)
  284. public Result getConsultant() {
  285. Result res = new Result();
  286. List<Admin> list = adminService.selectCopyrightConsultant();
  287. Map<String, String> map = new TreeMap<String, String>();
  288. for (Admin o : list) {
  289. map.put(o.getId(), o.getName());
  290. }
  291. res.setData(map);
  292. return res;
  293. }
  294. /**
  295. * 软著负责人下拉
  296. *
  297. * @return
  298. */
  299. @RequestMapping(value = "/getPrincipal", method = RequestMethod.GET)
  300. public Result getPrincipal() {
  301. Result res = new Result();
  302. List<Admin> list = adminService.selectCopyrightPrincipal();
  303. Map<String, String> map = new TreeMap<String, String>();
  304. for (Admin o : list) {
  305. map.put(o.getId(), o.getName()+ " " + (null == o.getPosition() ? "" : o.getPosition()));
  306. }
  307. res.setData(map);
  308. return res;
  309. }
  310. private boolean handleBindingError(Result res, BindingResult bindingResult) {
  311. if (bindingResult.hasErrors()) {
  312. for (FieldError fe : bindingResult.getFieldErrors()) {
  313. Class<?> clazz = bindingResult.getFieldType(fe.getField());
  314. if (clazz != null && "java.util.Date".equals(clazz.getName())) {
  315. res.getError()
  316. .add(buildError(ErrorConstants.PARAM_PATTERN_ERROR, "日期格式错误",
  317. CopyrightFields.getFieldDesc(fe.getField()), AFTConstants.YYYYMMDDHHMMSS)
  318. .field(fe.getField()));
  319. } else {
  320. res.getError()
  321. .add(buildErrorByMsg(fe.getDefaultMessage(), CopyrightFields.getFieldDesc(fe.getField()))
  322. .field(fe.getField()));
  323. }
  324. }
  325. return true;
  326. }
  327. return false;
  328. }
  329. private Map<String, String> disposeStatus() {
  330. Map<String, String> status = new TreeMap<String, String>();
  331. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  332. for (CopyrightStatus p : CopyrightStatus.values()) {
  333. status.put(p.getCode().toString(), p.getDesc());
  334. status.remove(CopyrightStatus.OTHER.getCode().toString());
  335. }
  336. } else {
  337. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.CREATE.getCode())) {
  338. status.put(CopyrightStatus.CREATE.getCode().toString(), CopyrightStatus.CREATE.getDesc());
  339. }
  340. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.SIGN.getCode())) {
  341. status.put(CopyrightStatus.SIGN.getCode().toString(), CopyrightStatus.SIGN.getDesc());
  342. }
  343. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.DELIVERD.getCode())) {
  344. status.put(CopyrightStatus.DELIVERD.getCode().toString(), CopyrightStatus.DELIVERD.getDesc());
  345. }
  346. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.SUBMIT.getCode())) {
  347. status.put(CopyrightStatus.SUBMIT.getCode().toString(), CopyrightStatus.SUBMIT.getDesc());
  348. }
  349. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.CIRCULATION.getCode())) {
  350. status.put(CopyrightStatus.CIRCULATION.getCode().toString(), CopyrightStatus.CIRCULATION.getDesc());
  351. }
  352. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.ACCEPT.getCode())) {
  353. status.put(CopyrightStatus.ACCEPT.getCode().toString(), CopyrightStatus.ACCEPT.getDesc());
  354. }
  355. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.AMEND.getCode())) {
  356. status.put(CopyrightStatus.AMEND.getCode().toString(), CopyrightStatus.AMEND.getDesc());
  357. }
  358. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.REJECT.getCode())) {
  359. status.put(CopyrightStatus.REJECT.getCode().toString(), CopyrightStatus.REJECT.getDesc());
  360. }
  361. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.AUTHORIZED.getCode())) {
  362. status.put(CopyrightStatus.AUTHORIZED.getCode().toString(), CopyrightStatus.AUTHORIZED.getDesc());
  363. }
  364. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.SETTLEMENT.getCode())) {
  365. status.put(CopyrightStatus.SETTLEMENT.getCode().toString(), CopyrightStatus.SETTLEMENT.getDesc());
  366. }
  367. if (TokenManager.hasPermission("CopyrightStatus" + CopyrightStatus.CALLBACK.getCode())) {
  368. status.put(CopyrightStatus.CALLBACK.getCode().toString(), CopyrightStatus.CALLBACK.getDesc());
  369. }
  370. }
  371. return status;
  372. }
  373. }