From b57a8383d21703689214d701961018b626268532 Mon Sep 17 00:00:00 2001 From: "kuang.yife" Date: Sun, 28 May 2023 23:56:29 +0800 Subject: [PATCH] =?UTF-8?q?pc=E5=8F=91=E5=8D=95=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/OrderMasterController.java | 99 ++- .../web/controller/pay/AlipayController.java | 71 +++ .../templates/order/master-qrcode.html | 40 ++ .../resources/templates/order/pc-master.html | 567 ++++++++++++++++++ .../com/ghy/order/domain/OrderMaster.java | 16 + 5 files changed, 760 insertions(+), 33 deletions(-) create mode 100644 ghy-admin/src/main/resources/templates/order/master-qrcode.html create mode 100644 ghy-admin/src/main/resources/templates/order/pc-master.html diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java index 1e67e336..17f9f97f 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -12,8 +12,10 @@ import com.ghy.common.enums.ImgType; import com.ghy.common.utils.ExceptionUtil; import com.ghy.common.utils.StringUtils; import com.ghy.common.utils.poi.ExcelUtil; +import com.ghy.customer.domain.Customer; import com.ghy.customer.domain.CustomerAddress; import com.ghy.customer.service.CustomerAddressService; +import com.ghy.customer.service.CustomerService; import com.ghy.goods.domain.Goods; import com.ghy.goods.domain.GoodsArea; import com.ghy.goods.domain.GoodsImgs; @@ -50,6 +52,7 @@ import com.ghy.worker.service.WorkerService; import com.huifu.adapay.core.exception.BaseAdaPayException; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.annotation.Validated; @@ -57,9 +60,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -91,6 +92,10 @@ public class OrderMasterController extends BaseController { private GoodsService goodsService; @Resource private GoodsImgsService goodsImgsService; + + @Autowired + private CustomerService customerService; + @Resource private FinancialMasterService financialMasterService; @Resource @@ -112,6 +117,20 @@ public class OrderMasterController extends BaseController { return prefix; } + /** + * 修改详细订单 + */ + @GetMapping("/payQrcode/{orderId}") + public String payQrcode(@PathVariable("orderId") Long orderId, ModelMap mmap) { + mmap.put("orderId", orderId); + return "/order/master-qrcode"; + } + + @GetMapping("/pc") + public String orderPcMaster() { + return "order/pc-master"; + } + @PostMapping("/app/list") @ResponseBody public TableDataInfo appList(@RequestBody OrderMaster orderMaster) { @@ -588,40 +607,54 @@ public class OrderMasterController extends BaseController { @PostMapping("/list") @ResponseBody public TableDataInfo list(OrderMaster orderMaster) { - TableDataInfo rspData = new TableDataInfo(); startPage(); - List orderMasterResponseVos = new ArrayList<>(); + if (this.getSysUser().getDept().getParentId() != 101) { + orderMaster.setDeptId(this.getSysUser().getDept().getParentId()); + } List orderMasterList = orderMasterService.selectOrderMasterList(orderMaster); - for (OrderMaster master : orderMasterList) { - OrderMasterResponseVo orderMasterResponseVo = new OrderMasterResponseVo(); - // 将公共属性复制过去 - BeanUtils.copyProperties(master, orderMasterResponseVo); - // 师傅信息 - if (StringUtils.isNotNull(master.getWorkerId())) { - Worker worker = workerService.selectById(master.getWorkerId()); - orderMasterResponseVo.setWorkerName(worker.getName()); - } - // 消费者信息 - CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId()); - orderMasterResponseVo.setCustomerName(customerAddress.getName()); + Set orderMasterIds = orderMasterList.stream().map(OrderMaster::getId).collect(Collectors.toSet()); - orderMasterResponseVos.add(orderMasterResponseVo); + Set customerIds = orderMasterList.stream().map(OrderMaster::getCustomerId).collect(Collectors.toSet()); + Map customerMap = customerService.selectByIds(customerIds) + .stream().collect(Collectors.toMap(Customer::getCustomerId, x -> x, (x, y) -> y)); + + List financialMasters = financialMasterService.selectByOrderMasterIds(orderMasterIds); + Map financialMasterMap = financialMasters + .stream().collect(Collectors.toMap(FinancialMaster::getOrderMasterId, x -> x, (x, y) -> y)); + + Set goodsIds = orderMasterList.stream().map(OrderMaster::getGoodsId).collect(Collectors.toSet()); + List goods = goodsService.selectByIds(goodsIds); + Map goodsMap = goods.stream().collect(Collectors.toMap(Goods::getGoodsId, x -> x, (x, y) -> y)); + + Set workerIds = orderMasterList.stream().map(OrderMaster::getWorkerId).collect(Collectors.toSet()); + workerIds.addAll(goods.stream().map(Goods::getWorkerId).collect(Collectors.toSet())); + Map workerMap = workerService.selectByIds(workerIds) + .stream().collect(Collectors.toMap(Worker::getWorkerId, x -> x, (x, y) -> y)); + + for (OrderMaster master : orderMasterList) { + Customer customer = customerMap.get(master.getCustomerId()); + master.setWorker(workerMap.get(master.getWorkerId())); + if (customer != null) { + master.setCustomerName(customer.getName()); + master.setCustomerPhone(customer.getPhone()); + } + FinancialMaster fm = financialMasterMap.get(master.getId()); + if (fm != null) { + master.setFinancialMasterMoney(fm.getPayMoney()); + } + Goods good = goodsMap.get(master.getGoodsId()); + if (good != null) { + master.setGoods(good); + } + // 地址信息 + CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId()); + if (customerAddress != null) { + master.setAddressName(customerAddress.getName()); + master.setAddressPhone(customerAddress.getPhone()); + master.setAddress(customerAddress.getAddress()); + } } - // 存在数据在进行数据查询处理。 - PageDomain pageDomain = TableSupport.buildPageRequest(); - if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) { - rspData.setRows(orderMasterResponseVos); - rspData.setTotal(orderMasterResponseVos.size()); - return rspData; - } - int pageNum = (pageDomain.getPageNum() - 1) * 10; - int pageSize = pageDomain.getPageNum() * 10; - if (pageSize > orderMasterResponseVos.size()) { - pageSize = orderMasterResponseVos.size(); - } - rspData.setRows(orderMasterResponseVos.subList(pageNum, pageSize)); - rspData.setTotal(orderMasterResponseVos.size()); - return rspData; + return getDataTable(orderMasterList); } @Log(title = "主订单管理", businessType = BusinessType.EXPORT) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java index f9e5e088..bb95953c 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java @@ -75,6 +75,77 @@ public class AlipayController extends BaseController { return AjaxResult.success(map); } + @PostMapping("/addMasterQr") + public AjaxResult addMasterQrPay(@RequestBody Long orderId) { + BigDecimal payMoney = BigDecimal.ZERO; + OrderMaster orderMaster = orderMasterService.selectById(orderId); + if (orderMaster == null) { + return AjaxResult.error("主订单不存在!"); + } + // 查询主单是否有未支付的付款单 + FinancialMaster fm = financialMasterService.selectByOrderMasterId(orderMaster.getId()); + if (fm == null) { + return AjaxResult.error("财务单不存在!"); + } + // 主单是否付款 没付款的话一起付 + boolean fmPaid = Objects.equals(PayStatus.WAIT_PAY.getCode(), fm.getPayStatus()); + if (fmPaid) { + payMoney = payMoney.add(fm.getPayMoney()); + } + + // 查询关联的加价单 + FinancialChangeRecord financialChangeRecord = null; +// FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(orderDetailId); +// if (financialChangeRecord != null) { +// payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); +// } +// +// if (BigDecimal.ZERO.compareTo(payMoney) > -1) { +// return AjaxResult.error("不需要支付"); +// } + + // 付款 + PayParam payParam; + if (financialChangeRecord == null) { + payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + System.currentTimeMillis(), + payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), + "订单支付", "叮咚到家服务"); + } else { + payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + financialChangeRecord.getId() + "_" + System.currentTimeMillis(), + payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), + "加价付款", "叮咚到家服务"); + } + + JSONObject response; + try { + response = adapayService.alipayQrPay(orderMaster.getDeptId(), payParam, null, null, null); + } catch (BaseAdaPayException e) { + logger.error("创建支付失败: " + e.getMessage(), e); + return AjaxResult.error("网络不佳 请稍后再试"); + } + boolean status = AdapayStatusEnum.succeeded.code.equals(response.getString("status")); + if (!status) { + logger.error("创建支付失败: {}", response.toJSONString()); + return AjaxResult.error("网络不佳 请稍后再试"); + } + // 支付二维码创建成功 保存一下paymentId + String paymentId = response.getString("id"); + if (fmPaid) { + FinancialMaster fm2update = new FinancialMaster(); + fm2update.setId(fm.getId()); + fm2update.setPaymentId(paymentId); + fm2update.setPayType(PayTypeEnum.ALIPAY_QR.getCode()); + financialMasterService.updateFinancialMaster(fm2update); + } + if (financialChangeRecord != null) { + FinancialChangeRecord fcr2update = new FinancialChangeRecord(); + fcr2update.setId(financialChangeRecord.getId()); + fcr2update.setPaymentId(paymentId); + financialChangeRecordService.update(fcr2update); + } + return AjaxResult.success(response); + } + @PostMapping("/addQr") public AjaxResult addQrPay(@RequestBody Long orderDetailId) { BigDecimal payMoney = BigDecimal.ZERO; diff --git a/ghy-admin/src/main/resources/templates/order/master-qrcode.html b/ghy-admin/src/main/resources/templates/order/master-qrcode.html new file mode 100644 index 00000000..2f689b66 --- /dev/null +++ b/ghy-admin/src/main/resources/templates/order/master-qrcode.html @@ -0,0 +1,40 @@ + + + + + + + + +
+ + + + + + + diff --git a/ghy-admin/src/main/resources/templates/order/pc-master.html b/ghy-admin/src/main/resources/templates/order/pc-master.html new file mode 100644 index 00000000..1b849590 --- /dev/null +++ b/ghy-admin/src/main/resources/templates/order/pc-master.html @@ -0,0 +1,567 @@ + + + + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ 区域筛选: +
+ + + + +
+
+
+ 创建时间: +
+ + +
+ 至 +
+ + +
+
+
+ 服务时间: +
+ + +
+ 至 +
+ + +
+
+
+ 完成时间: +
+ + +
+ 至 +
+ + +
+
+
+ 类别筛选: +
+ + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + +
+
+ + + + +
+
+ + +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java index 10131a82..d611cfbf 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java @@ -6,11 +6,13 @@ import com.ghy.common.core.domain.BaseEntity; import com.ghy.common.enums.OrderStatus; import com.ghy.common.enums.PayStatus; import com.ghy.common.enums.PayTypeEnum; +import com.ghy.goods.domain.Goods; import com.ghy.payment.domain.FinancialMaster; import com.ghy.worker.domain.Worker; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -78,6 +80,10 @@ public class OrderMaster extends BaseEntity { private Worker worker; + private String customerName; + + private String customerPhone; + private FinancialMaster financialMaster; private OrderGoods orderGoods; @@ -114,6 +120,16 @@ public class OrderMaster extends BaseEntity { private List exceptOrderMasterIds; + private BigDecimal financialMasterMoney; + + private Goods goods; + + private String addressPhone; + + private String addressName; + + private String address; + /** * 是否超时 1=是 0=否 */