TOrder.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. package com.ylx.massage.domain;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.baomidou.mybatisplus.annotation.TableField;
  4. import com.baomidou.mybatisplus.annotation.TableId;
  5. import com.baomidou.mybatisplus.annotation.TableLogic;
  6. import com.baomidou.mybatisplus.annotation.TableName;
  7. import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
  8. import com.fasterxml.jackson.annotation.JsonFormat;
  9. import com.fasterxml.jackson.annotation.JsonProperty;
  10. import com.ylx.common.annotation.Excel;
  11. import io.swagger.annotations.ApiModel;
  12. import io.swagger.annotations.ApiModelProperty;
  13. import lombok.*;
  14. import lombok.experimental.Accessors;
  15. import java.io.Serializable;
  16. import java.math.BigDecimal;
  17. import java.time.LocalDateTime;
  18. import java.util.Date;
  19. /**
  20. * 订单实体类
  21. * <p>
  22. * 对应数据库表 t_order,用于存储按摩服务订单的完整信息。
  23. * 包含订单基本信息、服务项目信息、用户信息、技师信息、支付信息、
  24. * 状态流转信息等多个维度的业务数据。
  25. *
  26. * 订单状态流转:
  27. * -1(待付款) → 0(待接单) → 1(已接单) → 6(已出发) → 2(已到达) → 3(服务中) → 4(待评价) → 5(已完成)
  28. * 特殊状态:-2(已取消)、-3(已拒绝)
  29. * </p>
  30. *
  31. * @author YJR
  32. * @version 1.0
  33. * @since 2023-12-30
  34. */
  35. @Getter
  36. @Setter
  37. @Accessors(chain = true)
  38. @TableName(value = "t_order", autoResultMap = true)
  39. @ApiModel(value = "TOrder", description = "订单实体类")
  40. public class TOrder implements Serializable {
  41. private static final long serialVersionUID = 1L;
  42. /**
  43. * 订单ID
  44. * 主键,唯一标识订单记录
  45. */
  46. @TableId("c_id")
  47. @ApiModelProperty("订单ID")
  48. private String cId;
  49. /**
  50. * 订单号
  51. * 系统生成的唯一订单编号,用于订单查询和标识
  52. */
  53. @Excel(name = "订单号")
  54. @TableField("order_no")
  55. @ApiModelProperty("订单号")
  56. private String orderNo;
  57. /**
  58. * 父订单号
  59. * 用于升级订单场景,记录原订单号
  60. */
  61. @TableField("parent_no")
  62. @ApiModelProperty("父订单号")
  63. private String parentNo;
  64. /**
  65. * 支付类型
  66. * 1-微信支付 2-余额支付 3-现金支付
  67. */
  68. @TableField("pay_type")
  69. @ApiModelProperty("支付类型:1微信支付 2:余额支付 3:现金支付")
  70. private Integer payType;
  71. /**
  72. * 订单类型
  73. * 0-普通订单 1-加钟订单 2-升级订单
  74. */
  75. @TableField("order_type")
  76. @ApiModelProperty("订单类型:0普通订单,1加钟订单,2升级订单")
  77. private Integer orderType;
  78. /**
  79. * 是否为虚拟技师订单
  80. * 0-否 1-是
  81. */
  82. @TableField("virtual_order_flag")
  83. @ApiModelProperty("是否为虚拟技师订单:0否,1是")
  84. private Integer virtualOrderFlag;
  85. /**
  86. * 虚拟技师订单分配情况(0:真实订单 1:未分配 2:已分配)
  87. */
  88. @TableField("virtual_order_allocation")
  89. @ApiModelProperty("虚拟技师订单分配情况(0:真实订单 1:未分配 2:已分配)")
  90. private Integer virtualOrderAllocation;
  91. /**
  92. * 技师ID
  93. */
  94. @TableField("c_js_id")
  95. @ApiModelProperty("技师ID")
  96. private String cJsId;
  97. /**
  98. * 老技师ID
  99. * 用于记录原技师信息,在换技师场景下使用
  100. */
  101. @TableField("old_js_id")
  102. @ApiModelProperty("老技师ID")
  103. private String oldJsId;
  104. /**
  105. * 超时原因
  106. * 订单超时的原因说明
  107. */
  108. @TableField("timeout_cause")
  109. @ApiModelProperty("超时原因")
  110. private String timeoutCause;
  111. /**
  112. * 音频
  113. * 订单相关的音频文件路径
  114. */
  115. @TableField("tape")
  116. @ApiModelProperty("音频")
  117. private String tape;
  118. /**
  119. * 车费
  120. * 根据距离和时段计算的车费金额
  121. */
  122. @TableField("fare")
  123. @ApiModelProperty("车费")
  124. private BigDecimal fare;
  125. /**
  126. * 距离
  127. * 技师与用户之间的距离,单位:公里
  128. */
  129. @TableField("distance")
  130. @ApiModelProperty("距离")
  131. private BigDecimal distance;
  132. /**
  133. * 优惠金额
  134. * 使用优惠券或其他优惠减免的金额
  135. */
  136. @TableField("preferential")
  137. @ApiModelProperty("优惠金额")
  138. private BigDecimal preferential;
  139. /**
  140. * 差价
  141. * 升级订单时,需要补交的差价金额
  142. */
  143. @TableField("price_difference")
  144. @ApiModelProperty("差价")
  145. private BigDecimal priceDifference;
  146. /**
  147. * 用户OpenID
  148. * 微信用户的唯一标识
  149. */
  150. @TableField("c_open_id")
  151. @ApiModelProperty("用户OpenID")
  152. private String cOpenId;
  153. /**
  154. * 经度
  155. * 用户地址的经度坐标
  156. */
  157. @ApiModelProperty("经度")
  158. private Double longitude;
  159. /**
  160. * 纬度
  161. * 用户地址的纬度坐标
  162. */
  163. @ApiModelProperty("纬度")
  164. private Double latitude;
  165. /**
  166. * 出发经度
  167. * 技师出发位置的经度
  168. */
  169. @ApiModelProperty("出发经度")
  170. private BigDecimal departLongitude;
  171. /**
  172. * 出发纬度
  173. * 技师出发位置的纬度
  174. */
  175. @ApiModelProperty("出发纬度")
  176. private BigDecimal departLatitude;
  177. /**
  178. * 到达经度
  179. * 技师到达用户位置的经度
  180. */
  181. @ApiModelProperty("到达经度")
  182. private BigDecimal arrivalLongitude;
  183. /**
  184. * 到达纬度
  185. * 技师到达用户位置的纬度
  186. */
  187. @ApiModelProperty("到达纬度")
  188. private BigDecimal arrivalLatitude;
  189. /**
  190. * 到达照片
  191. * 技师到达现场后拍摄的照片URL
  192. */
  193. @ApiModelProperty("到达照片")
  194. private String arrivalPhoto;
  195. /**
  196. * 出发时间
  197. * 技师出发前往用户地址的时间
  198. */
  199. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  200. @ApiModelProperty("出发时间")
  201. private Date departTime;
  202. /**
  203. * 支付时间
  204. * 用户完成支付的时间
  205. */
  206. @ApiModelProperty("支付时间")
  207. private Date payTime;
  208. /**
  209. * 详细地址
  210. * 用户提供的服务地址
  211. */
  212. @ApiModelProperty("详细地址")
  213. private String address;
  214. /**
  215. * 地址名称
  216. * 地址的别名或名称标识
  217. */
  218. @ApiModelProperty("地址名称")
  219. private String name;
  220. /**
  221. * 技师的接单时间
  222. */
  223. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  224. @ApiModelProperty("接单时间")
  225. private LocalDateTime acceptanceTime;
  226. /**
  227. * 到达时间
  228. * 技师到达用户地址的时间
  229. */
  230. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  231. @ApiModelProperty("到达时间")
  232. private LocalDateTime reachTime;
  233. /**
  234. * 开始服务时间
  235. * 技师开始提供服务的时间
  236. */
  237. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  238. @ApiModelProperty("开始服务时间")
  239. private LocalDateTime startTime;
  240. /**
  241. * 开始服务时间字符串
  242. */
  243. @TableField(exist = false)
  244. private String startTimeStr;
  245. /**
  246. * 结束时间
  247. * 技师完成服务的时间
  248. */
  249. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  250. @ApiModelProperty("结束时间")
  251. private LocalDateTime endTime;
  252. @TableField(exist = false)
  253. private String endTimeStr;
  254. /**
  255. * 拒接原因
  256. * 技师拒绝接单的原因说明
  257. */
  258. @ApiModelProperty("拒接原因")
  259. private String reasonRefusal;
  260. /**
  261. * 领取优惠券ID
  262. * 使用的优惠券记录ID
  263. */
  264. @TableField("coupon_receive_id")
  265. @ApiModelProperty("领取优惠券ID")
  266. private String couponReceiveId;
  267. /**
  268. * 订单明细
  269. * JSON格式,包含服务项目的详细信息
  270. */
  271. @TableField(value = "c_goods", typeHandler = FastjsonTypeHandler.class)
  272. @ApiModelProperty("订单明细")
  273. private JSONArray cGoods;
  274. /**
  275. * 订单金额
  276. * 服务项目的基础金额总和
  277. */
  278. @TableField("d_total_money")
  279. @ApiModelProperty("订单金额")
  280. private BigDecimal dTotalMoney;
  281. /**
  282. * 总价
  283. * 订单最终金额 = 订单金额 + 车费 - 优惠金额
  284. */
  285. @Excel(name = "订单金额")
  286. @TableField("total_price")
  287. @ApiModelProperty("总价")
  288. private BigDecimal totalPrice;
  289. /**
  290. * 订单状态
  291. * -1-待付款 0-待接单 1-已接单 2-已到达 3-服务中 4-待评价(已完成)
  292. * 5-已完成(已评价) 6-已出发 -2-已取消 -3-已拒绝
  293. * 7:退单待审核 8:退单审核通过
  294. */
  295. @TableField("n_status")
  296. @ApiModelProperty("订单状态: -1待付款 0待接单 1已接单 6已出发 2已到达 3服务中 4待评价 5已完成 7:退单待审核 8:退单审核通过 -2已取消 -3已拒绝")
  297. private Integer nStatus;
  298. /**
  299. * 备注地址
  300. * 地址的补充说明或地标信息
  301. */
  302. @ApiModelProperty("备注地址")
  303. private String atlasAdd;
  304. /**
  305. * 地址
  306. * 用户提供的服务地址(冗余字段)
  307. */
  308. @TableField("c_address")
  309. @ApiModelProperty("地址")
  310. private String cAddress;
  311. /**
  312. * 用户姓名
  313. * 下单用户的真实姓名
  314. */
  315. @Excel(name = "用户姓名")
  316. @TableField("c_name")
  317. @ApiModelProperty("用户姓名")
  318. private String cName;
  319. /**
  320. * 用户电话
  321. * 下单用户的联系电话
  322. */
  323. @Excel(name = "用户电话")
  324. @TableField("c_phone")
  325. @ApiModelProperty("用户电话")
  326. private String cPhone;
  327. /**
  328. * 备注
  329. * 用户填写的订单备注信息
  330. */
  331. @TableField("c_note")
  332. @ApiModelProperty("备注")
  333. private String cNote;
  334. /**
  335. * 支付截止时间
  336. * 订单需要完成支付的截止时间
  337. */
  338. @TableField("c_time")
  339. @ApiModelProperty("支付截止时间")
  340. private String cTime;
  341. /**
  342. * 推荐者ID
  343. * 推荐用户的OpenID,用于分销统计
  344. */
  345. @TableField("c_tj_open_id")
  346. @ApiModelProperty("推荐者ID")
  347. private String cTjOpenId;
  348. /**
  349. * 部门ID
  350. * 订单所属的部门/城市标识
  351. */
  352. @TableField("dept_id")
  353. @ApiModelProperty("部门ID")
  354. private String deptId;
  355. /**
  356. * 部门名称
  357. * 订单所属的城市名称
  358. */
  359. @TableField("dept_name")
  360. @ApiModelProperty("部门名称")
  361. private String deptName;
  362. /**
  363. * 创建时间
  364. * 订单创建的时间
  365. */
  366. @Excel(name = "创建时间")
  367. @TableField("dt_create_time")
  368. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  369. @ApiModelProperty("创建时间")
  370. private LocalDateTime dtCreateTime;
  371. /**
  372. * 逻辑删除标记
  373. * 0-未删除(有效记录) 1-已删除
  374. */
  375. @ApiModelProperty("是否删除:0否1是")
  376. @TableLogic
  377. private Integer isDelete;
  378. /**
  379. * 技师信息
  380. * 非数据库字段,用于关联查询技师信息
  381. */
  382. @TableField(exist = false)
  383. @ApiModelProperty("技师信息")
  384. private TJs js;
  385. /**
  386. * 老技师信息
  387. * 非数据库字段,用于关联查询原技师信息
  388. */
  389. @TableField(exist = false)
  390. @ApiModelProperty("老技师信息")
  391. private TJs oldJs;
  392. /**
  393. * 剩余支付时间
  394. * 非数据库字段,用于计算订单支付的剩余时间(秒)
  395. */
  396. @TableField(exist = false)
  397. @ApiModelProperty("剩余支付时间(秒)")
  398. private Long remainingTime;
  399. /**
  400. * 技师姓名
  401. * 非数据库字段,用于关联查询技师姓名
  402. */
  403. @Excel(name = "技师姓名")
  404. @TableField(exist = false)
  405. @ApiModelProperty("技师姓名")
  406. private String jsName;
  407. /**
  408. * 技师昵称
  409. * 非数据库字段,用于关联查询技师昵称
  410. */
  411. @TableField(exist = false)
  412. @ApiModelProperty("技师昵称")
  413. @JsonProperty("cNickName")
  414. private String cNickName;
  415. /**
  416. * 技师电话
  417. * 非数据库字段,用于关联查询技师电话
  418. */
  419. @Excel(name = "技师电话")
  420. @TableField(exist = false)
  421. @ApiModelProperty("技师电话")
  422. private String jsPhone;
  423. /**
  424. * 用户信息
  425. * 非数据库字段,用于关联查询微信用户信息
  426. */
  427. @TableField(exist = false)
  428. @ApiModelProperty("用户信息")
  429. private TWxUser wxUser;
  430. /**
  431. * 订单状态名称
  432. * 非数据库字段,用于展示订单状态的文本描述
  433. */
  434. @TableField(exist = false)
  435. @Excel(name = "订单状态名称")
  436. @ApiModelProperty("订单状态名称")
  437. private String statusName;
  438. /**
  439. * 服务时长(分钟)
  440. */
  441. @TableField(exist = false)
  442. private String serviceDuration;
  443. public String getcId() {
  444. return cId;
  445. }
  446. public void setcId(String cId) {
  447. this.cId = cId;
  448. }
  449. public String getcJsId() {
  450. return cJsId;
  451. }
  452. public void setcJsId(String cJsId) {
  453. this.cJsId = cJsId;
  454. }
  455. public String getcOpenId() {
  456. return cOpenId;
  457. }
  458. public void setcOpenId(String cOpenId) {
  459. this.cOpenId = cOpenId;
  460. }
  461. public void setDepartLongitude(BigDecimal departLongitude) {
  462. this.departLongitude = departLongitude;
  463. }
  464. public BigDecimal getDepartLongitude() {
  465. return departLongitude;
  466. }
  467. public void setArrivalLongitude(BigDecimal arrivalLongitude) {
  468. this.arrivalLongitude = arrivalLongitude;
  469. }
  470. public BigDecimal getArrivalLongitude() {
  471. return arrivalLongitude;
  472. }
  473. public void setArrivalPhoto(String arrivalPhoto) {
  474. this.arrivalPhoto = arrivalPhoto;
  475. }
  476. public String getArrivalPhoto() {
  477. return arrivalPhoto;
  478. }
  479. public void setDepartTime(Date departTime) {
  480. this.departTime = departTime;
  481. }
  482. public Date getDepartTime() {
  483. return departTime;
  484. }
  485. public void setDepartLatitude(BigDecimal departLatitude) {
  486. this.departLatitude = departLatitude;
  487. }
  488. public BigDecimal getDepartLatitude() {
  489. return departLatitude;
  490. }
  491. public void setArrivalLatitude(BigDecimal arrivalLatitude) {
  492. this.arrivalLatitude = arrivalLatitude;
  493. }
  494. public BigDecimal getArrivalLatitude() {
  495. return arrivalLatitude;
  496. }
  497. public JSONArray getcGoods() {
  498. return cGoods;
  499. }
  500. public void setcGoods(JSONArray cGoods) {
  501. this.cGoods = cGoods;
  502. }
  503. public BigDecimal getdTotalMoney() {
  504. return dTotalMoney;
  505. }
  506. public void setdTotalMoney(BigDecimal dTotalMoney) {
  507. this.dTotalMoney = dTotalMoney;
  508. }
  509. public Integer getnStatus() {
  510. return nStatus;
  511. }
  512. public void setnStatus(Integer nStatus) {
  513. this.nStatus = nStatus;
  514. }
  515. public String getcAddress() {
  516. return cAddress;
  517. }
  518. public void setcAddress(String cAddress) {
  519. this.cAddress = cAddress;
  520. }
  521. public String getcName() {
  522. return cName;
  523. }
  524. public void setcName(String cName) {
  525. this.cName = cName;
  526. }
  527. public String getcPhone() {
  528. return cPhone;
  529. }
  530. public void setcPhone(String cPhone) {
  531. this.cPhone = cPhone;
  532. }
  533. public String getcNote() {
  534. return cNote;
  535. }
  536. public void setcNote(String cNote) {
  537. this.cNote = cNote;
  538. }
  539. public String getcTime() {
  540. return cTime;
  541. }
  542. public void setcTime(String cTime) {
  543. this.cTime = cTime;
  544. }
  545. public String getcTjOpenId() {
  546. return cTjOpenId;
  547. }
  548. public void setcTjOpenId(String cTjOpenId) {
  549. this.cTjOpenId = cTjOpenId;
  550. }
  551. public LocalDateTime getDtCreateTime() {
  552. return dtCreateTime;
  553. }
  554. public void setDtCreateTime(LocalDateTime dtCreateTime) {
  555. this.dtCreateTime = dtCreateTime;
  556. }
  557. public TJs getJs() {
  558. return js;
  559. }
  560. public void setJs(TJs js) {
  561. this.js = js;
  562. }
  563. public TWxUser getWxUser() {
  564. return wxUser;
  565. }
  566. public void setWxUser(TWxUser wxUser) {
  567. this.wxUser = wxUser;
  568. }
  569. }