AfterSaleEnum.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  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\common\enum;
  20. /**
  21. * 售后枚举类
  22. * Class AfterSaleEnum
  23. * @package app\common\enum
  24. */
  25. class AfterSaleEnum
  26. {
  27. /**
  28. * 售后类型
  29. * REFUND_TYPE_ORDER 整单退款
  30. * REFUND_TYPE_GOODS 商品售后
  31. */
  32. const REFUND_TYPE_ORDER = 1;
  33. const REFUND_TYPE_GOODS = 2;
  34. /**
  35. * 售后方式
  36. * METHOD_ONLY_REFUND 仅退款
  37. * METHOD_REFUND_GOODS 退货退款
  38. */
  39. const METHOD_ONLY_REFUND = 1;
  40. const METHOD_REFUND_GOODS = 2;
  41. /**
  42. * 退款路径
  43. * REFUND_WAYS_ORIGINAL 原路退回
  44. * REFUND_WAYS_BALANCE 退回余额
  45. */
  46. const REFUND_WAYS_ORIGINAL = 1;
  47. const REFUND_WAYS_BALANCE = 2;
  48. /**
  49. * 售后主状态
  50. * STATUS_ING 售后中
  51. * STATUS_SUCCESS 售后成功
  52. * STATUS_FAIL 售后失败
  53. */
  54. const STATUS_ING = 1;
  55. const STATUS_SUCCESS = 2;
  56. const STATUS_FAIL = 3;
  57. /**
  58. * 售后子状态
  59. */
  60. const SUB_STATUS_WAIT_SELLER_AGREE = 11;
  61. const SUB_STATUS_WAIT_BUYER_RETURN = 12;
  62. const SUB_STATUS_WAIT_SELLER_RECEIPT = 13;
  63. const SUB_STATUS_WAIT_SELLER_HANDLE = 14;
  64. const SUB_STATUS_WAIT_SELLER_REFUND = 15;
  65. const SUB_STATUS_SELLER_REFUND_ING = 16;
  66. const SUB_STATUS_SELLER_REFUND_FAIL = 17;
  67. const SUB_STATUS_SELLER_REFUND_SUCCESS = 21;
  68. const SUB_STATUS_BUYER_CANCEL_AFTER_SALE = 31;
  69. const SUB_STATUS_SELLER_REFUSE_AFTER_SALE = 32;
  70. const SUB_STATUS_SELLER_REFUSE_RECEIPT = 33;
  71. const SUB_STATUS_SELLER_REFUSE_REFUND = 34;
  72. /**
  73. * 退款状态
  74. */
  75. const NO_REFUND = 1;
  76. const PARTIAL_REFUND = 2;
  77. const FULL_REFUND = 3;
  78. /**
  79. * 允许买家取消售后申请的子状态
  80. */
  81. const ALLOW_CANCEL = [
  82. self::SUB_STATUS_WAIT_SELLER_AGREE,
  83. self::SUB_STATUS_WAIT_BUYER_RETURN,
  84. ];
  85. /**
  86. * 允许买家重新发起售后申请的子状态
  87. */
  88. const ALLOW_REAPPLY = [
  89. self::SUB_STATUS_BUYER_CANCEL_AFTER_SALE,
  90. self::SUB_STATUS_SELLER_REFUSE_AFTER_SALE,
  91. self::SUB_STATUS_SELLER_REFUSE_RECEIPT,
  92. self::SUB_STATUS_SELLER_REFUSE_REFUND,
  93. ];
  94. /**
  95. * @notes 获取退款方式描述
  96. * @param $value
  97. * @param false $flag
  98. * @return string|string[]
  99. * @author Tab
  100. * @date 2021/8/10 12:00
  101. */
  102. public static function getMethodDesc($value, $flag = false)
  103. {
  104. $desc = [
  105. self::METHOD_ONLY_REFUND => '仅退款',
  106. self::METHOD_REFUND_GOODS => '退货退款',
  107. ];
  108. if($flag) {
  109. return $desc;
  110. }
  111. return $desc[$value] ?? '';
  112. }
  113. /**
  114. * @notes 获取售后状态描述
  115. * @param $status
  116. * @return string
  117. * @author Tab
  118. * @date 2021/8/2 14:42
  119. */
  120. public static function getStatusDesc($status)
  121. {
  122. $desc = [
  123. self::STATUS_ING => '售后中',
  124. self::STATUS_SUCCESS => '售后成功',
  125. self::STATUS_FAIL => '售后失败',
  126. ];
  127. return $desc[$status] ?? '';
  128. }
  129. /**
  130. * @notes 获取子状态描述
  131. * @param $subStatus
  132. * @return string
  133. * @author Tab
  134. * @date 2021/8/2 14:40
  135. */
  136. public static function getSubStatusDesc($subStatus)
  137. {
  138. $desc = [
  139. self::SUB_STATUS_WAIT_SELLER_AGREE => '售后中:买家发起售后,等待卖家同意',
  140. self::SUB_STATUS_WAIT_BUYER_RETURN => '售后中:卖家已同意,等待买家退货',
  141. self::SUB_STATUS_WAIT_SELLER_RECEIPT => '售后中:买家已退货,等待卖家收货',
  142. self::SUB_STATUS_WAIT_SELLER_HANDLE => '售后中:卖家已收货,等待卖家处理',
  143. self::SUB_STATUS_WAIT_SELLER_REFUND => '售后中:卖家已处理,等待卖家退款',
  144. self::SUB_STATUS_SELLER_REFUND_ING => '售后中:售后退款中',
  145. self::SUB_STATUS_SELLER_REFUND_FAIL => '售后中:售后退款失败,等待卖家处理',
  146. self::SUB_STATUS_SELLER_REFUND_SUCCESS => '售后成功:售后退款成功',
  147. self::SUB_STATUS_BUYER_CANCEL_AFTER_SALE => '售后失败:买家取消售后',
  148. self::SUB_STATUS_SELLER_REFUSE_AFTER_SALE => '售后失败:卖家拒绝售后',
  149. self::SUB_STATUS_SELLER_REFUSE_RECEIPT => '售后失败:卖家拒绝收货',
  150. self::SUB_STATUS_SELLER_REFUSE_REFUND => '售后失败:卖家拒绝退款',
  151. ];
  152. return $desc[$subStatus] ?? '';
  153. }
  154. /**
  155. * @notes 获取退货原因
  156. * @param $value
  157. * @param false $flag
  158. * @return string|string[]
  159. * @author Tab
  160. * @date 2021/7/31 18:56
  161. */
  162. public static function getReason($value, $flag = false)
  163. {
  164. $desc = [
  165. self::METHOD_ONLY_REFUND => [
  166. '不喜欢/不要了',
  167. '快递/物流一直未送到',
  168. '空包裹',
  169. '快递/物流无跟踪记录',
  170. '货物破损已拒签',
  171. '其它',
  172. ],
  173. self::METHOD_REFUND_GOODS => [
  174. '7天无理由退货',
  175. '大小尺寸与商品描述不符',
  176. '颜色/图案/款式不符',
  177. '做工粗糙/有瑕疵',
  178. '质量问题',
  179. '卖家发错货',
  180. '少件(含缺少配件)',
  181. ]
  182. ];
  183. if($flag) {
  184. return $desc;
  185. }
  186. return $desc[$value] ?? '';
  187. }
  188. /**
  189. * @notes 管理后台售后按钮
  190. * @param $afterSale
  191. * @return bool[]|false[]
  192. * @author Tab
  193. * @date 2021/8/10 10:00
  194. */
  195. public static function getBtns($afterSale)
  196. {
  197. $agreeBtn = $refuseBtn = $refuseGoodsBtn = $confirmGoodsBtn = $agreeRefundBtn = $refuseRefundBtn = $changeBtn = false;
  198. if($afterSale['sub_status'] == self::SUB_STATUS_WAIT_SELLER_AGREE) {
  199. $agreeBtn = true;
  200. $refuseBtn = true;
  201. }
  202. if($afterSale['sub_status'] == self::SUB_STATUS_WAIT_SELLER_REFUND) {
  203. $changeBtn = true;
  204. }
  205. if($afterSale['sub_status'] == self::SUB_STATUS_WAIT_SELLER_RECEIPT) {
  206. $refuseGoodsBtn = true;
  207. $confirmGoodsBtn = true;
  208. }
  209. if($afterSale['sub_status'] == self::SUB_STATUS_WAIT_SELLER_HANDLE) {
  210. $agreeRefundBtn = true;
  211. $refuseRefundBtn = true;
  212. }
  213. return [
  214. // 同意售后
  215. 'agree_btn' => $agreeBtn,
  216. // 拒绝售后
  217. 'refuse_btn' => $refuseBtn,
  218. // 拒绝收货
  219. 'refuse_goods_btn' => $refuseGoodsBtn,
  220. // 确认收货
  221. 'confirm_goods_btn' => $confirmGoodsBtn,
  222. // 同意退款
  223. 'agree_refund_btn' => $agreeRefundBtn,
  224. // 拒绝退款
  225. 'refuse_refund_btn' => $refuseRefundBtn,
  226. // 修改售后金额
  227. 'change_btn' => $changeBtn,
  228. ];
  229. }
  230. /**
  231. * @notes 商城端售后按钮
  232. * @param $subStatus
  233. * @return bool[]|false[]
  234. * @author Tab
  235. * @date 2021/8/10 14:07
  236. */
  237. public static function getBtns2($subStatus)
  238. {
  239. $cancelBtn = $expressBtn = $reapplyBtn = false;
  240. if($subStatus == self::SUB_STATUS_WAIT_SELLER_AGREE) {
  241. $cancelBtn = true;
  242. }
  243. if($subStatus == self::SUB_STATUS_WAIT_BUYER_RETURN) {
  244. $cancelBtn = true;
  245. $expressBtn = true;
  246. }
  247. if(in_array($subStatus, self::ALLOW_REAPPLY)) {
  248. $reapplyBtn = true;
  249. }
  250. return [
  251. 'cancel_btn' => $cancelBtn,
  252. 'express_btn' => $expressBtn,
  253. 'reapply_btn' => $reapplyBtn,
  254. ];
  255. }
  256. /**
  257. * @notes 获取退款状态描述
  258. * @param $value
  259. * @param false $flag
  260. * @return string|string[]
  261. * @author Tab
  262. * @date 2021/8/18 10:44
  263. */
  264. public static function getRefundStatusDesc($value, $flag = false)
  265. {
  266. $desc = [
  267. self::NO_REFUND => '未退款',
  268. self::PARTIAL_REFUND => '部分退款',
  269. self::FULL_REFUND => '全部退款'
  270. ];
  271. if($flag) {
  272. return $desc;
  273. }
  274. return $desc[$value] ?? '';
  275. }
  276. /**
  277. * @notes 退款路径描述
  278. * @param $value
  279. * @param false $flag
  280. * @return string|string[]
  281. * @author Tab
  282. * @date 2021/10/13 10:59
  283. */
  284. public static function getRefundTypeDesc($value, $flag = false)
  285. {
  286. $desc = [
  287. self::REFUND_WAYS_ORIGINAL => '原路退回',
  288. self::REFUND_WAYS_BALANCE => '退回余额',
  289. ];
  290. if($flag) {
  291. return $desc;
  292. }
  293. return $desc[$value] ?? '';
  294. }
  295. }