package com.ruoyi.order.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.PaperInVo; import com.ruoyi.common.core.vo.Path; import com.ruoyi.order.entity.ChangeDispatch; import com.ruoyi.order.entity.Evaluate; import com.ruoyi.order.entity.Order; import com.ruoyi.order.entity.ServeCoordinate; import com.ruoyi.order.entity.ServeRecord; import com.ruoyi.order.request.OrderCountDataRequest; import com.ruoyi.order.request.OrderRequest; import com.ruoyi.order.request.OrderSubmitRequest; import com.ruoyi.order.request.UserOrderRequest; import com.ruoyi.order.service.ChangeDispatchService; import com.ruoyi.order.service.EvaluateService; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.service.ServeCoordinateService; import com.ruoyi.order.service.ServeRecordService; import com.ruoyi.order.vo.MoneyQueryRequest; import com.ruoyi.order.vo.OrderCountRequest; import com.ruoyi.order.vo.OrderCountVO; import com.ruoyi.order.vo.OrderDetailVO; import com.ruoyi.order.vo.OrderPageCountVO; import com.ruoyi.order.vo.OrderQueryRequest; import com.ruoyi.order.vo.OrderResultVO; import com.ruoyi.order.vo.WorkerOrderCountVO; import com.ruoyi.order.vo.WorkerOrderRankVO; import com.ruoyi.user.api.feignClient.UserClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; 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; import java.util.Objects; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** *

* 订单管理 前端控制器 *

* * @author hjl * @since 2024-05-29 */ @RestController @RequestMapping("/order") @Api(tags = {"后台-订单管理"}) public class OrderController { @Resource private OrderService orderService; @Resource private ServeRecordService serveRecordService; @Resource private EvaluateService evaluateService; @Resource private ServeCoordinateService serveCoordinateService; @Resource private ChangeDispatchService changeDispatchService; /** * 根据前台用户id查询所有订单信息 * * @param phone 手机号 */ @ApiOperation(value = "查询用户所有订单", tags = {"后台-订单管理"}) @GetMapping(value = "/queryList") @ApiImplicitParams({ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "String", required = true) }) public R> queryList(@RequestParam("phone") String phone) { return R.ok(orderService.lambdaQuery().eq(Order::getReservationPhone, phone) .eq(Order::getIsDelete, 0).list()); } /** * 订单列表 * * @param orderQueryRequest 订单列表查询参数 */ @ApiOperation(value = "订单列表-分页", tags = {"后台-订单管理"}) @PostMapping(value = "/queryPage") public R> queryPage(@RequestBody OrderQueryRequest orderQueryRequest) { return R.ok(orderService.queryPage(orderQueryRequest)); } @PostMapping(value = "/queryPage1") public R> queryPage1(@RequestBody OrderQueryRequest orderQueryRequest) { return R.ok(orderService.queryPage1(orderQueryRequest)); } /** * 订单列表 */ @ApiOperation(value = "订单列表-各订单数量统计", tags = {"后台-订单管理"}) @PostMapping(value = "/orderPageCount") public R orderPageCount(@RequestBody OrderQueryRequest orderQueryRequest) { return R.ok(orderService.orderPageCount(orderQueryRequest)); } /** * 更改订单状态 */ @ApiOperation(value = "订单列表-更改订单状态", tags = {"后台-订单管理"}) @PostMapping(value = "/updateState") public R updateState(@RequestParam("orderId") String orderId, @RequestParam("state") Integer state) { return R.ok(orderService.lambdaUpdate() .eq(Order::getId, orderId).set(Order::getState, state).update()); } @ApiOperation(value = "订单列表-增加打印次数", tags = {"后台-订单管理"}) @PostMapping(value = "/count") public R count(@RequestParam("orderId") String orderId) { Order byId = orderService.getById(orderId); byId.setPrintCount(byId.getPrintCount()==null?1:byId.getPrintCount()+1); orderService.updateById(byId); return R.ok(); } /** * 增加发送短信次数 * @param orderId 订单id */ @ApiOperation(value = "订单列表-增加发送短信次数", tags = {"后台-订单管理"}) @PostMapping(value = "/msgCount") public R messageCount(@RequestParam("orderId") String orderId) { orderService.messageCount(orderId); return R.ok(); } @ApiOperation(value = "订单列表-获取入库单", tags = {"后台-订单管理"}) @PostMapping(value = "/papercount") public R> inpaper(@RequestParam("workId") String workId,@RequestParam("date") String date) { List paper = orderService.papercout(workId,date); return R.ok(paper); } /** * 更改订单状态且清空到达时间 */ @ApiOperation(value = "订单列表-更改订单状态且清空到达时间", tags = {"后台-订单管理"}) @PostMapping(value = "/updateStateAndArrivalTime") public R updateStateAndArrivalTime(@RequestParam("orderId") String orderId, @RequestParam("state") Integer state) { return R.ok(orderService.lambdaUpdate() .eq(Order::getId, orderId).set(Order::getState, state) .set(Order::getArriveTime, null).update()); } /** * 更改订单提现状态 */ @ApiOperation(value = "订单列表-更改订单提现状态", tags = {"后台-订单管理"}) @PostMapping(value = "/updateWithdrawalState") public R updateWithdrawalState(@RequestParam("orderId") String orderId, @RequestParam("state") Integer state) { return R.ok(orderService.lambdaUpdate() .eq(Order::getId, orderId).set(Order::getIsWithdrawal, state).update()); } /** * 站点详情 * * @param id 站点id */ @ApiOperation(value = "订单列表-订单详情", tags = {"后台-订单管理"}) @GetMapping(value = "/detailByExchangeId") @ApiImplicitParams({ @ApiImplicitParam(value = "改派申请id", name = "id", dataType = "Integer", required = true) }) public R detailByExchangeId(@RequestParam("id") String id) { ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery() .eq(ChangeDispatch::getOrderId, id) .eq(ChangeDispatch::getIsDelete, 0).one(); if (null == changeDispatch) { throw new GlobalException("改派申请信息不存在!"); } return R.ok(orderService.lambdaQuery() .eq(Order::getId, changeDispatch.getOrderId()).eq(Order::getIsDelete, 0).one()); } /** * 站点详情 * * @param orderId 订单id * @param prizeName 奖品名称 */ @ApiOperation(value = "补充订单津贴金额", tags = {"后台-订单管理"}) @GetMapping(value = "/supplementAllowance") public R supplementAllowance(@RequestParam("orderId") String orderId, @RequestParam("prizeName") String prizeName) { BigDecimal bigDecimal; try { bigDecimal = new BigDecimal(prizeName); } catch (Exception e) { bigDecimal = BigDecimal.ZERO; } 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)); } /** * 更改订单状态 * * @param orderId 订单id * @param state 状态 */ @ApiOperation(value = "更改订单状态", tags = {"后台-订单管理"}) @GetMapping(value = "/changeOrderState") public R changeOrderState(@RequestParam("orderId") String orderId, @RequestParam("state") Integer state) { return R.ok(orderService.lambdaUpdate() .eq(Order::getId, orderId).eq(Order::getIsDelete, 0) .set(Order::getState, state).update()); } /** * 站点详情 * * @param id 站点id */ @ApiOperation(value = "订单列表-订单详情", tags = {"后台-订单管理"}) @GetMapping(value = "/detail") @ApiImplicitParams({ @ApiImplicitParam(value = "站点id", name = "id", dataType = "String", required = true) }) public R detail(@RequestParam("id") String id) { return R.ok(orderService.lambdaQuery() .eq(Order::getId, id).eq(Order::getIsDelete, 0).one()); } /** * 申请改派审核通过后生成新订单 * * @param order 订单信息 */ @GetMapping(value = "/generateNewOrder") public R generateNewOrder(@RequestBody Order order) { return R.ok(orderService.save(order)); } @PostMapping(value = "/queryIdsBycode") public R> queryIdsBycode(@RequestBody List cityList) { List collect = orderService.lambdaQuery().eq(BaseEntity::getIsDelete,0).in(Order::getCityCode, cityList).list().stream().map(Order::getUserId).collect(Collectors.toList()); return R.ok(collect); } @PostMapping(value = "/queryIdsBycodeAndSite") public R> queryIdsBycodeAndSite(@RequestParam("cityList") List cityList,@RequestParam("siteIds")List siteIds) { List collect = orderService.lambdaQuery().eq(BaseEntity::getIsDelete,0).in(!siteIds.isEmpty(),Order::getSiteId,siteIds).in(Order::getCityCode, cityList).list().stream().map(Order::getUserId).collect(Collectors.toList()); return R.ok(collect); } /** * 更改订单信息 * * @param type 1:订单派单;2:订单改派 */ @GetMapping(value = "/exchangeOrder") public R exchangeOrder(@RequestParam("type") Integer type, @RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId, @RequestParam("name") String name, @RequestParam("phone") String phone) { Order order = orderService.getById(orderId); // 订单派单 if (Constants.ONE.equals(type)) { order.setServerId(workerId); order.setServerName(name); order.setServerPhone(phone); order.setAcceptTime(new Date()); order.setState(Constants.ONE); orderService.updateById(order); } else if (Constants.TWO.equals(type)) { order.setServerId(workerId); // 更新接单时间 order.setAcceptTime(new Date()); order.setServerName(name); order.setServerPhone(phone); orderService.updateById(order); } // List list = changeDispatchService.lambdaQuery().eq(ChangeDispatch::getOrderId, orderId).list(); // changeDispatchService.removeBatchByIds(list); return R.ok(order); } @Resource private UserClient userClient; /** * 新增订单 * 后台订单为指定订单,默认为待上门状态 * * @param orderRequest 订单信息 */ @ApiOperation(value = "订单列表-新增订单", tags = {"后台-订单管理"}) @PostMapping(value = "/save") public R save(@RequestBody OrderRequest orderRequest) { R servePrice = userClient.getServePrice(orderRequest.getServeId(), orderRequest.getCityCode()); if (servePrice.getData()!=null){ orderRequest.setOrderMoney(servePrice.getData()); } Order order = new Order(); 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.getOrderMoney()); 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.setAcceptTime(new Date()); // 师傅信息 order.setServerId(orderRequest.getServerId()); order.setServerName(orderRequest.getServerName()); order.setServerPhone(orderRequest.getServerPhone()); order.setReservationRemark(orderRequest.getReservationRemark()); order.setState(orderRequest.getState()); 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()); order.setProvinceCode(orderRequest.getProvinceCode()); order.setAreaCode(orderRequest.getAreaCode()); return R.ok(orderService.save(order)); } @ApiOperation(value = "订单列表-新增订单", tags = {"后台-订单管理"}) @PostMapping(value = "/edit") public R edit(@RequestBody OrderRequest orderRequest) { R servePrice = userClient.getServePrice(orderRequest.getServeId(), orderRequest.getCityCode()); if (servePrice.getData()!=null){ orderRequest.setOrderMoney(servePrice.getData()); } Order order = orderService.getById(orderRequest.getOrderId()); // if (order.getState()!=6) { if ((!Objects.equals(order.getServerId(), orderRequest.getServerId())) || (!Objects.equals(order.getTime(), orderRequest.getTime()))) { order.setState(1); order.setArriveTime(null); order.setAcceptTime(new Date()); orderService.lambdaUpdate() .eq(Order::getId, order.getId() ).set(Order::getArriveTime, null).update(); //删除改派管理的订单 // List list = changeDispatchService.lambdaQuery().eq(ChangeDispatch::getOrderId, order.getId()).list(); // changeDispatchService.removeBatchByIds(list); } // } 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.getOrderMoney()); order.setSiteName(orderRequest.getSiteName()); order.setTime(orderRequest.getTime()); // 预约信息 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()); 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.getServePrice()); if (order.getSubsidy()!=null){ order.setOrderMoney(order.getServePrice().add(order.getSubsidy())); } order.setProvinceCode(orderRequest.getProvinceCode()); order.setAreaCode(orderRequest.getAreaCode()); return R.ok(orderService.updateById(order)); } /** * 批量修改订单时间 * @param ids 站点多条id拼接 */ @ApiOperation(value = "订单列表-批量修改订单时间", tags = {"后台-订单管理[2.0]"}) @GetMapping(value = "/batchUpdateTime") public R batchUpdateTime(@RequestParam("ids") String ids, @RequestParam("time") String time) { List idList = Arrays.stream(ids.split(",")).collect(Collectors.toList()); List list = orderService.lambdaQuery().in(Order::getId, idList).list(); if (!CollectionUtils.isEmpty(list)) { list.forEach(data -> data.setTime(time)); orderService.updateBatchById(list); } return R.ok(); } /** * 根据id批量删除站点 * * @param ids 站点多条id拼接 */ @ApiOperation(value = "订单列表-批量删除订单", tags = {"后台-订单管理"}) @GetMapping(value = "/batchDelete") @ApiImplicitParams({ @ApiImplicitParam(value = "多个id ',' 拼接", name = "ids", dataType = "String", required = true) }) public R batchDelete(@RequestParam("ids") String ids) { List idList = Arrays.stream(ids.split(",")).collect(Collectors.toList()); List list = orderService.lambdaQuery().in(Order::getId, idList).list(); list.forEach(data -> data.setIsDelete(1)); List list1 = changeDispatchService.lambdaQuery().in(ChangeDispatch::getOrderId, idList).list(); if (!list1.isEmpty()) { list1.forEach(data -> data.setIsDelete(1)); changeDispatchService.updateBatchById(list1); } return R.ok(orderService.updateBatchById(list)); } /** * 订单列表-excel导出 * * @param orderQueryRequest 筛选参数 */ @ApiOperation(value = "订单列表-excel导出", tags = {"后台-订单管理"}) @PostMapping(value = "/excelExport") public R> excelExport(@RequestBody OrderQueryRequest orderQueryRequest) { return R.ok(orderService.excelExport(orderQueryRequest)); } /** * 订单统计 * * @param request 查询参数 */ @ApiOperation(value = "订单统计", tags = {"后台-订单管理"}) @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> orderCount(@RequestBody OrderCountDataRequest request) { return R.ok(orderService.orderCount(request.getWorkerName(), request.getWorkerPhone(), request.getCityList(), Page.of(request.getPageNum(), request.getPageSize()),request.getSiteIds())); } /** * 判断用户是否下单 * * @param userId 用户id */ @GetMapping(value = "/orderByUserId") public R orderByUserId(@RequestParam("userId") Integer userId) { List list = orderService.lambdaQuery() .eq(Order::getUserId, userId) .eq(Order::getIsDelete, Constants.ZERO).list(); return R.ok(!list.isEmpty()); } @GetMapping(value = "/updateArrivalTime") public R updateArrivalTime(@RequestParam("orderId")String orderId,@RequestParam("arriveTime")String arriveTime) { Order byId = orderService.getById(orderId); byId.setTime(arriveTime); orderService.updateById(byId); return R.ok(); } /** * 回收订单统计 * * @param orderCount 查询所需参数 */ @ApiOperation(value = "后台-回收订单统计", tags = {"后台-首页"}) @PostMapping(value = "/orderCountHome") public R orderCountHome(@RequestBody OrderCountRequest orderCount) { return R.ok(orderService.orderCountHome(orderCount)); } //获取师傅当天的订单 @PostMapping(value = "/workday") public R> workday(@RequestBody Integer workId) { // 获取当前日期 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 使用 format 方法将 LocalDate 对象转换为字符串 String formattedToday = LocalDate.now().format(formatter); System.out.println(formattedToday); // 输出:2023-09-12(假设今天是2023年9月12日) // 构建 Lambda 查询条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper .eq(Order::getTime, formattedToday) // 当天开始时间 ; // 当天结束时间 // 执行查询 List orders = orderService.list(queryWrapper.eq(Order::getServerId,workId)); // 处理查询结果 for (Order order : orders) { System.out.println(order); } return R.ok(orders); } /** * 用户所关联订单记录分页列表 * * @param userId 手机号 * @param pageNum 页码 * @param pageSize 每页显示条数 * @return 分页列表 */ @ApiOperation(value = "用户详情-订单记录分页列表", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/orderList") @ApiImplicitParams({ @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer", required = true), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> orderList(@RequestParam("userId") Integer userId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page 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> orderList1(@RequestParam("userId") Integer userId, @RequestParam("cityList") List cityList, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam("siteIds") List siteIds ) { Page 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> workOrderList(@RequestParam("workId") Integer workId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,@RequestParam("siteIds") String [] siteIds) { Page page = orderService.lambdaQuery().eq(Order::getServerId, workId) .in(siteIds.length>0,Order::getSiteId, siteIds).eq(Order::getIsDelete, 0).page(Page.of(pageNum, pageSize)); return R.ok(page); } /** * 根据类型获取交易额 * * @param moneyQueryRequest 筛选参数 * @return 交易额 */ @ApiOperation(value = "根据类型获取交易额", tags = {"后台-用户管理-用户列表"}) @PostMapping (value = "/tradeMoney") public R tradeMoney(@RequestBody MoneyQueryRequest moneyQueryRequest) { return R.ok(orderService.tradeMoney(moneyQueryRequest)); } /** * 师傅端-订单列表 * * @param userId 用户端 * @param state 订单状态 * @return 交易额 */ @ApiOperation(value = "师傅端-订单列表", tags = {"师傅端"}) @GetMapping(value = "/orderListWorker") public R> orderListWorker(@RequestParam("userId") Integer userId, @RequestParam("state") Integer state,@RequestParam("searchValues") String searchValues, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { return R.ok(orderService.orderListWorker(userId, state, searchValues,pageNum, pageSize)); } /** * 师傅端-根据师傅id获取订单数量 * * @param workerIds 师傅id集合 * @return 接单列表 */ @ApiOperation(value = "根据师傅id获取订单数量", tags = {"师傅端"}) @PostMapping(value = "/workerOrderRank") public R> workerOrderRank(@RequestBody List workerIds) { return R.ok(orderService.workerOrderRank(workerIds)); } /** * 师傅端-订单路线导航 * * @param orderId 订单id */ @ApiOperation(value = "订单路线导航", tags = {"师傅端"}) @GetMapping(value = "/orderNavigation") public R orderNavigation(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId, @RequestParam("longitude") String longitude, @RequestParam("latitude") String latitude) { Order order = orderService.lambdaQuery().eq(Order::getId, orderId) .eq(Order::getServerId, workerId) .eq(Order::getIsDelete, 0).one(); if (null == order) { throw new GlobalException("请确认当前订单所派单师傅是否是您!"); } // 用户下单经纬度 Double userLongitude = order.getLongitude(); Double userLatitude = order.getLatitude(); String userPosition = userLongitude + "," + userLatitude; // 师傅当前位置 经纬度 String workerPosition = longitude + "," + latitude; return R.ok(orderService.orderNavigation(userPosition, workerPosition)); } /** * 师傅端-已到达预约地点 * * @param orderId 订单id */ @ApiOperation(value = "已到达预约地点", tags = {"师傅端"}) @GetMapping(value = "/reachPosition") public R 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(); if (null == order) { throw new GlobalException("请确认当前订单所派单师傅是否是您!"); } // 待完工状态 order.setState(Constants.TWO); order.setArriveTime(new Date()); return R.ok(orderService.updateById(order)); } /** * 师傅端-订单详情 * * @param orderId 订单id */ @ApiOperation(value = "订单详情", tags = {"师傅端-订单列表"}) @GetMapping(value = "/orderDetail") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true) }) public R 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(); // 评价信息 Evaluate evaluate = evaluateService.lambdaQuery().eq(Evaluate::getOrderId, orderId) .eq(Evaluate::getIsDelete, 0).one(); return R.ok(new OrderDetailVO(order, serveRecord, evaluate)); } /** * 师傅端-订单详情 * * @param orderSubmitRequest 提交订单信息 */ @ApiOperation(value = "订单完工-提交订单", tags = {"师傅端-订单列表"}) @PostMapping(value = "/orderSubmit") @Transactional(rollbackFor = Exception.class) public R orderSubmit(@RequestBody OrderSubmitRequest orderSubmitRequest) { // 订单信息 Order order = orderService.lambdaQuery().eq(Order::getId, orderSubmitRequest.getOrderId()) .eq(Order::getIsDelete, 0).one(); // 订单不存在,或订单状态异常(订单状态为2才可提交) if (null == order || !Constants.TWO.equals(order.getState())) { throw new GlobalException("订单不存在或订单状态异常!"); } order.setCompleteTime(new Date()); order.setState(Constants.THREE); order.setFake(orderSubmitRequest.getFake()); order.setRemark(orderSubmitRequest.getRemark()); boolean update = orderService.updateById(order); // 服务记录 ServeRecord serveRecord = new ServeRecord(); serveRecord.setOrderId(order.getId()); serveRecord.setPhoto(String.join(",", orderSubmitRequest.getPhoto())); serveRecord.setPaperPic(orderSubmitRequest.getPaperPic()); serveRecord.setCardPic(orderSubmitRequest.getCardPic()); serveRecord.setMachinePic(orderSubmitRequest.getMachinePic()); boolean save = serveRecordService.save(serveRecord); return R.ok(update && save); } /** * 师傅端-定时调度记录师傅所走路线经纬度 * * @param orderId 订单id * @param longitude 经度 * @param latitude 纬度 */ @ApiOperation(value = "订单进行-记录路线经纬度", tags = {"师傅端"}) @GetMapping(value = "/coordinate") @Transactional(rollbackFor = Exception.class) public R coordinate(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId, @RequestParam("longitude") Double longitude, @RequestParam("latitude") Double latitude) { ServeCoordinate serveCoordinate = new ServeCoordinate(); serveCoordinate.setWorkerId(workerId); serveCoordinate.setOrderId(orderId); serveCoordinate.setCoordinate(longitude + "," + latitude); serveCoordinate.setLongitude(BigDecimal.valueOf(longitude)); serveCoordinate.setLatitude(BigDecimal.valueOf(latitude)); return R.ok(serveCoordinateService.save(serveCoordinate)); } /** * 师傅端-代办列表 * * @param workerId 师傅id */ // ... @ApiOperation(value = "代办列表", tags ={"师傅端"}) @GetMapping(value = "/orderNotHandle") public R> orderNotHandle(@RequestParam("workerId") Integer workerId) { // 获取当前日期 LocalDate today = LocalDate.now(); // 格式化日期字符串,假设数据库中的日期格式为 yyyy-MM-dd String todayStr = today.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("server_id", workerId) .in("state", 1, 2,7) .eq("is_delete", Constants.ZERO) .eq("DATE(time)", todayStr) // 添加这一行来筛选当天的订单 .orderByAsc("CASE WHEN topSort IS NULL THEN 1 ELSE 0 END") .orderByAsc("topSort"); List list = orderService.list(wrapper); for (Order order : list) { if (order.getAcceptTime()==null){ order.setAcceptTime(order.getCreateTime()); } } return R.ok(list); } /** * 师傅端-订单代办列表 */ @ApiOperation(value = "订单置顶", tags = {"师傅端-首页"}) @GetMapping(value = "/orderTop") public R orderTop(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId) { return R.ok(orderService.orderTop(orderId, workerId)); } /** * 师傅端-订单状态统计数量 */ @ApiOperation(value = "订单状态统计数量", tags = {"师傅端-首页"}) @GetMapping(value = "/orderStateCount") public R orderStateCount(@RequestParam("workerId") Integer workerId) { return R.ok(orderService.orderStateCount(workerId)); } /************************************** 用户端远程调用接口 ***************************************/ /** * 用户端-订单状态统计数量 */ @ApiOperation(value = "订单状态统计数量", tags = {"用户端"}) @GetMapping(value = "/orderListByUser") public R> orderListByUser(@RequestParam("userId") Integer userId, @RequestParam("state") Integer state, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LambdaQueryChainWrapper wrapper = orderService.lambdaQuery() .eq(Order::getIsDelete, 0).eq(Order::getUserId, userId); 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))); } /** * 用户端-生成预订单信息 */ @ApiOperation(value = "生成预订单信息", tags = {"用户端"}) @PostMapping(value = "/orderEstimate") public R orderEstimate(@RequestBody UserOrderRequest userOrderRequest) { return R.ok(orderService.orderEstimate(userOrderRequest), ""); } /** * 用户端-用户下单 */ @ApiOperation(value = "下单", tags = {"用户端"}) @PostMapping(value = "/placeOrder") public R placeOrder(@RequestBody UserOrderRequest userOrderRequest) { return R.ok(orderService.placeOrder(userOrderRequest)); } /** * 师傅端-打电话 */ @ApiOperation(value = "打电话", tags = {"师傅端-打电话[2.0]"}) @GetMapping(value = "/call") public R call(@RequestParam("orderId") String orderId) { Order order = orderService.getById(orderId); if(Objects.isNull(order)){ return R.fail("订单不存在"); } if(order.getState() == 7){ order.setState(1); orderService.updateById(order); } return R.ok(); } /** * 领取补贴金 */ @GetMapping(value = "/receiving") public R receiving(@RequestParam("orderId")String orderId, @RequestParam("recycleSubsidy")BigDecimal recycleSubsidy) { Order order = orderService.getById(orderId); if(Objects.isNull(order)){ return R.fail("订单不存在"); } order.setSubsidy(recycleSubsidy); order.setOrderMoney(order.getOrderMoney().add(recycleSubsidy)); orderService.updateById(order); return R.ok(); } /** * 领取补贴金 */ @GetMapping(value = "/getTodayOrderData") public R> getTodayOrderData() { List orders = orderService.list(Wrappers.lambdaQuery(Order.class) .eq(Order::getTime, LocalDate.now()) .eq(Order::getIsDelete, 0)); return R.ok(orders); } }