OrderItemClass.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace bizMall\order\classes;
  3. use biz\stat\classes\StatItemClass;
  4. use common\components\dict;
  5. use common\components\imgUtil;
  6. use Yii;
  7. use bizMall\base\classes\BaseClass;
  8. use bizGhs\product\classes\ProductClass;
  9. use bizGhs\stock\classes\StockRecordClass;
  10. class OrderItemClass extends BaseClass
  11. {
  12. public static $baseFile = '\bizMall\order\models\OrderItem';
  13. //添加记录
  14. public static function addData($data, $custom)
  15. {
  16. //库存变化
  17. $sjId = $data['sjId'] ?? 0;
  18. $shopId = $data['shopId'] ?? 0;
  19. $itemId = $data['itemId'] ?? 0;
  20. $unitType = $data['unitType'] ?? 0;
  21. $num = $data['num'] ?? 0;
  22. $ptItemId = $data['ptItemId'] ?? 0;
  23. $ratio = $data['ratio'] ?? 0;
  24. $orderSn = $data['orderSn'] ?? '';
  25. $mainId = $data['mainId'] ?? 0;
  26. $customName = $custom->name ?? '';
  27. $bigNum = 0;
  28. $smallNum = 0;
  29. if ($unitType == dict::getDict('unitType', 'big')) {
  30. $bigNum = $num;
  31. } else {
  32. $smallNum = $num;
  33. }
  34. //库存减少
  35. $stockInfo = ProductClass::decreaseStock($itemId, $bigNum, $smallNum, true);
  36. $recordData = [];
  37. $recordData['sjId'] = $sjId;
  38. $recordData['shopId'] = $shopId;
  39. $recordData['mainId'] = $mainId;
  40. $recordData['itemId'] = $ptItemId;
  41. $itemNum = ProductClass::mergeItemNum($bigNum, $smallNum, $ratio);
  42. $recordData['itemNum'] = $itemNum;
  43. $recordData['oldStock'] = $stockInfo['oldStock'];
  44. $recordData['newStock'] = $stockInfo['newStock'];
  45. $recordData['productId'] = $itemId;
  46. $recordData['orderSn'] = $orderSn;
  47. $recordData['relateName'] = $customName;
  48. StockRecordClass::hdKdAddRecord($recordData);
  49. $result = self::add($data, true);
  50. $price = $data['price'] ?? 0;
  51. $params = [
  52. 'mainId' => $mainId,
  53. 'itemId' => $itemId,
  54. 'price' => $price,
  55. 'num' => $itemNum,
  56. ];
  57. StatItemClass::replace($params);
  58. return $result;
  59. }
  60. /**
  61. * 按订单号批量取花材/商品明细
  62. * @param array $sns 订单号列表
  63. * @return array [orderSn => [item...]]
  64. */
  65. public static function getItemListByOrderSns($sns)
  66. {
  67. $sns = array_values(array_filter(array_unique($sns)));
  68. if (empty($sns)) {
  69. return [];
  70. }
  71. $arr = self::getAllByCondition(['orderSn' => ['in', $sns]], null, '*');
  72. if (empty($arr)) {
  73. return [];
  74. }
  75. $data = [];
  76. foreach ($arr as $info) {
  77. $orderSn = $info['orderSn'] ?? '';
  78. if (empty($orderSn)) {
  79. continue;
  80. }
  81. $info = self::formatItemCover($info);
  82. $data[$orderSn][] = $info;
  83. }
  84. return $data;
  85. }
  86. /**
  87. * 处理订单明细封面,与详情页展示字段保持一致
  88. */
  89. private static function formatItemCover($info)
  90. {
  91. $shortCover = !empty($info['cover']) ? $info['cover'] : 'hhb_small.png';
  92. $info['shortCover'] = $shortCover;
  93. $info['cover'] = imgUtil::groupImg($shortCover);
  94. $info['smallCover'] = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
  95. return $info;
  96. }
  97. }