MrShi
5 小时以前 eb7a808aaf7dd0a6dd2ff70f9ef3f8ce0b1e31d1
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
@@ -159,6 +159,10 @@
     * 发送司机站内信通知
     */
    private void sendDriverNotice(Integer driverId, Constants.DriverOrderNotify notify, Integer orderId, String... params) {
        sendDriverNotice(driverId, notify, orderId, 0, params);
    }
    private void sendDriverNotice(Integer driverId, Constants.DriverOrderNotify notify, Integer objId, Integer objType, String... params) {
        DriverInfo driver = driverInfoMapper.selectById(driverId);
        if (driver == null || driver.getMemberId() == null) {
            return;
@@ -168,8 +172,8 @@
        notice.setUserId(driver.getMemberId());
        notice.setTitle(notify.getTitle());
        notice.setContent(notify.format(params));
        notice.setObjId(orderId);
        notice.setObjType(0); // 0=订单
        notice.setObjId(objId);
        notice.setObjType(objType);
        notice.setStatus(0);  // 0=未读
        notice.setIsdeleted(Constants.ZERO);
        notice.setCreateDate(new Date());
@@ -222,6 +226,29 @@
        if (Objects.isNull(driverInfo)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        // 查询审批人名称
        if (driverInfo.getAuditUser() != null) {
            try {
                SystemUser auditUser = systemUserService.findById(driverInfo.getAuditUser());
                if (auditUser != null) {
                    driverInfo.setAuditUserName(auditUser.getRealname());
                }
            } catch (Exception e) {
                // 审批人已删除等异常忽略
            }
        }
        // 查询省市区信息
        if (driverInfo.getAreaId() != null) {
            Areas district = areasBiz.resolveArea(driverInfo.getAreaId());
            if (district != null) {
                driverInfo.setDistrictId(district.getId());
                driverInfo.setDistrictName(district.getName());
                driverInfo.setCityId(district.getCityId());
                driverInfo.setCityName(district.getCityName());
                driverInfo.setProvinceId(district.getProvinceId());
                driverInfo.setProvinceName(district.getProvinceName());
            }
        }
        return driverInfo;
    }
@@ -242,7 +269,6 @@
        IPage<DriverInfo> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<DriverInfo> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setDeleted(Constants.ZERO);
        // 司机姓名/手机号(关键字模糊查询)
        if (StringUtils.isNotBlank(pageWrap.getModel().getKeyword())) {
@@ -278,7 +304,8 @@
        queryWrapper.selectAll(DriverInfo.class)
                .select(" ( select ifnull(sum(r.OPT_TYPE * r.AMOUNT),0) from revenue r where r.MEMBER_TYPE = 1 and r.MEMBER_ID= t.id and r.VAILD_STATUS = 1 ) as memberAmount ")
                .selectAs(Category::getName,DriverInfo::getCarTypeName)
                .leftJoin(Category.class, Category::getId,DriverInfo::getCarType);
                .leftJoin(Category.class, Category::getId,DriverInfo::getCarType)
                .eq(DriverInfo::getDeleted, Constants.ZERO);
        queryWrapper.orderByDesc(DriverInfo::getId);
        PageData<DriverInfo> pageData = PageData.from(driverInfoMapper.selectPage(page, queryWrapper));
        for (DriverInfo d : pageData.getRecords()) {
@@ -555,6 +582,15 @@
            newChange.setJpushAlias(official.getJpushAlias());
            driverInfoMapper.insert(newChange);
            saveDriverAttachments(newChange.getId(), request, now);
            // 标记历史的变更版本为删除
            driverInfoMapper.update(new UpdateWrapper<DriverInfo>().lambda()
                    .set(DriverInfo::getDeleted, Constants.ONE)
                    .set(DriverInfo::getUpdateTime, now)
                    .eq(DriverInfo::getMemberId, memberId)
                    .eq(DriverInfo::getVersionType, Constants.ONE)
                    .eq(DriverInfo::getDeleted, Constants.ZERO)
                    .ne(DriverInfo::getId, newChange.getId()));
        } else {
            // auditStatus=0/2:直接更新变更版本
            applyDriverFieldsFromUpdate(changeVersion.getId(), request, now);
@@ -823,6 +859,11 @@
            // 短信通知
            sendDriverAuditSms(changeVersion, newAuditStatus, auditDTO.getAuditRemark());
            // 首次审批通过:发送奖励解锁站内信
            if (Constants.equalsInteger(newAuditStatus, Constants.THREE)) {
                sendDriverNotice(changeVersion.getId(), Constants.DriverOrderNotify.REWARD_UNLOCKED, null, 2);
            }
        } else {
            // 场景2:正式版本已审批通过(变更审批)
            if (Constants.equalsInteger(newAuditStatus, Constants.THREE)) {
@@ -957,6 +998,18 @@
                }
            } catch (Exception e) {
                // 审批人已删除等异常忽略
            }
        }
        // 查询省市区信息
        if (driverInfo.getAreaId() != null) {
            Areas district = areasBiz.resolveArea(driverInfo.getAreaId());
            if (district != null) {
                driverInfo.setDistrictId(district.getId());
                driverInfo.setDistrictName(district.getName());
                driverInfo.setCityId(district.getCityId());
                driverInfo.setCityName(district.getCityName());
                driverInfo.setProvinceId(district.getProvinceId());
                driverInfo.setProvinceName(district.getProvinceName());
            }
        }
        return driverInfo;
@@ -1797,7 +1850,7 @@
        // 4. 更新订单状态为派送中(4)
        ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                .set(Orders::getStatus, Constants.OrderStatus.delivering.getStatus())
                .set(Orders::getTakeTime, now)
                .set(Orders::getDriverTakeTime, now)
                .set(Orders::getUpdateTime, now)
                .eq(Orders::getId, orderId));
@@ -1867,6 +1920,9 @@
        }
        if (!driverId.equals(order.getAcceptDriver())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "无权操作该订单");
        }
        if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "异常订单无法进行确认送达");
        }
        // 3. 保存送达图片
@@ -2258,7 +2314,13 @@
                .eq(status != null, Orders::getStatus, status)
                .eq(Orders::getDeleted, Constants.ZERO)
                .orderByDesc(Orders::getAcceptTime);
        // 关键词搜索:收件人/收件人电话模糊、订单号精准
        if (StringUtils.isNotBlank(model.getKeyword())) {
            String kw = model.getKeyword().trim();
            wrapper.and(w -> w.like(Orders::getTakeUser, kw)
                    .or().like(Orders::getTakePhone, kw)
                    .or().like(Orders::getCode, kw));
        }
        IPage<Orders> orderPage = ordersMapper.selectJoinPage(p, Orders.class, wrapper);
        List<DriverGrabOrderVO> voList = new ArrayList<>();