diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java index f87d7073..d81502a1 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java @@ -11,9 +11,7 @@ import cc.hiver.core.service.WorkerService; import cc.hiver.file.manage.FileManageFactory; import cc.hiver.mall.common.constant.OrderConstant; import cc.hiver.mall.deductlog.service.DeductLogService; -import cc.hiver.mall.entity.OrderXd; -import cc.hiver.mall.entity.ReturnSale; -import cc.hiver.mall.entity.Sale; +import cc.hiver.mall.entity.*; import cc.hiver.mall.pojo.vo.OrderQueryVO; import cc.hiver.mall.pojo.vo.OrderVO; import cc.hiver.mall.service.OrderService; @@ -27,6 +25,7 @@ import com.google.gson.JsonParser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import okhttp3.MediaType; import okhttp3.OkHttpClient; @@ -49,6 +48,8 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.HttpURLConnection; import java.net.URI; import java.net.URL; @@ -539,4 +540,110 @@ public class OrderController { headers.setLocation(URI.create(url)); return new ResponseEntity<>(headers, HttpStatus.FOUND); } + + @Data + public static class OrderSubmitDTO { + private String userId; + private String shopId; + private Integer orderType; // 1: Direct 2: Group + private Integer deliveryType; // 1: Delivery 2: Pickup + private BigDecimal totalAmount; + private BigDecimal goodsAmount; + private BigDecimal packageFee; + private String addressId; // if delivery + private String getAreaId; // from shop + private String putAreaId; // from address + + // Group fields + private Integer groupTargetMembers; + private BigDecimal groupPrice; + private String workerId; + private BigDecimal workerCommission; + + // Items + private List items; + } + + @Data + public static class OrderItem { + private String productId; + private String productName; + private String productPicture; + private String specs; + private BigDecimal price; + private Integer quantity; + } + + @PostMapping("/submitMallOrder") + @ApiOperation("提交商城订单(自研)") + public Result submitMallOrder(@RequestBody OrderSubmitDTO dto) { + // 1. Create Order + MallOrder order = new MallOrder(); + order.setId("O" + SnowFlakeUtil.nextId().toString()); + order.setUserId(dto.getUserId()); + order.setShopId(dto.getShopId()); + order.setOrderType(dto.getOrderType()); + order.setDeliveryType(dto.getDeliveryType()); + order.setStatus(0); // 待支付 + order.setGoodsAmount(dto.getGoodsAmount()); + order.setPackageFee(dto.getPackageFee()); + if(dto.getPackageFee() == null) order.setPackageFee(BigDecimal.ZERO); + order.setAddressId(dto.getAddressId()); + order.setCreateTime(new Date()); + + // 2. Delivery Fee calculation logic + BigDecimal deliveryFee = BigDecimal.ZERO; + if (dto.getDeliveryType() != null && dto.getDeliveryType() == 1) { // 跑腿配送 + if (dto.getOrderType() == 1) { // Direct Buy + deliveryFee = dto.getWorkerCommission() != null ? dto.getWorkerCommission() : BigDecimal.ZERO; + } else if (dto.getOrderType() == 2) { // Group Buy + int members = dto.getGroupTargetMembers() != null ? dto.getGroupTargetMembers() : 1; + if (dto.getWorkerId() != null && !dto.getWorkerId().isEmpty() && dto.getWorkerCommission() != null) { + BigDecimal base = dto.getWorkerCommission(); + BigDecimal extra = members > 2 ? new BigDecimal("0.5").multiply(new BigDecimal(members - 2)) : BigDecimal.ZERO; + deliveryFee = base.add(extra).divide(new BigDecimal(members), 1, RoundingMode.UP); + } else if (dto.getWorkerCommission() != null) { + deliveryFee = dto.getWorkerCommission().divide(new BigDecimal(members), 1, RoundingMode.UP); + } + } + } + order.setDeliveryFee(deliveryFee); + order.setTotalAmount(order.getGoodsAmount().add(order.getPackageFee()).add(deliveryFee)); + + // 3. Create Group Buy Entry if needed + String groupId = null; + if (dto.getOrderType() != null && dto.getOrderType() == 2) { + MallOrderGroup group = new MallOrderGroup(); + group.setId("G" + SnowFlakeUtil.nextId().toString()); + group.setShopId(dto.getShopId()); + group.setHeadUserId(dto.getUserId()); + group.setHeadOrderId(order.getId()); + group.setTargetMembers(dto.getGroupTargetMembers()); + group.setCurrentMembers(1); + group.setStatus(0); // 拼团中 + group.setGroupPrice(dto.getGroupPrice()); + group.setWorkerId(dto.getWorkerId()); + group.setWorkerCommission(dto.getWorkerCommission()); + group.setCreateTime(new Date()); + groupId = group.getId(); + } + + // Return unified order data for payment + return ResultUtil.success("下单成功"); + } + + @PostMapping("/payMallOrderSuccess") + @ApiOperation("商城订单支付成功回调(自研)") + public Result payMallOrderSuccess(@RequestParam String orderId, @RequestParam(required = false) String workerId) { + // Here we would lookup the order, update status to 1 + // If deliveryType == 1 && orderType == 1 (Direct), create DeliveryOrder + MallDeliveryOrder delivery = new MallDeliveryOrder(); + delivery.setId("D" + SnowFlakeUtil.nextId().toString()); + delivery.setOrderId(orderId); + delivery.setWorkerId(workerId); // From order DB + delivery.setStatus(0); // 待接单 + delivery.setCreateTime(new Date()); + + return ResultUtil.success("支付成功处理完毕"); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java index c8f7efe4..d42c33d0 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java @@ -1,6 +1,5 @@ package cc.hiver.mall.controller; - import cc.hiver.core.common.constant.CommonConstant; import cc.hiver.core.common.constant.WorkerConstant; import cc.hiver.core.common.utils.BeanUtils; @@ -10,14 +9,18 @@ import cc.hiver.core.entity.Worker; import cc.hiver.core.service.WorkerService; import cc.hiver.core.vo.WorkerAppVO; import cc.hiver.core.vo.WorkerQueryVO; +import cc.hiver.mall.dao.mapper.WorkerRelaPriceMapper; import cc.hiver.mall.entity.Recharge; import cc.hiver.mall.entity.ShopArea; +import cc.hiver.mall.pojo.vo.WorkerAreaOnlineCountVO; +import cc.hiver.mall.pojo.vo.WorkerMatchVO; import cc.hiver.mall.service.RechargeService; import cc.hiver.mall.service.ShopAreaService; import cn.hutool.core.util.StrUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; @@ -30,13 +33,13 @@ import java.math.BigDecimal; import java.util.List; /** - * 订单工管理接口 + * 配送员管理接口 * * @author houpn */ @Slf4j @RestController -@Api(tags = "订单工接口") +@Api(tags = "配送员接口") @RequestMapping("/hiver/worker") @CacheConfig(cacheNames = "worker") @Transactional @@ -51,6 +54,9 @@ public class WorkerController { @Autowired private ShopAreaService shopAreaService; + @Autowired + private WorkerRelaPriceMapper workerRelaPriceMapper; + @RequestMapping(value = "/getByCondition", method = RequestMethod.POST) @ApiOperation(value = "多条件分页获取订单列表") public Result> getByCondition(@RequestBody WorkerQueryVO worker) { @@ -85,7 +91,7 @@ public class WorkerController { } @RequestMapping(value = "/admin/add", method = RequestMethod.POST) - @ApiOperation(value = "创建抢单工") + @ApiOperation(value = "创建配送员") public Result add(@Valid Worker u) { // 添加商圈名称 @@ -115,7 +121,7 @@ public class WorkerController { } @RequestMapping(value = "/admin/edit", method = RequestMethod.POST) - @ApiOperation(value = "修改抢单工信息", notes = "需要通过下单编号获取订单信息") + @ApiOperation(value = "修改配送员信息", notes = "需要通过下单编号获取订单信息") public Result edit(Worker u) { if (StrUtil.isNotBlank(u.getRegion())) { @@ -133,9 +139,9 @@ public class WorkerController { } @RequestMapping(value = "/admin/editApp", method = RequestMethod.POST) - @ApiOperation(value = "修改抢单工信息-APP", notes = "需要通过下单编号获取订单信息") + @ApiOperation(value = "修改配送员信息-APP", notes = "需要通过下单编号获取订单信息") public Result editApp(WorkerAppVO u) { - //修改抢单工信息时如涉及到充值押金情况,需要更新余额且重置应缴 + //修改配送员信息时如涉及到充值押金情况,需要更新余额且重置应缴 Worker worker = workerService.get(u.getWorkerId()); if (u.getDepoNum() != null && u.getDepoNum().compareTo(BigDecimal.ZERO) > 0) { @@ -160,7 +166,7 @@ public class WorkerController { } @RequestMapping(value = "/admin/disable/{workerId}", method = RequestMethod.POST) - @ApiOperation(value = "后台人工禁用抢单工") + @ApiOperation(value = "后台人工禁用配送员") public Result disable(@ApiParam("用户唯一id标识") @PathVariable String workerId) { Worker worker = workerService.get(workerId); worker.setWorkerStatus(WorkerConstant.WORKER_STATUS_DISABLE); @@ -171,8 +177,8 @@ public class WorkerController { } @RequestMapping(value = "/admin/enable/{workerId}", method = RequestMethod.POST) - @ApiOperation(value = "后台人工启用抢单工") - public Result enable(@ApiParam("抢单工唯一id标识") @PathVariable String workerId) { + @ApiOperation(value = "后台人工启用配送员") + public Result enable(@ApiParam("配送员唯一id标识") @PathVariable String workerId) { Worker worker = workerService.get(workerId); //这儿暂时有bug,启用的时候其实需要判定原状态是启用还是不可接单状态,需要进行逻辑判断 worker.setWorkerStatus(WorkerConstant.WORKER_STATUS_NORMAL); @@ -183,7 +189,7 @@ public class WorkerController { } /** - * 拉包工上线 + * 配送员上线 * * @param id * @return Result @@ -191,7 +197,7 @@ public class WorkerController { * @date 2024/2/2 */ @RequestMapping(value = "/onLine", method = RequestMethod.POST) - @ApiOperation(value = "拉包工上线") + @ApiOperation(value = "配送员上线") public Result onLine(String id) { try { workerService.onLine(id); @@ -211,7 +217,7 @@ public class WorkerController { * @date 2024/2/2 */ @RequestMapping(value = "/offLine", method = RequestMethod.POST) - @ApiOperation(value = "拉包工下线") + @ApiOperation(value = "配送员下线") public Result offLine(String id) { try { workerService.offLine(id); @@ -221,4 +227,55 @@ public class WorkerController { return ResultUtil.error("下线失败"); } } + + /** + * 配送员匹配 DTO(前台传入参数) + */ + @Data + public static class WorkerMatchDTO { + /** 取货区域id(商家所在区域) */ + private String shopAreaId; + /** 送货区域id(用户收货区域) */ + private String putAreaId; + /** 交易保障:true 只查 rebate_amount > 0 的配送员 */ + private Boolean baozhang; + /** 相同地址:true 只查手上有相同送货区域订单的配送员 */ + private Boolean xiangtong; + /** 搜索关键词:模糊匹配配送员姓名或手机号 */ + private String keyword; + /** + * 排序字段: + * score -> 评分倒序(默认) + * avgTime -> 平均时长正序 + * orderBkge -> 配送佣金正序 + */ + private String sortField; + } + + @RequestMapping(value = "/getMatchingWorkerList", method = RequestMethod.POST) + @ApiOperation(value = "匹配抢单配送员列表") + public Result> getMatchingWorkerList(@RequestBody WorkerMatchDTO dto) { + // 计算排序方向:avgTime/orderBkge 默认 ASC,score 默认 DESC + String sortOrder = "DESC"; + if ("avgTime".equals(dto.getSortField()) || "orderBkge".equals(dto.getSortField())) { + sortOrder = "ASC"; + } + List list = workerRelaPriceMapper.getMatchingWorkerList( + dto.getShopAreaId(), + dto.getPutAreaId(), + StrUtil.isBlank(dto.getKeyword()) ? null : dto.getKeyword().trim(), + dto.getBaozhang(), + dto.getXiangtong(), + dto.getSortField(), + sortOrder + ); + return new ResultUtil>().setData(list); + } + + @RequestMapping(value = "/getOnlineWorkerByArea", method = RequestMethod.GET) + @ApiOperation(value = "查询各食堂区域在线配送员数量") + public Result> getOnlineWorkerByArea(String parentId) { + List list = workerRelaPriceMapper.getOnlineWorkerCountByCanteenArea(parentId); + return new ResultUtil>().setData(list); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/WorkerRelaPriceMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/WorkerRelaPriceMapper.java index f1e639ae..ffb4f9ae 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/WorkerRelaPriceMapper.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/WorkerRelaPriceMapper.java @@ -1,7 +1,10 @@ package cc.hiver.mall.dao.mapper; import cc.hiver.mall.entity.WorkerRelaPrice; +import cc.hiver.mall.pojo.vo.WorkerAreaOnlineCountVO; +import cc.hiver.mall.pojo.vo.WorkerMatchVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -15,4 +18,35 @@ public interface WorkerRelaPriceMapper extends BaseMapper { void deleteByWorkerId(String workerId); -} \ No newline at end of file + /** + * 查询匹配条件的配送员列表(联查 t_worker_rela_price、t_worker、mall_delivery_order) + * + * @param shopAreaId 取货区域id(前台 shopAreaId) + * @param putAreaId 送货区域id + * @param keyword 模糊搜索姓名或手机号(为 null 时不过滤) + * @param baozhang 交易保障:true 则只查 rebate_amount > 0 的配送员 + * @param xiangtong 相同地址:true 则只查手上有相同 putAreaId 订单的配送员 + * @param sortField 排序字段:score/avgTime/orderBkge(默认 score) + * @param sortOrder 排序方向:DESC/ASC + * @return 配送员匹配 VO 列表 + */ + List getMatchingWorkerList( + @Param("shopAreaId") String shopAreaId, + @Param("putAreaId") String putAreaId, + @Param("keyword") String keyword, + @Param("baozhang") Boolean baozhang, + @Param("xiangtong") Boolean xiangtong, + @Param("sortField") String sortField, + @Param("sortOrder") String sortOrder + ); + + /** + * 查询各食堂区域在线配送员数量。 + * 条件:worker_status=1、is_on_line=1、worker.get_push_order=1, + * 且存在 worker_rela_price.get_push_order=1 且 get_area_id=shop_area.id 的配置。 + * + * @return 食堂区域在线配送员统计 + */ + List getOnlineWorkerCountByCanteenArea(@Param("parentId") String parentId); + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallDeliveryOrder.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallDeliveryOrder.java new file mode 100644 index 00000000..bef6205e --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallDeliveryOrder.java @@ -0,0 +1,36 @@ +package cc.hiver.mall.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Entity +@Table(name = "mall_delivery_order") +@TableName("mall_delivery_order") +@ApiModel(value = "配送订单表") +public class MallDeliveryOrder implements Serializable { + @Id + @TableId + private String id; + private String orderId; + private String groupId; + private String workerId; + private String shopId; + private String getAreaId; + private String putAreaId; + private BigDecimal deliveryFee; + private Integer status; + private Date createTime; + private Date acceptTime; + private Date getTime; + private Date finishTime; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java new file mode 100644 index 00000000..aeeace8a --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java @@ -0,0 +1,37 @@ +package cc.hiver.mall.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Entity +@Table(name = "mall_order") +@TableName("mall_order") +@ApiModel(value = "核心订单表") +public class MallOrder implements Serializable { + @Id + @TableId + private String id; + private String userId; + private String shopId; + private Integer orderType; + private Integer deliveryType; + private Integer status; + private BigDecimal totalAmount; + private BigDecimal goodsAmount; + private BigDecimal deliveryFee; + private BigDecimal packageFee; + private String addressId; + private String remark; + private Date createTime; + private Date payTime; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrderGoods.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrderGoods.java new file mode 100644 index 00000000..1ae073ca --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrderGoods.java @@ -0,0 +1,30 @@ +package cc.hiver.mall.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@Entity +@Table(name = "mall_order_goods") +@TableName("mall_order_goods") +@ApiModel(value = "订单商品详情表") +public class MallOrderGoods implements Serializable { + @Id + @TableId + private String id; + private String orderId; + private String productId; + private String productName; + private String productPicture; + private String specs; + private BigDecimal price; + private Integer quantity; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrderGroup.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrderGroup.java new file mode 100644 index 00000000..30bd443d --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrderGroup.java @@ -0,0 +1,37 @@ +package cc.hiver.mall.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Entity +@Table(name = "mall_order_group") +@TableName("mall_order_group") +@ApiModel(value = "拼团信息表") +public class MallOrderGroup implements Serializable { + @Id + @TableId + private String id; + private String shopId; + private String headUserId; + private String headOrderId; + private String groupUserIds; + private Integer targetMembers; + private Integer currentMembers; + private Integer status; + private BigDecimal groupPrice; + private String workerId; + private BigDecimal workerCommission; + private BigDecimal totalDeliveryFee; + private Date createTime; + private Date expireTime; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallRefundRecord.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallRefundRecord.java new file mode 100644 index 00000000..15a9b783 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallRefundRecord.java @@ -0,0 +1,31 @@ +package cc.hiver.mall.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Entity +@Table(name = "mall_refund_record") +@TableName("mall_refund_record") +@ApiModel(value = "退款记录表") +public class MallRefundRecord implements Serializable { + @Id + @TableId + private String id; + private String orderId; + private String userId; + private BigDecimal refundAmount; + private String reason; + private Integer status; + private Date createTime; + private Date successTime; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerAreaOnlineCountVO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerAreaOnlineCountVO.java new file mode 100644 index 00000000..ddfa8f1a --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerAreaOnlineCountVO.java @@ -0,0 +1,22 @@ +package cc.hiver.mall.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 食堂区域在线配送员数量统计。 + */ +@Data +@ApiModel(value = "食堂区域在线配送员数量统计VO") +public class WorkerAreaOnlineCountVO { + + @ApiModelProperty(value = "区域ID") + private String areaId; + + @ApiModelProperty(value = "区域名称") + private String areaName; + + @ApiModelProperty(value = "在线配送员数量") + private Integer onlineWorkerCount; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerMatchVO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerMatchVO.java new file mode 100644 index 00000000..9aadd79e --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerMatchVO.java @@ -0,0 +1,51 @@ +package cc.hiver.mall.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 配送员匹配列表返回 VO + */ +@Data +@ApiModel(value = "配送员匹配列表VO") +public class WorkerMatchVO { + + @ApiModelProperty("配送员ID") + private String workerId; + + @ApiModelProperty("配送员姓名") + private String workerName; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("头像") + private String icon; + + @ApiModelProperty("评分") + private BigDecimal score; + + @ApiModelProperty("平均配送时长(分钟)") + private BigDecimal avgTime; + + @ApiModelProperty("交易保障金") + private BigDecimal rebateAmount; + + @ApiModelProperty("超高层额外费用") + private BigDecimal highFloorFee; + + @ApiModelProperty("匹配规则的配送佣金") + private BigDecimal orderBkge; + + @ApiModelProperty("当前待接单数(status=0)") + private Integer orderWaitCount; + + @ApiModelProperty("当前待取货数(status=1)") + private Integer orderGetCount; + + @ApiModelProperty("当前待送达数(status=2)") + private Integer orderPutCount; +} diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml index 273fd1fe..43ba8360 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml @@ -48,4 +48,120 @@ from t_worker_rela_price where worker_id = #{workerId,jdbcType=VARCHAR} - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + +