PortalOrderApiController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. package com.goafanti.portal.controller;
  2. import javax.annotation.Resource;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import javax.validation.Valid;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.springframework.beans.BeanUtils;
  8. import org.springframework.validation.BindingResult;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import com.goafanti.achievement.bo.InputAchievementOrder;
  13. import com.goafanti.achievement.service.AchievementOrderLogService;
  14. import com.goafanti.achievement.service.AchievementOrderService;
  15. import com.goafanti.achievement.service.AchievementService;
  16. import com.goafanti.common.bo.Result;
  17. import com.goafanti.common.constant.ErrorConstants;
  18. import com.goafanti.common.controller.CertifyApiController;
  19. import com.goafanti.common.enums.AchievementAuditStatus;
  20. import com.goafanti.common.enums.AchievementOrderFields;
  21. import com.goafanti.common.enums.AchievementOrderStatus;
  22. import com.goafanti.common.enums.AchievementReleaseStatus;
  23. import com.goafanti.common.enums.AttachmentType;
  24. import com.goafanti.common.enums.DeleteStatus;
  25. import com.goafanti.common.enums.DemandAuditStatus;
  26. import com.goafanti.common.enums.DemandOrderFields;
  27. import com.goafanti.common.enums.DemandOrderStatus;
  28. import com.goafanti.common.enums.DemandReleaseStatus;
  29. import com.goafanti.common.model.Achievement;
  30. import com.goafanti.common.model.AchievementOrder;
  31. import com.goafanti.common.model.AchievementOrderLog;
  32. import com.goafanti.common.model.Demand;
  33. import com.goafanti.common.model.DemandOrder;
  34. import com.goafanti.common.model.DemandOrderLog;
  35. import com.goafanti.core.shiro.token.TokenManager;
  36. import com.goafanti.demand.bo.InputDemandOrder;
  37. import com.goafanti.demand.service.DemandOrderLogService;
  38. import com.goafanti.demand.service.DemandOrderService;
  39. import com.goafanti.demand.service.DemandService;
  40. @RestController
  41. @RequestMapping(value = "/api/user/portal/order")
  42. public class PortalOrderApiController extends CertifyApiController {
  43. @Resource
  44. private DemandOrderService demandOrderService;
  45. @Resource
  46. private DemandService demandService;
  47. @Resource
  48. private DemandOrderLogService demandOrderLogService;
  49. @Resource
  50. private AchievementService achievementService;
  51. @Resource
  52. private AchievementOrderLogService achievementOrderLogService;
  53. @Resource
  54. private AchievementOrderService achievementOrderService;
  55. /**
  56. * 科技成果Log
  57. */
  58. @RequestMapping(value = "/achievementOrderLog", method =RequestMethod.GET)
  59. public Result achievementOrderLog(String achievementOrderId){
  60. Result res = new Result();
  61. if (StringUtils.isEmpty(achievementOrderId)) {
  62. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "科技成果订单ID"));
  63. return res;
  64. }
  65. AchievementOrder order = achievementOrderService.selectByPrimaryKey(achievementOrderId);
  66. if (null != order && TokenManager.getUserId().equals(order.getUid())) {
  67. res.setData(achievementOrderLogService.selectAchievementOrderLogByAchievementOrderId(achievementOrderId));
  68. } else {
  69. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果订单ID"));
  70. }
  71. return res;
  72. }
  73. /**
  74. * 关闭科技成果订单
  75. */
  76. @RequestMapping(value = "/achievementShutdown", method = RequestMethod.POST)
  77. public Result achevementShutdown(String id){
  78. Result res = new Result();
  79. if (StringUtils.isBlank(id)) {
  80. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到订单ID", "订单ID"));
  81. return res;
  82. }
  83. AchievementOrder order = achievementOrderService.selectByPrimaryKey(id);
  84. if (null == order) {
  85. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "订单ID"));
  86. return res;
  87. }
  88. if (!AchievementOrderStatus.CREATE.getCode().equals(order.getStatus())) {
  89. res.getError().add(buildError("", "当前状态无法撤销!"));
  90. return res;
  91. }
  92. res.setData(achievementOrderService.updateShutdownByUser(order));
  93. return res;
  94. }
  95. /**
  96. * 科技成果订单列表
  97. */
  98. @RequestMapping(value = "/achievementOrderList", method = RequestMethod.GET)
  99. public Result achievementOrderList(Integer status, String pageNo, String pageSize) {
  100. Result res = new Result();
  101. Integer pNo = 1;
  102. Integer pSize = 10;
  103. if (StringUtils.isNumeric(pageSize)) {
  104. pSize = Integer.parseInt(pageSize);
  105. }
  106. if (StringUtils.isNumeric(pageNo)) {
  107. pNo = Integer.parseInt(pageNo);
  108. }
  109. res.setData(achievementOrderService.listOrderList(status, pNo, pSize));
  110. return res;
  111. }
  112. /**
  113. * 科技成果"我要购买"
  114. */
  115. @RequestMapping(value = "/orderAchievement", method = RequestMethod.POST)
  116. public Result orderAchievement(@Valid InputAchievementOrder order, BindingResult bindingResult) {
  117. Result res = new Result();
  118. if (bindingResult.hasErrors()) {
  119. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  120. AchievementOrderFields.getFieldDesc(bindingResult.getFieldError().getField())));
  121. return res;
  122. }
  123. String achievementId = order.getAchievementId();
  124. if (StringUtils.isBlank(achievementId)) {
  125. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到科技成果ID", "科技成果ID"));
  126. return res;
  127. }
  128. AchievementOrder ao = achievementOrderService
  129. .selectAchievementOrderByUidAndAchievementId(TokenManager.getUserId(), achievementId);
  130. if (null != ao) {
  131. res.getError().add(buildError("", "当前科技成果已购买!"));
  132. return res;
  133. }
  134. Achievement a = achievementService.selectByPrimaryKey(achievementId);
  135. if (null == a || !AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
  136. || !AchievementReleaseStatus.RELEASED.getCode().equals(a.getReleaseStatus())
  137. || !DeleteStatus.UNDELETE.getCode().equals(a.getDeletedSign())) {
  138. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
  139. return res;
  140. }
  141. AchievementOrder achievementOrder = new AchievementOrder();
  142. AchievementOrderLog aol = new AchievementOrderLog();
  143. BeanUtils.copyProperties(order, achievementOrder);
  144. BeanUtils.copyProperties(order, aol);
  145. achievementOrderService.saveAchievementOrder(achievementOrder, aol);
  146. return res;
  147. }
  148. /**
  149. * 科技需求订单log
  150. */
  151. @RequestMapping(value = "/demandOrderLog", method = RequestMethod.GET)
  152. public Result demandOrderLog(String demandOrderId) {
  153. Result res = new Result();
  154. if (StringUtils.isEmpty(demandOrderId)) {
  155. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "科技需求订单ID"));
  156. return res;
  157. }
  158. DemandOrder order = demandOrderService.selectByPrimaryKey(demandOrderId);
  159. if (null != order && TokenManager.getUserId().equals(order.getUid())) {
  160. res.setData(demandOrderLogService.selectDemandOrderLogByDemandOrderId(demandOrderId));
  161. } else {
  162. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技需求订单ID"));
  163. }
  164. return res;
  165. }
  166. /**
  167. * 科技需求订单列表
  168. */
  169. @RequestMapping(value = "/demandOrderList", method = RequestMethod.GET)
  170. public Result demandOrderList(Integer status, String pageNo, String pageSize) {
  171. Result res = new Result();
  172. Integer pNo = 1;
  173. Integer pSize = 10;
  174. if (StringUtils.isNumeric(pageSize)) {
  175. pSize = Integer.parseInt(pageSize);
  176. }
  177. if (StringUtils.isNumeric(pageNo)) {
  178. pNo = Integer.parseInt(pageNo);
  179. }
  180. res.setData(demandOrderService.listOrderList(status, pNo, pSize));
  181. return res;
  182. }
  183. /**
  184. * 附件上传
  185. */
  186. @RequestMapping(value = "/demandUpload", method = RequestMethod.POST)
  187. public Result uploadTextFile(HttpServletRequest req, String sign) {
  188. Result res = new Result();
  189. AttachmentType attachmentType = AttachmentType.getField(sign);
  190. if (attachmentType == AttachmentType.DEMAND_ORDER_FILE) {
  191. res.setData(handleFiles(res, "/demandOrder/", false, req, sign, TokenManager.getUserId()));
  192. } else {
  193. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  194. }
  195. return res;
  196. }
  197. /**
  198. * 下载文件
  199. */
  200. @RequestMapping(value = "/demandDownload", method = RequestMethod.GET)
  201. public Result download(HttpServletResponse response, String id) {
  202. Result res = new Result();
  203. if (StringUtils.isEmpty(id)) {
  204. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技需求订单ID"));
  205. return res;
  206. }
  207. DemandOrder order = demandOrderService.selectByPrimaryKey(id);
  208. if (null == order) {
  209. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技需求订单ID"));
  210. return res;
  211. }
  212. downloadUnPrivateFile(response, order.getEnclosureDownloadFileName(), order.getEnclosureUrl());
  213. return res;
  214. }
  215. /**
  216. * 科技需求"我要接单"
  217. */
  218. @RequestMapping(value = "/orderDemand", method = RequestMethod.POST)
  219. public Result orderDemand(@Valid InputDemandOrder inputDemandOrder, BindingResult bindingResult) {
  220. Result res = new Result();
  221. if (bindingResult.hasErrors()) {
  222. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  223. DemandOrderFields.getFieldDesc(bindingResult.getFieldError().getField())));
  224. return res;
  225. }
  226. String demandId = inputDemandOrder.getDemandId();
  227. if (StringUtils.isBlank(demandId)) {
  228. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求ID", "需求ID"));
  229. return res;
  230. }
  231. DemandOrder demandOrder = demandOrderService.selectDemandOrderByUidAndDemandId(TokenManager.getUserId(),
  232. demandId);
  233. if (null != demandOrder) {
  234. res.getError().add(buildError("", "当前科技需求已接单!"));
  235. return res;
  236. }
  237. Demand d = demandService.selectByPrimaryKey(demandId);
  238. if (null == d || d.getDeletedSign().equals(DeleteStatus.DELETED.getCode())
  239. || !d.getAuditStatus().equals(DemandAuditStatus.AUDITED.getCode())
  240. || !d.getReleaseStatus().equals(DemandReleaseStatus.RELEASED.getCode())) {
  241. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技需求ID"));
  242. return res;
  243. }
  244. DemandOrder order = new DemandOrder();
  245. DemandOrderLog dol = new DemandOrderLog();
  246. BeanUtils.copyProperties(inputDemandOrder, order);
  247. BeanUtils.copyProperties(inputDemandOrder, dol);
  248. demandOrderService.saveDemandOrder(order, dol);
  249. return res;
  250. }
  251. /**
  252. * 关闭科技需求订单
  253. */
  254. @RequestMapping(value = "/demandShutdown", method = RequestMethod.POST)
  255. public Result shutdown(String id) {
  256. Result res = new Result();
  257. if (StringUtils.isBlank(id)) {
  258. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到订单ID", "订单ID"));
  259. return res;
  260. }
  261. DemandOrder order = demandOrderService.selectByPrimaryKey(id);
  262. if (null == order) {
  263. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "订单ID"));
  264. return res;
  265. }
  266. if (!DemandOrderStatus.CREATE.getCode().equals(order.getStatus())) {
  267. res.getError().add(buildError("", "当前状态无法撤销!"));
  268. return res;
  269. }
  270. res.setData(demandOrderService.updateShutdownByUser(order));
  271. return res;
  272. }
  273. }