diff --git a/hiver-core/src/main/java/cc/hiver/core/dao/OrderDao.java b/hiver-core/src/main/java/cc/hiver/core/dao/OrderDao.java index e850ab8a..2fc26b11 100644 --- a/hiver-core/src/main/java/cc/hiver/core/dao/OrderDao.java +++ b/hiver-core/src/main/java/cc/hiver/core/dao/OrderDao.java @@ -11,5 +11,6 @@ import cc.hiver.core.entity.Order; */ public interface OrderDao extends HiverBaseDao { + Order findByOrderId(String orderId); } diff --git a/hiver-core/src/main/java/cc/hiver/core/entity/Order.java b/hiver-core/src/main/java/cc/hiver/core/entity/Order.java index 707caaab..649350e5 100644 --- a/hiver-core/src/main/java/cc/hiver/core/entity/Order.java +++ b/hiver-core/src/main/java/cc/hiver/core/entity/Order.java @@ -94,7 +94,7 @@ public class Order implements Serializable { */ @ApiModelProperty("订单是否超时") @Column(name = "is_timeout") - private Boolean timeout; + private String timeout; /** * 订单状态 @@ -155,7 +155,7 @@ public class Order implements Serializable { /** - * 订单工修改时间 + * 关联订单工 */ @ManyToOne(targetEntity = Worker.class) @NotFound(action= NotFoundAction.IGNORE) diff --git a/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java b/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java index 0f478d18..ef765275 100644 --- a/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java +++ b/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java @@ -116,8 +116,10 @@ public class Worker implements Serializable { /** * 订单与抢单工映射关系 + * + * 多端中的列键值《外键》指向一端 一对多的单向关联,我们还是推荐使用一张中间表来建立关系。 */ - @OneToMany(targetEntity = Order.class,mappedBy = "orderByWorker") + @OneToMany(targetEntity = Order.class,mappedBy = "orderByWorker",cascade = CascadeType.ALL,fetch = FetchType.EAGER) private List order; } diff --git a/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java b/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java index 99d829ad..55919e99 100644 --- a/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java +++ b/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java @@ -3,7 +3,6 @@ package cc.hiver.core.service; import cc.hiver.core.base.HiverBaseService; import cc.hiver.core.common.vo.SearchVo; import cc.hiver.core.entity.Order; -import cc.hiver.core.entity.Order; import org.springframework.cache.annotation.CacheConfig; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -21,11 +20,13 @@ public interface OrderService extends HiverBaseService { /** * 多条件分页获取用户 * - * @param Order + * @param * @param searchVo * @param pageable * @return */ Page findByCondition(Order order, SearchVo searchVo, Pageable pageable); + Order findByOrderId(String orderId); + } diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java index c3678f91..1688026d 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java @@ -5,6 +5,7 @@ import cc.hiver.core.common.vo.SearchVo; import cc.hiver.core.dao.OrderDao; import cc.hiver.core.entity.Order; +import cc.hiver.core.entity.User; import cc.hiver.core.service.OrderService; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; @@ -96,4 +97,11 @@ public class OrderServiceImpl implements OrderService { } }, pageable); } + + @Override + public Order findByOrderId(String orderId) { + return orderDao.findByOrderId(orderId); + } + + } diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java index 93af041e..e9f3a4b4 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java @@ -66,8 +66,9 @@ public class OrderController { private EntityManager entityManager; - - + /** + * 该接口即可展示实时物流管理页面,可复用 + */ @RequestMapping(value = "/getByCondition", method = RequestMethod.GET) @ApiOperation(value = "多条件分页获取订单列表") public Result> getByCondition(Order order, @@ -111,4 +112,55 @@ public class OrderController { } + /** + * 需要进行如下判定: + * 1.当前抢单工的抢单状态需进行查验,非正常无法进行抢单 + * 2.正常状态下,判定当前抢单工押金余额是否充足,不足时需要将当前扛包工状态自动修正为不可接单状态,同时当前订单无法抢购。 + * 3.正常抢单情况下,需要在redis中设置抢单后的剩余押金金额,要存在抢单锁机制,实时更新余额 + */ + @RequestMapping(value = "/rush/order/{orderId}", method = RequestMethod.POST) + @ApiOperation(value = "抢单接口", notes = "需要通过下单编号获取订单信息后进行绑定") + public Result rush(Order u, + @RequestParam(required = false) String[] roleIds) { + + + orderService.update(u); + + return ResultUtil.success("抢单成功"); + } + + /** + * 需要进行如下判定:(订单/抢单工/抢单时间/是否超时) + * 1.定时任务轮训修正订单是否超时(当前抢单时间和当前时间做比较) + * 2.当前解绑操作暂定为 超时后手工解绑,创建订单人享有解绑权限,解绑后订单可重新进行抢单(但是否需要标注将原接单人不可见) + * + */ + @RequestMapping(value = "/unbind/order/{orderId}", method = RequestMethod.POST) + @ApiOperation(value = "解绑订单接口", notes = "需要通过下单编号获取订单信息后进行解绑") + public Result revoke(Order u, + @ApiParam("订单唯一id标识") @PathVariable String orderId) { + + Order o = orderService.findById(orderId); + + o.setOrderByWorker(""); + o.setOrderByWorkertime(null); + + orderService.update(o); + + return ResultUtil.success("解绑成功"); + } + + + /** + * 该接口即可展示实时物流管理页面,可复用 + */ + @RequestMapping(value = "/ow/getAllByCondition", method = RequestMethod.GET) + @ApiOperation(value = "多条件分页获取订单列表") + public Result> getAllByCondition(Order order, + SearchVo searchVo, + PageVo pageVo) { + Page page = orderService.findByCondition(order, searchVo, PageUtil.initPage(pageVo)); + return new ResultUtil>().setData(page); + } + }