From 0642d54bb174cc19e4dc8e07d6ffb144b7f94028 Mon Sep 17 00:00:00 2001 From: Houpn Date: Thu, 17 Aug 2023 18:47:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86/=E7=89=A9=E6=B5=81/=E5=BF=AB=E9=80=92?= =?UTF-8?q?=E4=BA=BA=E5=91=98/=E5=85=AC=E5=8F=B8=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cc/hiver/core/entity/OrderXd.java | 31 +- .../java/cc/hiver/core/entity/Worker.java | 14 + .../cc/hiver/core/service/OrderService.java | 1 - .../core/serviceimpl/OrderServiceImpl.java | 13 +- .../core/serviceimpl/WorkerServiceImpl.java | 5 + .../main/java/cc/hiver/core/vo/OrderVO.java | 339 +++++++++++++++++- .../admin/LogiticsCompanyController.java | 4 +- .../cc/hiver/app/entity/LogiticsCompany.java | 3 + .../app/service/LogiticsCompanyService.java | 6 + .../LogiticsCompanyServiceImpl.java | 44 +++ .../controller/manage/OrderController.java | 39 +- 11 files changed, 477 insertions(+), 22 deletions(-) diff --git a/hiver-core/src/main/java/cc/hiver/core/entity/OrderXd.java b/hiver-core/src/main/java/cc/hiver/core/entity/OrderXd.java index 1e4285c2..4ad8b4f9 100644 --- a/hiver-core/src/main/java/cc/hiver/core/entity/OrderXd.java +++ b/hiver-core/src/main/java/cc/hiver/core/entity/OrderXd.java @@ -32,7 +32,7 @@ import java.util.Date; @Entity @DynamicInsert @DynamicUpdate -@Table(name = "t_order") +@Table(name = "t_order",uniqueConstraints=@UniqueConstraint(columnNames={"order_by_worker"})) @TableName("t_order") @ApiModel(value = "下单") @EntityListeners(AuditingEntityListener.class) @@ -116,6 +116,13 @@ public class OrderXd implements Serializable { @Column(name = "order_by_worker") private String orderByWorker; + /** + * 抢单工编号 + */ + @ApiModelProperty("快递员编号") + @Column(name = "order_by_courier") + private String orderByCourier; + /** * 被抢单时间 */ @@ -163,8 +170,28 @@ public class OrderXd implements Serializable { * 关联订单工 */ @ManyToOne(targetEntity = Worker.class) - @JoinColumn(name="order_by_worker",insertable=false, updatable=false) + @JoinColumn(name="order_by_worker",referencedColumnName = "worker_id",foreignKey=@ForeignKey(ConstraintMode.NO_CONSTRAINT),insertable=false, updatable=false) private Worker worker; + /** + * 关联快递员 + *//* + @ManyToOne(targetEntity = Courier.class) + @JoinColumn(name="order_by_courier",referencedColumnName = "courier_id",foreignKey=@ForeignKey(ConstraintMode.NO_CONSTRAINT), insertable=false, updatable=false) + private Courier courier;*/ + + /** + * 运送公司 + */ + @ApiModelProperty("运送公司") + @Column(name = "transCompany") + private String transCompany; + + /** + * 乐观锁 + */ + @Version + @ApiModelProperty("version") + private Long version; } 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 83e915d7..aebb68c0 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 @@ -127,4 +127,18 @@ public class Worker implements Serializable { @ApiModelProperty("办公区域") private String region; + /** + * 人员标识 + */ + @ApiModelProperty("人员标识 1-扛包工 2-快递员") + @Column(name = "signPerson") + private String signPerson; + + /** + * 所属公司 + */ + @ApiModelProperty("所属公司") + @Column(name = "ownerCompany") + private String ownerCompany; + } 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 a72d3941..e409f333 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 @@ -33,5 +33,4 @@ public interface OrderService extends HiverBaseService { Page findAllByCondition(OrderXd order, SearchVo searchVo, Pageable pageable); - } 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 46f564fd..1e8e6dab 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 @@ -4,8 +4,11 @@ import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.vo.SearchVo; import cc.hiver.core.dao.OrderDao; +import cc.hiver.core.entity.Courier; import cc.hiver.core.entity.OrderXd; +import cc.hiver.core.entity.Worker; import cc.hiver.core.service.OrderService; +import cc.hiver.core.vo.OrderVO; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; @@ -109,6 +112,8 @@ public class OrderServiceImpl implements OrderService { @Nullable @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { + Join joinWorker = root.join("worker",JoinType.LEFT); + Path orderIdField = root.get("orderId"); Path orderLogisticsField = root.get("orderLogistics"); Path kdOrderIdField = root.get("kdOrderId"); @@ -122,6 +127,11 @@ public class OrderServiceImpl implements OrderService { List list = new ArrayList<>(); + //左关联--查询扛包工 + if (StrUtil.isNotBlank(order.getOrderByWorker())) { + list.add((cb.equal(joinWorker.get("workerId"),orderByWorkerField))); + } + //区域条件 if (StrUtil.isNotBlank(order.getRegion())) { list.add(cb.equal(regionField,order.getRegion())); @@ -176,7 +186,6 @@ public class OrderServiceImpl implements OrderService { }, pageable); } - @Override public List findByCondition(OrderXd order) { return orderDao.findAll(new Specification() { @@ -205,7 +214,7 @@ public class OrderServiceImpl implements OrderService { //订单工编号应该为空 if(StrUtil.isNotBlank(order.getOrderByWorker())){ - list.add(cb.equal(orderLogisticsField,order.getOrderLogistics())); + list.add(cb.equal(orderByWorkerField,order.getOrderByWorker())); }else{ list.add(cb.or(cb.isNull(orderByWorkerField),cb.equal(orderByWorkerField,order.getOrderByWorker()))); } diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java index 48ac79d4..4406552e 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java @@ -52,6 +52,8 @@ public class WorkerServiceImpl implements WorkerService { Path workerStatusField = root.get("workerStatus"); Path mobileField = root.get("mobile"); Path createTimeField = root.get("createTime"); + Path signPersonField = root.get("signPerson"); + List list = new ArrayList<>(); @@ -59,6 +61,9 @@ public class WorkerServiceImpl implements WorkerService { list.add(cb.equal(workerIdField, worker.getWorkerId())); } + if (StrUtil.isNotBlank(worker.getSignPerson())) { + list.add(cb.equal(signPersonField, worker.getSignPerson())); + } // 模糊搜素 if (StrUtil.isNotBlank(worker.getWorkerName())) { list.add(cb.like(workerNameField, '%' + worker.getWorkerName() + '%')); diff --git a/hiver-core/src/main/java/cc/hiver/core/vo/OrderVO.java b/hiver-core/src/main/java/cc/hiver/core/vo/OrderVO.java index dc4d6587..e2ca45b1 100644 --- a/hiver-core/src/main/java/cc/hiver/core/vo/OrderVO.java +++ b/hiver-core/src/main/java/cc/hiver/core/vo/OrderVO.java @@ -1,16 +1,29 @@ package cc.hiver.core.vo; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedBy; +import org.springframework.data.annotation.LastModifiedBy; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.format.annotation.DateTimeFormat; +import javax.persistence.Column; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; +import java.util.Objects; @Data -@ApiModel("保存 ") +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("实体类") public class OrderVO implements Serializable { private static final long serialVersionUID = 1L; @@ -18,7 +31,6 @@ public class OrderVO implements Serializable { /** * 订单号,默认前缀为XD */ - @NotNull(message = "orderId can not null") @ApiModelProperty("订单号,默认前缀为XD") private String orderId; @@ -85,6 +97,12 @@ public class OrderVO implements Serializable { @ApiModelProperty("抢单工编号") private String orderByWorker; + /** + * 快递员编号 + */ + @ApiModelProperty("快递员编号") + private String orderByCourier; + /** * 被抢单时间 @@ -92,4 +110,321 @@ public class OrderVO implements Serializable { @ApiModelProperty("被抢单时间") private Date orderByWorkertime; + /** + * 订单的手机号 + */ + @ApiModelProperty("订单手机号") + private String mobile; + + /** + * 快递员手机号 + */ + @ApiModelProperty("快递员手机号") + private String kdMobile; + + /** + * 扛包工手机号 + */ + @ApiModelProperty("扛包工手机号") + private String kbMobile; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("订单创建时间") + private Date createTime; + + @ApiModelProperty("订单创建人") + private String createBy; + + @ApiModelProperty("订单修改人") + private String updateBy; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "订单修改时间") + private Date updateTime; + + /** + * 订单区域 + */ + @ApiModelProperty("订单所属区域") + private String region; + + /** + * 快递员所属区域 + */ + @ApiModelProperty("快递员所属区域") + private String kdRegion; + + /** + * 扛包工所属区域 + */ + @ApiModelProperty("扛包工所属区域") + private String kbRegion; + + @ApiModelProperty("抢单工名称") + private String workerName; + + @ApiModelProperty("快递员名称") + private String courierName; + + @ApiModelProperty("快递所属公司") + private String kdCompany; + + @ApiModelProperty("扛包所属公司") + private String kbCompany; + + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderAddress() { + return orderAddress; + } + + public void setOrderAddress(String orderAddress) { + this.orderAddress = orderAddress; + } + + public String getOrderLogistics() { + return orderLogistics; + } + + public void setOrderLogistics(String orderLogistics) { + this.orderLogistics = orderLogistics; + } + + public String getOrderDescribe() { + return orderDescribe; + } + + public void setOrderDescribe(String orderDescribe) { + this.orderDescribe = orderDescribe; + } + + public Integer getOrderNum() { + return orderNum; + } + + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + + public String getKdOrderId() { + return kdOrderId; + } + + public void setKdOrderId(String kdOrderId) { + this.kdOrderId = kdOrderId; + } + + public Boolean getTimeout() { + return timeout; + } + + public void setTimeout(Boolean timeout) { + this.timeout = timeout; + } + + public Integer getOrderStatus() { + return orderStatus; + } + + public void setOrderStatus(Integer orderStatus) { + this.orderStatus = orderStatus; + } + + public Integer getOrderBkge() { + return orderBkge; + } + + public void setOrderBkge(Integer orderBkge) { + this.orderBkge = orderBkge; + } + + public String getOrderByWorker() { + return orderByWorker; + } + + public void setOrderByWorker(String orderByWorker) { + this.orderByWorker = orderByWorker; + } + + public String getOrderByCourier() { + return orderByCourier; + } + + public void setOrderByCourier(String orderByCourier) { + this.orderByCourier = orderByCourier; + } + + public Date getOrderByWorkertime() { + return orderByWorkertime; + } + + public void setOrderByWorkertime(Date orderByWorkertime) { + this.orderByWorkertime = orderByWorkertime; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getKdMobile() { + return kdMobile; + } + + public void setKdMobile(String kdMobile) { + this.kdMobile = kdMobile; + } + + public String getKbMobile() { + return kbMobile; + } + + public void setKbMobile(String kbMobile) { + this.kbMobile = kbMobile; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } + + public String getKdRegion() { + return kdRegion; + } + + public void setKdRegion(String kdRegion) { + this.kdRegion = kdRegion; + } + + public String getKbRegion() { + return kbRegion; + } + + public void setKbRegion(String kbRegion) { + this.kbRegion = kbRegion; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getCourierName() { + return courierName; + } + + public void setCourierName(String courierName) { + this.courierName = courierName; + } + + public String getKdCompany() { + return kdCompany; + } + + public void setKdCompany(String kdCompany) { + this.kdCompany = kdCompany; + } + + public String getKbCompany() { + return kbCompany; + } + + public void setKbCompany(String kbCompany) { + this.kbCompany = kbCompany; + } + + @Override + public String toString() { + return "OrderVO{" + + "orderId='" + orderId + '\'' + + ", orderAddress='" + orderAddress + '\'' + + ", orderLogistics='" + orderLogistics + '\'' + + ", orderDescribe='" + orderDescribe + '\'' + + ", orderNum=" + orderNum + + ", kdOrderId='" + kdOrderId + '\'' + + ", timeout=" + timeout + + ", orderStatus=" + orderStatus + + ", orderBkge=" + orderBkge + + ", orderByWorker='" + orderByWorker + '\'' + + ", orderByCourier='" + orderByCourier + '\'' + + ", orderByWorkertime=" + orderByWorkertime + + ", mobile='" + mobile + '\'' + + ", kdMobile='" + kdMobile + '\'' + + ", kbMobile='" + kbMobile + '\'' + + ", createTime=" + createTime + + ", createBy='" + createBy + '\'' + + ", updateBy='" + updateBy + '\'' + + ", updateTime=" + updateTime + + ", region='" + region + '\'' + + ", kdRegion='" + kdRegion + '\'' + + ", kbRegion='" + kbRegion + '\'' + + ", workerName='" + workerName + '\'' + + ", courierName='" + courierName + '\'' + + ", kdCompany='" + kdCompany + '\'' + + ", kbCompany='" + kbCompany + '\'' + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + OrderVO orderVO = (OrderVO) o; + return Objects.equals(orderId, orderVO.orderId) && Objects.equals(orderAddress, orderVO.orderAddress) && Objects.equals(orderLogistics, orderVO.orderLogistics) && Objects.equals(orderDescribe, orderVO.orderDescribe) && Objects.equals(orderNum, orderVO.orderNum) && Objects.equals(kdOrderId, orderVO.kdOrderId) && Objects.equals(timeout, orderVO.timeout) && Objects.equals(orderStatus, orderVO.orderStatus) && Objects.equals(orderBkge, orderVO.orderBkge) && Objects.equals(orderByWorker, orderVO.orderByWorker) && Objects.equals(orderByCourier, orderVO.orderByCourier) && Objects.equals(orderByWorkertime, orderVO.orderByWorkertime) && Objects.equals(mobile, orderVO.mobile) && Objects.equals(kdMobile, orderVO.kdMobile) && Objects.equals(kbMobile, orderVO.kbMobile) && Objects.equals(createTime, orderVO.createTime) && Objects.equals(createBy, orderVO.createBy) && Objects.equals(updateBy, orderVO.updateBy) && Objects.equals(updateTime, orderVO.updateTime) && Objects.equals(region, orderVO.region) && Objects.equals(kdRegion, orderVO.kdRegion) && Objects.equals(kbRegion, orderVO.kbRegion) && Objects.equals(workerName, orderVO.workerName) && Objects.equals(courierName, orderVO.courierName) && Objects.equals(kdCompany, orderVO.kdCompany) && Objects.equals(kbCompany, orderVO.kbCompany); + } + + @Override + public int hashCode() { + return Objects.hash(orderId, orderAddress, orderLogistics, orderDescribe, orderNum, kdOrderId, timeout, orderStatus, orderBkge, orderByWorker, orderByCourier, orderByWorkertime, mobile, kdMobile, kbMobile, createTime, createBy, updateBy, updateTime, region, kdRegion, kbRegion, workerName, courierName, kdCompany, kbCompany); + } } diff --git a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/controller/admin/LogiticsCompanyController.java b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/controller/admin/LogiticsCompanyController.java index a3232d9f..7d7afcf2 100644 --- a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/controller/admin/LogiticsCompanyController.java +++ b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/controller/admin/LogiticsCompanyController.java @@ -45,8 +45,8 @@ public class LogiticsCompanyController { @RequestMapping(value = "/getAll", method = RequestMethod.GET) @ApiOperation(value = "获取全部数据") - public Result> getAll() { - List list = companyService.getAll(); + public Result> getAll(LogiticsCompany company) { + List list = companyService.findByCondition(company); return new ResultUtil>().setData(list); } diff --git a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/entity/LogiticsCompany.java b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/entity/LogiticsCompany.java index 311d0145..b4cc41be 100644 --- a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/entity/LogiticsCompany.java +++ b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/entity/LogiticsCompany.java @@ -65,4 +65,7 @@ public class LogiticsCompany extends HiverBaseEntity { @ApiModelProperty(value = "办公区域") private String region; + @ApiModelProperty(value = "公司标签") + private String signCompany; + } diff --git a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/service/LogiticsCompanyService.java b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/service/LogiticsCompanyService.java index 78826e7e..61b40d51 100644 --- a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/service/LogiticsCompanyService.java +++ b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/service/LogiticsCompanyService.java @@ -18,9 +18,12 @@ package cc.hiver.app.service; import cc.hiver.app.entity.Company; import cc.hiver.app.entity.LogiticsCompany; import cc.hiver.core.base.HiverBaseService; +import cc.hiver.core.entity.OrderXd; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.util.List; + /** * @author Yazhi Li */ @@ -41,4 +44,7 @@ public interface LogiticsCompanyService extends HiverBaseService findByCondition(LogiticsCompany logiticsCompany); + } diff --git a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/serviceimpl/LogiticsCompanyServiceImpl.java b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/serviceimpl/LogiticsCompanyServiceImpl.java index da942bbf..92d30ae3 100644 --- a/hiver-modules/hiver-app/src/main/java/cc/hiver/app/serviceimpl/LogiticsCompanyServiceImpl.java +++ b/hiver-modules/hiver-app/src/main/java/cc/hiver/app/serviceimpl/LogiticsCompanyServiceImpl.java @@ -22,6 +22,7 @@ import cc.hiver.app.entity.LogiticsCompany; import cc.hiver.app.service.CompanyService; import cc.hiver.app.service.LogiticsCompanyService; import cc.hiver.core.base.HiverBaseDao; +import cc.hiver.core.entity.OrderXd; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -58,11 +59,16 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { Path companyNameField = root.get("companyName"); + Path signCompanyField = root.get("signCompany"); Path contactsField = root.get("contacts"); Path mobileField = root.get("mobile"); List list = new ArrayList<>(); + if (StrUtil.isNotBlank(company.getSignCompany())) { + list.add(cb.equal(signCompanyField, company.getSignCompany() )); + } + if (StrUtil.isNotBlank(company.getCompanyName())) { list.add(cb.like(companyNameField, '%' + company.getCompanyName() + '%')); } @@ -86,4 +92,42 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService { public LogiticsCompany findByCompanyName(String companyName) { return companyDao.findByCompanyName(companyName); } + + @Override + public List findByCondition(LogiticsCompany company) { + return companyDao.findAll(new Specification() { + @Nullable + @Override + public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { + Path companyNameField = root.get("companyName"); + Path signCompanyField = root.get("signCompany"); + Path contactsField = root.get("contacts"); + Path mobileField = root.get("mobile"); + + List list = new ArrayList<>(); + + if (StrUtil.isNotBlank(company.getSignCompany())) { + list.add(cb.equal(signCompanyField, company.getSignCompany() )); + } + + if (StrUtil.isNotBlank(company.getCompanyName())) { + list.add(cb.like(companyNameField, '%' + company.getCompanyName() + '%')); + } + + if (StrUtil.isNotBlank(company.getContacts())) { + list.add(cb.like(contactsField, '%' + company.getContacts() + '%')); + } + + if (StrUtil.isNotBlank(company.getMobile())) { + list.add(cb.like(mobileField, '%' + company.getMobile() + '%')); + } + + Predicate[] arr = new Predicate[list.size()]; + cq.where(list.toArray(arr)); + return null; + } + }); + } + + } 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 96773feb..5634944e 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 @@ -1,5 +1,6 @@ package cc.hiver.base.controller.manage; +import cc.hiver.core.common.exception.HiverException; import cc.hiver.core.common.redis.RedisTemplateHelper; import cc.hiver.core.common.utils.*; import cc.hiver.core.common.vo.PageVo; @@ -8,6 +9,7 @@ import cc.hiver.core.common.vo.SearchVo; import cc.hiver.core.dao.mapper.DeleteMapper; import cc.hiver.core.entity.*; import cc.hiver.core.service.*; +import cn.hutool.core.date.DateTime; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -15,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; +import org.springframework.dao.OptimisticLockingFailureException; import org.springframework.data.domain.Page; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -119,14 +122,28 @@ public class OrderController { * 二:抢单过程需要进行分布式锁ID进行锁定,用于抢单,上述一是为了保证数据的最终一致性。 * */ - @RequestMapping(value = "/rush/order/{orderId}", method = RequestMethod.POST) + @RequestMapping(value = "/rush/order", method = RequestMethod.POST) @ApiOperation(value = "抢单接口", notes = "需要通过下单编号获取订单信息后进行绑定") //@ClearAndReloadCache(name = ORDER) public Result rush(OrderXd u) { - orderService.update(u); - - return ResultUtil.success("抢单成功"); + try { + OrderXd orderxd = orderService.findByOrderId(u.getOrderId()); + + if (orderxd != null && orderxd.getOrderStatus()==1) { + orderxd.setOrderByWorkertime(new DateTime()); + // 更新订单状态为已抢单 + orderxd.setOrderStatus(2); + orderService.save(orderxd); + return ResultUtil.success("抢单成功"); + } else { + // 处理抢单失败的情况 + throw new CommonException("抢单失败,订单状态已被修改"); + } + } catch (OptimisticLockingFailureException ex) { + // 处理乐观锁失败的情况 + throw new CommonException("抢单失败,订单已被其他用户抢先抢单"); + } } /** @@ -135,20 +152,16 @@ public class OrderController { * 2.当前解绑操作暂定为 超时后手工解绑,创建订单人享有解绑权限,解绑后订单可重新进行抢单(但是否需要标注将原接单人不可见) * */ - @RequestMapping(value = "/unbind/order/{orderId}", method = RequestMethod.POST) + @RequestMapping(value = "/unbind/order/{id}", method = RequestMethod.POST) @ApiOperation(value = "解绑订单接口", notes = "需要通过下单编号获取订单信息后进行解绑") //@ClearAndReloadCache(name = ORDER) - public Result revoke(OrderXd u, - @ApiParam("订单唯一id标识") @PathVariable String orderId) { + public Result revoke(@ApiParam("订单唯一id标识") @PathVariable String id) { - OrderXd o = orderService.findById(orderId); - - o.setOrderByWorker(""); + OrderXd o = orderService.findByOrderId(id); + o.setOrderByWorker(null); o.setOrderByWorkertime(null); o.setWorker(null); - - orderService.update(o); - + o.setOrderStatus(1); return ResultUtil.success("解绑成功"); } From 92e89f6d05fd6dfd2553018fa42d10052a6add80 Mon Sep 17 00:00:00 2001 From: Houpn Date: Thu, 17 Aug 2023 18:47:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cc/hiver/base/controller/manage/OrderController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 5634944e..6be02ac7 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 @@ -138,11 +138,11 @@ public class OrderController { return ResultUtil.success("抢单成功"); } else { // 处理抢单失败的情况 - throw new CommonException("抢单失败,订单状态已被修改"); + throw new HiverException("抢单失败,订单状态已被修改"); } } catch (OptimisticLockingFailureException ex) { // 处理乐观锁失败的情况 - throw new CommonException("抢单失败,订单已被其他用户抢先抢单"); + throw new HiverException("抢单失败,订单已被其他用户抢先抢单"); } }