TOrder.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  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. @TableField(exist = false)
  241. private String startTimeStr;
  242. /**
  243. * 结束时间
  244. * 技师完成服务的时间
  245. */
  246. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  247. @ApiModelProperty("结束时间")
  248. private LocalDateTime endTime;
  249. @TableField(exist = false)
  250. private String endTimeStr;
  251. /**
  252. * 拒接原因
  253. * 技师拒绝接单的原因说明
  254. */
  255. @ApiModelProperty("拒接原因")
  256. private String reasonRefusal;
  257. /**
  258. * 领取优惠券ID
  259. * 使用的优惠券记录ID
  260. */
  261. @TableField("coupon_receive_id")
  262. @ApiModelProperty("领取优惠券ID")
  263. private String couponReceiveId;
  264. /**
  265. * 订单明细
  266. * JSON格式,包含服务项目的详细信息
  267. */
  268. @TableField(value = "c_goods", typeHandler = FastjsonTypeHandler.class)
  269. @ApiModelProperty("订单明细")
  270. private JSONArray cGoods;
  271. /**
  272. * 订单金额
  273. * 服务项目的基础金额总和
  274. */
  275. @TableField("d_total_money")
  276. @ApiModelProperty("订单金额")
  277. private BigDecimal dTotalMoney;
  278. /**
  279. * 总价
  280. * 订单最终金额 = 订单金额 + 车费 - 优惠金额
  281. */
  282. @Excel(name = "订单金额")
  283. @TableField("total_price")
  284. @ApiModelProperty("总价")
  285. private BigDecimal totalPrice;
  286. /**
  287. * 订单状态
  288. * -1-待付款 0-待接单 1-已接单 2-已到达 3-服务中 4-待评价(已完成)
  289. * 5-已完成(已评价) 6-已出发 -2-已取消 -3-已拒绝
  290. * 6:退单待审核 7:退单审核通过
  291. */
  292. @TableField("n_status")
  293. @ApiModelProperty("订单状态: -1待付款 0待接单 1已接单 6已出发 2已到达 3服务中 4待评价 5已完成 6:退单待审核 7:退单审核通过 -2已取消 -3已拒绝")
  294. private Integer nStatus;
  295. /**
  296. * 备注地址
  297. * 地址的补充说明或地标信息
  298. */
  299. @ApiModelProperty("备注地址")
  300. private String atlasAdd;
  301. /**
  302. * 地址
  303. * 用户提供的服务地址(冗余字段)
  304. */
  305. @TableField("c_address")
  306. @ApiModelProperty("地址")
  307. private String cAddress;
  308. /**
  309. * 用户姓名
  310. * 下单用户的真实姓名
  311. */
  312. @Excel(name = "用户姓名")
  313. @TableField("c_name")
  314. @ApiModelProperty("用户姓名")
  315. private String cName;
  316. /**
  317. * 用户电话
  318. * 下单用户的联系电话
  319. */
  320. @Excel(name = "用户电话")
  321. @TableField("c_phone")
  322. @ApiModelProperty("用户电话")
  323. private String cPhone;
  324. /**
  325. * 备注
  326. * 用户填写的订单备注信息
  327. */
  328. @TableField("c_note")
  329. @ApiModelProperty("备注")
  330. private String cNote;
  331. /**
  332. * 支付截止时间
  333. * 订单需要完成支付的截止时间
  334. */
  335. @TableField("c_time")
  336. @ApiModelProperty("支付截止时间")
  337. private String cTime;
  338. /**
  339. * 推荐者ID
  340. * 推荐用户的OpenID,用于分销统计
  341. */
  342. @TableField("c_tj_open_id")
  343. @ApiModelProperty("推荐者ID")
  344. private String cTjOpenId;
  345. /**
  346. * 部门ID
  347. * 订单所属的部门/城市标识
  348. */
  349. @TableField("dept_id")
  350. @ApiModelProperty("部门ID")
  351. private String deptId;
  352. /**
  353. * 部门名称
  354. * 订单所属的城市名称
  355. */
  356. @TableField("dept_name")
  357. @ApiModelProperty("部门名称")
  358. private String deptName;
  359. /**
  360. * 创建时间
  361. * 订单创建的时间
  362. */
  363. @Excel(name = "创建时间")
  364. @TableField("dt_create_time")
  365. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  366. @ApiModelProperty("创建时间")
  367. private LocalDateTime dtCreateTime;
  368. /**
  369. * 逻辑删除标记
  370. * 0-未删除(有效记录) 1-已删除
  371. */
  372. @ApiModelProperty("是否删除:0否1是")
  373. @TableLogic
  374. private Integer isDelete;
  375. /**
  376. * 技师信息
  377. * 非数据库字段,用于关联查询技师信息
  378. */
  379. @TableField(exist = false)
  380. @ApiModelProperty("技师信息")
  381. private TJs js;
  382. /**
  383. * 老技师信息
  384. * 非数据库字段,用于关联查询原技师信息
  385. */
  386. @TableField(exist = false)
  387. @ApiModelProperty("老技师信息")
  388. private TJs oldJs;
  389. /**
  390. * 剩余支付时间
  391. * 非数据库字段,用于计算订单支付的剩余时间(秒)
  392. */
  393. @TableField(exist = false)
  394. @ApiModelProperty("剩余支付时间(秒)")
  395. private Long remainingTime;
  396. /**
  397. * 技师姓名
  398. * 非数据库字段,用于关联查询技师姓名
  399. */
  400. @Excel(name = "技师姓名")
  401. @TableField(exist = false)
  402. @ApiModelProperty("技师姓名")
  403. private String jsName;
  404. /**
  405. * 技师昵称
  406. * 非数据库字段,用于关联查询技师昵称
  407. */
  408. @TableField(exist = false)
  409. @ApiModelProperty("技师昵称")
  410. @JsonProperty("cNickName")
  411. private String cNickName;
  412. /**
  413. * 技师电话
  414. * 非数据库字段,用于关联查询技师电话
  415. */
  416. @Excel(name = "技师电话")
  417. @TableField(exist = false)
  418. @ApiModelProperty("技师电话")
  419. private String jsPhone;
  420. /**
  421. * 用户信息
  422. * 非数据库字段,用于关联查询微信用户信息
  423. */
  424. @TableField(exist = false)
  425. @ApiModelProperty("用户信息")
  426. private TWxUser wxUser;
  427. /**
  428. * 订单状态名称
  429. * 非数据库字段,用于展示订单状态的文本描述
  430. */
  431. @TableField(exist = false)
  432. @Excel(name = "订单状态")
  433. @ApiModelProperty("订单状态名称")
  434. private String statusName;
  435. public String getcId() {
  436. return cId;
  437. }
  438. public void setcId(String cId) {
  439. this.cId = cId;
  440. }
  441. public String getcJsId() {
  442. return cJsId;
  443. }
  444. public void setcJsId(String cJsId) {
  445. this.cJsId = cJsId;
  446. }
  447. public String getcOpenId() {
  448. return cOpenId;
  449. }
  450. public void setcOpenId(String cOpenId) {
  451. this.cOpenId = cOpenId;
  452. }
  453. public void setDepartLongitude(BigDecimal departLongitude) {
  454. this.departLongitude = departLongitude;
  455. }
  456. public BigDecimal getDepartLongitude() {
  457. return departLongitude;
  458. }
  459. public void setArrivalLongitude(BigDecimal arrivalLongitude) {
  460. this.arrivalLongitude = arrivalLongitude;
  461. }
  462. public BigDecimal getArrivalLongitude() {
  463. return arrivalLongitude;
  464. }
  465. public void setArrivalPhoto(String arrivalPhoto) {
  466. this.arrivalPhoto = arrivalPhoto;
  467. }
  468. public String getArrivalPhoto() {
  469. return arrivalPhoto;
  470. }
  471. public void setDepartTime(Date departTime) {
  472. this.departTime = departTime;
  473. }
  474. public Date getDepartTime() {
  475. return departTime;
  476. }
  477. public void setDepartLatitude(BigDecimal departLatitude) {
  478. this.departLatitude = departLatitude;
  479. }
  480. public BigDecimal getDepartLatitude() {
  481. return departLatitude;
  482. }
  483. public void setArrivalLatitude(BigDecimal arrivalLatitude) {
  484. this.arrivalLatitude = arrivalLatitude;
  485. }
  486. public BigDecimal getArrivalLatitude() {
  487. return arrivalLatitude;
  488. }
  489. public JSONArray getcGoods() {
  490. return cGoods;
  491. }
  492. public void setcGoods(JSONArray cGoods) {
  493. this.cGoods = cGoods;
  494. }
  495. public BigDecimal getdTotalMoney() {
  496. return dTotalMoney;
  497. }
  498. public void setdTotalMoney(BigDecimal dTotalMoney) {
  499. this.dTotalMoney = dTotalMoney;
  500. }
  501. public Integer getnStatus() {
  502. return nStatus;
  503. }
  504. public void setnStatus(Integer nStatus) {
  505. this.nStatus = nStatus;
  506. }
  507. public String getcAddress() {
  508. return cAddress;
  509. }
  510. public void setcAddress(String cAddress) {
  511. this.cAddress = cAddress;
  512. }
  513. public String getcName() {
  514. return cName;
  515. }
  516. public void setcName(String cName) {
  517. this.cName = cName;
  518. }
  519. public String getcPhone() {
  520. return cPhone;
  521. }
  522. public void setcPhone(String cPhone) {
  523. this.cPhone = cPhone;
  524. }
  525. public String getcNote() {
  526. return cNote;
  527. }
  528. public void setcNote(String cNote) {
  529. this.cNote = cNote;
  530. }
  531. public String getcTime() {
  532. return cTime;
  533. }
  534. public void setcTime(String cTime) {
  535. this.cTime = cTime;
  536. }
  537. public String getcTjOpenId() {
  538. return cTjOpenId;
  539. }
  540. public void setcTjOpenId(String cTjOpenId) {
  541. this.cTjOpenId = cTjOpenId;
  542. }
  543. public LocalDateTime getDtCreateTime() {
  544. return dtCreateTime;
  545. }
  546. public void setDtCreateTime(LocalDateTime dtCreateTime) {
  547. this.dtCreateTime = dtCreateTime;
  548. }
  549. public TJs getJs() {
  550. return js;
  551. }
  552. public void setJs(TJs js) {
  553. this.js = js;
  554. }
  555. public TWxUser getWxUser() {
  556. return wxUser;
  557. }
  558. public void setWxUser(TWxUser wxUser) {
  559. this.wxUser = wxUser;
  560. }
  561. }