|
@@ -2,27 +2,33 @@ package com.jeesite.modules.bjflapi.report;
|
|
|
|
|
|
import com.jeesite.common.constant.Constants;
|
|
|
import com.jeesite.common.lang.StringUtils;
|
|
|
+import com.jeesite.modules.bjflapi.AbstractController;
|
|
|
import com.jeesite.modules.report.entity.ResearchBriefReport;
|
|
|
import com.jeesite.modules.report.entity.WebsiteUserOrder;
|
|
|
import com.jeesite.modules.report.entity.WebsiteUserOrderDown;
|
|
|
import com.jeesite.modules.report.service.ResearchBriefReportService;
|
|
|
import com.jeesite.modules.report.service.WebsiteUserOrderDownService;
|
|
|
import com.jeesite.modules.report.service.WebsiteUserOrderService;
|
|
|
+import com.jeesite.modules.sys.annotation.WebsiteAuth;
|
|
|
import com.jeesite.modules.sys.utils.R;
|
|
|
import com.jeesite.modules.sys.utils.RedisUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping(value = "${adminPath}/api/report/websiteUserOrder")
|
|
|
@Api(value = "WebsiteUserOrderControllerApi", tags = "网站用户订单接口")
|
|
|
-public class WebsiteUserOrderControllerApi {
|
|
|
+public class WebsiteUserOrderControllerApi extends AbstractController {
|
|
|
@Resource
|
|
|
private WebsiteUserOrderService websiteUserOrderService;
|
|
|
@Resource
|
|
@@ -44,7 +50,7 @@ public class WebsiteUserOrderControllerApi {
|
|
|
}
|
|
|
//判断简报是否需要收费
|
|
|
ResearchBriefReport researchBriefReport = researchBriefReportService.get(reportId);
|
|
|
- if (researchBriefReport == null ) {
|
|
|
+ if (researchBriefReport == null) {
|
|
|
return R.error("简报为空");
|
|
|
}
|
|
|
if (Constants.enableType.NO.equals(researchBriefReport.getUseDownPay())) {
|
|
@@ -61,13 +67,11 @@ public class WebsiteUserOrderControllerApi {
|
|
|
WebsiteUserOrder orderWhere = new WebsiteUserOrder();
|
|
|
orderWhere.setWebsiteUserId(uid);
|
|
|
orderWhere.setResearchBriefReportId(reportId);
|
|
|
+ orderWhere.setPayStatus(Constants.orderPayStatus.PAY_SUCCESS);
|
|
|
WebsiteUserOrder oldOrder = websiteUserOrderService.get(orderWhere);
|
|
|
if (oldOrder == null) {
|
|
|
return R.error(5002, "用户未支付");
|
|
|
}
|
|
|
- if (!Constants.orderPayStatus.PAY_SUCCESS.equals(orderWhere.getPayStatus())) {
|
|
|
- return R.error("订单未付款");
|
|
|
- }
|
|
|
WebsiteUserOrderDown downWhere = new WebsiteUserOrderDown();
|
|
|
downWhere.setWebsiteUserId(uid);
|
|
|
downWhere.setWebsiteUserOrderId(oldOrder.getId());
|
|
@@ -84,9 +88,58 @@ public class WebsiteUserOrderControllerApi {
|
|
|
return R.error("下载类型不存在");
|
|
|
}
|
|
|
if (down != null) {
|
|
|
+ //保存下载记录
|
|
|
down.setFileName(fileName);
|
|
|
websiteUserOrderDownService.save(down);
|
|
|
}
|
|
|
return R.ok(fileName);
|
|
|
}
|
|
|
+
|
|
|
+ @WebsiteAuth
|
|
|
+ @PostMapping(value = "payOrder")
|
|
|
+ public Map<String, Object> payOrder(WebsiteUserOrder websiteUserOrder) throws Exception {
|
|
|
+ String userId = getUserIdByRequest();
|
|
|
+ String reportId = websiteUserOrder.getResearchBriefReportId();
|
|
|
+ if (StringUtils.isEmpty(reportId)) {
|
|
|
+ return R.error("简报为空");
|
|
|
+ }
|
|
|
+ String payMethod = websiteUserOrder.getPayMethod();
|
|
|
+ if (StringUtils.isEmpty(payMethod)) {
|
|
|
+ return R.error("支付方式为空");
|
|
|
+ }
|
|
|
+ if (!Constants.orderPayMethod.ZFB.equals(payMethod) && !Constants.orderPayMethod.WX.equals(payMethod)) {
|
|
|
+ return R.error("支付方式值无效");
|
|
|
+ }
|
|
|
+ //判断简报是否需要收费
|
|
|
+ ResearchBriefReport researchBriefReport = researchBriefReportService.get(reportId);
|
|
|
+ if (researchBriefReport == null) {
|
|
|
+ return R.error("简报为空");
|
|
|
+ }
|
|
|
+ if (Constants.enableType.NO.equals(researchBriefReport.getUseDownPay())) {
|
|
|
+ return R.error("简报不需要收费");
|
|
|
+ }
|
|
|
+ if (!websiteUserOrder.getPayPrice().equals(researchBriefReport.getUseDownPayPrice())) {
|
|
|
+ return R.error("支付金额与简报收费金额不一致");
|
|
|
+ }
|
|
|
+ WebsiteUserOrder orderWhere = new WebsiteUserOrder();
|
|
|
+ orderWhere.setWebsiteUserId(userId);
|
|
|
+ orderWhere.setResearchBriefReportId(reportId);
|
|
|
+ List<WebsiteUserOrder> orders = websiteUserOrderService.findList(orderWhere);
|
|
|
+ if (CollectionUtils.isNotEmpty(orders)) {
|
|
|
+ List<WebsiteUserOrder> filterOrders = orders.stream().filter(o -> Constants.orderPayStatus.WAIT.equals(o.getPayStatus()) || Constants.orderPayStatus.PAY_SUCCESS.equals(o.getPayStatus())).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(filterOrders)) {
|
|
|
+ return R.error("简报存在支付订单,无法重复支付");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return websiteUserOrderService.saveAndPay(userId, payMethod, researchBriefReport);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 支付宝的异步通知,只要返回 success 支付宝便不再通知
|
|
|
+ */
|
|
|
+ @PostMapping(value = "/pay/asyncNotify")
|
|
|
+ public String payAsyncNotify(@RequestParam Map<String, String> paramMap) {
|
|
|
+ return websiteUserOrderService.payAsyncNotify(paramMap);
|
|
|
+ }
|
|
|
+
|
|
|
}
|