OrderGoodsClass.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace bizMall\order\classes;
  3. use common\components\business;
  4. use common\components\imgUtil;
  5. use common\components\util;
  6. use Yii;
  7. use bizMall\base\classes\BaseClass;
  8. use biz\stock\classes\GoodsStockRecordClass;
  9. use bizHd\goods\classes\GoodsClass;
  10. class OrderGoodsClass extends BaseClass
  11. {
  12. public static $baseFile = '\bizMall\order\models\OrderGoods';
  13. //锁定库存 ssh 20220531
  14. public static function stockChange($order)
  15. {
  16. $orderSn = $order->orderSn ?? '';
  17. $sjId = $order->sjId ?? 0;
  18. $shopId = $order->shopId ?? 0;
  19. $mainId = $order->mainId ?? 0;
  20. $customName = $order->customName ?? '';
  21. $orderId = $order->id ?? 0;
  22. $goodsList = self::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  23. if (!empty($goodsList)) {
  24. foreach ($goodsList as $goods) {
  25. $goodsId = $goods->goodsId ?? 0;
  26. $num = $goods->num ?? 0;
  27. $orderPrice = $order->orderPrice ?? 0;
  28. $fromType = $order->fromType ?? 1;
  29. $remark = $order->remark ?? '';
  30. $orderDebtPrice = $order->remainDebtPrice ?? 0;
  31. $sendType = $order->sendType ?? 0;
  32. $thirdSn = $order->thirdSn ?? '';
  33. $cardInfo = $order->cardInfo ?? '';
  34. $anonymity = $order->anonymity ?? 0;
  35. $manyType = $order->manyType ?? 0;
  36. $sendNum = $order->sendNum ?? '';
  37. $params = ['orderId' => $orderId, 'orderSn' => $orderSn, 'shopId' => $shopId, 'sendType' => $sendType, 'thirdSn' => $thirdSn, 'cardInfo' => $cardInfo, 'anonymity' => $anonymity,
  38. 'fromType' => $fromType, 'orderPrice' => $orderPrice, 'remark' => $remark, 'orderDebtPrice' => $orderDebtPrice, 'manyType' => $manyType, 'sendNum' => $sendNum,
  39. ];
  40. $flower = $goods->flower ?? 0;
  41. //鲜花类不需要验证库存,库存可以负数,并相应生成制作单
  42. $checkStock = $flower == 0 ? true : false;
  43. $respond = GoodsClass::decreaseStock($goodsId, $mainId, $num, $checkStock, $params);
  44. $oldStock = $respond['oldStock'] ?? 0;
  45. $newStock = $respond['newStock'] ?? 0;
  46. $data = [];
  47. $data['sjId'] = $sjId;
  48. $data['shopId'] = $shopId;
  49. $data['mainId'] = $mainId;
  50. $data['orderSn'] = $orderSn;
  51. $data['goodsId'] = $goodsId;
  52. $data['goodsNum'] = $num;
  53. $data['oldStock'] = $oldStock;
  54. $data['newStock'] = $newStock;
  55. $data['relateName'] = $customName;
  56. //搜索关键词GoodsStockRecordClass::sellGoods,可以找到相同的方法,暂时没有写在一起
  57. GoodsStockRecordClass::sellGoods($data);
  58. }
  59. }
  60. }
  61. public static function addData($data)
  62. {
  63. return self::add($data);
  64. }
  65. //取订单 ssh 2020.1.2
  66. public static function getGoodsListBySn($sn)
  67. {
  68. $arr = self::getAllByCondition(['orderSn' => $sn], null, '*');
  69. if (empty($arr)) {
  70. return [];
  71. }
  72. foreach ($arr as $key => $val) {
  73. $val = business::formatOrderGoodsCover($val);
  74. $arr[$key] = $val;
  75. }
  76. return $arr;
  77. }
  78. //取订单 ssh 2020.1.2
  79. public static function getGoodsListById($id)
  80. {
  81. $arr = self::getAllByCondition(['orderId' => $id], null, '*');
  82. if (empty($arr)) {
  83. return [];
  84. }
  85. foreach ($arr as $key => $val) {
  86. $val = business::formatOrderGoodsCover($val);
  87. $arr[$key] = $val;
  88. }
  89. return $arr;
  90. }
  91. //批量取订单 ssh 2020.1.2
  92. /**
  93. * 按订单号批量取花束明细,供订单列表组装 goodsInfoList
  94. * @param array $sns 订单号列表
  95. * @return array [orderSn => [goods...]]
  96. */
  97. public static function getGoodsListByOrderSns($sns)
  98. {
  99. $sns = array_values(array_filter(array_unique((array)$sns)));
  100. if (empty($sns)) {
  101. return [];
  102. }
  103. $arr = self::getAllByCondition(['orderSn' => ['in', $sns]], null, '*');
  104. if (empty($arr)) {
  105. return [];
  106. }
  107. $data = [];
  108. foreach ($arr as $info) {
  109. $orderSn = $info['orderSn'] ?? '';
  110. if ($orderSn === '' || $orderSn === null) {
  111. continue;
  112. }
  113. // 封面字段与花材明细、列表组件对齐(smallCoverUrl / cover / coverUrl)
  114. $info = self::formatGoodsCover($info);
  115. $data[$orderSn][] = $info;
  116. }
  117. return $data;
  118. }
  119. /**
  120. * 处理花束订单明细封面,兼容列表与详情展示字段
  121. * @param array $info 明细行
  122. * @return array
  123. */
  124. private static function formatGoodsCover($info)
  125. {
  126. $info = business::formatOrderGoodsCover($info);
  127. $shortCover = !empty($info['cover']) ? $info['cover'] : (!empty($info['shortCover']) ? $info['shortCover'] : 'hhb_small.png');
  128. // formatOrderGoodsCover 可能已把 coverUrl 填好,但 cover 仍是短路径;列表优先读 smallCoverUrl/cover
  129. if (!empty($info['coverUrl'])) {
  130. $info['shortCover'] = $shortCover;
  131. $info['cover'] = $info['coverUrl'];
  132. if (empty($info['smallCoverUrl'])) {
  133. $info['smallCoverUrl'] = $info['coverUrl'] . "?x-oss-process=image/resize,m_fill,h_130,w_130";
  134. }
  135. $info['smallCover'] = $info['smallCoverUrl'];
  136. return $info;
  137. }
  138. $info['shortCover'] = $shortCover;
  139. $info['cover'] = imgUtil::groupImg($shortCover);
  140. $info['smallCover'] = $info['cover'] . "?x-oss-process=image/resize,m_fill,h_130,w_130";
  141. $info['coverUrl'] = $info['cover'];
  142. $info['smallCoverUrl'] = $info['smallCover'];
  143. return $info;
  144. }
  145. }