StoreSeckillActiveDao.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\common\dao\store;
  12. use app\common\model\store\StoreSeckillActive;
  13. use app\common\dao\BaseDao;
  14. use app\common\repositories\store\product\SpuRepository;
  15. class StoreSeckillActiveDao extends BaseDao
  16. {
  17. /**
  18. * TODO
  19. * @return string
  20. * @author Qinii
  21. * @day 2020-07-30
  22. */
  23. protected function getModel(): string
  24. {
  25. return StoreSeckillActive::class;
  26. }
  27. /**
  28. * TODO 搜索
  29. * @param array $where
  30. * @return mixed
  31. * @author Qinii
  32. * @day 2020-08-05
  33. */
  34. public function search(array $where)
  35. {
  36. $query = $this->getModel()::getDB()
  37. ->when(isset($where['status']) && $where['status'] !== '',function($query) use($where){
  38. $query->where('status',$where['status']);
  39. })
  40. ->when(isset($where['start_day']) && $where['start_day'] !== '',function($query) use($where){
  41. $query->whereTime('start_day','<=',$where['start_day']);
  42. })
  43. ->when(isset($where['end_day']) && $where['end_day'] !== '',function($query) use($where){
  44. $query->whereTime('end_day','>',$where['end_day']);
  45. })
  46. ->when(isset($where['start_time']) && $where['start_time'] !== '',function($query) use($where){
  47. $query->whereTime('start_time','<=',$where['start_time']);
  48. })
  49. ->when(isset($where['end_time']) && $where['end_time'] !== '',function($query) use($where){
  50. $query ->whereTime('end_time','>',$where['end_time']);
  51. })
  52. ->when(isset($where['product_id']) && $where['product_id'] !== '',function($query) use($where){
  53. $query->where('product_id',$where['product_id']);
  54. })
  55. ->when(isset($where['day']) && $where['day'] !== '',function($query) use($where){
  56. $query->whereTime('start_day','<=',$where['day'])->whereTime('end_day','>',$where['day']);
  57. })
  58. ->when(isset($where['time']) && $where['time'] !== '',function($query) use($where){
  59. $query->whereTime('start_time','<=',$where['time'])->whereTime('end_time','>',$where['time']);
  60. });
  61. $query->order('start_time DESC');
  62. return $query;
  63. }
  64. /**
  65. * TODO
  66. * @param int $productId
  67. * @param array $data
  68. * @return mixed
  69. * @author Qinii
  70. * @day 2020-08-11
  71. */
  72. public function updateByProduct(int $productId,array $data)
  73. {
  74. return $this->getModel()::getDB()->where('product_id',$productId)->update($data);
  75. }
  76. /**
  77. * TODO
  78. * @author Qinii
  79. * @day 2020-08-11
  80. */
  81. public function valActiveStatus()
  82. {
  83. $day = date('Y-m-d',time());
  84. $_h = date('H',time());
  85. $id = $this->getModel()::getDB()->where('status',1)
  86. ->whereTime('end_day','<=',$day)
  87. ->whereTime('end_time','<',$_h)
  88. ->column('seckill_active_id');
  89. if($id) {
  90. $this->getModel()::getDB()->where('seckill_active_id', 'in', $id)->update(['status' => -1]);
  91. $where = [
  92. 'product_type' => 1,
  93. 'activity_ids' => $id
  94. ];
  95. app()->make(SpuRepository::class)->getSearch($where)->update(['status' => 0]);
  96. }
  97. }
  98. /**
  99. * TODO 不同状态商品
  100. * @param $status
  101. * @return mixed
  102. * @author Qinii
  103. * @day 2020-08-19
  104. */
  105. public function getStatus($status)
  106. {
  107. $day = date('Y-m-d',time());
  108. $_h = date('H',time());
  109. $query = $this->getModel()::getDB();
  110. if($status == 1) //未开始
  111. $query->where('status','<>',-1)->where(function($query)use ($day,$_h){
  112. $query->whereTime('start_day','>',$day)->whereOr(function($query)use($day,$_h){
  113. $query->whereTime('start_day','<=',$day)->where('start_time','>',$_h);
  114. });
  115. });
  116. if($status == 2)//进行中
  117. $query->where('status',1)
  118. ->whereTime('start_day','<=',$day)->whereTime('end_day','>',$day)
  119. ->where('start_time','<=',$_h)->where('end_time','>',$_h);
  120. if($status == 3) //结束
  121. $query->where('status',-1)->whereOr(function($query)use($day,$_h){
  122. $query->whereTime('end_day','<',$day)
  123. ->whereOr(function($query)use($day,$_h){
  124. $query->whereTime('start_day','<=',$day)->whereTime('end_day','>=',$day)->where('end_time','<=',$_h);
  125. });
  126. });
  127. return $query;
  128. }
  129. }