8.3
luodangjia
2024-08-03 67157345fe1878681e39ec186ef37ff6b3b5c1fc
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -5,10 +5,12 @@
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
import com.ruoyi.common.core.vo.Path;
import com.ruoyi.order.entity.*;
import com.ruoyi.order.request.OrderCountDataRequest;
import com.ruoyi.order.request.OrderRequest;
import com.ruoyi.order.request.OrderSubmitRequest;
import com.ruoyi.order.request.UserOrderRequest;
@@ -23,6 +25,8 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -66,6 +70,7 @@
        return R.ok(orderService.lambdaQuery().eq(Order::getReservationPhone, phone)
                .eq(Order::getIsDelete, 0).list());
    }
    /**
     * 订单列表
@@ -158,8 +163,18 @@
        } catch (Exception e) {
            bigDecimal = BigDecimal.ZERO;
        }
        return R.ok(orderService.lambdaUpdate()
                .eq(Order::getId, orderId).set(Order::getSubsidy, bigDecimal).update());
        Order order = orderService.lambdaQuery()
                .eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
        BigDecimal subsidy = order.getSubsidy();
        if (null == subsidy) {
            order.setSubsidy(bigDecimal);
            order.setOrderMoney(order.getOrderMoney().add(bigDecimal));
        } else {
            BigDecimal add = order.getSubsidy().add(bigDecimal);
            order.setSubsidy(add);
            order.setOrderMoney(order.getOrderMoney().add(bigDecimal));
        }
        return R.ok(orderService.updateById(order));
    }
    /**
@@ -200,6 +215,13 @@
    public R<Boolean> generateNewOrder(@RequestBody Order order) {
        return R.ok(orderService.save(order));
    }
    @PostMapping(value = "/queryIdsBycode")
    public R<List<Integer>> queryIdsBycode(@RequestBody List<String> cityList) {
        List<Integer> collect = orderService.lambdaQuery().eq(BaseEntity::getIsDelete,0).in(Order::getCityCode, cityList).list().stream().map(Order::getUserId).collect(Collectors.toList());
        return R.ok(collect);
    }
    /**
     * 更改订单信息
@@ -253,6 +275,7 @@
        order.setReservationName(orderRequest.getReservationName());
        order.setReservationPhone(orderRequest.getReservationPhone());
        order.setReservationAddress(orderRequest.getReservationAddress());
        order.setTime(orderRequest.getTime());
        order.setAcceptTime(orderRequest.getAcceptTime());
        // 师傅信息
@@ -272,7 +295,56 @@
        order.setCancelReason(orderRequest.getCancelReason());
        order.setApplyReason(orderRequest.getApplyReason());
        order.setIsEvaluate(Constants.ZERO);
        order.setCityCode(orderRequest.getCityCode());
        order.setOrderMoney(orderRequest.getOrderMoney());
        return R.ok(orderService.save(order));
    }
    @ApiOperation(value = "订单列表-新增订单", tags = {"后台-订单管理"})
    @PostMapping(value = "/edit")
    public R<Boolean> edit(@RequestBody OrderRequest orderRequest) {
        Order order = orderService.getById(orderRequest.getOrderId());
        order.setId(orderRequest.getOrderId());
        order.setCity(orderRequest.getCity());
        order.setOrderNumber(orderRequest.getOrderNumber());
        order.setUserId(orderRequest.getUserId());
        order.setSiteId(orderRequest.getSiteId());
        order.setSiteName(orderRequest.getSiteName());
        order.setServeId(orderRequest.getServeId());
        order.setServeName(orderRequest.getServeName());
        order.setServePrice(orderRequest.getServePrice());
        order.setSiteName(orderRequest.getSiteName());
        // 预约信息
        order.setReservationName(orderRequest.getReservationName());
        order.setReservationPhone(orderRequest.getReservationPhone());
        order.setReservationAddress(orderRequest.getReservationAddress());
        order.setTime(orderRequest.getTime());
        order.setAcceptTime(orderRequest.getAcceptTime());
        // 师傅信息
        order.setServerId(orderRequest.getServerId());
        order.setServerName(orderRequest.getServerName());
        order.setServerPhone(orderRequest.getServerPhone());
        order.setReservationRemark(orderRequest.getReservationRemark());
        if ((order.getServerId()!=orderRequest.getServerId())||(order.getTime()!=orderRequest.getTime())) {
            order.setState(1);
        }
        order.setArriveTime(orderRequest.getArriveTime());
        order.setType(orderRequest.getType());
        order.setLongitude(orderRequest.getLongitude());
        order.setLatitude(orderRequest.getLatitude());
        order.setCompleteTime(orderRequest.getCompleteTime());
        order.setSubsidy(orderRequest.getSubsidy());
        order.setIsWithdrawal(orderRequest.getIsWithdrawal());
        order.setAddress(orderRequest.getAddress());
        order.setCancelReason(orderRequest.getCancelReason());
        order.setApplyReason(orderRequest.getApplyReason());
        order.setIsEvaluate(Constants.ZERO);
        order.setCityCode(orderRequest.getCityCode());
        order.setOrderMoney(orderRequest.getOrderMoney());
        return R.ok(orderService.updateById(order));
    }
@@ -305,24 +377,34 @@
    }
    /**
     * 订单列表-excel导出
     * 订单统计
     *
     * @param name  师傅姓名
     * @param phone 师傅电话
     * @param request 查询参数
     */
    @ApiOperation(value = "订单统计", tags = {"后台-订单管理"})
    @GetMapping(value = "/orderCount")
    @PostMapping(value = "/orderCount")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "师傅姓名", name = "name", dataType = "String"),
            @ApiImplicitParam(value = "师傅电话", name = "phone", dataType = "String"),
            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
    })
    public R<Page<OrderCountVO>> orderCount(@RequestParam(value = "name", required = false) String name,
                                            @RequestParam(value = "phone", required = false) String phone,
                                            @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        return R.ok(orderService.orderCount(name, phone, Page.of(pageNum, pageSize)));
    public R<Page<OrderCountVO>> orderCount(@RequestBody OrderCountDataRequest request) {
        return R.ok(orderService.orderCount(request.getWorkerName(), request.getWorkerPhone(), request.getCityList(),
                Page.of(request.getPageNum(), request.getPageSize())));
    }
    /**
     * 判断用户是否下单
     *
     * @param userId 用户id
     */
    @GetMapping(value = "/orderByUserId")
    public R<Boolean> orderByUserId(@RequestParam("userId") Integer userId) {
        List<Order> list = orderService.lambdaQuery()
                .eq(Order::getUserId, userId)
                .eq(Order::getIsDelete, Constants.ZERO).list();
        return R.ok(!list.isEmpty());
    }
    /**
@@ -351,11 +433,35 @@
            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
    })
    public R<IPage<Order>> orderList(@RequestParam("userId") Integer userId,
    public R<Page<Order>> orderList(@RequestParam("userId") Integer userId,
                                     @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        return R.ok(orderService.lambdaQuery().eq(Order::getUserId, userId)
                .eq(Order::getIsDelete, 0).page(Page.of(pageNum, pageSize)));
        Page<Order> page = orderService.lambdaQuery().eq(Order::getUserId, userId)
                .eq(Order::getIsDelete, 0).page(Page.of(pageNum, pageSize));
        return R.ok(page);
    }
    @GetMapping(value = "/orderList1")
    public R<Page<Order>> orderList1(@RequestParam("userId") Integer userId, @RequestParam("cityList") List<String> cityList,
                                    @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<Order> page = orderService.lambdaQuery().eq(Order::getUserId, userId)
                .eq(Order::getIsDelete, 0).in(!cityList.isEmpty(),Order::getCityCode, cityList).page(Page.of(pageNum, pageSize));
        return R.ok(page);
    }
    @GetMapping(value = "/workOrderList")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "师傅id", name = "workId", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
    })
    public R<Page<Order>> workOrderList(@RequestParam("workId") Integer workId,
                                    @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<Order> page = orderService.lambdaQuery().eq(Order::getServerId, workId)
                .eq(Order::getIsDelete, 0).page(Page.of(pageNum, pageSize));
        return R.ok(page);
    }
    /**
@@ -365,7 +471,7 @@
     * @return 交易额
     */
    @ApiOperation(value = "根据类型获取交易额", tags = {"后台-用户管理-用户列表"})
    @PostMapping(value = "/tradeMoney")
    @PostMapping (value = "/tradeMoney")
    public R<BigDecimal> tradeMoney(@RequestBody MoneyQueryRequest moneyQueryRequest) {
        return R.ok(orderService.tradeMoney(moneyQueryRequest));
    }
@@ -428,7 +534,6 @@
     */
    @ApiOperation(value = "已到达预约地点", tags = {"师傅端"})
    @GetMapping(value = "/reachPosition")
    @Transactional(rollbackFor = Exception.class)
    public R<Boolean> reachPosition(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId) {
        Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getServerId, workerId)
                .eq(Order::getIsDelete, 0).one();
@@ -454,6 +559,9 @@
    public R<OrderDetailVO> orderDetail(@RequestParam("orderId") String orderId) {
        // 订单信息
        Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
        if (order.getAddress()!=null) {
            order.setReservationAddress(order.getReservationAddress() + order.getAddress());
        }
        // 服务信息(服务备注、上门时间、完成时间、完成所拍现场照片)
        ServeRecord serveRecord = serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, orderId)
                .eq(ServeRecord::getIsDelete, 0).one();
@@ -516,17 +624,30 @@
     *
     * @param workerId 师傅id
     */
    @ApiOperation(value = "代办列表", tags = {"师傅端"})
// ...
    @ApiOperation(value = "代办列表", tags ={"师傅端"})
    @GetMapping(value = "/orderNotHandle")
    public R<List<Order>> orderNotHandle(@RequestParam("workerId") Integer workerId) {
        // 获取当前日期
        LocalDate today = LocalDate.now();
        // 格式化日期字符串,假设数据库中的日期格式为 yyyy-MM-dd
        String todayStr = today.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        QueryWrapper<Order> wrapper = new QueryWrapper<>();
        wrapper.eq("server_id", workerId)
                .in("state", 1, 2)
                .eq("is_delete", Constants.ZERO)
                .eq("DATE(createTime)", todayStr)  // 添加这一行来筛选当天的订单
                .orderByAsc("CASE WHEN topSort IS NULL THEN 1 ELSE 0 END")
                .orderByAsc("topSort");
        return R.ok(orderService.list(wrapper));
    }
    /**
     * 师傅端-订单代办列表
@@ -559,7 +680,9 @@
                                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        LambdaQueryChainWrapper<Order> wrapper = orderService.lambdaQuery()
                .eq(Order::getIsDelete, 0).eq(Order::getUserId, userId);
        if (state != -1) {
        if (state == 1 || state == 2) {
            wrapper.in(Order::getState, Constants.ONE, Constants.TWO);
        } else if (state != -1) {
            wrapper.eq(Order::getState, state);
        }
        return R.ok(wrapper.orderByDesc(Order::getCreateTime).page(Page.of(pageNum, pageSize)));