diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java index dd7c38c..dc03453 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java @@ -2,6 +2,7 @@ package com.ruoyi.applet.contoller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.service.H5OrderService; import com.cyl.h5.service.H5PetCareService; @@ -23,6 +24,7 @@ import com.ruoyi.applet.service.IMallOrderService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.model.domain.*; import com.ruoyi.model.service.*; @@ -36,6 +38,7 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -83,10 +86,16 @@ public class ApiAppletOrderController extends BaseController { @Autowired private OmsOrderServiceMapper omsOrderServiceMapper; + @Autowired + private IAppletAddressService appletAddressService; + + @Autowired + private IAppletOutDateService appletOutDateService; @Autowired private IAppletOrderDateFrequencyService appletOrderDateFrequencyService; + @ApiOperation("接单大厅列表-带分页") @GetMapping("/list") public AjaxResult outDateList(AppletOrder appletOrder){ @@ -111,9 +120,95 @@ public class ApiAppletOrderController extends BaseController { List itemList = null; if(appletOrder.getType().equals("0")){ - // TODO 这里需要加上伴宠师等级的筛选 + //查询当前伴宠师地址 + List addressList = appletAddressService.lambdaQuery() + .eq(AppletAddress::getUserId, appUsers.getUserId()) + .list(); + + //没有接单地址,无法接单 + if (addressList.size() == 0){ + return AjaxResult.error("补全接单地址,开始接单"); + } + + boolean addressBoolean = false; - list = appletOrderService.selectAppletOrderListLikeUserIdJson(appletOrder); + for (AppletAddress appletAddress : addressList) { + if (StringUtils.isNotEmpty(appletAddress.getLatitude()) && + StringUtils.isNotEmpty(appletAddress.getLongitude()) && + StringUtils.isNotEmpty(appletAddress.getRangeNo()) && + "true".equals(appletAddress.getStatus())){ + addressBoolean = true; + break; + } + } + + list = appletOrderService.lambdaQuery() + .eq(AppletOrder::getStatus, 0) + .eq(AppletOrder::getType, appletOrder.getType()) + .eq(AppletOrder::getCompanionLevel, appUsers.getUserBcsRole()) + .like(appletOrder.getUserIdJson() != null, AppletOrder::getUserIdJson, appletOrder.getUserIdJson()) + .and(addressList.size() > 0 && addressBoolean, q -> { + for (AppletAddress appletAddress : addressList) { + // + if (StringUtils.isNotEmpty(appletAddress.getLatitude()) && + StringUtils.isNotEmpty(appletAddress.getLongitude()) && + StringUtils.isNotEmpty(appletAddress.getRangeNo()) && + "true".equals(appletAddress.getStatus())){ + //计算地址范围 getRangeNo getLatitude getLongitude + BigDecimal latitude = new BigDecimal(appletAddress.getLatitude()); + BigDecimal longitude = new BigDecimal(appletAddress.getLongitude()); + BigDecimal range = new BigDecimal(appletAddress.getRangeNo());//公里数 + + // 将公里数转换为经纬度范围 + // 1度纬度约等于111公里 + // 1度经度约等于111*cos(纬度)公里 + BigDecimal latRange = range.divide(new BigDecimal("111"), 6, RoundingMode.HALF_UP); + BigDecimal lngRange = range.divide(new BigDecimal("111").multiply(new BigDecimal(Math.cos(latitude.doubleValue() * Math.PI / 180))), 6, RoundingMode.HALF_UP); + + // 计算经纬度范围 + BigDecimal latMin = latitude.subtract(latRange); + BigDecimal latMax = latitude.add(latRange); + BigDecimal lngMin = longitude.subtract(lngRange); + BigDecimal lngMax = longitude.add(lngRange); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + //查询当前地址不接单的日期 + List dates = appletOutDateService + .lambdaQuery() + .select(AppletOutDate::getDate) + .eq(AppletOutDate::getAddressId, appletAddress.getId()) + .list().stream() + .map(n -> { + return sdf.format(n.getDate()); + }) + .collect(Collectors.toList()); + + + q.or(w -> { + if(dates.size() > 0){ + //根据当前日期从serviceList中查询不符合条件的订单id + List orderIds = omsOrderServiceMapper.selectList( + Wrappers.lambdaQuery() + .select(OmsOrderService::getOrderId) + .groupBy(OmsOrderService::getOrderId) + .in(OmsOrderService::getServiceDate, dates)) + .stream().map(n -> n.getOrderId()).collect(Collectors.toList()); + + if (orderIds.size() > 0){ + w.notIn(AppletOrder::getOrderId, orderIds); + } + } + + w.between(AppletOrder::getLatitude, latMin, latMax) + .between(AppletOrder::getLongitude, lngMin, lngMax); + }); + } + } + }) + .list(); + +// list = appletOrderService.selectAppletOrderListLikeUserIdJson(appletOrder); for (AppletOrder order : list) { H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId()); // 得到服务信息 @@ -230,8 +325,6 @@ public class ApiAppletOrderController extends BaseController { } - - //接单大厅 - 根据订单标识查询订单详情的接口 @ApiOperation("接单大厅 - 根据订单标识查询订单详情的接口") @GetMapping("/getByOrderId") diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IMallOrderServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IMallOrderServiceImpl.java index d43e0a1..c24b2e6 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IMallOrderServiceImpl.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IMallOrderServiceImpl.java @@ -103,6 +103,9 @@ public class IMallOrderServiceImpl implements IMallOrderService { appletOrder.setAddress(address);//订单详细地址 appletOrder.setOrderSn(h5OrderVO.getOrderSn()); appletOrder.setOrderId(h5OrderVO.getOrderId()); + appletOrder.setCompanionLevel(h5OrderVO.getCompanionLevel()); + appletOrder.setLongitude(Double.valueOf(h5OrderVO.getLongitude())); + appletOrder.setLatitude(Double.valueOf(h5OrderVO.getLatitude())); appletOrderService.insertAppletOrder(appletOrder); @@ -167,6 +170,9 @@ public class IMallOrderServiceImpl implements IMallOrderService { appletOrder.setAddress(address);//订单详细地址 appletOrder.setOrderSn(h5OrderVO.getOrderSn()); appletOrder.setOrderId(h5OrderVO.getOrderId()); + appletOrder.setCompanionLevel(h5OrderVO.getCompanionLevel()); + appletOrder.setLongitude(Double.valueOf(h5OrderVO.getLongitude())); + appletOrder.setLatitude(Double.valueOf(h5OrderVO.getLatitude())); appletOrderService.insertAppletOrder(appletOrder); diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAddress.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAddress.java index a120cc4..46a99a2 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAddress.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAddress.java @@ -80,6 +80,12 @@ public class AppletAddress extends BaseEntity /** 删除标识 */ private Integer delFlag; + /** + * 备注 + */ + @TableField(exist = false) + private String remark; + // public void setId(Long id) // { // this.id = id; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrder.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrder.java index 741b412..375dd0d 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrder.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrder.java @@ -105,4 +105,13 @@ public class AppletOrder { @TableField(exist = false) private String userName; + + //指定的伴宠师等级 + private Integer companionLevel; + + /** 经度 */ + private Double longitude; + + /** 纬度 */ + private Double latitude; } \ No newline at end of file diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletAddressMapper.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletAddressMapper.java index b9faa18..ca4d059 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletAddressMapper.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletAddressMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.model.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.model.domain.AppletAddress; /** @@ -9,7 +11,7 @@ import com.ruoyi.model.domain.AppletAddress; * @author ruoyi * @date 2025-03-28 */ -public interface AppletAddressMapper +public interface AppletAddressMapper extends BaseMapper { /** * 查询地址信息 diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderMapper.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderMapper.java index 7d0fdf8..794cbae 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderMapper.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.model.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.model.domain.AppletOrder; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -11,8 +13,7 @@ import org.apache.ibatis.annotations.Select; * @author ruoyi * @date 2025-03-28 */ -public interface AppletOrderMapper -{ +public interface AppletOrderMapper extends BaseMapper { /** * 查询订单信息 * diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOutDateMapper.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOutDateMapper.java index 5080e2e..afd7dca 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOutDateMapper.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOutDateMapper.java @@ -1,8 +1,11 @@ package com.ruoyi.model.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.model.domain.AppletOutDate; import org.apache.ibatis.annotations.Delete; +import sun.misc.VM; /** * 不接单日期Mapper接口 @@ -10,7 +13,7 @@ import org.apache.ibatis.annotations.Delete; * @author ruoyi * @date 2025-03-28 */ -public interface AppletOutDateMapper +public interface AppletOutDateMapper extends BaseMapper { /** * 查询不接单日期 diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletAddressService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletAddressService.java index 6fc317e..d4d6490 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletAddressService.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletAddressService.java @@ -1,6 +1,8 @@ package com.ruoyi.model.service; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.model.domain.AppletAddress; /** @@ -9,7 +11,7 @@ import com.ruoyi.model.domain.AppletAddress; * @author ruoyi * @date 2025-03-28 */ -public interface IAppletAddressService +public interface IAppletAddressService extends IService { /** * 查询地址信息 diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderService.java index 12330cc..f873bdb 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderService.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderService.java @@ -1,6 +1,8 @@ package com.ruoyi.model.service; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.model.domain.AppletOrder; /** @@ -9,7 +11,7 @@ import com.ruoyi.model.domain.AppletOrder; * @author ruoyi * @date 2025-03-28 */ -public interface IAppletOrderService +public interface IAppletOrderService extends IService { /** * 查询订单信息 diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOutDateService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOutDateService.java index 8ee84b1..0b7a9cd 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOutDateService.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOutDateService.java @@ -1,6 +1,8 @@ package com.ruoyi.model.service; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.model.domain.AppletOutDate; /** @@ -9,7 +11,7 @@ import com.ruoyi.model.domain.AppletOutDate; * @author ruoyi * @date 2025-03-28 */ -public interface IAppletOutDateService +public interface IAppletOutDateService extends IService { /** * 查询不接单日期 diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletAddressServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletAddressServiceImpl.java index 42400dc..d9a3194 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletAddressServiceImpl.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletAddressServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.model.service.impl; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,7 +17,7 @@ import com.ruoyi.model.service.IAppletAddressService; * @date 2025-03-28 */ @Service -public class AppletAddressServiceImpl implements IAppletAddressService +public class AppletAddressServiceImpl extends ServiceImpl implements IAppletAddressService { @Autowired private AppletAddressMapper appletAddressMapper; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderServiceImpl.java index d242133..4003e92 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderServiceImpl.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderServiceImpl.java @@ -2,6 +2,8 @@ package com.ruoyi.model.service.impl; import java.util.Date; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,8 +18,7 @@ import com.ruoyi.model.service.IAppletOrderService; * @date 2025-03-28 */ @Service -public class AppletOrderServiceImpl implements IAppletOrderService -{ +public class AppletOrderServiceImpl extends ServiceImpl implements IAppletOrderService { @Autowired private AppletOrderMapper appletOrderMapper; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOutDateServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOutDateServiceImpl.java index 857afa4..c938c1d 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOutDateServiceImpl.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOutDateServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.model.service.impl; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,7 +17,7 @@ import com.ruoyi.model.service.IAppletOutDateService; * @date 2025-03-28 */ @Service -public class AppletOutDateServiceImpl implements IAppletOutDateService +public class AppletOutDateServiceImpl extends ServiceImpl implements IAppletOutDateService { @Autowired private AppletOutDateMapper appletOutDateMapper; diff --git a/ruoyi-catdog/src/main/resources/mapper/model/AppletOrderMapper.xml b/ruoyi-catdog/src/main/resources/mapper/model/AppletOrderMapper.xml index 1ecd640..c2df109 100644 --- a/ruoyi-catdog/src/main/resources/mapper/model/AppletOrderMapper.xml +++ b/ruoyi-catdog/src/main/resources/mapper/model/AppletOrderMapper.xml @@ -23,11 +23,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - select id, create_time, create_by, update_time, update_by, pay_time, status, price, address, type, reason, user_id, pet_id,num,user_id_json,order_id,order_sn,order_time from applet_order + select id, create_time, create_by, update_time, update_by, pay_time, status, price, address, type, reason, user_id, + pet_id,num,user_id_json,order_id,order_sn,order_time,companion_level, + longitude, latitude + from applet_order