MActivityGoods.Class.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: XiaoMing
  5. * Date: 2019/12/18
  6. * Time: 12:13
  7. */
  8. namespace JinDouYun\Model\Market;
  9. use JinDouYun\Dao\Market\DActivityGoods;
  10. use JinDouYun\Model\Goods\MGoods;
  11. use JinDouYun\Model\GoodsManage\MSku;
  12. use JinDouYun\Model\MBaseModel;
  13. use JinDouYun\Model\Price\MPrice;
  14. use Mall\Framework\Core\ErrorCode;
  15. use Mall\Framework\Core\ResultWrapper;
  16. use Mall\Framework\Core\StatusCode;
  17. class MActivityGoods extends MBaseModel
  18. {
  19. /**
  20. * @var int
  21. */
  22. private $onlineUserId;
  23. /**
  24. * @var int
  25. */
  26. private $onlineEnterpriseId;
  27. /**
  28. * @var DActivityGoods
  29. */
  30. private $objDActivityGoods;
  31. /**
  32. * @var MSku
  33. */
  34. private $objMSku;
  35. /**
  36. * MActivityGoods constructor.
  37. * @param $onlineUserId
  38. * @param $onlineEnterpriseId
  39. * @throws \Exception
  40. */
  41. public function __construct($onlineUserId, $onlineEnterpriseId)
  42. {
  43. $this->onlineUserId = $onlineUserId;
  44. $this->onlineEnterpriseId = $onlineEnterpriseId;
  45. parent::__construct($this->onlineEnterpriseId, $onlineUserId);
  46. $this->objMSku = new MSku($this->onlineUserId,$this->onlineEnterpriseId);
  47. $this->objDActivityGoods = new DActivityGoods('default');
  48. $this->objDActivityGoods->setTable($this->objDActivityGoods->get_Table() . '_' . $this->onlineEnterpriseId);
  49. }
  50. /**
  51. * @param $params
  52. * @param bool $multiple
  53. * @return ResultWrapper
  54. */
  55. public function add($params, $multiple = false)
  56. {
  57. $dbResult = $this->objDActivityGoods->insert($params, $multiple);
  58. if ($dbResult === false) {
  59. return ResultWrapper::fail($this->objDActivityGoods->error(), ErrorCode::$dberror);
  60. }
  61. return ResultWrapper::success($dbResult);
  62. }
  63. /**
  64. * @param $selectParams
  65. * @param string $fields
  66. * @return ResultWrapper
  67. * @throws \Exception
  68. */
  69. public function getActivityGoods($selectParams, $fields = '*', $format = true)
  70. {
  71. $dbResult = $this->objDActivityGoods->select($selectParams, $fields);
  72. if ($dbResult === false) {
  73. return ResultWrapper::fail($this->objDActivityGoods->error(), ErrorCode::$dberror);
  74. }
  75. if ($format === true) $dbResult = self::format($dbResult);
  76. return ResultWrapper::success($dbResult);
  77. }
  78. /**
  79. * @param $data
  80. * @return mixed
  81. * @throws \Exception
  82. */
  83. public function format($data)
  84. {
  85. if (empty($data)) return $data;
  86. $objMPrice = new MPrice($this->onlineUserId, $this->onlineEnterpriseId);
  87. $selectParam['material'] = [];
  88. //$skuData = parent::getSkuNameByIds($this->onlineEnterpriseId, array_column($data, 'skuId'));//旧的sku
  89. $skuResult = $this->objMSku->getSpecNameBySkuId(array_column($data, 'skuId'));
  90. $skuData = [];
  91. if ($skuResult->isSuccess()){
  92. $skuData = $skuResult->getData();
  93. }
  94. $objMGoods = new MGoods($this->onlineEnterpriseId, true, $this->onlineUserId);
  95. $goodsData = $objMGoods->getNameByGoodsIds(array_column($data, 'basicGoodsId'));
  96. if ($goodsData->isSuccess()) {
  97. $goodsData = $goodsData->getData();
  98. } else {
  99. $goodsData = [];
  100. }
  101. foreach ($data as &$val) {
  102. $val['goodsName'] = isset($goodsData[$val['basicGoodsId']]['title']) ? $goodsData[$val['basicGoodsId']]['title'] : '';
  103. $val['unitName'] = isset($skuData[$val['skuId']]) ? $skuData[$val['skuId']]['nameFields'] : '';
  104. $val['goodsCode'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $val['goodsId'], StatusCode::$code['goodsBasic']['length']);
  105. $val['images'] = isset($goodsData[$val['basicGoodsId']]['images']) ? $goodsData[$val['basicGoodsId']]['images'] : '';
  106. $val['describe'] = isset($goodsData[$val['basicGoodsId']]['describe']) ? $goodsData[$val['basicGoodsId']]['describe'] : '';
  107. $selectParam['material'][$val['shopId']][] = $val['goodsId'];
  108. }
  109. $dbResult = $objMPrice->getPrice($selectParam);
  110. if (!$dbResult->isSuccess()) {
  111. return $data;
  112. }
  113. $priceResult = $dbResult->getData();
  114. $goodsArr = [];
  115. foreach ($priceResult as $shopPriceArr) {
  116. foreach ($shopPriceArr as $goodsId => $goodsSkuArr) {
  117. $goodsArr[$goodsId] = $goodsSkuArr;
  118. }
  119. }
  120. foreach ($data as &$goods) {
  121. $goods["salePrice"] = isset($goodsArr[$goods['goodsId']][$goods['skuId']]['salePrice']) ? $goodsArr[$goods['goodsId']][$goods['skuId']]['salePrice'] : '';
  122. }
  123. return $data;
  124. }
  125. /**
  126. * @param $params
  127. * @param $id
  128. * @param $deleteArray
  129. * @return ResultWrapper
  130. */
  131. public function edit($params, $id, $deleteArray)
  132. {
  133. $this->objDActivityGoods->beginTransaction();
  134. if (!empty($deleteArray)) {
  135. $dbResult = $this->objDActivityGoods->update(['deleteStatus' => StatusCode::$delete], $deleteArray);
  136. if ($dbResult === false) {
  137. $this->objDActivityGoods->rollBack();
  138. return ResultWrapper::fail($this->objDActivityGoods->error(), ErrorCode::$dberror);
  139. }
  140. }
  141. foreach ($params as &$details) {
  142. if (isset($details['id']) && !empty($details['id'])) {
  143. $dbResult = $this->objDActivityGoods->update($details, ['id' => $details['id']]);
  144. if ($dbResult === false) {
  145. $this->objDActivityGoods->rollBack();
  146. return ResultWrapper::fail($this->objDActivityGoods->error(), ErrorCode::$dberror);
  147. }
  148. } else {
  149. $insert[] = [
  150. 'goodsId' => isset($details['goodsId']) ? $details['goodsId'] : '',
  151. 'shopId' => isset($details['shopId']) ? $details['shopId'] : '',
  152. 'skuId' => isset($details['skuId']) ? $details['skuId'] : '',
  153. 'price' => isset($details['price']) ? $details['price'] : '',
  154. 'basicGoodsId' => isset($details['basicGoodsId']) ? $details['basicGoodsId'] : '',
  155. 'activityNum' => isset($details['activityNum']) ? $details['activityNum'] : 0,
  156. 'limitNum' => isset($details['limitNum']) ? $details['limitNum'] : 0,
  157. 'activityId' => $id,
  158. ];
  159. }
  160. }
  161. if (!empty($insert)) {
  162. $dbResult = $this->objDActivityGoods->insert($insert, true);
  163. if ($dbResult === false) {
  164. $this->objDActivityGoods->rollBack();
  165. return ResultWrapper::fail($this->objDActivityGoods->error(), ErrorCode::$dberror);
  166. }
  167. }
  168. $this->objDActivityGoods->commit();
  169. return ResultWrapper::success($dbResult);
  170. }
  171. }