refactor(orders):导入项目订单模块初始工程

This commit is contained in:
JIAN 2024-09-02 20:55:02 +08:00
parent fd089d5147
commit de68066d84
114 changed files with 5263 additions and 0 deletions

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>jzo2o-oreders</artifactId>
<groupId>com.jzo2o</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jzo2o-orders-base</artifactId>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-common</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-mysql</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-redis</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.jzo2o</groupId>-->
<!-- <artifactId>jzo2o-shardingsphere-jdbc</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.jzo2o</groupId>-->
<!-- <artifactId>jzo2o-api</artifactId>-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-alibaba-sentinel</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- </dependency>-->
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-canal-sync</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.jzo2o</groupId>-->
<!-- <artifactId>jzo2o-statemachine</artifactId>-->
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- </dependency>-->
<!--seata-->
<!-- <dependency>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-alibaba-seata</artifactId>-->
<!-- <exclusions>-->
<!-- &lt;!&ndash;版本较低1.4.2,因此排除&ndash;&gt;-->
<!-- <exclusion>-->
<!-- <artifactId>seata-spring-boot-starter</artifactId>-->
<!-- <groupId>io.seata</groupId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <artifactId>seata-spring-boot-starter</artifactId>-->
<!-- <groupId>io.seata</groupId>-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.antlr</groupId>-->
<!-- <artifactId>antlr4</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- </dependency>-->
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-mvc</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,17 @@
package com.jzo2o.orders.base.config;
import com.jzo2o.orders.base.properties.DispatchProperties;
import com.jzo2o.orders.base.properties.ExecutorProperties;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@ComponentScan({"com.jzo2o.orders.base.service","com.jzo2o.orders.base.handler"})
@MapperScan("com.jzo2o.orders.base.mapper")
//@Import({OrderStateMachine.class})
@EnableConfigurationProperties({DispatchProperties.class, ExecutorProperties.class})
public class AutoImportConfiguration {
}

View File

@ -0,0 +1,12 @@
package com.jzo2o.orders.base.constants;
public class ErrorInfo {
public static class Msg {
public static final String SEIZE_ORDERS_FAILD = "单子已经被抢走了";
public static final String SEIZE_ORDERS_SERVE_TIME_EXISTS = "当前服务预约时间冲突";
public static final String SEIZE_ORDERS_RECEIVE_ORDERS_NUM_OVER = "当前接单数已超出范围";
public static final String SEIZE_ORDERS_RECEIVE_CLOSED = "当前接单设置已关闭,如需抢单,需开启接单";
}
}

View File

@ -0,0 +1,10 @@
package com.jzo2o.orders.base.constants;
public class EsIndexConstants {
/**
* 服务人员信息索引
*/
public static final String SERVER_PROVIDER_INFO = "serve_provider_info";
public static final String ORDERS_SEIZE = "orders_seize";
}

View File

@ -0,0 +1,50 @@
package com.jzo2o.orders.base.constants;
public class FieldConstants {
/**
* 预约时间
*/
public static final String SERVE_START_TIME = "serve_start_time";
/**
* 城市编码
*/
public static final String CITY_CODE = "city_code";
/**
* 服务类型id
*/
public static final String SERVE_TYPE_ID = "serve_type_id";
/**
* 服务项id
*/
public static final String SERVE_ITEM_ID = "serve_item_id";
/**
* 服务类型名称
*/
public static final String SERVE_TYPE_NAME = "serve_type_name";
/**
* 服务项名称
*/
public static final String SERVE_ITEM_NAME = "serve_item_name";
/**
* 关键字字段
*/
public static final String KEY_WORDS = "key_words";
/**
* 经纬度
*/
public static final String LOCATION = "location";
public static final String SERVE_TIME = "serve_time";
/**
* 排序字段
*/
public static final String SORT_BY = "sort_by";
}

View File

@ -0,0 +1,36 @@
package com.jzo2o.orders.base.constants;
/**
* 订单常量
*
* @author itcast
* @create 2023/7/28 15:06
**/
public class OrderConstants {
public static final class Status {
public static final String NO_PAY = "NO_PAY";
public static final String DISPATCHING = "DISPATCHING";
public static final String NO_SERVE = "NO_SERVE";
public static final String SERVING = "SERVING";
public static final String NO_EVALUATION = "NO_EVALUATION";
public static final String FINISHED = "FINISHED";
public static final String CANCELED = "CANCELED";
public static final String CHARGEBACK = "CHARGEBACK";
}
public static final class ChangeEvent {
public static final String PAYED = "PAYED";
public static final String DISPATCH = "DISPATCH";
public static final String START_SERVE = "START_SERVE";
public static final String COMPLETE_SERVE = "COMPLETE_SERVE";
public static final String EVALUATE = "EVALUATE";
public static final String CANCEL = "CANCEL";
public static final String SERVE_PROVIDER_CANCEL = "SERVE_PROVIDER_CANCEL";
public static final String CLOSE_DISPATCHING_ORDER = "CLOSE_DISPATCHING_ORDER";
public static final String CLOSE_NO_SERVE_ORDER = "CLOSE_NO_SERVE_ORDER";
public static final String CLOSE_SERVING_ORDER = "CLOSE_SERVING_ORDER";
public static final String CLOSE_NO_EVALUATION_ORDER = "CLOSE_NO_EVALUATION_ORDER";
public static final String CLOSE_FINISHED_ORDER = "CLOSE_FINISHED_ORDER";
}
}

View File

@ -0,0 +1,6 @@
package com.jzo2o.orders.base.constants;
public class OrdersOriginType {
public static final int SEIZE = 1;
public static final int DISPATCH = 2;
}

View File

@ -0,0 +1,169 @@
package com.jzo2o.orders.base.constants;
public class RedisConstants {
public static final class RedisFormatter {
/**
* 抢单用户锁模板格式ORDERS:SEIZE_#{serveProviderId}
*/
public static final String SEIZE = "ORDERS:SEIZE_#{serveProviderId}";
/**
* 派单锁模板格式ORDERS:DISPATCH_#{id}
*/
public static final String DISPATCH = "ORDERS:DISPATCH_#{id}";
/**
* 加入派单池锁模板格式ORDERS:JSONDISPATCHLIST_#{id}
*/
public static final String JSONDISPATCHLIST = "ORDERS:JSONDISPATCHLIST_#{id}";
public static final String REJECT = "ORDERS:DISPATCH:REJECT_#{dispatchRejectReqDTO.id}";
/**
* 抢单超时
*/
public static final String SEIZE_TIME_OUT = "ORDERS:SEIZE:TIME_OUT:#{cityCode}";
public static final String ORDERS_SERVE_TIMEOUT = "ORDERS:SEVER_TIMEOUT:#{ordersServe.id}";
}
public static final class RedisKey {
/**
* 抢单id列表redis key模板ORDERS:SEIZE:IDS_{服务人员id或机构id}_{citycode}
*/
public static final String ORDERS_SEIZE_IDS_FOR_SERVE_PROVIDE = "ORDERS:SEIZE:IDS_%s_%s";
/**
* 抢单列表redis key模板ORDERS:SEIZE:PAGE_{citycode}
*/
public static final String ORDERS_SEIZE_PAGE = "ORDERS:SEIZE:PAGE_%s";
// 抢单相关
/**
*抢单池key格式:ORDERS:SEIZE:POOL_{抢单id}_{抢单id尾号}
*/
public static final String ORDERS_SEIZE = "ORDERS:SEIZE:%s_{%s}";
/**
* 抢单结果同步队列该队列分为10条格式ORDERS:SEIZE:SYNC_{抢单id尾号}
* 序号分别为0到9的10个数字
*/
public static final String ORERS_SEIZE_SYNC_QUEUE_NAME = "ORDERS:SEIZE:SYNC";
/**
* 当前用户/机构当前接单数量接单+派单总数量
* 接单+派单操作+1
* 完成服务/取消服务-1
* 格式PROVIDER:SERVE:NUM_{cityCode}_{序号}
*/
public static final String PROVIDER_SERVE_NUM = "PROVIDER:SERVE:NUM_%s_{%s}";
/**
* 所有服务单放在一起
*/
public static final String SERVE_ORDERS = "SERVE_ORDERS:PAGE_QUERY:PAGE_%s";
public static final String SERVE_ORDERS_KEY = "SERVE_ORDERS:PAGE_QUERY:PAGE_#{serveProviderId}";
/**
* 服务人员或机构每日取消服务单次数
*/
public static final String SERVE_CANCEL_TIMES_EVERY_DAY = "ORDERS:SERVE:CANCEL_%s_%s";
public static final String SERVE_TIME_UPDATE = "ORDERS:SERVE_TIME:#{id}";
/**
* 库存hash结构
*/
public static final String ORDERS_RESOURCE_STOCK = "ORDERS:RESOURCE:STOCK:{%s}";
/**
* 派单连续失败次数 string
*/
public static final String ORDERS_DISPATCH_FAILD_TIMES = "ORDERS:DISPATCH:FAILD_TIMES_%s_{%s}";
/**
* 派单成功同步队列名称
*/
public static final String ORERS_DISPATCH_SYNC_QUEUE_NAME = "ORDERS:DISPATCH:SYNC";
/**
* 服务时间状态 string 格式PROVIDER:SERVE_TIME:{serveProviderId}_{serveTime}_{序号}
*/
public static final String SERVE_PROVIDER_TIMES = "PROVIDER:SERVE_TIME:%s_%s_{%s}";
/**
* 服务状态表 hash 格式PROVIDER:SERVE_STATE:{序号}
* key 格式{服务人员/机构id}_{times或num}time表示接单时间列表nun表示接单数量
*/
public static final String SERVE_PROVIDER_STATE = "PROVIDER:SERVE_STATE:{%s}";
/**
* 派单列表 - zSet结构
*/
public static final String DISPATCH_LIST = "ORDERS:DISPATCH:LIST";
/**
* 用户端滚动分页查询订单
*/
public static final String ORDERS = "ORDERS:PAGE_QUERY:PAGE_%s";
}
public static class Lock {
/**
* 抢派单分布式锁
*/
public static final String DISPATCH_OR_SEIZE_LOCK = "ORDERS:DISPATCH_OR_SEIZE:%s";
public static final String PROVIDER_DISPATCH_LOCK = "PROVIDER:DISPATCH:LOCK_%s";
/**
* 派单同步锁定同步队列redis分布式锁
*/
public static final String DISPATCH_SYNC_LOCK = "ORDERS:DISPATCH:SYNC_%s";
/**
* 接单超时
*/
public static final String DISPATCH_RECEIVE_TIMEOUT_LOCK = "ORDERS:DISPATCH:TIMEOUT";
/**
* 抢单单同步锁定同步队列redis分布式锁
*/
public static final String SEIZE_SYNC_LOCK = "ORDERS:SEIZE:SYNC_%s";
/**
* 订单分片id获取锁
*/
public static final String ORDERS_SHARD_KEY_ID_LOCK = "ORDERS:SHARD_KEY:LOCK";
public static final String ORDERS_SHARD_KEY_ID_GENERATOR = "ORDERS:SHARD_KEY:GENERATOR";
}
public static class Ttl {
/**
* 订单抢单缓存 60s
*/
public static final long ORDERS_SEIZE_PAGE_TTL = 60;
/**
* 服务单分页有效期
*/
public static final long SERVE_ORSERS_PAGE_TTL = 600;
/**
* 订单分页有效期
*/
public static final long ORDERS_PAGE_TTL = 600;
/**
* 抢单派单处理超时时间单位s
*/
public static final long DISPATCH_SEIZE_LOCK_TTL = 10;
/**
* 派单锁定10分钟内不能再次派单
*/
public static final long PROVIDER_DISPATCH_LOCK_TTL = 600;
}
}

View File

@ -0,0 +1,19 @@
package com.jzo2o.orders.base.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 违约行为枚举
*/
@AllArgsConstructor
@Getter
public enum BreachHaviorTypeEnum {
CANCEL_ALLOCATION(1,"机构取消未分配服务单违约行为"),
CANCEL_NO_SERVE(2,"机构或服务人员取消待服务订单违约行为"),
CANCEL_SERVING(3,"机构或服务人员取消服务中订单违约行为"),
DISPATCH_REJECT(4,"机构或服务人员拒绝接单违约行为");
private int type;
private String desc;
}

View File

@ -0,0 +1,24 @@
package com.jzo2o.orders.base.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author itcast
*/
@Getter
@AllArgsConstructor
public enum OrderPayStatusEnum {
NO_PAY(2, "未支付"),
PAY_SUCCESS(4, "支付成功");
private int status;
private final String desc;
public boolean equals(int status) {
return this.status == status;
}
}

View File

@ -0,0 +1,26 @@
package com.jzo2o.orders.base.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author itcast
*/
@Getter
@AllArgsConstructor
public enum OrderRefundStatusEnum {
// APPLY_REFUND(0, "发起退款"),
REFUNDING(1, "退款中"),
REFUND_SUCCESS(2, "退款成功"),
REFUND_FAIL(3, "退款失败");
private int status;
private final String desc;
public boolean equals(int status) {
return this.status == status;
}
}

View File

@ -0,0 +1,44 @@
package com.jzo2o.orders.base.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author itcast
*/
@Getter
@AllArgsConstructor
public enum OrderStatusChangeEventEnum {
PAYED(OrderStatusEnum.NO_PAY, OrderStatusEnum.DISPATCHING, "支付成功", "payed"),
DISPATCH(OrderStatusEnum.DISPATCHING, OrderStatusEnum.NO_SERVE, "接单/抢单成功", "dispatch"),
START_SERVE(OrderStatusEnum.NO_SERVE, OrderStatusEnum.SERVING, "开始服务", "start_serve"),
COMPLETE_SERVE(OrderStatusEnum.SERVING, OrderStatusEnum.FINISHED, "完成服务", "complete_serve"),
// EVALUATE(OrderStatusEnum.NO_EVALUATION, OrderStatusEnum.FINISHED, "评价完成", "evaluate"),
CANCEL(OrderStatusEnum.NO_PAY, OrderStatusEnum.CANCELED, "取消订单", "cancel"),
SERVE_PROVIDER_CANCEL(OrderStatusEnum.NO_SERVE, OrderStatusEnum.DISPATCHING, "服务人员/机构取消订单", "serve_provider_cancel"),
CLOSE_DISPATCHING_ORDER(OrderStatusEnum.DISPATCHING, OrderStatusEnum.CLOSED, "派单中订单关闭", "close_dispatching_order"),
CLOSE_NO_SERVE_ORDER(OrderStatusEnum.NO_SERVE, OrderStatusEnum.CLOSED, "待服务订单关闭", "close_no_serve_order"),
CLOSE_SERVING_ORDER(OrderStatusEnum.SERVING, OrderStatusEnum.CLOSED, "服务中订单关闭", "close_serving_order"),
// CLOSE_NO_EVALUATION_ORDER(OrderStatusEnum.NO_EVALUATION, OrderStatusEnum.CLOSED, "待评价订单关闭", "close_no_evaluation_order"),
CLOSE_FINISHED_ORDER(OrderStatusEnum.FINISHED, OrderStatusEnum.CLOSED, "已完成订单关闭", "close_finished_order");
/**
* 源状态
*/
private final OrderStatusEnum sourceStatus;
/**
* 目标状态
*/
private final OrderStatusEnum targetStatus;
/**
* 描述
*/
private final String desc;
/**
* 代码
*/
private final String code;
}

View File

@ -0,0 +1,39 @@
package com.jzo2o.orders.base.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author itcast
*/
@Getter
@AllArgsConstructor
public enum OrderStatusEnum {
NO_PAY(0, "待支付", "NO_PAY"),
DISPATCHING(100, "派单中", "DISPATCHING"),
NO_SERVE(200, "待服务", "NO_SERVE"),
SERVING(300, "服务中", "SERVING"),
// NO_EVALUATION(400, "待评价", "NO_EVALUATION"),
FINISHED(500, "已完成", "FINISHED"),
CANCELED(600, "已取消", "CANCELED"),
CLOSED(700, "已关闭", "CLOSED");
private final Integer status;
private final String desc;
private final String code;
/**
* 根据状态值获得对应枚举
*
* @param status 状态
* @return 状态对应枚举
*/
public static OrderStatusEnum codeOf(Integer status) {
for (OrderStatusEnum orderStatusEnum : values()) {
if (orderStatusEnum.status.equals(status)) {
return orderStatusEnum;
}
}
return null;
}
}

View File

@ -0,0 +1,21 @@
package com.jzo2o.orders.base.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ServeStatusEnum {
NO_ALLOCATION(0, "待分配"),
NO_SERVED(1,"待服务"),
SERVING(2,"服务中"),
SERVE_FINISHED(3, "服务完成"),
CANCLE(4, "取消");
private int status;
private String desc;
public boolean equals(Integer status) {
return status != null && status.equals(this.getStatus());
}
}

View File

@ -0,0 +1,34 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.BreachRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* 违约记录 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-08-02
*/
public interface BreachRecordMapper extends BaseMapper<BreachRecord> {
/**
* 批量添加违约记录
* @param breachRecords
* @return
*/
// @Insert("<script>INSERT INTO breach_record(id,serve_provider_id, serve_provider_type, behavior_type, breach_reason, " +
// "serve_item_name, serve_address, served_user_id, served_phone, breach_time, breach_day, " +
// "orders_id, orders_serve_id) VALUE <foreach collection='breachRecords' item='record' separator=','>" +
// "(#{record.id},#{record.serveProviderId},#{record.serveProviderType},#{record.behaviorType},#{record.breachReason}," +
// "#{record.serveItemName},#{record.serveAddress},#{record.servedUserId},#{record.servedPhone},#{record.breachTime},#{record.breachDay}," +
// "#{record.ordersId},#{record.ordersServeId})</foreach></script>")
// Integer batchAdd(@Param("breachRecords")List<BreachRecord> breachRecords);
}

View File

@ -0,0 +1,21 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.HistoryOrdersServeSync;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
/**
* <p>
* 服务任务 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-09-14
*/
public interface HistoryOrdersServeSyncMapper extends BaseMapper<HistoryOrdersServeSync> {
@Select("select max(sort_time) from history_orders_sync")
LocalDateTime queryMaxSortTime();
}

View File

@ -0,0 +1,21 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.HistoryOrdersSync;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
/**
* <p>
* 历史订单完成15天后同步到历史订单同步表中通过canal同步到历史订单库中1天后删除删除条件当天数据和历史订单库中的订单数据数量一致 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-09-13
*/
public interface HistoryOrdersSyncMapper extends BaseMapper<HistoryOrdersSync> {
@Select("select max(sort_time) from history_orders_sync")
LocalDateTime queryMaxSortTime();
}

View File

@ -0,0 +1,16 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.OrdersCanceled;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author itcast
* @since 2023-08-19
*/
public interface OrdersCanceledMapper extends BaseMapper<OrdersCanceled> {
}

View File

@ -0,0 +1,27 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.OrdersDispatch;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 派单池 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-08-08
*/
public interface OrdersDispatchMapper extends BaseMapper<OrdersDispatch> {
// @Insert("<script>INSERT INTO orders_dispatch(id, city_code, serve_type_id," +
// "serve_item_name, serve_type_name, serve_item_id, serve_address, serve_item_img," +
// "total_amount, serve_start_time, lon, lat," +
// "pur_num, is_transfer_manual) VALUE <foreach collection='records' item='record' separator=','>#{record.id},#{record.cityCode},#{record.serveTypeId}," +
// "#{record.serveItemName},#{record.serveStartTime},#{record.lon},#{record.lat},#{record.purNum},#{record.isTransferManual})</foreach></script>")
// Integer batchAdd(@Param("records")List<OrdersDispatch> ordersDispatches);
}

View File

@ -0,0 +1,22 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.Orders;
import com.jzo2o.orders.base.model.dto.OrderUpdateStatusDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.time.LocalDateTime;
/**
* <p>
* 订单表 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-08-02
*/
public interface OrdersMapper extends BaseMapper<Orders> {
}

View File

@ -0,0 +1,16 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.OrdersRefund;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 订单退款表 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-09-07
*/
public interface OrdersRefundMapper extends BaseMapper<OrdersRefund> {
}

View File

@ -0,0 +1,16 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.OrdersSeize;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 抢单池 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-08-15
*/
public interface OrdersSeizeMapper extends BaseMapper<OrdersSeize> {
}

View File

@ -0,0 +1,26 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.OrdersServe;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 服务任务 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-08-02
*/
public interface OrdersServeMapper extends BaseMapper<OrdersServe> {
/**
* 物理删除服务单
* @param id 服务单id
* @param serveProviderId 服务人员或机构id
* @return 删除数量
*/
// @Delete("delete from orders_serve where id=#{id} and serve_provider_id=#{serveProviderId}")
// Integer deleteByIdAndServeProviderId(@Param("id") Long id, @Param("serveProviderId") Long serveProviderId);
}

View File

@ -0,0 +1,21 @@
package com.jzo2o.orders.base.mapper;
import com.jzo2o.orders.base.model.domain.ServeProviderSync;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/**
* <p>
* 机构服务端更新服务时间 Mapper 接口
* </p>
*
* @author itcast
* @since 2023-08-09
*/
public interface ServeProviderSyncMapper extends BaseMapper<ServeProviderSync> {
// @Update("update serve_provider_sync set serve_times=JSON_ARRAY_APPEND(serve_times,'$',#{serveTime})," +
// "acceptance_num=acceptance_num+1 where id=#{id}")
// int addServeTimes(@Param("id")Long id, @Param("serveTime") Integer serveTime);
}

View File

@ -0,0 +1,95 @@
package com.jzo2o.orders.base.model.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 违约记录
* </p>
*
* @author itcast
* @since 2023-08-06
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("breach_record")
public class BreachRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 违约id
*/
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 违约机构或师傅
*/
private Long serveProviderId;
/**
* 类型2师傅3机构
*/
private Integer serveProviderType;
/**
* 行为类型1待分配时取消2待服务时取消3服务中取消4派单拒绝5派单超时
*/
private Integer behaviorType;
/**
* 违约原因
*/
private String breachReason;
/**
* 服务项名称
*/
private String serveItemName;
/**
* 服务地址
*/
private String serveAddress;
/**
* 被服务人
*/
private Long servedUserId;
/**
* 被服务人员手机号脱敏
*/
private String servedPhone;
/**
* 违约时间
*/
private LocalDateTime breachTime;
/**
* 违约日格式例如20200512,2020年5月12日
*/
private Integer breachDay;
/**
* 违约单订单id
*/
private Long ordersId;
/**
* 服务单id
*/
private Long ordersServeId;
}

View File

@ -0,0 +1,38 @@
package com.jzo2o.orders.base.model.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 机构服务端更新服务时间
* </p>
*
* @author itcast
* @since 2023-08-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "current_serve_provider_time",autoResultMap = true)
public class CurrentServeProviderTime implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.NONE)
private Long id;
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Long> serveTimes;
}

View File

@ -0,0 +1,222 @@
package com.jzo2o.orders.base.model.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 服务任务
* </p>
*
* @author itcast
* @since 2023-09-14
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "history_orders_serve_sync",autoResultMap = true)
public class HistoryOrdersServeSync implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 服务单id
*/
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 服务人员或服务机构id
*/
private Long serveProviderId;
/**
* 服务者类型2服务端服务3机构端服务
*/
private Integer serveProviderType;
/**
* 机构服务人员id
*/
private Long institutionStaffId;
/**
* 机构工作人员姓名
*/
private String institutionStaffName;
/**
* 机构名称
*/
private String institutionName;
/**
* 订单来源类型1抢单2派单
*/
private Integer ordersOriginType;
/**
* 客户姓名
*/
private String contactsName;
/**
* 客户电话
*/
private String contactsPhone;
/**
* 服务地址
*/
private String serveAddress;
/**
* 城市编码
*/
private String cityCode;
/**
* 服务分类id
*/
private Long serveTypeId;
/**
* 服务分裂名称
*/
private String serveTypeName;
/**
* 预约时间
*/
private LocalDateTime serveStartTime;
/**
* 服务项名称
*/
private String serveItemName;
/**
* 服务项id
*/
private Long serveItemId;
/**
* 服务图片
*/
private String serveItemImg;
/**
* 服务单状态3服务完成4订单关闭
*/
private Integer serveStatus;
/**
* 服务人姓名
*/
private String serveProviderStaffName;
/**
* 服务人手机号
*/
private String serveProviderStaffPhone;
/**
* 取消人姓名
*/
private String cancelerName;
/**
* 取消/被退单时间
*/
private LocalDateTime cancelTime;
/**
* 取消/被退单原因
*/
private String cancelReason;
/**
* 实际服务开始时间
*/
private LocalDateTime realServeStartTime;
/**
* 实际服务完结时间
*/
private LocalDateTime realServeEndTime;
/**
* 服务前照片
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> serveBeforeImgs;
/**
* 服务后照片
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> serveAfterImgs;
/**
* 服务前说明
*/
private String serveBeforeIllustrate;
/**
* 服务后说明
*/
private String serveAfterIllustrate;
/**
* 订单金额
*/
private BigDecimal ordersAmount;
/**
* 服务数量
*/
private Integer serveNum;
/**
* 服务单位
*/
private Integer unit;
/**
* 服务端/机构端是否展示1展示0隐藏
*/
private Integer display;
/**
* 是否是逻辑删除
*/
private Integer isDeleted;
/**
* 更新人
*/
private Long updateBy;
/**
* 排序时间(15天后数据无法再次修改并迁移到历史订单中)
*/
private LocalDateTime sortTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,301 @@
package com.jzo2o.orders.base.model.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 历史订单完成15天后同步到历史订单同步表中通过canal同步到历史订单库中1天后删除删除条件当天数据和历史订单库中的订单数据数量一致
* </p>
*
* @author itcast
* @since 2023-09-13
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "history_orders_sync",autoResultMap = true)
public class HistoryOrdersSync implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 订单所属人
*/
private Long userId;
/**
* 服务类型id
*/
private Long serveTypeId;
/**
* 服务人
*/
private Long serveProviderId;
/**
* 服务人类型2服务人员3机构
*/
private Integer serveProviderType;
/**
* 服务项id
*/
private Long serveItemId;
/**
* 服务id
*/
private Long serveId;
/**
* 城市编码
*/
private String cityCode;
/**
* 服务类型名称
*/
private String serveTypeName;
/**
* 服务项名称
*/
private String serveItemName;
/**
* 服务项图片
*/
private String serveItemImg;
/**
* 服务单位
*/
private Integer unit;
/**
* 订单状态500订单完成600已取消700已关闭
*/
private Integer ordersStatus;
/**
* 支付状态1支付成功2已关闭
*/
private Integer payStatus;
/**
* 退款0发起退款1退款中2退款成功 3退款失败
*/
private Integer refundStatus;
/**
* 订单完成时间
*/
private LocalDateTime tradeFinishTime;
/**
* 支付渠道ALI_PAY支付宝WECHAT_PAY微信
*/
private String tradingChannel;
/**
* 支付流水
*/
private String thirdOrderId;
/**
* 派单时间
*/
private LocalDateTime dispatchTime;
/**
* 单价
*/
private BigDecimal price;
/**
* 购买数量
*/
private Integer purNum;
/**
* 订单总金额
*/
private BigDecimal totalAmount;
/**
* 实际支付金额
*/
private BigDecimal realPayAmount;
/**
* 退款流水
*/
private String thirdRefundOrderId;
/**
* 取消人姓名
*/
private String cancelerName;
/**
* 优惠金额
*/
private BigDecimal discountAmount;
/**
* 服务详细地址
*/
private String serveAddress;
/**
* 联系人手机号
*/
private String contactsPhone;
/**
* 联系人姓名
*/
private String contactsName;
/**
* 服务人姓名
*/
private String serveProviderStaffName;
/**
* 服务人手机号
*/
private String serveProviderStaffPhone;
/**
* 机构名称
*/
private String institutionName;
/**
* 机构电话
*/
private String institutionPhone;
/**
* 下单时间
*/
private LocalDateTime placeOrderTime;
/**
* 服务开始时间
*/
private LocalDateTime serveStartTime;
/**
* 实际服务开始时间
*/
private LocalDateTime realServeStartTime;
/**
* 实际服务结束时间
*/
private LocalDateTime realServeEndTime;
/**
* 服务开始图片
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> serveBeforeImgs;
/**
* 服务开始说明
*/
private String serveBeforeIllustrate;
/**
* 服务完成图片
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> serveAfterImgs;
/**
* 服务完成说明
*/
private String serveAfterIllustrate;
/**
* 支付超时时间该时间只对待支付有意义
*/
private LocalDateTime paymentTimeout;
/**
* 经度
*/
private Double lon;
/**
* 纬度
*/
private Double lat;
/**
* 支付时间
*/
private LocalDateTime payTime;
/**
* 取消/被退单时间
*/
private LocalDateTime cancelTime;
/**
* 取消/被退单原因
*/
private String cancelReason;
/**
* 下单年份,格式yyyy
*/
private Integer year;
/**
* 下单月份,格式yyyyMM
*/
private Integer month;
/**
* 下单所在日,格式yyyyMMdd
*/
private Integer day;
/**
* 下单所在小时格式yyyyMMddHH
*/
private Integer hour;
/**
* 排序时间字段(15天后数据无法再次修改并迁移到历史订单中)
*/
private LocalDateTime sortTime;
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,201 @@
package com.jzo2o.orders.base.model.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 订单表
* </p>
*
* @author itcast
* @since 2023-08-02
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("orders")
public class Orders implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 订单所属人
*/
private Long userId;
/**
* 服务类型id
*/
private Long serveTypeId;
/**
* 服务类型名称
*/
private String serveTypeName;
/**
* 服务项id
*/
private Long serveItemId;
/**
* 服务项名称
*/
private String serveItemName;
/**
* 服务项图片
*/
private String serveItemImg;
/**
* 服务单位
*/
private Integer unit;
/**
* 服务id
*/
private Long serveId;
/**
* 订单状态0待支付100派单中200待服务300服务中400待评价500订单完成600已取消700已关闭
*/
private Integer ordersStatus;
/**
* 交易状态0待支付1支付成功
*/
private Integer payStatus;
/**
* 退款0发起退款1退款中2退款成功 3退款失败
*/
private Integer refundStatus;
/**
* 单价
*/
private BigDecimal price;
/**
* 购买数量
*/
private Integer purNum;
/**
* 订单总金额
*/
private BigDecimal totalAmount;
/**
* 实际支付金额
*/
private BigDecimal realPayAmount;
/**
* 优惠金额
*/
private BigDecimal discountAmount;
/**
* 城市编码
*/
private String cityCode;
/**
* 服务详细地址
*/
private String serveAddress;
/**
* 联系人手机号
*/
private String contactsPhone;
/**
* 联系人姓名
*/
private String contactsName;
/**
* 服务开始时间
*/
private LocalDateTime serveStartTime;
/**
* 经度
*/
private Double lon;
/**
* 纬度
*/
private Double lat;
/**
* 支付时间
*/
private LocalDateTime payTime;
/**
* 评价时间
*/
private LocalDateTime evaluationTime;
/**
* 用户端是否展示1展示0隐藏
*/
private Integer display;
/**
* 排序字段serve_start_time秒级时间戳+订单id后6位
*/
private Long sortBy;
private LocalDateTime createTime;
private LocalDateTime updateTime;
/**
* 支付服务交易单号
*/
private Long tradingOrderNo;
/**
* 第三方支付的交易号
*/
private String transactionId;
/**
* 支付服务退款单号
*/
private Long refundNo;
/**
* 第三方支付的退款单号
*/
private String refundId;
/**
* 支付渠道
*/
private String tradingChannel;
}

View File

@ -0,0 +1,68 @@
package com.jzo2o.orders.base.model.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author itcast
* @since 2023-08-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("orders_canceled")
public class OrdersCanceled implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 取消人
*/
private Long cancellerId;
/**
* 取消人名称
*/
private String cancelerName;
/**
* 取消人类型1普通用户4运营人员
*/
private Integer cancellerType;
/**
* 取消原因
*/
private String cancelReason;
/**
* 取消时间
*/
private LocalDateTime cancelTime;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,114 @@
package com.jzo2o.orders.base.model.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 派单池
* </p>
*
* @author itcast
* @since 2023-08-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("orders_dispatch")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class OrdersDispatch implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 城市编码
*/
private String cityCode;
/**
* 服务分类id
*/
private Long serveTypeId;
/**
* 服务名称
*/
private String serveItemName;
/**
* 服务分类名称
*/
private String serveTypeName;
/**
* 服务项id
*/
private Long serveItemId;
/**
* 服务地址
*/
private String serveAddress;
/**
* 服务项目图片
*/
private String serveItemImg;
/**
* 订单金额
*/
private BigDecimal ordersAmount;
/**
* 服务开始时间
*/
private LocalDateTime serveStartTime;
/**
* 经度
*/
private Double lon;
/**
* 纬度
*/
private Double lat;
/**
* 服务数量
*/
private Integer purNum;
/**
* 是否转人工
*/
private Integer isTransferManual;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,51 @@
package com.jzo2o.orders.base.model.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 订单退款表
* </p>
*
* @author itcast
* @since 2023-09-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("orders_refund")
public class OrdersRefund implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 支付服务交易单号
*/
private Long tradingOrderNo;
/**
* 实付金额
*/
private BigDecimal realPayAmount;
/**
* 创建时间
*/
private LocalDateTime createTime;
}

View File

@ -0,0 +1,122 @@
package com.jzo2o.orders.base.model.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 抢单池
* </p>
*
* @author itcast
* @since 2023-08-15
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrdersSeize implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 城市编码
*/
private String cityCode;
/**
* 服务分类id
*/
private Long serveTypeId;
/**
* 服务名称
*/
private String serveItemName;
/**
* 服务分类名称
*/
private String serveTypeName;
/**
* 服务项id
*/
private Long serveItemId;
/**
* 服务地址
*/
private String serveAddress;
/**
* 服务项目图片
*/
private String serveItemImg;
/**
* 订单总金额
*/
private BigDecimal ordersAmount;
/**
* 服务开始时间
*/
private LocalDateTime serveStartTime;
/**
* 订单支付成功时间用于计算是否进入派单
*/
private LocalDateTime paySuccessTime;
/**
* 经度
*/
private Double lon;
/**
* 纬度
*/
private Double lat;
/**
* 服务数量
*/
private Integer purNum;
/**
* 抢单是否超时
*/
private Integer isTimeOut;
/**
* 抢单列表排序字段
*/
private Long sortBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,178 @@
package com.jzo2o.orders.base.model.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 服务任务
* </p>
*
* @author itcast
* @since 2023-08-02
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "orders_serve",autoResultMap = true)
public class OrdersServe implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 任务id
*/
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 属于哪个用户
*/
private Long userId;
/**
* 服务人员或服务机构id
*/
private Long serveProviderId;
/**
* 服务者类型2服务端服务3机构端服务
*/
private Integer serveProviderType;
/**
* 机构服务人员id
*/
private Long institutionStaffId;
/**
* 订单id
*/
private Long ordersId;
/**
* 订单来源类型1抢单2派单
*/
private Integer ordersOriginType;
/**
* 城市编码
*/
private String cityCode;
/**
* 服务分类id
*/
private Long serveTypeId;
/**
* 预约时间
*/
private LocalDateTime serveStartTime;
/**
* 服务项id
*/
private Long serveItemId;
/**
* 服务图片地址
*/
private String serveItemImg;
/**
* 任务状态
*/
private Integer serveStatus;
/**
* 结算状态0不可结算1待结算2结算完成
*/
private Integer settlementStatus;
/**
* 实际服务开始时间
*/
private LocalDateTime realServeStartTime;
/**
* 实际服务完结时间
*/
private LocalDateTime realServeEndTime;
/**
* 服务前照片
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> serveBeforeImgs;
/**
* 服务后照片
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> serveAfterImgs;
/**
* 服务前说明
*/
private String serveBeforeIllustrate;
/**
* 服务后说明
*/
private String serveAfterIllustrate;
/**
* 取消时间,可以是退单可以是取消时间
*/
private LocalDateTime cancelTime;
/**
* 订单金额
*/
private BigDecimal ordersAmount;
/**
* 购买数量
*/
private Integer purNum;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 排序字段serve_start_time秒级时间戳+订单id后6位
*/
private Long sortBy;
/**
* 服务端/机构端是否展示1展示0隐藏
*/
private Integer display;
/**
* 更新人
*/
private Long updateBy;
}

View File

@ -0,0 +1,71 @@
package com.jzo2o.orders.base.model.domain;
import com.jzo2o.common.model.Location;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.List;
@Data
public class ServeProviderInfo {
/**
* 服务人员或机构同步表
*/
private Long id;
/**
* 类型2服务人员3机构
*/
private Integer serveProviderType;
/**
* 技能列表
*/
private List<Long> serveItemIds;
/**
* 经纬度
*/
private Location location;
/**
* 城市编码
*/
private String cityCode;
// /**
// * 接单距离
// */
// private Double receiveDistance;
/**
* 接单开关1接单开启0接单关闭
*/
private Integer pickUp;
/**
* 评分,默认50分
*/
private Double evaluationScore;
/**
* 服务时间
*/
private List<Integer> serveTimes;
/**
* 首次设置状态0未完成1已完成设置
*/
private Integer settingStatus;
/**
* 接单数
*/
private Integer acceptanceNum;
/**
* 状态0正常1冻结
*/
private Integer status;
}

View File

@ -0,0 +1,48 @@
package com.jzo2o.orders.base.model.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 机构服务端更新服务时间
* </p>
*
* @author itcast
* @since 2023-08-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "serve_provider_sync",autoResultMap = true)
public class ServeProviderSync implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.NONE)
private Long id;
/**
* 服务时间段
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Integer> serveTimes;
/**
* 接单数
*/
private Integer acceptanceNum;
}

View File

@ -0,0 +1,247 @@
package com.jzo2o.orders.base.model.dto;
//import com.jzo2o.statemachine.core.StateMachineSnapshot;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 订单快照
*
* @author itcast
* @create 2023/8/19 10:30
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderSnapshotDTO {
/**
* 订单id
*/
private Long id;
/**
* 订单所属人
*/
private Long userId;
/**
* 服务类型id
*/
private Long serveTypeId;
/**
* 服务类型名称
*/
private String serveTypeName;
/**
* 服务项id
*/
private Long serveItemId;
/**
* 服务项名称
*/
private String serveItemName;
/**
* 服务项图片
*/
private String serveItemImg;
/**
* 服务单位
*/
private Integer unit;
/**
* 服务id
*/
private Long serveId;
/**
* 订单状态0待支付100派单中200待服务300服务中500订单完成600订单取消700已关闭
*/
private Integer ordersStatus;
/**
* 支付状态2待支付4支付成功
*/
private Integer payStatus;
/**
* 退款0发起退款1退款中2退款成功 3退款失败
*/
private Integer refundStatus;
/**
* 单价
*/
private BigDecimal price;
/**
* 购买数量
*/
private Integer purNum;
/**
* 订单总金额
*/
private BigDecimal totalAmount;
/**
* 实际支付金额
*/
private BigDecimal realPayAmount;
/**
* 优惠金额
*/
private BigDecimal discountAmount;
/**
* 城市编码
*/
private String cityCode;
/**
* 服务详细地址
*/
private String serveAddress;
/**
* 联系人手机号
*/
private String contactsPhone;
/**
* 联系人姓名
*/
private String contactsName;
/**
* 服务开始时间
*/
private LocalDateTime serveStartTime;
/**
* 经度
*/
private String lon;
/**
* 纬度
*/
private String lat;
/**
* 支付时间
*/
private LocalDateTime payTime;
/**
* 评价时间
*/
private LocalDateTime evaluationTime;
/**
* 订单创建时间
*/
private LocalDateTime createTime;
/**
* 订单更新时间
*/
private LocalDateTime updateTime;
/**
* 支付服务交易单号
*/
private Long tradingOrderNo;
/**
* 支付服务退款单号
*/
private Long refundNo;
/**
* 支付渠道支付宝微信现金免单挂账
*/
private String tradingChannel;
/**
* 三方流水,微信支付订单号或支付宝订单号
*/
private String thirdOrderId;
/**
* 退款三方流水,微信支付订单号或支付宝订单号
*/
private String thirdRefundOrderId;
/**
* 取消人id
*/
private Long cancellerId;
/**
* 取消人名称
*/
private String cancelerName;
/**
* 取消人类型
*/
private Integer cancellerType;
/**
* 取消时间
*/
private LocalDateTime cancelTime;
/**
* 取消原因
*/
private String cancelReason;
/**
* 实际服务完成时间
*/
private LocalDateTime realServeEndTime;
/**
* 评价状态
*/
private Integer evaluationStatus;
// @Override
// public String getSnapshotId() {
// return String.valueOf(id);
// }
//
// @Override
// public Integer getSnapshotStatus() {
// return ordersStatus;
// }
//
// @Override
// public void setSnapshotId(String snapshotId) {
// this.id = Long.parseLong(snapshotId);
// }
//
// @Override
// public void setSnapshotStatus(Integer snapshotStatus) {
// this.ordersStatus = snapshotStatus;
// }
}

View File

@ -0,0 +1,73 @@
package com.jzo2o.orders.base.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrderUpdateStatusDTO {
/**
* 订单id
*/
private Long id;
/**
* 原订单状态
*/
private Integer originStatus;
/**
* 目标订单状态
*/
private Integer targetStatus;
/**
* 支付状态
*/
private Integer payStatus;
/**
* 退款状态
*/
private Integer refundStatus;
/**
* 支付时间
*/
private LocalDateTime payTime;
/**
* 评价时间
*/
private LocalDateTime evaluationTime;
/**
* 支付服务交易单号
*/
private Long tradingOrderNo;
/**
* 第三方支付的交易号
*/
private String transactionId;
/**
* 支付渠道
*/
private String tradingChannel;
/**
* 实际服务完成时间
*/
private LocalDateTime realServeEndTime;
/**
* 评价状态
*/
private Integer evaluationStatus;
}

View File

@ -0,0 +1,32 @@
package com.jzo2o.orders.base.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* 派单配置
*/
@Configuration
@ConfigurationProperties(prefix = "orders.dispatch")
@Data
public class DispatchProperties {
/**
* 机构端展示抢单列表数量
*/
public Integer seizeListDispalyNumOfInstitution = 50;
/**
* 服务端展示抢单列表数量
*/
public Integer seizeListDispalyNumOfServe = 20;
/**
* 机构端拥有服务单数量
*/
public Integer serveTaskNumOrInstitution = 50;
/**
* 服务人员最大拥有服务数量
*/
public Integer serveTaskNumOfServe = 10;
}

View File

@ -0,0 +1,61 @@
package com.jzo2o.orders.base.properties;
import com.jzo2o.common.utils.ObjectUtils;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
@ConfigurationProperties(prefix = "executor")
@Data
public class ExecutorProperties {
/**
* 线程池配置
*/
@NestedConfigurationProperty
private Map<String, ThreadPool> pools = new HashMap<>();
/**
* 线程池配置
*/
@Data
public static class ThreadPool {
/**
* 核心线程数 默认15
*/
private Integer corePoolSize = 15;
/**
* 最大线程数 默认30
*/
private Integer maxPoolSize = 30;
/**
* 队列大小默认 5000
*/
private Integer queueCapacity = 5000;
/**
* 线程名称默认orders-
*/
private String threadNamePrefix = "orders-";
}
/**
* 线程池名称
*
* @param name
* @return
*/
public final ThreadPool get(String name) {
ThreadPool threadPool = pools.get(name);
return ObjectUtils.isNull(threadPool) ? new ThreadPool() : threadPool;
}
}

View File

@ -0,0 +1,18 @@
package com.jzo2o.orders.base.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.orders.base.model.domain.Orders;
import com.jzo2o.orders.base.model.dto.OrderUpdateStatusDTO;
/**
* <p>
* 订单表 服务类
* </p>
*
* @author itcast
* @since 2023-08-02
*/
public interface IOrdersCommonService extends IService<Orders> {
Integer updateStatus(OrderUpdateStatusDTO orderUpdateStatusReqDTO);
}

View File

@ -0,0 +1,17 @@
package com.jzo2o.orders.base.service;
import com.jzo2o.orders.base.model.domain.Orders;
/**
* 订单分流
*/
public interface IOrdersDiversionCommonService {
/**
* 订单分流,所有订单均可抢单
*
* @param orders
*/
void diversion(Orders orders);
}

View File

@ -0,0 +1,40 @@
package com.jzo2o.orders.base.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jzo2o.orders.base.mapper.OrdersMapper;
import com.jzo2o.orders.base.model.domain.Orders;
import com.jzo2o.orders.base.model.dto.OrderUpdateStatusDTO;
import com.jzo2o.orders.base.service.IOrdersCommonService;
import org.springframework.stereotype.Service;
/**
* <p>
* 订单表 服务实现类
* </p>
*
* @author itcast
* @since 2023-08-02
*/
@Service
public class OrdersCommonServiceImpl extends ServiceImpl<OrdersMapper, Orders> implements IOrdersCommonService {
@Override
public Integer updateStatus(OrderUpdateStatusDTO orderUpdateStatusReqDTO) {
LambdaUpdateWrapper<Orders> updateWrapper = Wrappers.<Orders>lambdaUpdate()
.eq(Orders::getId, orderUpdateStatusReqDTO.getId())
.gt(Orders::getUserId, 0)
.eq(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getOriginStatus()),Orders::getOrdersStatus,orderUpdateStatusReqDTO.getOriginStatus())
.set(Orders::getOrdersStatus, orderUpdateStatusReqDTO.getTargetStatus())
.set(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getPayStatus()),Orders::getPayStatus,orderUpdateStatusReqDTO.getPayStatus())
.set(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getPayTime()),Orders::getPayTime,orderUpdateStatusReqDTO.getPayTime())
.set(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getEvaluationTime()),Orders::getEvaluationTime,orderUpdateStatusReqDTO.getEvaluationTime())
.set(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getTradingOrderNo()),Orders::getTradingOrderNo,orderUpdateStatusReqDTO.getTradingOrderNo())
.set(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getTransactionId()),Orders::getTransactionId,orderUpdateStatusReqDTO.getTransactionId())
.set(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getTradingChannel()),Orders::getTradingChannel,orderUpdateStatusReqDTO.getTradingChannel())
.set(ObjectUtil.isNotNull(orderUpdateStatusReqDTO.getRefundStatus()),Orders::getRefundStatus,orderUpdateStatusReqDTO.getRefundStatus());
boolean update = super.update(updateWrapper);
return update?1:0;
}
}

View File

@ -0,0 +1,119 @@
//package com.jzo2o.orders.base.service.impl;
//
//import com.jzo2o.api.foundations.RegionApi;
//import com.jzo2o.api.foundations.ServeApi;
//import com.jzo2o.api.foundations.dto.response.ConfigRegionInnerResDTO;
//import com.jzo2o.api.foundations.dto.response.ServeAggregationResDTO;
//import com.jzo2o.common.utils.BooleanUtils;
//import com.jzo2o.common.utils.DateUtils;
//import com.jzo2o.common.utils.ObjectUtils;
//import com.jzo2o.orders.base.mapper.OrdersDispatchMapper;
//import com.jzo2o.orders.base.mapper.OrdersSeizeMapper;
//import com.jzo2o.orders.base.model.domain.Orders;
//import com.jzo2o.orders.base.model.domain.OrdersDispatch;
//import com.jzo2o.orders.base.model.domain.OrdersSeize;
//import com.jzo2o.orders.base.service.IOrdersDiversionCommonService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import javax.annotation.Resource;
//import java.time.Duration;
//
//@Service
//@Slf4j
//public class OrdersDiversionCommonServiceImpl implements IOrdersDiversionCommonService {
//
//
// @Resource
// private RedisTemplate<String, Long> redisTemplate;
//
// @Resource
// private RegionApi regionApi;
//
// @Resource
// private ServeApi serveApi;
//
// @Resource
// private OrdersDiversionCommonServiceImpl owner;
//
// @Resource
// private OrdersSeizeMapper ordersSeizeMapper;
// @Resource
// private OrdersDispatchMapper ordersDispatchMapper;
//
// @Override
// public void diversion(Orders orders) {
// log.debug("订单分流id:{}",orders.getId());
// // 1.当前时间已超过服务预约时间则不再分流
// if (orders.getServeStartTime().compareTo(DateUtils.now()) < 0) {
// log.debug("订单{}当前时间已超过服务预约时间则不再分流",orders.getId());
// return;
// }
// ConfigRegionInnerResDTO configRegion = regionApi.findConfigRegionByCityCode(orders.getCityCode());
// ServeAggregationResDTO serveAggregationResDTO = serveApi.findById(orders.getServeId());
// //订单分流数据存储
// owner.diversionCommit(orders,configRegion,serveAggregationResDTO);
// }
//
// @Transactional(rollbackFor = Exception.class)
// public void diversionCommit(Orders orders, ConfigRegionInnerResDTO configRegion, ServeAggregationResDTO serveAggregationResDTO) {
// //流间隔单位分钟即当前时间与服务预计开始时间的间隔
// Integer diversionInterval = configRegion.getDiversionInterval();
//
// //当前时间与服务预约时间的间隔
// Duration between = DateUtils.between(DateUtils.now(), orders.getServeStartTime());
// //服务类型名称
// String serveTypeName = ObjectUtils.get(serveAggregationResDTO, ServeAggregationResDTO::getServeTypeName);
// //服务类型id
// Long serveTypeId = ObjectUtils.get(serveAggregationResDTO, ServeAggregationResDTO::getServeTypeId);
// //服务项名称
// String serveItemName = ObjectUtils.get(serveAggregationResDTO, ServeAggregationResDTO::getServeItemName);
// //服务项图片
// String serveItemImg = ObjectUtils.get(serveAggregationResDTO, ServeAggregationResDTO::getServeItemImg);
// //用于排序,服务预约时间戳加订单号后5位
// long sortBy = DateUtils.toEpochMilli(orders.getServeStartTime()) + orders.getId() % 100000;
// OrdersSeize ordersSeize = OrdersSeize.builder()
// .id(orders.getId())
// .ordersAmount(orders.getRealPayAmount())
// .cityCode(orders.getCityCode())
// .serveTypeId(serveTypeId)
// .serveTypeName(serveTypeName)
// .serveItemId(orders.getServeItemId())
// .serveItemName(serveItemName)
// .serveItemImg(serveItemImg)
// .ordersAmount(orders.getRealPayAmount())
// .serveStartTime(orders.getServeStartTime())
// .serveAddress(orders.getServeAddress())
// .lon(orders.getLon())
// .lat(orders.getLat())
// .paySuccessTime(DateUtils.now())
// .paySuccessTime(orders.getPayTime())
// .sortBy(sortBy)
// .isTimeOut(BooleanUtils.toInt(between.toMinutes() < diversionInterval))
// .purNum(orders.getPurNum()).build();
// ordersSeizeMapper.insert(ordersSeize);
// //当前时间与服务预约时间的间隔 小于指定间隔则插入派单表
// if (between.toMinutes() < diversionInterval) {
// OrdersDispatch ordersDispatch = OrdersDispatch.builder()
// .id(orders.getId())
// .ordersAmount(orders.getRealPayAmount())
// .cityCode(orders.getCityCode())
// .serveTypeId(serveTypeId)
// .serveTypeName(serveTypeName)
// .serveItemId(orders.getServeItemId())
// .serveItemName(serveItemName)
// .serveItemImg(serveItemImg)
// .ordersAmount(orders.getRealPayAmount())
// .serveStartTime(orders.getServeStartTime())
// .serveAddress(orders.getServeAddress())
// .lon(orders.getLon())
// .lat(orders.getLat())
// .purNum(orders.getPurNum()).build();
// ordersDispatchMapper.insert(ordersDispatch);
// }
// }
//
//
//}

View File

@ -0,0 +1,16 @@
package com.jzo2o.orders.base.utils;
import com.jzo2o.common.utils.NumberUtils;
public class RedisUtils {
/**
* 获取城市编码最后以为数字
*
* @param cityCode
* @return
*/
public static int getCityIndex(String cityCode) {
return NumberUtils.parseInt(cityCode) % 10;
}
}

View File

@ -0,0 +1,24 @@
package com.jzo2o.orders.base.utils;
import com.jzo2o.common.utils.DateUtils;
import com.jzo2o.common.utils.NumberUtils;
import java.time.LocalDateTime;
public class ServeTimeUtils {
/**
* 获取服务时间用来处理抢单和派单的时间冲突问题
*
* @param serveStartTime
* @return
*/
public static int getServeTimeInt(LocalDateTime serveStartTime) {
return NumberUtils.parseInt(DateUtils.format(serveStartTime, "yyyyMMddHH"));
}
public static void main(String[] args) {
long number = 2023082400000000001L;
System.out.println(number % 10000000000L % 150000);
}
}

View File

@ -0,0 +1,9 @@
{
"groups": [
],
"properties": [
],
"hints": []
}

View File

@ -0,0 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.jzo2o.orders.base.config.AutoImportConfiguration

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.BreachRecordMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.HistoryOrdersServeSyncMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.HistoryOrdersSyncMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.CurrentServeProviderTimeMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.OrdersServeMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.OrdersCanceledMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.OrdersDispatchMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.OrdersMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.OrdersRefundMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.OrdersSeizeMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzo2o.orders.base.mapper.ServeProviderSyncMapper">
</mapper>

View File

@ -0,0 +1,8 @@
FROM openjdk:11-jdk
LABEL maintainer="研究院研发组 <research-maint@itcast.cn>"
RUN echo "Asia/Shanghai" > /etc/timezone
ARG PACKAGE_PATH=./target/jzo2o-orders-manager.jar
ADD ${PACKAGE_PATH:-./} app.jar
EXPOSE 11504
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS app.jar"]

View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>jzo2o-oreders</artifactId>
<groupId>com.jzo2o</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jzo2o-orders-manager</artifactId>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-mvc</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-knife4j-web</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-mysql</artifactId>
<exclusions>
<exclusion>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-api</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-redis</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-orders-base</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-xxl-job</artifactId>
</dependency>
<dependency>
<groupId>com.jzo2o</groupId>
<artifactId>jzo2o-es</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.jzo2o.orders.manager.OrdersManagerApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,23 @@
package com.jzo2o.orders.manager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @author itcast
*/
@SpringBootApplication
@EnableAspectJAutoProxy
@Slf4j
@EnableTransactionManagement
public class OrdersManagerApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(OrdersManagerApplication.class)
.build(args)
.run(args);
log.info("家政服务-订单管理微服务启动");
}
}

View File

@ -0,0 +1,5 @@
package com.jzo2o.orders.manager.constants;
public class EsIndex {
public static final String SERVE_PROVIDER_INFO = "serve_provider_info";
}

View File

@ -0,0 +1,23 @@
package com.jzo2o.orders.manager.controller.agency;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.mvc.utils.UserContext;
import com.jzo2o.orders.manager.model.dto.request.*;
import com.jzo2o.orders.manager.model.dto.response.OrdersServeDetailResDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersServeResDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersServeStatusNumResDTO;
import com.jzo2o.orders.manager.service.IOrdersServeManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController("orders-agency")
@Api(tags = "机构端-服务单相关接口")
@RequestMapping("/agency")
public class AgencyOrdersServeController {
}

View File

@ -0,0 +1,56 @@
package com.jzo2o.orders.manager.controller.consumer;
import cn.hutool.core.bean.BeanUtil;
import com.jzo2o.api.market.dto.response.AvailableCouponsResDTO;
import com.jzo2o.api.orders.dto.request.OrderCancelReqDTO;
import com.jzo2o.api.orders.dto.response.OrderResDTO;
import com.jzo2o.api.orders.dto.response.OrderSimpleResDTO;
import com.jzo2o.common.model.CurrentUserInfo;
import com.jzo2o.mvc.utils.UserContext;
import com.jzo2o.orders.manager.model.dto.OrderCancelDTO;
import com.jzo2o.orders.manager.model.dto.request.OrdersPayReqDTO;
import com.jzo2o.orders.manager.model.dto.request.PlaceOrderReqDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersPayResDTO;
import com.jzo2o.orders.manager.model.dto.response.PlaceOrderResDTO;
import com.jzo2o.orders.manager.service.IOrdersCreateService;
import com.jzo2o.orders.manager.service.IOrdersManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author itcast
*/
@RestController("consumerOrdersController")
@Api(tags = "用户端-订单相关接口")
@RequestMapping("/consumer/orders")
public class ConsumerOrdersController {
@Resource
private IOrdersManagerService ordersManagerService;
@GetMapping("/{id}")
@ApiOperation("根据订单id查询")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单id", required = true, dataTypeClass = Long.class)
})
public OrderResDTO detail(@PathVariable("id") Long id) {
return ordersManagerService.getDetail(id);
}
@GetMapping("/consumerQueryList")
@ApiOperation("订单滚动分页查询")
@ApiImplicitParams({
@ApiImplicitParam(name = "ordersStatus", value = "订单状态0待支付100派单中200待服务300服务中400待评价500订单完成600订单取消700已关闭", required = false, dataTypeClass = Integer.class),
@ApiImplicitParam(name = "sortBy", value = "排序字段", required = false, dataTypeClass = Long.class)
})
public List<OrderSimpleResDTO> consumerQueryList(@RequestParam(value = "ordersStatus", required = false) Integer ordersStatus,
@RequestParam(value = "sortBy", required = false) Long sortBy) {
return ordersManagerService.consumerQueryList(UserContext.currentUserId(), ordersStatus, sortBy);
}
}

View File

@ -0,0 +1,60 @@
package com.jzo2o.orders.manager.controller.inner;
import cn.hutool.core.bean.BeanUtil;
import com.jzo2o.api.orders.OrdersApi;
import com.jzo2o.api.orders.dto.response.OrderResDTO;
import com.jzo2o.orders.base.model.domain.Orders;
import com.jzo2o.orders.manager.service.IOrdersManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author itcast
*/
@RestController
@Api(tags = "内部接口 - 订单相关接口")
@RequestMapping("/inner/orders")
public class InnerOrdersController implements OrdersApi {
@Resource
private IOrdersManagerService ordersManagerService;
@Override
@GetMapping("/{id}")
@ApiOperation("根据订单id查询")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单id", required = true, dataTypeClass = Long.class),
})
public OrderResDTO queryById(@PathVariable("id") Long id) {
Orders orders = ordersManagerService.queryById(id);
return BeanUtil.toBean(orders, OrderResDTO.class);
}
@Override
@GetMapping("queryByIds")
@ApiOperation("根据订单id列表批量查询")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "订单id列表", required = true, dataTypeClass = Long.class),
})
public List<OrderResDTO> queryByIds(@RequestParam("ids") List<Long> ids) {
List<Orders> ordersList = ordersManagerService.batchQuery(ids);
return BeanUtil.copyToList(ordersList, OrderResDTO.class);
}
@Override
@PutMapping("evaluate/{id}")
@ApiOperation("根据订单id评价")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单id", required = true, dataTypeClass = Long.class),
})
public void evaluate(@PathVariable("id") Long id) {
ordersManagerService.evaluationOrder(id);
}
}

View File

@ -0,0 +1,47 @@
package com.jzo2o.orders.manager.controller.inner;
import com.jzo2o.api.orders.OrdersServeApi;
//import com.jzo2o.api.orders.dto.response.InstitutionStaffServeCountResDTO;
import com.jzo2o.api.orders.dto.response.InstitutionStaffServeCountResDTO;
import com.jzo2o.api.orders.dto.response.ServeProviderIdResDTO;
import com.jzo2o.orders.base.model.domain.OrdersServe;
import com.jzo2o.orders.manager.service.IOrdersServeManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@RestController
@Api(tags = "内部接口 - 服务单相关接口")
@RequestMapping("/inner/orders-serve")
public class InnerOrdersServeController implements OrdersServeApi {
@Resource
private IOrdersServeManagerService ordersServeManagerService;
@Override
@GetMapping("/queryServeProviderIdByOrderId/{id}")
@ApiOperation("根据订单id查询服务人员/机构id")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单id", required = true, dataTypeClass = Long.class),
})
public ServeProviderIdResDTO queryServeProviderIdByOrderId(@PathVariable("id") Long id) {
OrdersServe ordersServe = ordersServeManagerService.queryById(id);
return new ServeProviderIdResDTO(ordersServe.getServeProviderId());
}
@Override
@GetMapping("/countByInstitutionStaffId")
@ApiOperation("根据机构服务人员查询服务数量")
@ApiImplicitParams({
@ApiImplicitParam(name = "institutionStaffId", value = "机构服务人员id", required = true, dataTypeClass = Long.class),
})
public InstitutionStaffServeCountResDTO countByInstitutionStaffId(@RequestParam("institutionStaffId") Long institutionStaffId) {
return ordersServeManagerService.countByInstitutionStaffId(institutionStaffId);
}
}

View File

@ -0,0 +1,30 @@
package com.jzo2o.orders.manager.controller.operation;
import cn.hutool.core.bean.BeanUtil;
import com.jzo2o.api.orders.dto.request.OrderCancelReqDTO;
import com.jzo2o.api.orders.dto.response.OrderSimpleResDTO;
import com.jzo2o.common.model.CurrentUserInfo;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.mvc.utils.UserContext;
import com.jzo2o.orders.manager.model.dto.request.OrderPageQueryReqDTO;
import com.jzo2o.orders.manager.model.dto.OrderCancelDTO;
import com.jzo2o.orders.manager.model.dto.response.OperationOrdersDetailResDTO;
import com.jzo2o.orders.manager.service.IOrdersManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author itcast
*/
@RestController("operationOrdersController")
@Api(tags = "运营端-订单相关接口")
@RequestMapping("/operation/orders")
public class OperationOrdersController {
}

View File

@ -0,0 +1,22 @@
package com.jzo2o.orders.manager.controller.operation;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.orders.manager.model.dto.request.OrdersServePageQueryByServeProviderReqDTO;
import com.jzo2o.orders.manager.model.dto.response.*;
import com.jzo2o.orders.manager.service.IOrdersServeManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author itcast
*/
@RestController("orders-operation")
@Api(tags = "运营端-服务单相关接口")
@RequestMapping("/operation/ordersServe")
public class OperationOrdersServeController {
}

View File

@ -0,0 +1,25 @@
package com.jzo2o.orders.manager.controller.worker;
import com.jzo2o.mvc.utils.UserContext;
import com.jzo2o.orders.manager.model.dto.request.*;
import com.jzo2o.orders.manager.model.dto.response.OrdersServeDetailResDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersServeListResDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersServeResDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersServeStatusNumResDTO;
import com.jzo2o.orders.manager.service.IOrdersServeManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController("orders-worker")
@Api(tags = "服务端-服务单相关接口")
@RequestMapping("/worker")
public class WorkerOrdersServeController {
}

View File

@ -0,0 +1,71 @@
package com.jzo2o.orders.manager.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 订单取消模型
*
* @author itcast
* @create 2023/8/7 17:12
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderCancelDTO {
/**
* 订单id
*/
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 当前用户id
*/
private Long currentUserId;
/**
* 当前用户名称
*/
private String currentUserName;
/**
* 当前用户类型
*/
private Integer currentUserType;
/**
* 取消原因
*/
private String cancelReason;
/**
* 预约服务开始时间
*/
private LocalDateTime serveStartTime;
/**
* 实际支付金额
*/
private BigDecimal realPayAmount;
/**
* 城市编码
*/
private String cityCode;
/**
* 支付服务交易单号
*/
private Long tradingOrderNo;
}

View File

@ -0,0 +1,55 @@
package com.jzo2o.orders.manager.model.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.List;
@Data
public class ServeProviderInfo {
/**
* 服务人员或机构同步表
*/
private Long id;
/**
* 技能列表
*/
private List<Long> serveItemIds;
/**
* 经纬度
*/
private String location;
/**
* 城市编码
*/
private String cityCode;
/**
* 接单距离
*/
private Double recieveDistance;
/**
* 接单开关1接单开启0接单关闭
*/
private Integer pickUp;
/**
* 评分,默认50分
*/
private Double evaluationScore;
/**
* 服务时间
*/
private List<String> serveTimes;
/**
* 首次设置状态0未完成1已完成设置
*/
private Integer setttingStatus;
}

View File

@ -0,0 +1,75 @@
package com.jzo2o.orders.manager.model.dto.request;
import com.jzo2o.common.model.dto.PageQueryDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.List;
/**
* 订单分页查询请求
*
* @author itcast
* @create 2023/7/20 21:17
**/
@Data
@ApiModel("订单分页查询请求")
public class OrderPageQueryReqDTO extends PageQueryDTO {
/**
* 订单状态0待支付100派单中200待服务300服务中400待评价500订单完成600订单取消,700订单关闭
*/
@ApiModelProperty("订单状态0待支付100派单中200待服务300服务中400待评价500订单完成600订单取消,700订单关闭")
private Integer ordersStatus;
/**
* 支付状态0待支付1支付成功
*/
@ApiModelProperty("支付状态0待支付1支付成功")
private Integer payStatus;
/**
* 退款状态0发起退款1退款中2退款成功 3退款失败
*/
@ApiModelProperty("退款状态0发起退款1退款中2退款成功 3退款失败")
private Integer refundStatus;
/**
* 用户id
*/
@ApiModelProperty("用户id")
private Long userId;
/**
* 订单id
*/
@ApiModelProperty("订单id")
private Long id;
/**
* 客户电话
*/
@ApiModelProperty("客户电话")
private String contactsPhone;
/**
* 最小创建时间
*/
@ApiModelProperty("最小创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime minCreateTime;
/**
* 最大创建时间
*/
@ApiModelProperty("最大创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime maxCreateTime;
/**
* 订单id列表
*/
@ApiModelProperty("订单id列表")
private List<Long> ordersIdList;
}

View File

@ -0,0 +1,23 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author itcast
*/
@Data
@ApiModel("服务取消模型")
public class OrderServeCancelReqDTO {
@ApiModelProperty(value = "服务单id",required = true)
@NotNull(message = "操作失败")
private Long id;
@ApiModelProperty(value = "取消原因",required = true)
@NotNull(message = "操作失败")
private String cancelReason;
}

View File

@ -0,0 +1,18 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author itcast
*/
@ApiModel("接单模型")
@Data
public class OrdersDispatchReceiveReqDTO {
@ApiModelProperty(value = "派单id",required = true)
@NotNull(message = "接单失败")
private Long id;
}

View File

@ -0,0 +1,21 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author itcast
*/
@ApiModel("接单模型")
@Data
public class OrdersDispatchRejectReqDTO {
@ApiModelProperty(value = "派单id",required = true)
@NotNull(message = "接单失败")
private Long id;
@ApiModelProperty(value = "拒单原因",required = true)
@NotNull(message = "拒单失败")
private String rejectReason;
}

View File

@ -0,0 +1,22 @@
package com.jzo2o.orders.manager.model.dto.request;
import com.jzo2o.api.trade.enums.PayChannelEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 订单支付请求体
*
* @author itcast
* @create 2023/9/4 10:00
**/
@Data
@ApiModel("订单支付请求体")
public class OrdersPayReqDTO {
@ApiModelProperty(value = "支付渠道", required = true)
@NotNull(message = "支付渠道不能为空")
private PayChannelEnum tradingChannel;
}

View File

@ -0,0 +1,15 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("抢单模型")
public class OrdersSeizeReqDTO {
/**
* 抢单id
*/
@ApiModelProperty("抢单id")
private Long id;
}

View File

@ -0,0 +1,20 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author itcast
*/
@Data
public class OrdersServeAllocationReqDTO {
@ApiModelProperty("服务单id")
@NotNull(message = "人员分配失败")
private Long id;
@ApiModelProperty("服务人员id")
@NotNull(message = "人员分配失败")
private Long institutionStaffId;
}

View File

@ -0,0 +1,28 @@
package com.jzo2o.orders.manager.model.dto.request;
import com.jzo2o.common.model.dto.PageQueryDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 根据服务人员/机构分页查询服务数据
*
* @author itcast
* @create 2023/9/15 18:55
**/
@Data
@ApiModel("根据服务人员/机构分页查询服务单相关模型")
public class OrdersServePageQueryByServeProviderReqDTO extends PageQueryDTO {
/**
* 用户类型2服务人员3机构
*/
@ApiModelProperty(value = "用户类型2服务人员3机构")
private Integer userType;
/**
* 服务人员/机构id
*/
@ApiModelProperty(value = "服务人员/机构id")
private Long serveProviderId;
}

View File

@ -0,0 +1,31 @@
package com.jzo2o.orders.manager.model.dto.request;
import com.jzo2o.common.model.dto.PageQueryDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author itcast
*/
@Data
@ApiModel("服务单分页查询相关模型")
public class OrdersServePageQueryReqDTO extends PageQueryDTO {
@ApiModelProperty(value = "服务状态0待分配1待上门2服务中待完工3服务完成,4:取消5被退单")
private Integer serveStatus;
@ApiModelProperty(value = "服务单编码")
private Long id;
@ApiModelProperty(value = "服务项id")
private String serveItemId;
@ApiModelProperty(value = "服务时间 - 最小")
private Date minServeStartTime;
@ApiModelProperty(value = "服务时间 - 最大")
private Date maxServeStartTime;
}

View File

@ -0,0 +1,29 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@ApiModel("下单请求信息")
@Data
public class PlaceOrderReqDTO {
@ApiModelProperty(value = "服务id",required = true)
@NotNull(message = "您还未选择服务")
private Long serveId;
@ApiModelProperty(value = "预约地址id",required = true)
@NotNull(message = "您还未选择服务地址")
private Long addressBookId;
@ApiModelProperty(value = "购买数量",required = false)
private Integer purNum;
@ApiModelProperty(value = "预约时间",required = true)
private LocalDateTime serveStartTime;
@ApiModelProperty(value = "优惠券id", required = false)
private Long couponId;
}

View File

@ -0,0 +1,24 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
@Data
@ApiModel("服务开始模型")
public class ServeFinishedReqDTO {
@ApiModelProperty("服务id")
private Long id;
@ApiModelProperty("服务完成图片")
@NotNull(message = "请上传服务完成图片")
@Size(min = 1, max = 3, message = "上传1-3张照片")
private List<String> serveAfterImgs;
@ApiModelProperty("服务完成说明")
private String serveAfterIllustrate;
}

View File

@ -0,0 +1,23 @@
package com.jzo2o.orders.manager.model.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author itcast
*/
@Data
@ApiModel("服务完成模型")
public class ServeStartReqDTO {
@ApiModelProperty("服务开始id")
private Long id;
@ApiModelProperty("服务图片")
private List<String> serveBeforeImgs;
@ApiModelProperty("服务前说明")
private String serveBeforeIllustrate;
}

View File

@ -0,0 +1,200 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* 管理端订单详情
*
* @author itcast
* @create 2023/9/12 21:05
**/
@Data
@ApiModel("管理端订单详情响应数据")
public class OperationOrdersDetailResDTO {
@ApiModelProperty("状态流转")
private List<OrderProgress> ordersProgress;
@ApiModelProperty("订单信息")
private OrderInfo orderInfo;
@ApiModelProperty("支付信息")
private PayInfo payInfo;
@ApiModelProperty("服务信息")
private ServeInfo serveInfo;
@ApiModelProperty("退款信息")
private RefundInfo refundInfo;
@ApiModelProperty("订单取消理由")
private CancelInfo cancelInfo;
@Data
@ApiModel("订单信息模型")
public static class OrderInfo {
@ApiModelProperty("订单id")
private Long id;
@ApiModelProperty("订单状态0待支付100派单中200待服务300服务中400待评价500订单完成600订单取消700已关闭")
private Integer ordersStatus;
@ApiModelProperty("服务项名称")
private String serveItemName;
@ApiModelProperty("下单时间")
private LocalDateTime createTime;
@ApiModelProperty("客户名称")
private String contactsName;
@ApiModelProperty("客户电话")
private String contactsPhone;
@ApiModelProperty("服务地址")
private String serveAddress;
@ApiModelProperty("预约时间")
private LocalDateTime serveStartTime;
@ApiModelProperty("订单总金额")
private BigDecimal totalAmount;
@ApiModelProperty("实际支付金额")
private BigDecimal realPayAmount;
@ApiModelProperty("购买数量")
private Integer purNum;
@ApiModelProperty("服务单位")
private Integer unit;
@ApiModelProperty("服务人员类型2服务人员3机构")
private Integer serveProviderType;
@ApiModelProperty("服务人员/机构名称")
private String serveProviderName;
@ApiModelProperty("服务人员/机构电话")
private String serveProviderPhone;
@ApiModelProperty("机构下属服务人员姓名")
private String institutionStaffName;
@ApiModelProperty("机构下属服务人员电话")
private String institutionStaffPhone;
}
@Data
@ApiModel("支付记录模型")
public static class PayInfo {
@ApiModelProperty("支付状态2待支付4支付成功")
private Integer payStatus;
@ApiModelProperty("支付渠道ALI_PAY支付宝WECHAT_PAY微信")
private String tradingChannel;
@ApiModelProperty("三方流水,微信支付订单号或支付宝订单号")
private String thirdOrderId;
@ApiModelProperty("订单总金额")
private BigDecimal totalAmount;
@ApiModelProperty("实付金额")
private BigDecimal realPayAmount;
}
@Data
@ApiModel("服务信息模型")
public static class ServeInfo {
@ApiModelProperty("服务人员类型")
private Integer serveProviderType;
@ApiModelProperty("服务人员/机构名称")
private String serveProviderName;
@ApiModelProperty("机构下属服务人员姓名")
private String institutionStaffName;
@ApiModelProperty("服务实际开始时间")
private LocalDateTime realServeStartTime;
@ApiModelProperty("服务开始图片")
private List<String> serveBeforeImgs;
@ApiModelProperty("服务开始说明")
private String serveBeforeIllustrate;
@ApiModelProperty("服务完成时间")
private LocalDateTime realServeEndTime;
@ApiModelProperty("服务完成图片")
private List<String> serveAfterImgs;
@ApiModelProperty("服务完成说明")
private String serveAfterIllustrate;
}
@Data
@ApiModel("退款信息模型")
public static class RefundInfo {
@ApiModelProperty("退款状态0:发起退款1:退款中2成功3失败")
private Integer refundStatus;
@ApiModelProperty("取消人类型0系统1普通用户4管理员")
private Integer cancellerType;
@ApiModelProperty("退款人,退款人和取消人保持一致")
private String cancelerName;
@ApiModelProperty("退款理由和取消理由一致")
private String cancelReason;
@ApiModelProperty("支付渠道ALI_PAY支付宝WECHAT_PAY微信")
private String tradingChannel;
@ApiModelProperty("退款三方流水,微信支付订单号或支付宝订单号")
private String thirdRefundOrderId;
@ApiModelProperty("退款金额,和实付金额保持一致")
private BigDecimal realPayAmount;
@ApiModelProperty("退款时间;和取消时间保持一致")
private LocalDateTime cancelTime;
}
@Data
@ApiModel("订单取消模型")
public static class CancelInfo {
@ApiModelProperty("取消人类型0系统1普通用户4管理员")
private Integer cancellerType;
@ApiModelProperty("取消人")
private String cancelerName;
@ApiModelProperty("取消时间")
private LocalDateTime cancelTime;
@ApiModelProperty("取消理由")
private String cancelReason;
}
@Data
@ApiModel("状态节点流转模型")
@AllArgsConstructor
public static class OrderProgress {
@ApiModelProperty("订单状态0待支付100派单中200待服务300服务中400待评价500订单完成600订单取消700已退单")
private Integer status;
@ApiModelProperty("时间")
private LocalDateTime dateTime;
}
}

View File

@ -0,0 +1,31 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author itcast
*/
@Data
@ApiModel("派单列表")
public class OrdersDispatchResDTO {
@ApiModelProperty(value = "派单id",required = true)
private Long id;
@ApiModelProperty(value = "订单编号", required = true)
private String ordersNo;
@ApiModelProperty(value = "分类名称",required = true)
private String serveTypeName;
@ApiModelProperty(value = "服务项名称",required = true)
private String serveItemName;
@ApiModelProperty(value = "服务费",required = true)
private BigDecimal serveFee;
@ApiModelProperty(value = "预约时间",required = true)
private LocalDateTime serveStartTime;
@ApiModelProperty(value = "服务地址",required = true)
private String serveAddress;
}

View File

@ -0,0 +1,30 @@
package com.jzo2o.orders.manager.model.dto.response;
import com.jzo2o.api.trade.enums.PayChannelEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 订单支付响应体
*
* @author itcast
* @create 2023/9/4 10:00
**/
@Data
@ApiModel("订单支付响应体")
public class OrdersPayResDTO {
@ApiModelProperty(value = "二维码base64数据")
private String qrCode;
@ApiModelProperty(value = "业务系统订单号")
private Long productOrderNo;
@ApiModelProperty(value = "交易系统订单号【对于三方来说:商户订单】")
private Long tradingOrderNo;
@ApiModelProperty(value = "支付渠道【支付宝、微信、现金、免单挂账】")
private String tradingChannel;
@ApiModelProperty(value = "支付状态 待支付或支付成功")
private int payStatus;
}

View File

@ -0,0 +1,89 @@
package com.jzo2o.orders.manager.model.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel("抢单列表")
@NoArgsConstructor
@AllArgsConstructor
public class OrdersSeizeListResDTO implements Serializable {
@ApiModelProperty("抢单列表")
private List<OrdersSeize> ordersSeizes;
@Data
public static class OrdersSeize implements Serializable{
/**
* 订单id
*/
@ApiModelProperty(value = "订单id",required = true)
private Long id;
/**
* 服务名称
*/
@ApiModelProperty(value = "服务项名称",required = true)
private String serveItemName;
@ApiModelProperty(value = "服务分类id",required = true)
private Long serveTypeId;
/**
* 服务分类名称
*/
@ApiModelProperty(value = "服务类型名称",required = true)
private String serveTypeName;
/**
* 服务地址
*/
@ApiModelProperty(value = "服务地址",required = true)
private String serveAddress;
/**
* 服务项目图片
*/
@ApiModelProperty(value = "服务图片",required = true)
private String serveItemImg;
/**
* 收益
*/
@ApiModelProperty(value = "服务费",required = true)
private BigDecimal serveFee;
/**
* 服务开始时间
*/
@ApiModelProperty(value = "服务开始时间",required = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime serveStartTime;
/**
* 开始派单时间
*/
@ApiModelProperty(value = "服务开始派单时间",required = true)
private LocalDateTime startDispatchTime;
/**
* 服务数量
*/
@ApiModelProperty(value = "服务数量",required = true)
private Integer purNum;
}
}

View File

@ -0,0 +1,125 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author itcast
*/
@Data
@ApiModel("订单详情信息")
public class OrdersServeDetailResDTO {
@ApiModelProperty("服务单id")
private Long id;
@ApiModelProperty(value = "服务单状态,0待分配1待服务2服务中3服务完成4已取消5被退单", required = true)
private Integer serveStatus;
@ApiModelProperty("服务信息")
private ServeInfo serveInfo;
@ApiModelProperty("客户信息")
private CustomerInfo customerInfo;
@ApiModelProperty("订单信息")
private OrdersInfo ordersInfo;
@ApiModelProperty("退款信息")
private RefundInfo refundInfo;
@ApiModelProperty("取消信息")
private CancelInfo cancelInfo;
//
//
@Data
@ApiModel("取消详情")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class CancelInfo {
@ApiModelProperty("取消原因")
private String cancelReason;
@ApiModelProperty("取消时间")
private LocalDateTime cancelTime;
}
@Data
@ApiModel("退款信息")
private static class RefundInfo {
@ApiModelProperty("退款时间")
private LocalDateTime refundTime;
@ApiModelProperty("退款原因")
private String refundReason;
@ApiModelProperty("退款金额")
private BigDecimal refundAmount;
}
@Data
@ApiModel("服务信息")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class ServeInfo {
@ApiModelProperty(value = "服务类型", required = true)
private String serveTypeName;
@ApiModelProperty(value = "服务项名称", required = true)
private String serveItemName;
@ApiModelProperty(value = "服务数量", required = true)
private Integer serveNum;
@ApiModelProperty(value = "服务单位", required = true)
private Integer unit;
@ApiModelProperty(value = "机构服务人", required = true)
private String institutionStaffName;
@ApiModelProperty(value = "服务前照片列表")
private List<String> serveBeforeImgs;
@ApiModelProperty(value = "服务前照片列表")
private List<String> serveAfterImgs;
@ApiModelProperty(value = "服务开始说明")
private String serveBeforeIllustrate;
@ApiModelProperty(value = "服务完成说明")
private String serveAfterIllustrate;
@ApiModelProperty("服务实际开始时间")
private LocalDateTime realServeStartTime;
@ApiModelProperty("服务实际完成时间")
private LocalDateTime realServeEndTime;
@ApiModelProperty("服务图片地址")
private String serveItemImg;
}
@Data
@ApiModel("客户信息")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class CustomerInfo {
@ApiModelProperty(value = "联系人", required = true)
private String contactsName;
@ApiModelProperty(value = "联系人手机号", required = true)
private String contactsPhone;
@ApiModelProperty(value = "服务地址", required = true)
private String serveAddress;
}
@Data
@ApiModel("订单信息")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class OrdersInfo {
@ApiModelProperty(value = "服务单单编号", required = true)
private Long ordersId;
@ApiModelProperty(value = "服务开始时间", required = true)
private LocalDateTime serveStartTime;
@ApiModelProperty("订单金额")
private BigDecimal ordersAmount;
}
}

View File

@ -0,0 +1,19 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@ApiModel("服务单列表,无分页")
@NoArgsConstructor
@AllArgsConstructor
public class OrdersServeListResDTO {
@ApiModelProperty("服务单列表")
private List<OrdersServeResDTO> ordersServes;
}

View File

@ -0,0 +1,60 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author itcast
*/
@Data
@ApiModel("服务分页查询相关模型")
public class OrdersServeResDTO {
@ApiModelProperty(value = "服务单id",required = true)
private Long id;
@ApiModelProperty(value = "服务分类名称",required = true)
private String serveTypeName;
@ApiModelProperty("服务名称")
private String serveItemName;
@ApiModelProperty(value = "服务地址",required = true)
private String serveAddress;
@ApiModelProperty(value = "服务开始时间",required = true)
private LocalDateTime serveStartTime;
@ApiModelProperty("服务图片地址")
private String serveItemImg;
@ApiModelProperty(value = "订单金额",required = true)
private BigDecimal ordersAmount;
@ApiModelProperty(value = "创建时间",required = true)
private LocalDateTime createTime;
@ApiModelProperty("服务状态服务状态0待分配1待服务2服务中3服务完成4已取消5被退单")
private Integer serveStatus;
@ApiModelProperty("取消时间")
private LocalDateTime cancelTime;
@ApiModelProperty("实际服务开始时间")
private LocalDateTime realServeStartTime;
@ApiModelProperty("实际服务结束时间")
private LocalDateTime realServeEndTime;
@ApiModelProperty("订单id")
private Long ordersId;
@ApiModelProperty("排序字段")
private Long sortBy;
}

View File

@ -0,0 +1,27 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author itcast
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("服务单状态的数量")
public class OrdersServeStatusNumResDTO {
@ApiModelProperty(required = true, value = "未分配")
private Long noAllocation;
@ApiModelProperty(required = true, value = "未开始服务")
private Long noServed;
@ApiModelProperty(required = true, value = "服务中,待服务完成")
private Long serving;
public static OrdersServeStatusNumResDTO empty() {
return new OrdersServeStatusNumResDTO(0L,0L,0L);
}
}

View File

@ -0,0 +1,19 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author itcast
*/
@ApiModel("下单响应信息")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PlaceOrderResDTO {
@ApiModelProperty("订单id")
private Long id;
}

View File

@ -0,0 +1,65 @@
package com.jzo2o.orders.manager.model.dto.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* 服务人员/机构服务数据
*
* @author itcast
* @create 2023/9/15 14:26
**/
@Data
@ApiModel("服务人员/机构服务数据")
public class ServeProviderServeResDTO {
@ApiModelProperty("订单id")
private Long id;
@ApiModelProperty("服务名称")
private String serveItemName;
@ApiModelProperty("机构下属服务人员id")
private Long institutionStaffId;
@ApiModelProperty("机构下属服务人员姓名")
private String institutionStaffName;
@ApiModelProperty("机构下属服务人员电话")
private String institutionStaffPhone;
/**
* 服务前照片
*/
@ApiModelProperty("服务前照片")
private List<String> serveBeforeImgs;
/**
* 服务后照片
*/
@ApiModelProperty("服务后照片")
private List<String> serveAfterImgs;
/**
* 实际支付金额
*/
@ApiModelProperty("实际支付金额")
private BigDecimal ordersAmount;
/**
* 评分
*/
@ApiModelProperty("评分")
private Double score;
/**
* 实际服务完结时间
*/
@ApiModelProperty("实际服务完结时间")
private LocalDateTime realServeEndTime;
}

View File

@ -0,0 +1,34 @@
package com.jzo2o.orders.manager.porperties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author itcast
*/
@Data
@Component
@ConfigurationProperties(prefix = "jzo2o.job")
public class OrdersJobProperties {
/**
* 自动评价订单数量默认100
*/
private Integer autoEvaluateCount = 100;
/**
* 退款订单数量默认100
*/
private Integer refundOrderCount = 100;
/**
* 超时支付订单数量默认100
*/
private Integer overTimePayOrderCount = 100;
/**
* 派单超时订单数量默认100
*/
private Integer dispatchOverTimeOrderCount = 100;
}

View File

@ -0,0 +1,24 @@
package com.jzo2o.orders.manager.porperties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author itcast
*/
@Data
@Component
@ConfigurationProperties(prefix = "jzo2o.trade")
public class TradeProperties {
/**
* 支付宝商户id
*/
private Long aliEnterpriseId;
/**
* 微信支付商户id
*/
private Long wechatEnterpriseId;
}

View File

@ -0,0 +1,34 @@
package com.jzo2o.orders.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.orders.base.enums.BreachHaviorTypeEnum;
import com.jzo2o.orders.base.model.domain.BreachRecord;
/**
* <p>
* 违约记录 服务类
* </p>
*
* @author itcast
* @since 2023-08-02
*/
public interface IBreachRecordService extends IService<BreachRecord> {
/**
* 单独添加违约记录
*
* @param breachRecord 违约信息
*/
void add(BreachRecord breachRecord);
/**
* 统计违约记录
* @param serveProviderId 服务人员或机构id
* @param breachHaviorTypeEnum 拒单类型
* @return
*/
int count(Long serveProviderId, BreachHaviorTypeEnum breachHaviorTypeEnum, int breachDay);
}

View File

@ -0,0 +1,16 @@
package com.jzo2o.orders.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.orders.base.model.domain.OrdersCanceled;
/**
* <p>
* 订单取消服务类
* </p>
*
* @author itcast
* @since 2023-08-19
*/
public interface IOrdersCanceledService extends IService<OrdersCanceled> {
}

View File

@ -0,0 +1,33 @@
package com.jzo2o.orders.manager.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.api.market.dto.request.CouponUseBackReqDTO;
import com.jzo2o.api.market.dto.response.AvailableCouponsResDTO;
import com.jzo2o.api.orders.dto.response.OrderResDTO;
import com.jzo2o.api.orders.dto.response.OrderSimpleResDTO;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.common.model.msg.TradeStatusMsg;
import com.jzo2o.orders.base.model.domain.Orders;
import com.jzo2o.orders.manager.model.dto.OrderCancelDTO;
import com.jzo2o.orders.manager.model.dto.request.OrderPageQueryReqDTO;
import com.jzo2o.orders.manager.model.dto.request.OrdersPayReqDTO;
import com.jzo2o.orders.manager.model.dto.request.PlaceOrderReqDTO;
import com.jzo2o.orders.manager.model.dto.response.OperationOrdersDetailResDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersPayResDTO;
import com.jzo2o.orders.manager.model.dto.response.PlaceOrderResDTO;
import java.util.List;
/**
* <p>
* 下单服务类
* </p>
*
* @author itcast
* @since 2023-07-10
*/
public interface IOrdersCreateService extends IService<Orders> {
}

View File

@ -0,0 +1,65 @@
package com.jzo2o.orders.manager.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.api.market.dto.request.CouponUseBackReqDTO;
import com.jzo2o.api.market.dto.response.AvailableCouponsResDTO;
import com.jzo2o.api.orders.dto.response.OrderResDTO;
import com.jzo2o.api.orders.dto.response.OrderSimpleResDTO;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.common.model.msg.TradeStatusMsg;
import com.jzo2o.orders.base.model.domain.Orders;
import com.jzo2o.orders.manager.model.dto.OrderCancelDTO;
import com.jzo2o.orders.manager.model.dto.request.OrderPageQueryReqDTO;
import com.jzo2o.orders.manager.model.dto.request.OrdersPayReqDTO;
import com.jzo2o.orders.manager.model.dto.request.PlaceOrderReqDTO;
import com.jzo2o.orders.manager.model.dto.response.OperationOrdersDetailResDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersPayResDTO;
import com.jzo2o.orders.manager.model.dto.response.PlaceOrderResDTO;
import java.util.List;
/**
* <p>
* 订单表 服务类
* </p>
*
* @author itcast
* @since 2023-07-10
*/
public interface IOrdersManagerService extends IService<Orders> {
/**
* @param ids
* @return
*/
List<Orders> batchQuery(List<Long> ids);
Orders queryById(Long id);
/**
* 滚动分页查询
*
* @param currentUserId 当前用户id
* @param ordersStatus 订单状态0待支付100派单中200待服务300服务中400待评价500订单完成600已取消700已关闭
* @param sortBy 排序字段
* @return 订单列表
*/
List<OrderSimpleResDTO> consumerQueryList(Long currentUserId, Integer ordersStatus, Long sortBy);
/**
* 根据订单id查询
*
* @param id 订单id
* @return 订单详情
*/
OrderResDTO getDetail(Long id);
/**
* 订单评价
*
* @param ordersId 订单id
*/
void evaluationOrder(Long ordersId);
}

Some files were not shown because too many files have changed in this diff Show More