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 504b512..1fa9568 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 @@ -4652,16 +4652,32 @@ public class AppletController extends BaseController { order.setReceiveTime(new Date()); order.setIsAccept(1); // 1:已接单 order.setJsonStatus(2); // 服务进度:2=接单 + order.setStatus(2l); order.setLogStatus(9); JSONObject json=new JSONObject(); json.put("type",1); order.setLogJson(json.toJSONString()); - - //绑定号码 + orderService.updateOrder(order); // 5. 写入日志 - OrderUtil orderUtil = new OrderUtil(); - orderUtil.SaveOrderLog(order); + OrderLog orderLog=new OrderLog(); + orderLog.setOid(order.getId()); + orderLog.setOrderId(order.getOrderId()); + orderLog.setTitle("师傅接单"); + orderLog.setType(new BigDecimal(2.0)); + JSONObject js=new JSONObject(); + js.put("type", 1); + orderLog.setContent(js.toJSONString()); + orderLog.setWorkerId(order.getWorkerId()); + orderLog.setWorkerLogId(order.getWorkerId()); + orderLogService.insertOrderLog(orderLog); +// OrderUtil orderUtil = new OrderUtil(); +// orderUtil.SaveOrderLog(order); + //绑定号码 + Map bindmap= OrderBindWorkerUtil.getOrderBindWorker(order.getId()); + //发送微信推送通知客户师傅已接单 + + // 6. 返回成功 return AjaxResult.success("接单成功"); } catch (Exception e) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/GaoDeMapUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/GaoDeMapUtil.java index 0d5a16c..56b0e9c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/GaoDeMapUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/GaoDeMapUtil.java @@ -14,7 +14,7 @@ import java.nio.charset.StandardCharsets; public class GaoDeMapUtil { // 请替换为你自己的高德Web服务Key - private static final String GAODE_KEY = "YOUR_GAODE_WEB_KEY"; + private static final String GAODE_KEY = "308ad08f306d74daddffba44f5537767"; /** * 根据经纬度获取所在城市名称 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/OrderBindWorkerUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/OrderBindWorkerUtil.java new file mode 100644 index 0000000..516f8d4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/OrderBindWorkerUtil.java @@ -0,0 +1,125 @@ +package com.ruoyi.system.ControllerUtil; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.system.domain.Area; +import com.ruoyi.system.domain.MobileMiddle; +import com.ruoyi.system.domain.Order; +import com.ruoyi.system.domain.UserAddress; +import com.ruoyi.system.domain.Users; +import com.ruoyi.system.service.IAreaService; +import com.ruoyi.system.service.IMobileMiddleService; +import com.ruoyi.system.service.IOrderService; +import com.ruoyi.system.service.IUserAddressService; +import com.ruoyi.system.service.IUsersService; +import com.winnerlook.model.VoiceResponseResult; + +/** + * 师傅绑定订单的电话号码操作 + * + * + * @author Mr. Zhang Pan + * @date 2025-01-03 + * @version 1.0 + */ +public class OrderBindWorkerUtil { + + private static final IUsersService usersService= SpringUtils.getBean(IUsersService.class); + private static final IUserAddressService userAddressService= SpringUtils.getBean(IUserAddressService.class); + private static final IMobileMiddleService mobileMiddleService= SpringUtils.getBean(IMobileMiddleService.class); + private static final IOrderService orderService= SpringUtils.getBean(IOrderService.class); + private static final IAreaService areaService= SpringUtils.getBean(IAreaService.class); + + + /** + * 订单绑定师傅电话号码操作 + * @param orderId 订单ID + * @return 绑定结果Map,包含code和msg + */ + public static Map getOrderBindWorker(long orderId) { + Map result = new HashMap<>(); + try { + // 1. 查询订单 + Order order = orderService.selectOrderById(orderId); + if (order == null) { + result.put("code", 404); + result.put("msg", "订单不存在"); + return result; + } + // 2. 查询师傅信息 + Users workerUser = usersService.selectUsersById(order.getWorkerId()); + if (workerUser == null) { + result.put("code", 404); + result.put("msg", "师傅信息不存在"); + return result; + } + // 3. 查询订单地址 + UserAddress userAddress = userAddressService.selectUserAddressById(order.getAddressId()); + if (userAddress == null) { + result.put("code", 404); + result.put("msg", "订单地址不存在"); + return result; + } + // 4. 经纬度转城市 + double lng = Double.parseDouble(userAddress.getLongitude()); + double lat = Double.parseDouble(userAddress.getLatitude()); + String city = GaoDeMapUtil.getCityByLocation(lng, lat); + if (city == null || city.isEmpty()) { + result.put("code", 500); + result.put("msg", "无法根据经纬度获取城市信息"); + return result; + } + // 5. 查询城市编码 + Area area = new Area(); + area.setTitle(city); + List areaList = areaService.selectAreaList(area); + if (areaList == null || areaList.isEmpty()) { + result.put("code", 404); + result.put("msg", "未找到城市编码"); + return result; + } + Long cityCode = areaList.get(0).getId(); + // 6. 查询可用中间号 + MobileMiddle mobileMiddleQuery = new MobileMiddle(); + mobileMiddleQuery.setCityId(cityCode); + List mobileMiddleList = mobileMiddleService.selectMobileMiddleList(mobileMiddleQuery); + if (mobileMiddleList == null || mobileMiddleList.isEmpty()) { + result.put("code", 404); + result.put("msg", "该城市暂无可用中间号"); + return result; + } + // 7. 获取用户和师傅手机号 + String userPhone = userAddress.getPhone(); + String workerPhone = workerUser.getPhone(); + if (userPhone == null || workerPhone == null) { + result.put("code", 400); + result.put("msg", "用户或师傅手机号为空"); + return result; + } + // 8. 绑定中间号,直到成功 + for (MobileMiddle middle : mobileMiddleList) { + VoiceResponseResult bindResult = YunXinPhoneUtilAPI.httpsPrivacyBindAxb(middle.getPhone(), userPhone, workerPhone); + if ("000000".equals(bindResult.getResult())) { + // 绑定成功,更新订单 + order.setMiddlePhone(middle.getPhone()); + order.setUserPhone(userPhone); + order.setWorkerPhone(workerPhone); + orderService.updateOrder(order); + result.put("code", 200); + result.put("msg", "绑定成功"); + return result; + } + } + // 9. 所有中间号都绑定失败 + result.put("code", 500); + result.put("msg", "所有中间号均绑定失败"); + } catch (Exception e) { + result.put("code", 500); + result.put("msg", "绑定异常: " + e.getMessage()); + } + return result; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderLogMapper.java index c5ce711..34919c6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderLogMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderLogMapper.java @@ -19,7 +19,13 @@ public interface OrderLogMapper */ public OrderLog selectOrderLogById(Long id); - + /** + * 查询最新一条日志记录 + * + * @param oid 订单服务记录主键 + * @return 订单服务记录 + */ + public OrderLog selectDataTheFirstNew(Long oid); public int selectCountOrderLogByOrderId(String orderId); public List selectOrderLogByOrderId(String orderId); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderLogService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderLogService.java index 81c4954..03917e6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderLogService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderLogService.java @@ -21,6 +21,15 @@ public interface IOrderLogService + /** + * 查询最新一条日志记录 + * + * @param oid 订单服务记录主键 + * @return 订单服务记录 + */ + public OrderLog selectDataTheFirstNew(Long oid); + + /** * 查询订单服务记录数量 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderLogServiceImpl.java index 39caf34..5c58599 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderLogServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderLogServiceImpl.java @@ -32,6 +32,18 @@ public class OrderLogServiceImpl implements IOrderLogService } + + /** + * 查询最新一条日志记录 + * + * @param oid 订单服务记录主键 + * @return 订单服务记录 + */ + public OrderLog selectDataTheFirstNew(Long oid) { + return orderLogMapper.selectDataTheFirstNew(oid); + + } + /** * 查询订单服务记录数量 * diff --git a/ruoyi-system/src/main/resources/mapper/system/OrderLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/OrderLogMapper.xml index 1e2ec46..eb9f136 100644 --- a/ruoyi-system/src/main/resources/mapper/system/OrderLogMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/OrderLogMapper.xml @@ -81,7 +81,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +