OrderGoods.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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\model;
  20. use app\common\enum\AfterSaleEnum;
  21. use app\common\service\FileService;
  22. use think\model\concern\SoftDelete;
  23. class OrderGoods extends BaseModel
  24. {
  25. use SoftDelete;
  26. protected $deleteTime = 'delete_time';
  27. //订单商品快照(json)
  28. protected $json = ['goods_snap'];
  29. /**
  30. * @notes 订单商品图片获取器
  31. * @param $value
  32. * @param $data
  33. * @return mixed
  34. * @author ljj
  35. * @date 2021/8/6 3:33 下午
  36. */
  37. public function getGoodsImageAttr($value, $data)
  38. {
  39. $goods_image = $data['goods_snap']->item_image ?? '';
  40. $goods_image = $goods_image ? : $data['goods_snap']->image;
  41. return empty($goods_image) ? '' : FileService::getFileUrl($goods_image);
  42. }
  43. /**
  44. * @notes 订单商品规格获取器
  45. * @param $value
  46. * @param $data
  47. * @return string
  48. * @author ljj
  49. * @date 2021/8/6 3:35 下午
  50. */
  51. public function getSpecValueStrAttr($value, $data)
  52. {
  53. return $data['goods_snap']->spec_value_str;
  54. }
  55. /**
  56. * @notes 商品名称获取器
  57. * @param $value
  58. * @param $data
  59. * @return mixed
  60. * @author Tab
  61. * @date 2021/8/10 11:32
  62. */
  63. public function getGoodsNameAttr($value, $data)
  64. {
  65. return $data['goods_snap']->goods_name;
  66. }
  67. /**
  68. * @notes 商品编码
  69. * @param $value
  70. * @param $data
  71. * @return string
  72. * @author cjhao
  73. * @date 2022/5/5 10:53
  74. */
  75. public function getCodeAttr($value, $data)
  76. {
  77. return $data['goods_snap']->code ?? '';
  78. }
  79. // /**
  80. // * @notes 返回商品id
  81. // * @param $value
  82. // * @param $data
  83. // * @return string
  84. // * @author cjhao
  85. // * @date 2022/9/26 16:51
  86. // */
  87. // public function getGoodsIdAttr($value, $data)
  88. // {
  89. // return $data['goods_snap']->goods_id ?? '';
  90. // }
  91. /**
  92. * @notes 商品原价
  93. * @param $value
  94. * @param $data
  95. * @return mixed
  96. * @author ljj
  97. * @date 2023/2/7 4:26 下午
  98. */
  99. public function getOriginalPriceAttr($value, $data)
  100. {
  101. return $data['goods_snap']->original_price ?? 0;
  102. }
  103. /**
  104. * @notes 剩余待发货商品数量
  105. * @param $value
  106. * @param $data
  107. * @return mixed
  108. * @author ljj
  109. * @date 2024/9/10 下午2:17
  110. */
  111. public function getSurplusDeliveryNumAttr($value, $data)
  112. {
  113. $result = $data['goods_num'] - $data['delivery_num'];
  114. return max($result, 0);
  115. }
  116. /**
  117. * @notes 售后状态描述
  118. * @param $value
  119. * @param $data
  120. * @return string
  121. * @author ljj
  122. * @date 2025/3/25 下午4:16
  123. */
  124. public function getAfterSaleStatusDescAttr($value, $data)
  125. {
  126. //售后状态
  127. $result = '无售后';
  128. $after_sale = AfterSale::where(['order_goods_id' => $data['id'], 'order_id' => $data['order_id']])->findOrEmpty();
  129. if (!$after_sale->isEmpty()) {
  130. $result = AfterSaleEnum::getStatusDesc($after_sale->status);
  131. }
  132. return $result;
  133. }
  134. }