OrderBtnLogic.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | likeshop100%开源免费商用商城系统
  4. // +----------------------------------------------------------------------
  5. // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
  6. // | 开源版本可自由商用,可去除界面版权logo
  7. // | 商业版本务必购买商业授权,以免引起法律纠纷
  8. // | 禁止对系统程序代码以任何目的,任何形式的再发布
  9. // | gitee下载:https://gitee.com/likeshop_gitee
  10. // | github下载:https://github.com/likeshop-github
  11. // | 访问官网:https://www.likeshop.cn
  12. // | 访问社区:https://home.likeshop.cn
  13. // | 访问手册:http://doc.likeshop.cn
  14. // | 微信公众号:likeshop技术社区
  15. // | likeshop团队 版权所有 拥有最终解释权
  16. // +----------------------------------------------------------------------
  17. // | author: likeshopTeam
  18. // +----------------------------------------------------------------------
  19. namespace app\adminapi\logic\order;
  20. use app\common\enum\DeliveryEnum;
  21. use app\common\enum\OrderEnum;
  22. use app\common\enum\PayEnum;
  23. use app\common\enum\YesNoEnum;
  24. use app\common\logic\BaseLogic;
  25. use app\common\model\Order;
  26. class OrderBtnLogic extends BaseLogic
  27. {
  28. /**
  29. * @notes 订单按钮状态
  30. * @param Order $order
  31. * @return array
  32. * @author ljj
  33. * @date 2021/8/4 8:24 下午
  34. */
  35. public static function getOrderBtn(Order $order)
  36. {
  37. return [
  38. 'detail_btn' => self::getDetailBtn($order),
  39. 'print_btn' => self::getPrintBtn($order),
  40. 'remark_btn' => self::getRemarkBtn($order),
  41. 'cancel_btn' => self::getCancelBtn($order),
  42. 'delete_btn' => self::getDeleteBtn($order),
  43. 'deliver_btn' => self::getDeliverBtn($order),
  44. 'confirm_btn' => self::getConfirmBtn($order),
  45. 'logistics_btn' => self::getLogisticsBtn($order),
  46. 'refund_btn' => self::getRefundBtn($order),
  47. 'refund_detail_btn' => self::getRefundDetailBtn($order),
  48. 'verification_btn' => self::getVerificationBtn($order),
  49. 'verification_query_btn' => self::getVerificationQueryBtn($order),
  50. 'confirm_pay_btn' => self::getConfirmPayBtn($order),
  51. 'price_btn' => self::getPriceBtn($order),
  52. 'address_btn' => self::getAddressBtn($order),
  53. 'continue_deliver_btn' => self::getContinueDeliverBtn($order),
  54. ];
  55. }
  56. /**
  57. * @notes 商家端订单按钮状态
  58. * @param Order $order
  59. * @return array
  60. * @author cjhao
  61. * @date 2023/2/20 17:37
  62. */
  63. public static function getBusinesseBtn(Order $order)
  64. {
  65. return [
  66. 'address_btn' => self::getAddressBtn($order),
  67. 'deliver_btn' => self::getDeliverBtn($order),
  68. 'continue_deliver_btn' => self::getContinueDeliverBtn($order),
  69. 'logistics_btn' => self::getLogisticsBtn($order),
  70. 'verification_btn' => self::getVerificationBtn($order),
  71. 'cancel_btn' => self::getCancelBtn($order),
  72. 'confirm_btn' => self::getConfirmBtn($order),
  73. 'finish_btn' => self::getFinishBtn($order),
  74. 'delete_btn' => self::getDeleteBtn($order),
  75. 'content_btn' => self::getContentBtn($order),
  76. 'confirm_pay_btn' => self::getConfirmPayBtn($order),
  77. ];
  78. }
  79. /**
  80. * @notes 确认付款按钮
  81. * @param $order
  82. * @return int
  83. * @author ljj
  84. * @date 2024/9/11 下午1:57
  85. */
  86. static function getConfirmPayBtn($order)
  87. {
  88. if ($order['order_status'] != OrderEnum::STATUS_WAIT_PAY) {
  89. return OrderEnum::BTN_HIDE;
  90. }
  91. if ($order['pay_status']) {
  92. return OrderEnum::BTN_HIDE;
  93. }
  94. if ($order['pay_way'] != PayEnum::OFFLINE_PAY) {
  95. return OrderEnum::BTN_HIDE;
  96. }
  97. return OrderEnum::BTN_SHOW;
  98. }
  99. /**
  100. * @notes 详情按钮
  101. * @param $order
  102. * @return int
  103. * @author ljj
  104. * @date 2021/8/4 8:26 下午
  105. */
  106. public static function getDetailBtn($order)
  107. {
  108. return OrderEnum::BTN_SHOW;
  109. }
  110. /**
  111. * @notes 小票打印按钮
  112. * @param $order
  113. * @return int
  114. * @author ljj
  115. * @date 2021/8/4 8:27 下午
  116. */
  117. public static function getPrintBtn($order)
  118. {
  119. return OrderEnum::BTN_SHOW;
  120. }
  121. /**
  122. * @notes 商家备注按钮
  123. * @param $order
  124. * @return int
  125. * @author ljj
  126. * @date 2021/8/4 8:28 下午
  127. */
  128. public static function getRemarkBtn($order)
  129. {
  130. return OrderEnum::BTN_SHOW;
  131. }
  132. /**
  133. * @notes 取消订单按钮
  134. * @param $order
  135. * @return int
  136. * @author ljj
  137. * @date 2021/8/4 8:31 下午
  138. */
  139. public static function getCancelBtn($order)
  140. {
  141. //快递发货
  142. if ($order['delivery_type'] != DeliveryEnum::SELF_DELIVERY && ($order['order_status'] == OrderEnum::STATUS_WAIT_PAY || $order['order_status'] == OrderEnum::STATUS_WAIT_DELIVERY)) {
  143. if ($order['express_status'] != DeliveryEnum::NOT_SHIPPED) {
  144. return OrderEnum::BTN_HIDE;
  145. }
  146. return OrderEnum::BTN_SHOW;
  147. }
  148. //门店自提
  149. if ($order['delivery_type'] == DeliveryEnum::SELF_DELIVERY && $order['order_status'] < OrderEnum::STATUS_FINISH) {
  150. return OrderEnum::BTN_SHOW;
  151. }
  152. return OrderEnum::BTN_HIDE;
  153. }
  154. /**
  155. * @notes 删除订单按钮
  156. * @param $order
  157. * @return int
  158. * @author ljj
  159. * @date 2021/8/4 8:34 下午
  160. */
  161. public static function getDeleteBtn($order)
  162. {
  163. if ($order['order_status'] == OrderEnum::STATUS_CLOSE) {
  164. return OrderEnum::BTN_SHOW;
  165. }
  166. return OrderEnum::BTN_HIDE;
  167. }
  168. /**
  169. * @notes 发货按钮
  170. * @param $order
  171. * @return int
  172. * @author ljj
  173. * @date 2021/8/4 8:36 下午
  174. */
  175. public static function getDeliverBtn($order)
  176. {
  177. //门店自提订单去掉发货按钮
  178. if ($order['delivery_type'] == DeliveryEnum::SELF_DELIVERY) {
  179. return OrderEnum::BTN_HIDE;
  180. }
  181. $btn = OrderEnum::BTN_HIDE;
  182. if ($order['order_status'] == OrderEnum::STATUS_WAIT_DELIVERY && $order['delivery_type'] != DeliveryEnum::SELF_DELIVERY && $order['express_status'] != DeliveryEnum::SHIPPED) {
  183. $btn = OrderEnum::BTN_SHOW;
  184. //如果是拼团订单,未成团的情况,不显示核销按钮
  185. if(OrderEnum::TEAM_ORDER == $order['order_type'] && 1 != $order['is_team_success']){
  186. $btn = OrderEnum::BTN_HIDE;
  187. }
  188. }
  189. return $btn;
  190. }
  191. /**
  192. * @notes 提货核销按钮
  193. * @param $order
  194. * @return int
  195. * @author ljj
  196. * @date 2021/8/27 11:45 上午
  197. */
  198. public static function getVerificationBtn($order)
  199. {
  200. $btn = OrderEnum::BTN_HIDE;
  201. if (in_array($order['order_status'], [ OrderEnum::STATUS_WAIT_RECEIVE,OrderEnum::STATUS_WAIT_DELIVERY ]) && $order['delivery_type'] == DeliveryEnum::SELF_DELIVERY) {
  202. $btn = OrderEnum::BTN_SHOW;
  203. //如果是拼团订单,未成团的情况,不显示核销按钮
  204. if(OrderEnum::TEAM_ORDER == $order['order_type'] && 1 != $order['is_team_success']){
  205. $btn = OrderEnum::BTN_HIDE;
  206. }
  207. }
  208. return $btn;
  209. }
  210. /**
  211. * @notes 核销查询按钮
  212. * @param $order
  213. * @return int
  214. * @author ljj
  215. * @date 2021/8/27 11:47 上午
  216. */
  217. public static function getVerificationQueryBtn($order)
  218. {
  219. if ($order['verification_status'] == OrderEnum::WRITTEN_OFF && $order['delivery_type'] == DeliveryEnum::SELF_DELIVERY) {
  220. return OrderEnum::BTN_SHOW;
  221. }
  222. return OrderEnum::BTN_HIDE;
  223. }
  224. /**
  225. * @notes 确认收货按钮
  226. * @param $order
  227. * @return int
  228. * @author ljj
  229. * @date 2021/8/4 8:36 下午
  230. */
  231. public static function getConfirmBtn($order)
  232. {
  233. //门店自提没有确认收货
  234. if (DeliveryEnum::SELF_DELIVERY == $order['delivery_type']) {
  235. return OrderEnum::BTN_HIDE;
  236. }
  237. if ($order['order_status'] == OrderEnum::STATUS_WAIT_RECEIVE) {
  238. return OrderEnum::BTN_SHOW;
  239. }
  240. return OrderEnum::BTN_HIDE;
  241. }
  242. /**
  243. * @notes 物流按钮
  244. * @param $order
  245. * @return int
  246. * @author ljj
  247. * @date 2021/8/4 8:38 下午
  248. */
  249. public static function getLogisticsBtn($order)
  250. {
  251. if ($order['order_status'] == OrderEnum::STATUS_WAIT_DELIVERY && $order['pay_status'] == PayEnum::ISPAID && $order['express_status'] == DeliveryEnum::PART_SHIPPED && $order['delivery_type'] == DeliveryEnum::EXPRESS_DELIVERY) {
  252. return OrderEnum::BTN_SHOW;
  253. }
  254. if (in_array($order['order_status'],[OrderEnum::STATUS_WAIT_RECEIVE,OrderEnum::STATUS_FINISH]) && $order['delivery_type'] == DeliveryEnum::EXPRESS_DELIVERY) {
  255. return OrderEnum::BTN_SHOW;
  256. }
  257. return OrderEnum::BTN_HIDE;
  258. }
  259. /**
  260. * @notes 手动退款按钮
  261. * @param $order
  262. * @return int
  263. * @author ljj
  264. * @date 2021/8/4 8:39 下午
  265. */
  266. public static function getRefundBtn($order)
  267. {
  268. return OrderEnum::BTN_HIDE;
  269. }
  270. /**
  271. * @notes 退款明细按钮
  272. *
  273. * @param $order
  274. * @return int
  275. * @author ljj
  276. * @date 2021/8/4 8:39 下午
  277. */
  278. public static function getRefundDetailBtn($order)
  279. {
  280. return OrderEnum::BTN_HIDE;
  281. }
  282. /**
  283. * @notes 修改地址按钮
  284. * @param $order
  285. * @return int
  286. * @author cjhao
  287. * @date 2023/2/17 15:36
  288. */
  289. public static function getEitaddressBtn($order)
  290. {
  291. $btn = OrderEnum::BTN_HIDE;
  292. if(DeliveryEnum::SELF_DELIVERY != $order['delivery_type'] && (OrderEnum::STATUS_WAIT_PAY == $order['order_status'] || OrderEnum::STATUS_WAIT_DELIVERY == $order['order_status'])) {
  293. $btn = OrderEnum::BTN_SHOW;
  294. }
  295. return $btn;
  296. }
  297. /**
  298. * @notes 完成按钮
  299. * @param $order
  300. * @return int
  301. * @author 段誉
  302. * @date 2021/8/2 20:24
  303. */
  304. public static function getFinishBtn($order)
  305. {
  306. $btn = OrderEnum::BTN_HIDE;
  307. if ($order['order_status'] == OrderEnum::STATUS_FINISH) {
  308. $btn = OrderEnum::BTN_SHOW;
  309. }
  310. return $btn;
  311. }
  312. /**
  313. * @notes 删除订单按钮
  314. * @param $order
  315. * @return int
  316. * @author ljj
  317. * @date 2021/10/13 7:06 下午
  318. */
  319. public static function getDeletedBtn($order)
  320. {
  321. $btn = OrderEnum::BTN_HIDE;
  322. //订单已关闭
  323. if ($order['order_status'] == OrderEnum::STATUS_CLOSE) {
  324. $btn = OrderEnum::BTN_SHOW;
  325. }
  326. return $btn;
  327. }
  328. /**
  329. * @notes 查看内容按钮
  330. * @param $order
  331. * @return int
  332. * @author cjhao
  333. * @date 2022/4/20 17:23
  334. */
  335. public static function getContentBtn($order){
  336. $btn = OrderEnum::BTN_HIDE;
  337. //虚拟订单,有发货内容
  338. if((OrderEnum::VIRTUAL_ORDER == $order['order_type'] && $order['delivery_content'] && in_array($order['order_status'],[OrderEnum::STATUS_WAIT_RECEIVE,OrderEnum::STATUS_FINISH]))){
  339. $btn = OrderEnum::BTN_SHOW;
  340. }
  341. return $btn;
  342. }
  343. /**
  344. * @notes 修改价格按钮
  345. * @param $order
  346. * @return int
  347. * @author ljj
  348. * @date 2024/9/11 上午10:53
  349. */
  350. public static function getPriceBtn($order)
  351. {
  352. $btn = OrderEnum::BTN_HIDE;
  353. if(OrderEnum::STATUS_WAIT_PAY == $order['order_status']) {
  354. $btn = OrderEnum::BTN_SHOW;
  355. }
  356. return $btn;
  357. }
  358. /**
  359. * @notes 修改地址按钮
  360. * @param $order
  361. * @return int
  362. * @author ljj
  363. * @date 2024/9/11 上午10:53
  364. */
  365. public static function getAddressBtn($order)
  366. {
  367. $btn = OrderEnum::BTN_HIDE;
  368. if(OrderEnum::STATUS_WAIT_RECEIVE > $order['order_status'] && DeliveryEnum::NOT_SHIPPED == $order['express_status'] && DeliveryEnum::SELF_DELIVERY != $order['delivery_type']) {
  369. $btn = OrderEnum::BTN_SHOW;
  370. }
  371. return $btn;
  372. }
  373. /**
  374. * @notes 继续发货按钮
  375. * @param $order
  376. * @return int
  377. * @author ljj
  378. * @date 2024/9/11 上午11:38
  379. */
  380. public static function getContinueDeliverBtn($order)
  381. {
  382. $btn = OrderEnum::BTN_HIDE;
  383. if ($order['order_status'] == OrderEnum::STATUS_WAIT_DELIVERY && $order['express_status'] == DeliveryEnum::PART_SHIPPED) {
  384. $btn = OrderEnum::BTN_SHOW;
  385. }
  386. return $btn;
  387. }
  388. }