ReserveGoodsService.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace addons\Store\common\services;
  3. use addons\ReservationService\common\models\ReservationServiceStoreGoods;
  4. use addons\Store\common\models\StoreGoods;
  5. use addons\Store\common\models\StoreGoodsReserve;
  6. use common\enums\GoodsTypeEnum;
  7. use common\enums\StatusEnum;
  8. class ReserveGoodsService extends BaseService
  9. {
  10. public $user_id = 0;
  11. public function customListByStore($params)
  12. {
  13. $gids = $this->getAssociationGoodsIds($params['id']);
  14. if (empty($gids)) return [];
  15. $goods = StoreGoods::lists([
  16. 'where' => [
  17. ['mall_id' => $this->mall_id],
  18. ['store_id' => $this->store_id],
  19. ['id' => $gids],
  20. ['status' => StatusEnum::ENABLED],
  21. ['is_on_sale' => StatusEnum::ENABLED],
  22. ['check_status' => StatusEnum::ENABLED],
  23. ],
  24. 'order' => 'id desc',
  25. 'select'=> 'id, goods_name, price, original_price, cover_pic, sales_num, virtual_sales, unit'
  26. ]);
  27. if (!empty(StoreGoods::getStaticError())) return StoreGoods::getStaticError();
  28. if (!empty($goods)) {
  29. foreach ($goods as &$good) {
  30. $good['sales_num'] += $good['virtual_sales'];
  31. unset($good['virtual_sales']);
  32. }
  33. }
  34. return $goods;
  35. }
  36. /**
  37. * 获取门店预约商品ID
  38. * @return array
  39. */
  40. public function getGoodsIds()
  41. {
  42. return StoreGoodsReserve::find()
  43. ->where(['mall_id' => $this->mall_id])
  44. ->andWhere(['store_id' => $this->store_id])
  45. // ->andWhere(['status' => StatusEnum::ENABLED])
  46. ->andWhere(['reserve_type' => StatusEnum::ENABLED])
  47. // ->andWhere(['is_on_sale' => StatusEnum::ENABLED])
  48. // ->andWhere(['check_status' => StatusEnum::ENABLED])
  49. ->select(['goods_id'])
  50. ->column();
  51. }
  52. public function getAssociationGoodsIds($staff_user_id)
  53. {
  54. $goods_ids = ReservationServiceStoreGoods::find()
  55. ->where(['mall_id' => $this->mall_id])
  56. ->andWhere(['store_id' => $this->store_id])
  57. ->andWhere(['user_id' => $staff_user_id,'status'=>StatusEnum::ENABLED])
  58. ->select(['goods_id'])
  59. ->column();
  60. $goods_ids = StoreGoods::find()
  61. ->where(['mall_id' => $this->mall_id])
  62. ->andWhere(['store_id' => $this->store_id])
  63. ->andWhere(['id' => $goods_ids])
  64. ->andWhere(['goods_type' => GoodsTypeEnum::GoodsTypeReserved])
  65. ->andWhere(['status' => StatusEnum::ENABLED])
  66. ->andWhere(['is_on_sale' => StatusEnum::ENABLED])
  67. ->andWhere(['check_status' => StatusEnum::ENABLED])
  68. ->select(['id'])
  69. ->column();
  70. return $goods_ids;
  71. }
  72. }