OrderItemClass.php 6.1 KB

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