From 16b4303398d66c6645089f47da633c5ad3a51cde Mon Sep 17 00:00:00 2001 From: huliyong <2783385703@qq.com> Date: Tue, 16 Sep 2025 21:24:44 +0800 Subject: [PATCH] 1 --- .../modules/apiService/impl/OrderServiceImpl.java | 112 +++++++++++++++------ 1 file changed, 80 insertions(+), 32 deletions(-) diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java index 7860700..f49da85 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java @@ -540,10 +540,13 @@ public class OrderServiceImpl implements OrderService { } if("0".equals(order.getPayType())){ order.setStatus(5); - //修复:试工费用应该支付给求职者,而不是企业 + //先付模式:企业已支付,现在确认试工通过,需要将费用转给求职者 try { - EmployResume resume = employResumeService.getById(order.getResumeId()); - HanHaiMember jobSeeker = hanHaiMemberService.getById(resume.getUserId()); + HanHaiMember jobSeeker = getJobSeekerFromOrder(order); + if(jobSeeker == null){ + log.error("无法获取求职者信息,订单号:{}", order.getId()); + return Result.error("求职者信息异常,无法结算试工费用"); + } addMemberAmount(jobSeeker, order.getPayMoney(), "试工费用到账:" + order.getTitle()); // 如果有求职信息,将求职信息状态设置为已完成 @@ -555,7 +558,7 @@ public class OrderServiceImpl implements OrderService { } } } catch (Exception e) { - log.error("求职者数据丢失,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId()); + log.error("求职者数据丢失,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId(), e); return Result.error("求职者信息异常,无法结算试工费用"); } }else { @@ -603,20 +606,14 @@ public class OrderServiceImpl implements OrderService { }else {//先试用后付 //给求职者钱包加钱 try { - EmployResume resume = employResumeService.getById(order.getResumeId()); - - HanHaiMember member = hanHaiMemberService.getById(resume.getUserId()); - - addMemberAmount(member, order.getPayMoney(), "试工费用到账:" + order.getTitle()); - -// order.setOrderStatus("Y"); -// if ("true".equals(buyInsurance)){ -// order.setOrderStatusSeek("Y"); -// }else { -// order.setOrderStatusSeek("N"); -// } + HanHaiMember jobSeeker = getJobSeekerFromOrder(order); + if(jobSeeker != null){ + addMemberAmount(jobSeeker, order.getPayMoney(), "试工费用到账:" + order.getTitle()); + } else { + log.error("无法获取求职者信息,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId()); + } }catch (Exception e){ - log.error("求职者数据丢失,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId()); + log.error("求职者数据丢失,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId(), e); } //修改订单状态 @@ -659,14 +656,38 @@ public class OrderServiceImpl implements OrderService { public Result confirmOrderTryCompanyOk(String token, String orderId) { HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); EmployOrder order = employOrderService.getById(orderId); + + if(order == null){ + return Result.error("订单不存在"); + } + + // 先付模式需要转账给求职者 + if("0".equals(order.getPayType())){ + try { + HanHaiMember jobSeeker = getJobSeekerFromOrder(order); + if(jobSeeker == null){ + log.error("无法获取求职者信息,订单号:{}", order.getId()); + return Result.error("求职者信息异常,无法结算试工费用"); + } + addMemberAmount(jobSeeker, order.getPayMoney(), "试工费用到账:" + order.getTitle()); + log.info("试工费用转账成功,订单号:{},金额:{},收款人:{}", order.getId(), order.getPayMoney(), jobSeeker.getId()); + } catch (Exception e) { + log.error("求职者数据丢失,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId(), e); + return Result.error("求职者信息异常,无法结算试工费用"); + } + } + //修改订单状态 order.setStatus(5); employOrderService.updateById(order); - EmploySeek seek = employSeekService.getById(order.getSeekId()); - if (seek != null){ - seek.setSeekStatus(2); - employSeekService.updateById(seek); + // 如果有求职信息,将求职信息状态设置为已完成 + if(order.getSeekId() != null && StringUtils.isNotBlank(order.getSeekId())){ + EmploySeek seek = employSeekService.getById(order.getSeekId()); + if (seek != null){ + seek.setSeekStatus(2); // 设置为已完成状态 + employSeekService.updateById(seek); + } } return Result.ok("确认成功"); @@ -759,26 +780,28 @@ public class OrderServiceImpl implements OrderService { }else {//先试用后付 //给求职者钱包加钱 try { - EmployResume resume = employResumeService.getById(order.getResumeId()); - - HanHaiMember member = hanHaiMemberService.getById(resume.getUserId()); - - addMemberAmount(member, order.getPayMoney(), "试工费用到账:" + order.getTitle()); + HanHaiMember jobSeeker = getJobSeekerFromOrder(order); + if(jobSeeker != null){ + addMemberAmount(jobSeeker, order.getPayMoney(), "试工费用到账:" + order.getTitle()); + } else { + log.error("无法获取求职者信息,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId()); + } }catch (Exception e){ - log.error("求职者数据丢失,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId()); + log.error("求职者数据丢失,金额:{}无法到账,订单号:{}", order.getPayMoney(), order.getId(), e); } - //修改订单状态 order.setStatus(4); } order.setOrderStatus("Y"); - if (order.getOrderNoMoney().compareTo(order.getPayMoney()) > 0){ - order.setOrderStatusSeek("Y"); - }else { - order.setOrderStatusSeek("N"); + if (order.getType() == 0){ + if (order.getOrderNoMoney().compareTo(order.getPayMoney()) > 0){ + order.setOrderStatusSeek("Y"); + }else { + order.setOrderStatusSeek("N"); + } } employOrderService.updateById(order); @@ -789,4 +812,29 @@ public class OrderServiceImpl implements OrderService { " "; } + /** + * 从订单中获取求职者信息 + * 根据订单类型(type)采用不同的获取策略 + */ + private HanHaiMember getJobSeekerFromOrder(EmployOrder order) { + try { + if (order.getType() == 0) { + // 企业招聘订单:求职者是接单的人,通过简历信息获取 + EmployResume resume = employResumeService.getById(order.getResumeId()); + if (resume != null) { + return hanHaiMemberService.getById(resume.getUserId()); + } + } else if (order.getType() == 1) { + // 求职订单:求职者是发布求职的人,通过求职信息获取 + EmploySeek seek = employSeekService.getById(order.getSeekId()); + if (seek != null) { + return hanHaiMemberService.getById(seek.getUserId()); + } + } + } catch (Exception e) { + log.error("获取求职者信息失败,订单号:{}", order.getId(), e); + } + return null; + } + }