OrderItemClass.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace bizHd\order\classes;
  3. use biz\sj\services\MerchantService;
  4. use biz\stat\classes\StatItemClass;
  5. use bizGhs\product\classes\ProductClass;
  6. use bizGhs\stock\classes\StockRecordClass;
  7. use bizHd\custom\classes\CustomClass;
  8. use bizHd\order\services\OrderGoodsService;
  9. use common\components\dict;
  10. use common\components\imgUtil;
  11. use Yii;
  12. use bizHd\base\classes\BaseClass;
  13. class OrderItemClass extends BaseClass
  14. {
  15. public static $baseFile = '\bizHd\order\models\OrderItem';
  16. public static function getOrderInfoList($where)
  17. {
  18. $respond = self::getList('orderSn,id', $where, 'id DESC');
  19. if (!empty($respond['list'])) {
  20. $currentList = $respond['list'];
  21. $snList = array_column($currentList, 'orderSn');
  22. $snList = array_unique(array_filter($snList));
  23. $order = 'addTime DESC';
  24. $where = ['orderSn' => ['in', $snList]];
  25. $ret = OrderClass::getAllByCondition($where, $order,'*');
  26. if (!empty($ret)) {
  27. //获取订单的商品信息
  28. $goodsList = OrderGoodsService::getGoodsListByOrderSns($snList);
  29. //获取订花人的用户信息
  30. $orderUserIds = array_column($ret, 'customId');
  31. $orderUserIds = array_unique(array_filter($orderUserIds));
  32. $customList = CustomClass::getCustomByIds($orderUserIds);
  33. $sjIdList = array_column($ret, 'sjId');
  34. $sjIdList = array_filter(array_unique($sjIdList));
  35. $merchantList = MerchantService::getByIds($sjIdList, null, 'id');
  36. $periodData = [0 => '上午', 1 => '下午', 2 => '晚上'];
  37. $defaultImg = imgUtil::groupImg('');
  38. foreach ($ret as $key => $val) {
  39. $id = $val['id'];
  40. $customId = $val['customId'];
  41. $currentActPrice = $val['actPrice'] ?? 0;
  42. $currentSendCost = $val['sendCost'] ?? 0;
  43. $currentPrice = bcsub($currentActPrice, $currentSendCost, 2);
  44. //没有商品显示的样式
  45. $goodsInfoList = [['title' => '', 'coverUrl' => $defaultImg, 'unitPrice' => $currentPrice, 'num' => 1]];
  46. if (isset($goodsList[$id])) {
  47. $goodsInfoList = $goodsList[$id];
  48. }
  49. $ret[$key]['goodsInfoList'] = $goodsInfoList;
  50. $ret[$key]['bookAvatar'] = isset($customList[$customId]['smallAvatarUrl']) ? $customList[$customId]['smallAvatarUrl'] : '';
  51. $sjId = $val['sjId'];
  52. $ret[$key]['name'] = isset($merchantList[$sjId]['name']) ? $merchantList[$sjId]['name'] : '';
  53. $ret[$key]['reachTime'] = OrderClass::getReachTime($val);
  54. $requireReachTime = '';
  55. if ($val['reachDate'] != '0000-00-00') {
  56. $reachPeriodId = $val['reachPeriod'];
  57. $reachPeriod = isset($periodData[$reachPeriodId]) ? $periodData[$reachPeriodId] : '上午';
  58. $requireReachTime = date("m-d", strtotime($val['reachDate'])) . ' ' . $reachPeriod;
  59. }
  60. $ret[$key]['requireReachTime'] = $requireReachTime;
  61. $shortCover = $val['cover'] ?? '';
  62. $ret[$key]['cover'] = imgUtil::groupImg($shortCover);
  63. }
  64. }
  65. $respond['list'] = $ret;
  66. }
  67. return $respond;
  68. }
  69. //添加记录
  70. public static function addData($data, $custom)
  71. {
  72. //库存变化
  73. $sjId = $data['sjId'] ?? 0;
  74. $shopId = $data['shopId'] ?? 0;
  75. $itemId = $data['itemId'] ?? 0;
  76. $unitType = $data['unitType'] ?? 0;
  77. $num = $data['num'] ?? 0;
  78. $ptItemId = $data['ptItemId'] ?? 0;
  79. $ratio = $data['ratio'] ?? 0;
  80. $orderSn = $data['orderSn'] ?? '';
  81. $mainId = $data['mainId'] ?? 0;
  82. $customName = $custom->name ?? '';
  83. $bigNum = 0;
  84. $smallNum = 0;
  85. if ($unitType == dict::getDict('unitType', 'big')) {
  86. $bigNum = $num;
  87. } else {
  88. $smallNum = $num;
  89. }
  90. //库存减少
  91. $itemNum = ProductClass::mergeItemNum($bigNum, $smallNum, $ratio);
  92. if ($itemNum > 0) {
  93. $stockInfo = ProductClass::decreaseStock($itemId, $bigNum, $smallNum, true);
  94. $recordData = [];
  95. $recordData['sjId'] = $sjId;
  96. $recordData['shopId'] = $shopId;
  97. $recordData['mainId'] = $mainId;
  98. $recordData['itemId'] = $ptItemId;
  99. $recordData['itemNum'] = $itemNum;
  100. $recordData['oldStock'] = $stockInfo['oldStock'];
  101. $recordData['newStock'] = $stockInfo['newStock'];
  102. $recordData['productId'] = $itemId;
  103. $recordData['orderSn'] = $orderSn;
  104. $recordData['relateName'] = $customName;
  105. StockRecordClass::hdKdAddRecord($recordData);
  106. }
  107. $result = self::add($data, true);
  108. // $price = $data['price'] ?? 0;
  109. // $params = [
  110. // 'mainId' => $mainId,
  111. // 'itemId' => $itemId,
  112. // 'price' => $price,
  113. // 'num' => $itemNum,
  114. // ];
  115. // StatItemClass::replace($params);
  116. return $result;
  117. }
  118. /**
  119. * @param $sn
  120. * @param string $field
  121. * @return array|\yii\db\ActiveRecord[]
  122. */
  123. public static function getListBySn($sn, $field = '*')
  124. {
  125. $list = self::getAllByCondition(['orderSn' => $sn], null, $field);
  126. if (empty($list)) {
  127. return $list;
  128. }
  129. foreach ($list as $key => $val) {
  130. $shortCover = isset($val['cover']) && !empty($val['cover']) ? $val['cover'] : 'hhb_small.png';
  131. $smallCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
  132. $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
  133. $list[$key]['shortCover'] = $shortCover;
  134. $list[$key]['smallCover'] = $smallCover;
  135. $list[$key]['bigCover'] = $bigCover;
  136. }
  137. return $list;
  138. }
  139. }