ActivityWechatRoom.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * 厦门云联储网络科技有限公司
  4. * https://www.baokuaiyun.com
  5. * Copyright (c) 2023 爆块云 All rights reserved.
  6. */
  7. namespace app\models;
  8. use Yii;
  9. use yii\behaviors\TimestampBehavior;
  10. use yii\db\ActiveRecord;
  11. /**
  12. * This is the model class for table "{{%activity_wechat_room}}".
  13. *
  14. * @property integer $id
  15. */
  16. class ActivityWechatRoom extends \yii\db\ActiveRecord
  17. {
  18. /**
  19. * @inheritdoc
  20. */
  21. public static function tableName()
  22. {
  23. return '{{%activity_wechat_room}}';
  24. }
  25. public function behaviors()
  26. {
  27. return [
  28. [
  29. 'class' => TimestampBehavior::class,
  30. ]
  31. ];
  32. }
  33. public function beforeSave($insert) {
  34. if(parent::beforeSave($insert)){
  35. $goods_ids = explode(',', $this->goods_ids);
  36. $activityAtList = self::activityAtList($this->store_id, true);
  37. foreach($activityAtList as $activity){
  38. if($activity['id'] == $this->id){
  39. continue;
  40. }
  41. $at_goods_ids = explode(',', $activity['goods_ids']);
  42. $existGoodsIds = array_intersect($goods_ids, $at_goods_ids);
  43. if($existGoodsIds){
  44. $this->addError('goods_ids', '操作失败,商品【id:'. implode(',', $existGoodsIds) .'】已参加别的活动[活动id:' . $activity['id'] . ']');
  45. return false;
  46. }
  47. }
  48. return true;
  49. }
  50. return false;
  51. }
  52. //商品进行中活动
  53. public static function activityAtByGoodsId($goods_id = 0, &$goods_ext = null) {
  54. $query = self::find()->alias('a')->leftJoin(['ag' => ActivityWechatRoomGoods::tableName()], 'a.id=ag.activity_id');
  55. $query->andWhere([
  56. 'and',
  57. ['ag.goods_id' => $goods_id, 'a.is_delete' => 0, 'ag.is_delete' => 0, 'a.status' => 1],
  58. ['<', 'a.start_time', time()],
  59. ['>', 'a.end_time', time()],
  60. ]);
  61. $info = $query->asArray()->one();
  62. if($info){
  63. $goods_ext = ActivityWechatRoomGoods::findOne(['activity_id' => $info['id'], 'goods_id' => $goods_id, 'is_delete' => 0]);
  64. }
  65. return $info;
  66. }
  67. //店铺进行中活动
  68. public static function activityAt($id) {
  69. $query = self::find();
  70. $query->andWhere([
  71. 'and',
  72. ['id' => $id, 'is_delete' => 0, 'status' => 1],
  73. ['<', 'start_time', time()],
  74. ['>', 'end_time', time()],
  75. ]);
  76. $info = $query->one();
  77. return $info;
  78. }
  79. //店铺进行中活动
  80. public static function activityAtList($store_id = 0, $asArray = false) {
  81. $query = self::find();
  82. $query->andWhere([
  83. 'and',
  84. ['is_delete' => 0, 'status' => 1],
  85. ['<', 'start_time', time()],
  86. ['>', 'end_time', time()],
  87. ]);
  88. if($store_id > -1){
  89. $query->andWhere(['store_id' => $store_id]);
  90. }
  91. $asArray && $query->asArray();
  92. $list = $query->all();
  93. return $list;
  94. }
  95. }