diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppleOrderController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppleOrderController.java index f9797fa..8c85213 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppleOrderController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppleOrderController.java @@ -2242,7 +2242,7 @@ public class AppleOrderController extends BaseController { dayMap.put("today", dayOrderList.size()); queryOrder.setMakeTimeStart(tomorrowStart); queryOrder.setMakeTimeEnd(tomorrowStart + 24 * 60 * 60); - List tomorrowOrderList1 = orderService.selectOrderList(queryOrderday); + List tomorrowOrderList1 = orderService.selectOrderList(queryOrder); dayMap.put("tomorrow", tomorrowOrderList1.size()); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppletController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppletController.java index 5104799..825554a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppletController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/AppletController.java @@ -5197,6 +5197,8 @@ public class AppletController extends BaseController { } // 4. 修改订单的师傅id order.setWorkerId(newWorkerId); + order.setStatus(1L); + order.setIsAccept(0); int updateOrder = orderService.updateOrder(order); if (updateOrder <= 0) { return AjaxResult.error("订单更新失败"); @@ -5828,6 +5830,40 @@ public class AppletController extends BaseController { } } + + /** + * 师傅设置出发上门 + * GET /api/worker/start/door/{id} + * 逻辑参考OrderController的edit接口中jsonStatus=4的流程 + */ + @GetMapping("/api/cuidan/{id}") + public AjaxResult workercuidanDoor(@PathVariable("id") Long id, HttpServletRequest request) throws Exception { + // 1. 获取当前登录师傅ID(token在header) + String token = request.getHeader("token"); + Map userValidation = AppletLoginUtil.validateUserToken(token, usersService); + if (!(Boolean) userValidation.get("valid")) { + return AppletControllerUtil.appletWarning("未登录或token无效"); + } + Users user = (Users) userValidation.get("user"); + if (user == null) { + return AppletControllerUtil.appletWarning("用户信息获取失败"); + } + Long workerId = user.getId(); + + // 2. 获取订单 + Order order = orderService.selectOrderById(id); + if (order == null) { + return AppletControllerUtil.appletWarning("订单不存在"); + } + Users usersworker = usersService.selectUsersById(order.getWorkerId()); + if (usersworker != null) { + WXsendMsgUtil.sendMsgForWorkerCuiDanInfo(usersworker.getOpenid(), order, "订单催单","用户催师傅快点服务"); + } + return AppletControllerUtil.appletSuccess("催单成功"); + } + + + /** * 师傅设置出发上门 * GET /api/worker/start/door/{id} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/CoursorUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/CoursorUtil.java index 9e96040..926521d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/CoursorUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/CoursorUtil.java @@ -91,23 +91,11 @@ public class CoursorUtil extends BaseController { * @param request HTTP请求对象 * @return 游标详细信息 */ - @GetMapping(value = "/api/cursor/order/info/{id}") + @GetMapping(value = "/api/cursor/order/test/{id}") public AjaxResult getOrderCursorInfo(@PathVariable("id") long id, HttpServletRequest request) { try { - // 参数验证 - if (id <= 0) { - return AppletControllerUtil.appletError("游标ID无效"); - } - - // 查询游标信息 - GoodsOrderCursor cursor = goodsOrderCursorService.selectGoodsOrderCursorById(id); - if (cursor == null) { - return AppletControllerUtil.appletError("游标信息不存在"); - } - - // 构建返回数据 - Map cursorData = buildCursorResponse(cursor); - return AppletControllerUtil.appletSuccess(cursorData); + JSONObject commissionResult = WorkerCommissionUtil.calculateCompleteWorkerCommission(id); + return AppletControllerUtil.appletSuccess(123); } catch (Exception e) { return AppletControllerUtil.appletError("查询游标信息失败:" + e.getMessage()); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java index db2505b..6d60947 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java @@ -142,6 +142,192 @@ public class OrderController extends BaseController { } + + + + /** + * 师傅完成订单接口 + * POST /api/worker/finish/service + * 参数:{"id":订单id,"image":[图片url数组]} + */ + @PostMapping("/complete-service") + public AjaxResult workerFinishService(@RequestBody Map params, HttpServletRequest request) throws Exception { + if (params == null || params.get("orderId") == null) { + return AppletControllerUtil.appletError("参数错误"); + } + String orderid; + try { + orderid = params.get("orderId").toString(); + } catch (Exception e) { + return AppletControllerUtil.appletError("订单ID格式错误"); + } + Order order = orderService.selectOrderByOrderId(orderid); + if (order == null) { + return AppletControllerUtil.appletError("订单不存在"); + } + String reamk = ""; + String latitude = ""; + String longitude = ""; + String addressName = ""; + PayBeforeUtil payBeforeUtil = new PayBeforeUtil(); + String priceDifferenceprice= "0"; +// int paynum=usersPayBeforService.countByLastOrderIdAndStatus(order.getOrderId()); +// //如果订单没有支付 +// if (paynum<=0){ +// // 1. 修改订单状态 +// order.setStatus(6L); // 完成 +// order.setReceiveType(3L); // 完成类型 +// order.setJsonStatus(9); // 完成 +// order.setLogJson("{\"type\":8}"); +// int update = orderService.updateOrder(order); +// } + // 2. 组装日志内容 + Map logContent = new LinkedHashMap<>(); + if (StringUtils.isNotBlank(reamk)) { + logContent.put("name","师傅服务完成--"+ reamk); + }else{ + logContent.put("name", "师傅服务完成"); + } + + logContent.put("image", params.get("image")); + String contentStr = com.alibaba.fastjson2.JSONObject.toJSONString(logContent); + // 3. 写入订单日志 + OrderLog log = new OrderLog(); + log.setOid(order.getId()); + log.setOrderId(order.getOrderId()); + log.setLogOrderId(GenerateCustomCode.generCreateOrder("DSB")); + log.setTitle("服务完成"); + log.setLatitude(latitude); + log.setLongitude(longitude); + log.setAddressName(addressName); + log.setType(new java.math.BigDecimal(7)); + log.setContent(contentStr); + log.setWorkerId(order.getWorkerId()); + log.setCreatedAt(new Date()); + if (StringUtils.isNotBlank(priceDifferenceprice)) { + log.setCjMoney(new BigDecimal(priceDifferenceprice)); + log.setCjPaid(1L); + } + orderLogService.insertOrderLog(log); + //如果有补差价,就要插入日志中进行处理 + if (StringUtils.isNotBlank(priceDifferenceprice)) { + log.setCjMoney(new BigDecimal(priceDifferenceprice)); + log.setCjPaid(1L); + Users userinfo = usersService.selectUsersById(order.getUid()); + + payBeforeUtil.createPayBefore(userinfo, log.getCjMoney(), log.getLogOrderId(), log.getId(), + null, 10L, null, null, + null, null, null,1L,null,order.getOrderId(), null); + } + //判断这个订单还有没有未支付的数据,如果有就停留在服务中如果没有就直接去到状态为4的已完成状态 + int paynum=usersPayBeforService.countByLastOrderIdAndStatus(order.getOrderId()); + //如果订单没有支付,订单完成,分佣,推送 + if (paynum<=0){ + //师傅完成时,确认没有可支付的信息,就可以分佣,让这个订单结束 + OrderUtil.ISTOPAYSIZE(order.getOrderId()); + + order.setStatus(4L); // 完成 + order.setReceiveType(3L); // 完成类型 + order.setJsonStatus(9); // 完成 + order.setLogJson("{\"type\":8}"); + int update = orderService.updateOrder(order); + + Users wusers = usersService.selectUsersById(order.getWorkerId()); + WorkerCommissionUtil.processWorkerCommission(order,wusers); + Users users = usersService.selectUsersById(order.getUid()); + ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId()); + WXsendMsgUtil.sendWorkerFinishOrder(users.getOpenid(), order, serviceGoods); + }else{ + order.setStatus(6L); // 完成 + order.setJsonStatus(9); // 完成 + int update = orderService.updateOrder(order); + } + + + + return AppletControllerUtil.appletSuccess("服务已完成"); + + } + + + +// /** +// * 完成服务接口 +// */ +// @PreAuthorize("@ss.hasPermi('system:Order:edit')") +// @Log(title = "完成服务", businessType = BusinessType.UPDATE) +// @PostMapping("/complete-service") +// public AjaxResult completeService(@RequestBody Map params) { +// try { +// // 参数验证 +// if (params == null || params.isEmpty()) { +// return error("请求参数不能为空"); +// } +// +// String orderId = params.get("orderId") != null ? params.get("orderId").toString() : null; +// if (orderId == null || orderId.trim().isEmpty()) { +// return error("订单号不能为空"); +// } +// +// // 查询订单信息 +// Order order = orderService.selectOrderByOrderId(orderId); +// if (order == null) { +// return error("订单不存在"); +// } +// +// // 验证订单状态(只有服务中状态的订单才能完成服务) +// if (order.getStatus() == null || order.getStatus() != 3L) { +// return error("当前订单状态不可完成服务,只有服务中状态的订单才能完成服务"); +// } +// +// // 验证是否已分配师傅 +// if (order.getWorkerId() == null) { +// return error("订单未分配师傅,无法完成服务"); +// } +// +// // 验证师傅是否已接单 +// if (order.getIsAccept() == null || order.getIsAccept() != 1) { +// return error("师傅未接单,无法完成服务"); +// } +// +// // 验证订单进度状态(应该是服务中状态) +// if (order.getJsonStatus() == null || order.getJsonStatus() != 7) { +// return error("订单进度状态不正确,只有服务中状态的订单才能完成服务"); +// } +// +// // TODO: 在这里添加您的具体业务逻辑 +// // 例如: +// // 1. 更新订单状态为已完成 +// // 2. 记录完成时间 +// // 3. 计算服务费用 +// // 4. 生成支付订单 +// // 5. 发送通知等 +// +// return success("完成服务成功"); +// } catch (Exception e) { +// return error("完成服务失败:" + e.getMessage()); +// } +// } + +// ... existing code ... + + /** + * 获取服务订单最新的日志状态用来判断页面的操作 + */ + @PreAuthorize("@ss.hasPermi('system:Order:query')") + @GetMapping(value = "/orderlog/{id}") + public AjaxResult getorderlogInfo(@PathVariable("id") Long id) { + Order order = orderService.selectOrderById(id); + if (order != null){ + order.setOrderLog(new OrderLog()); + } + OrderLog orderLog = orderLogService.selectDataTheFirstNew(id); + return success(orderLog.getType()); + + } + + + /** * 获取服务订单详细信息 */ @@ -215,6 +401,13 @@ public class OrderController extends BaseController { orderdata.setReamk(order.getReamk()); orderdata.setBigtype(1); orderdata.setAddressEn(userAddress.getAddressName()); + if (userAddress != null) { + try { + order.setAdressjson(JSON.toJSONString(userAddress)); + } catch (Exception e) { + order.setAdressjson(null); + } + } //添加订单日志记录 int flg= orderService.insertOrder(orderdata); if (flg>0){ @@ -918,134 +1111,134 @@ public class OrderController extends BaseController { } } - /** - * 开始服务接口 - */ - @PreAuthorize("@ss.hasPermi('system:Order:edit')") - @Log(title = "开始服务", businessType = BusinessType.UPDATE) - @PostMapping("/start-service") - public AjaxResult startService(@RequestBody Map params) { - try { - String orderId = params.get("orderId").toString(); - String image = params.get("image").toString(); - if (StringUtils.isBlank(image)) { - return error("需上传图片"); - } - Order order = orderService.selectOrderByOrderId(orderId); - if (order == null) { - return error("订单不存在"); - } - - OrderLog newlogdata =new OrderLog(); - newlogdata.setType(new BigDecimal("6.0")); - newlogdata.setOid(order.getId()); - //如果没有进行服务的记录就是开启服务 - List logList = orderLogService.selectOrderLogList(newlogdata); - if (logList.isEmpty()){ - // 2. 组装日志内容为数组格式 - Map logItem = new LinkedHashMap<>(); - logItem.put("name", "师傅开始服务"); - logItem.put("image", params.get("image")); - logItem.put("type", 1); - List logArr = new ArrayList<>(); - logArr.add(logItem); - String contentStr = com.alibaba.fastjson2.JSONObject.toJSONString(logArr); - // 3. 写入订单日志 - OrderLog log = new OrderLog(); - log.setOid(order.getId()); - log.setOrderId(order.getOrderId()); - log.setTitle("开始服务"); - log.setType(new BigDecimal(6.0)); - log.setContent(contentStr); - log.setWorkerId(order.getWorkerId()); - log.setWorkerLogId(order.getWorkerId()); - log.setIsPause(1); - log.setCreatedAt(new Date()); - orderLogService.insertOrderLog(log); - //开始服务 - // 1. 修改订单状态 - order.setStatus(3L); // 服务中 - order.setJsonStatus(7); // 服务中 - order.setLogJson("{\"type\":6}"); - order.setIsPause(1); // 服务中 - order.setUpdatedAt(new Date()); - int update = orderService.updateOrder(order); - return AppletControllerUtil.appletSuccess("服务已开始"); - }else{ - - if (order.getJsonStatus() == 7) { - com.alibaba.fastjson2.JSONObject logItem = new com.alibaba.fastjson2.JSONObject(); - logItem.put("name", "暂停服务"); - logItem.put("image", params.get("image")); - logItem.put("reson", params.get("reson")); - logItem.put("next_time", params.get("next_time")); - logItem.put("time", new Date()); - logItem.put("type", 2); - - - OrderLog newlogdata1 =new OrderLog(); - newlogdata1.setOid(order.getId()); - newlogdata1.setOrderId(order.getOrderId()); - newlogdata1.setTitle("暂停服务"); - newlogdata1.setIsPause(2); - newlogdata1.setContent(logItem.toJSONString()); - newlogdata1.setType(new BigDecimal(6.0)); - newlogdata1.setWorkerId(order.getWorkerId()); - newlogdata1.setWorkerLogId(order.getWorkerId()); - - - orderLogService.insertOrderLog(newlogdata1); - if (order != null) { - // 1. 修改订单状态 - order.setStatus(3L); // 服务中 - order.setJsonStatus(8); // 服务中 - order.setLogJson("{\"type\":6}"); - order.setIsPause(2); // 服务中 - order.setUpdatedAt(new Date()); - orderService.updateOrder(order); - } - return AppletControllerUtil.appletSuccess("操作成功"); - } - if (order.getJsonStatus() == 8) { - com.alibaba.fastjson2.JSONObject logItem = new com.alibaba.fastjson2.JSONObject(); - logItem.put("name", "继续服务"); - logItem.put("image", params.get("image")); - logItem.put("time", new Date()); - logItem.put("type", 1); - - OrderLog newlogdata2 =new OrderLog(); - newlogdata2.setOid(order.getId()); - newlogdata2.setOrderId(order.getOrderId()); - newlogdata2.setTitle("继续服务"); - newlogdata2.setIsPause(1); - newlogdata2.setType(new BigDecimal(6.0)); - newlogdata2.setWorkerId(order.getWorkerId()); - newlogdata2.setWorkerLogId(order.getWorkerId()); - newlogdata2.setContent(logItem.toJSONString()); - orderLogService.insertOrderLog(newlogdata2); - if (order != null) { - //继续服务 - order.setStatus(3L); // 服务中 - order.setJsonStatus(7); // 服务中 - order.setLogJson("{\"type\":6}"); - order.setIsPause(1); // 服务中 - order.setUpdatedAt(new Date()); - orderService.updateOrder(order); - } - return AppletControllerUtil.appletSuccess("操作成功"); - } - } - - - - // 这里调用具体的业务逻辑,您来实现 - // 例如:更新订单状态为服务中,记录开始时间等 - - return success("开始服务成功"); - } catch (Exception e) { - return error("开始服务失败:" + e.getMessage()); - } - } +// /** +// * 开始服务接口 +// */ +// @PreAuthorize("@ss.hasPermi('system:Order:edit')") +// @Log(title = "开始服务", businessType = BusinessType.UPDATE) +// @PostMapping("/start-service") +// public AjaxResult startService(@RequestBody Map params) { +// try { +// String orderId = params.get("orderId").toString(); +// String image = params.get("image").toString(); +// if (StringUtils.isBlank(image)) { +// return error("需上传图片"); +// } +// Order order = orderService.selectOrderByOrderId(orderId); +// if (order == null) { +// return error("订单不存在"); +// } +// +// OrderLog newlogdata =new OrderLog(); +// newlogdata.setType(new BigDecimal("6.0")); +// newlogdata.setOid(order.getId()); +// //如果没有进行服务的记录就是开启服务 +// List logList = orderLogService.selectOrderLogList(newlogdata); +// if (logList.isEmpty()){ +// // 2. 组装日志内容为数组格式 +// Map logItem = new LinkedHashMap<>(); +// logItem.put("name", "师傅开始服务"); +// logItem.put("image", params.get("image")); +// logItem.put("type", 1); +// List logArr = new ArrayList<>(); +// logArr.add(logItem); +// String contentStr = com.alibaba.fastjson2.JSONObject.toJSONString(logArr); +// // 3. 写入订单日志 +// OrderLog log = new OrderLog(); +// log.setOid(order.getId()); +// log.setOrderId(order.getOrderId()); +// log.setTitle("开始服务"); +// log.setType(new BigDecimal(6.0)); +// log.setContent(contentStr); +// log.setWorkerId(order.getWorkerId()); +// log.setWorkerLogId(order.getWorkerId()); +// log.setIsPause(1); +// log.setCreatedAt(new Date()); +// orderLogService.insertOrderLog(log); +// //开始服务 +// // 1. 修改订单状态 +// order.setStatus(3L); // 服务中 +// order.setJsonStatus(7); // 服务中 +// order.setLogJson("{\"type\":6}"); +// order.setIsPause(1); // 服务中 +// order.setUpdatedAt(new Date()); +// int update = orderService.updateOrder(order); +// return AppletControllerUtil.appletSuccess("服务已开始"); +// }else{ +// +// if (order.getJsonStatus() == 7) { +// com.alibaba.fastjson2.JSONObject logItem = new com.alibaba.fastjson2.JSONObject(); +// logItem.put("name", "暂停服务"); +// logItem.put("image", params.get("image")); +// logItem.put("reson", params.get("reson")); +// logItem.put("next_time", params.get("next_time")); +// logItem.put("time", new Date()); +// logItem.put("type", 2); +// +// +// OrderLog newlogdata1 =new OrderLog(); +// newlogdata1.setOid(order.getId()); +// newlogdata1.setOrderId(order.getOrderId()); +// newlogdata1.setTitle("暂停服务"); +// newlogdata1.setIsPause(2); +// newlogdata1.setContent(logItem.toJSONString()); +// newlogdata1.setType(new BigDecimal(6.0)); +// newlogdata1.setWorkerId(order.getWorkerId()); +// newlogdata1.setWorkerLogId(order.getWorkerId()); +// +// +// orderLogService.insertOrderLog(newlogdata1); +// if (order != null) { +// // 1. 修改订单状态 +// order.setStatus(3L); // 服务中 +// order.setJsonStatus(8); // 服务中 +// order.setLogJson("{\"type\":6}"); +// order.setIsPause(2); // 服务中 +// order.setUpdatedAt(new Date()); +// orderService.updateOrder(order); +// } +// return AppletControllerUtil.appletSuccess("操作成功"); +// } +// if (order.getJsonStatus() == 8) { +// com.alibaba.fastjson2.JSONObject logItem = new com.alibaba.fastjson2.JSONObject(); +// logItem.put("name", "继续服务"); +// logItem.put("image", params.get("image")); +// logItem.put("time", new Date()); +// logItem.put("type", 1); +// +// OrderLog newlogdata2 =new OrderLog(); +// newlogdata2.setOid(order.getId()); +// newlogdata2.setOrderId(order.getOrderId()); +// newlogdata2.setTitle("继续服务"); +// newlogdata2.setIsPause(1); +// newlogdata2.setType(new BigDecimal(6.0)); +// newlogdata2.setWorkerId(order.getWorkerId()); +// newlogdata2.setWorkerLogId(order.getWorkerId()); +// newlogdata2.setContent(logItem.toJSONString()); +// orderLogService.insertOrderLog(newlogdata2); +// if (order != null) { +// //继续服务 +// order.setStatus(3L); // 服务中 +// order.setJsonStatus(7); // 服务中 +// order.setLogJson("{\"type\":6}"); +// order.setIsPause(1); // 服务中 +// order.setUpdatedAt(new Date()); +// orderService.updateOrder(order); +// } +// return AppletControllerUtil.appletSuccess("操作成功"); +// } +// } +// +// +// +// // 这里调用具体的业务逻辑,您来实现 +// // 例如:更新订单状态为服务中,记录开始时间等 +// +// return success("开始服务成功"); +// } catch (Exception e) { +// return error("开始服务失败:" + e.getMessage()); +// } +// } /** * 项目报价接口 @@ -1074,7 +1267,7 @@ public class OrderController extends BaseController { * 获取基检项目和订单报价信息 * GET /api/worker/basic/project?id=订单id&goodid=服务id */ - @GetMapping("/basic/project/{id}") + @GetMapping("/basic-project/{id}") public AjaxResult getWorkerBasicProject(@PathVariable("id") Long id ) { List basicList = new ArrayList<>(); @@ -1212,7 +1405,7 @@ public class OrderController extends BaseController { * 报价获取服务项目 */ @ApiOperation("获取取服务项目") - @GetMapping("/quote/craft/{goodsId}") + @GetMapping("/quote-craft/{goodsId}") public AjaxResult getWorkerQuoteCraft(@PathVariable("goodsId") Long goodsId) { // 1. 查询商品基本信息 ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(goodsId); @@ -1268,7 +1461,7 @@ public class OrderController extends BaseController { * GET /api/worker/quote/material/{goodsId} */ @ApiOperation("获取所需物料") - @GetMapping("/quote/material/{goodsId}") + @GetMapping("/quote-material/{goodsId}") public AjaxResult getWorkerQuoteMaterial(@PathVariable("goodsId") Long goodsId) { // 1. 查询商品基本信息 ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(goodsId); @@ -1337,7 +1530,7 @@ public class OrderController extends BaseController { */ @ApiOperation(value = "测试") - @PostMapping("/worker/estimate") + @PostMapping("/worker-estimate") public AjaxResult workerEstimate(@RequestBody Map params, HttpServletRequest request) throws Exception { if (params == null) { return AjaxResult.error("参数错误"); @@ -1615,6 +1808,144 @@ public class OrderController extends BaseController { } } + /** + * 师傅开始服务接口 + * POST /api/worker/do/service + * 参数:{"oid":订单id,"image":[图片url数组]} + */ + @PostMapping("/start-service") + public AjaxResult workerDostartserviceService(@RequestBody Map params, HttpServletRequest request) { + System.out.println("jsonArray.size():"+params.toString()); + String orderid = ""; + if (params.get("orderId") != null) { + try { + orderid = params.get("orderId").toString(); + } catch (Exception e) { + return AppletControllerUtil.appletError("订单ID格式错误"); + } + } + Order order = orderService.selectOrderByOrderId(orderid); + if (order == null) { + return AppletControllerUtil.appletError("订单不存在"); + } + String image = ""; + if (params.get("image") != null) { + try { + image = params.get("image").toString(); +// JSONArray jsonArray = JSON.parseArray(image); +// if (jsonArray.size() > 1) { +// System.out.println("jsonArray.size():"+jsonArray.size()); +// System.out.println("jsonArray.size():"+jsonArray.getFirst().toString()); +// } + } catch (Exception e) { + return AppletControllerUtil.appletError("图片格式错误"); + } + } + + + OrderLog newlogdata =new OrderLog(); + newlogdata.setType(new BigDecimal("6.0")); + newlogdata.setOid(order.getId()); + //如果没有进行服务的记录就是开启服务 + List logList = orderLogService.selectOrderLogList(newlogdata); + if (logList.isEmpty()){ + // 2. 组装日志内容为数组格式 + Map logItem = new LinkedHashMap<>(); + logItem.put("name", "师傅开始服务"); + logItem.put("image", params.get("image")); + logItem.put("type", 1); + List logArr = new ArrayList<>(); + logArr.add(logItem); + String contentStr = com.alibaba.fastjson2.JSONObject.toJSONString(logArr); + // 3. 写入订单日志 + OrderLog log = new OrderLog(); + log.setOid(order.getId()); + log.setOrderId(order.getOrderId()); + log.setTitle("开始服务"); + log.setType(new BigDecimal(6.0)); + log.setContent(contentStr); + log.setWorkerId(order.getWorkerId()); + log.setWorkerLogId(order.getWorkerId()); + log.setIsPause(1); + log.setCreatedAt(new Date()); + orderLogService.insertOrderLog(log); + //开始服务 + // 1. 修改订单状态 + order.setStatus(3L); // 服务中 + order.setJsonStatus(7); // 服务中 + order.setLogJson("{\"type\":6}"); + order.setIsPause(1); // 服务中 + order.setUpdatedAt(new Date()); + int update = orderService.updateOrder(order); + return AppletControllerUtil.appletSuccess("服务已开始"); + }else{ + + if (order.getJsonStatus() == 7) { + com.alibaba.fastjson2.JSONObject logItem = new com.alibaba.fastjson2.JSONObject(); + logItem.put("name", "暂停服务"); + logItem.put("image", params.get("image")); + logItem.put("reson", params.get("reson")); + logItem.put("next_time", params.get("next_time")); + logItem.put("time", new Date()); + logItem.put("type", 2); + + + OrderLog newlogdata1 =new OrderLog(); + newlogdata1.setOid(order.getId()); + newlogdata1.setOrderId(order.getOrderId()); + newlogdata1.setTitle("暂停服务"); + newlogdata1.setIsPause(2); + newlogdata1.setContent(logItem.toJSONString()); + newlogdata1.setType(new BigDecimal(6.0)); + newlogdata1.setWorkerId(order.getWorkerId()); + newlogdata1.setWorkerLogId(order.getWorkerId()); + + + orderLogService.insertOrderLog(newlogdata1); + if (order != null) { + // 1. 修改订单状态 + order.setStatus(3L); // 服务中 + order.setJsonStatus(8); // 服务中 + order.setLogJson("{\"type\":6}"); + order.setIsPause(2); // 服务中 + order.setUpdatedAt(new Date()); + orderService.updateOrder(order); + } + return AppletControllerUtil.appletSuccess("操作成功"); + } + if (order.getJsonStatus() == 8) { + com.alibaba.fastjson2.JSONObject logItem = new com.alibaba.fastjson2.JSONObject(); + logItem.put("name", "继续服务"); + logItem.put("image", params.get("image")); + logItem.put("time", new Date()); + logItem.put("type", 1); + + OrderLog newlogdata2 =new OrderLog(); + newlogdata2.setOid(order.getId()); + newlogdata2.setOrderId(order.getOrderId()); + newlogdata2.setTitle("继续服务"); + newlogdata2.setIsPause(1); + newlogdata2.setType(new BigDecimal(6.0)); + newlogdata2.setWorkerId(order.getWorkerId()); + newlogdata2.setWorkerLogId(order.getWorkerId()); + newlogdata2.setContent(logItem.toJSONString()); + orderLogService.insertOrderLog(newlogdata2); + if (order != null) { + //继续服务 + order.setStatus(3L); // 服务中 + order.setJsonStatus(7); // 服务中 + order.setLogJson("{\"type\":6}"); + order.setIsPause(1); // 服务中 + order.setUpdatedAt(new Date()); + orderService.updateOrder(order); + } + return AppletControllerUtil.appletSuccess("操作成功"); + } + } + + + return AppletControllerUtil.appletSuccess("操作成功"); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java index 8e3d307..129241c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java @@ -505,13 +505,16 @@ public class PayNotifyController extends BaseController { UsersPayBefor newpayBefor = usersPayBeforService.selectUsersPayBeforByOrderId(usersPayBefor.getOrderid()); if (newpayBefor!=null){ // 创建订单 - usersPayBefor.setStatus(2L); - usersPayBefor.setPaytime(new Date()); - usersPayBefor.setPaycode(transactionId); - usersPayBeforService.updateUsersPayBefor(newpayBefor); + newpayBefor.setStatus(2L); + newpayBefor.setPaytime(new Date()); + newpayBefor.setPaycode(transactionId); + int flgs=usersPayBeforService.updateUsersPayBefor(newpayBefor); + if (flgs>0){ + OrderUtil.prepayCallback(newpayBefor, user); + } } } - OrderUtil.prepayCallback(usersPayBefor, user); + // OrderUtil.prepayCallback(newpayBefor, user); String errorMsg = balanceResult != null ? (String) balanceResult.get("message") : "余额支付失败"; logger.error("组合支付余额部分扣款失败:{}", errorMsg); return buildFailResponse("组合支付余额部分扣款失败: " + errorMsg); diff --git a/ruoyi-ui/src/api/system/Order.js b/ruoyi-ui/src/api/system/Order.js index db5fd0a..2a38b82 100644 --- a/ruoyi-ui/src/api/system/Order.js +++ b/ruoyi-ui/src/api/system/Order.js @@ -24,8 +24,13 @@ export function getOrder(id) { // method: 'get' // }) // } - - +// 删除服务订单 +export function getOrderlogFrist(id) { + return request({ + url: '/system/Order/orderlog/' + id, + method: 'get' + }) +} // 新增服务订单 export function addOrder(data) { @@ -257,3 +262,36 @@ export function projectQuote(orderId) { data: { orderId: orderId } }) } + +// 获取基础项目信息 +export function Orderbasicproject(orderId) { + return request({ + url: '/system/Order/basic-project/' + orderId, + method: 'get' + }) +} + +// 获取报价工艺列表 +export function Orderquotecraft(goodId) { + return request({ + url: '/system/Order/quote-craft/' + goodId, + method: 'get' + }) +} + +// 获取报价物料列表 +export function Orderquotematerial(goodId) { + return request({ + url: '/system/Order/quote-material/' + goodId, + method: 'get' + }) +} + +// 工人报价 +export function Orderworkerestimate(data) { + return request({ + url: '/system/Order/worker-estimate', + method: 'post', + data: data + }) +} diff --git a/ruoyi-ui/src/views/system/GoodsShangPin/index.vue b/ruoyi-ui/src/views/system/GoodsShangPin/index.vue index 54c0733..6451ebc 100644 --- a/ruoyi-ui/src/views/system/GoodsShangPin/index.vue +++ b/ruoyi-ui/src/views/system/GoodsShangPin/index.vue @@ -568,8 +568,8 @@ export default { // 任务状态修改 handlefenleiStatusChange(row) { - let text = row.status === "0" ? "启用" : "停用" - this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() { + let text = row.status === "1" ? "启用" : "停用" + this.$modal.confirm('确认要' + text + '' + row.title + '状态吗?').then(function() { return changefenleiStatus(row.id, row.status) }).then(() => { this.$modal.msgSuccess(text + "成功") diff --git a/ruoyi-ui/src/views/system/Order/components/OrderDetailDialog.vue b/ruoyi-ui/src/views/system/Order/components/OrderDetailDialog.vue index a1e8997..2661b68 100644 --- a/ruoyi-ui/src/views/system/Order/components/OrderDetailDialog.vue +++ b/ruoyi-ui/src/views/system/Order/components/OrderDetailDialog.vue @@ -11,7 +11,7 @@ top="5vh" @close="handleClose" > -
+
- +
- -
- 订单基本信息 -
+ +
+ 订单基本信息 +
- - + + {{ info.orderId || "未设置" }} - + - + {{ info.productName || "未设置" }} - - + + ¥{{ (info.totalPrice || 0).toFixed(2) }} - - + + ¥{{ (info.payPrice || 0).toFixed(2) }} - - + + ¥{{ (info.deduction || 0).toFixed(2) }} - - + + {{ info.createdAt || "未设置" }} - - + + {{ info.payTime || "未设置" }} - - + + {{ getStatusLabel(info.status) }} - - + + {{ info.mark }} - - + + - -
-

订单附件

-
+ +
+

订单附件

+
- -
- -
-
-
- -
-
-
-
- - + +
+ +
+
+
+ +
+
+
+
+ +
@@ -125,132 +125,132 @@ - + - -
- 师傅基本信息 -
+ +
+ 师傅基本信息 +
- - -
- 加载中... -
+ + +
+ 加载中... +
{{ workerInfo.name || "未设置" }} {{ orderInfo.workerName || "未分配" }} -
- -
- 加载中... -
+
+ +
+ 加载中... +
{{ workerInfo.phone || "未设置" }} {{ orderInfo.workerPhone || "未设置" }} -
- -
- 加载中... -
+
+ +
+ 加载中... +
{{ getWorkerLevelLabel(workerInfo.level) }} {{ orderInfo.workerLevel || "未设置" }} -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ orderInfo.receiveTime || "未接单" }} - - - - -
+
+ + + +
- +
-

师傅头像

-
- -
- -
-
-
-
- -
-
- - -

加载中...

-

暂无师傅信息

-
-
-
-
- +

师傅头像

+
+ +
+ +
+
+
+
+ +
+
+ + +

加载中...

+

暂无师傅信息

+
+
+
+
+ - -
- 预约信息 -
+ +
+ 预约信息 +
- - + + {{ orderInfo.num || "0" }} - - + + {{ orderInfo.appointmentTime || "未设置" }} - - + +