UserTagRelate.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace common\models\user;
  3. use common\enums\StatusEnum;
  4. use common\models\base\BaseActiveRecord;
  5. use PHPUnit\Util\Exception;
  6. use Yii;
  7. /**
  8. * This is the model class for table "qimall_user_tag_relate".
  9. *
  10. *
  11. * @property int $id
  12. * @property int $user_id 会员id
  13. * @property int $tag_id 标签id
  14. * @property int $created_at
  15. * @property int $updated_at
  16. */
  17. class UserTagRelate extends BaseActiveRecord
  18. {
  19. /**
  20. * {@inheritdoc}
  21. */
  22. public static function tableName()
  23. {
  24. return '{{%user_tag_relate}}';
  25. }
  26. /**
  27. * {@inheritdoc}
  28. */
  29. public function rules()
  30. {
  31. return [
  32. [['user_id', 'tag_id', 'created_at', 'updated_at'], 'integer'],
  33. ];
  34. }
  35. /**
  36. * {@inheritdoc}
  37. */
  38. public function attributeLabels()
  39. {
  40. return [
  41. 'id' => 'ID',
  42. 'user_id' => '会员id',
  43. 'tag_id' => '标签id',
  44. 'created_at' => 'Created At',
  45. 'updated_at' => 'Updated At',
  46. ];
  47. }
  48. /**
  49. * 获取会员标签列表
  50. * @param $mall_id
  51. * @param $user_id
  52. * @param int $is_array
  53. * @return array|UserTagRelate[]|\yii\db\ActiveRecord[]
  54. */
  55. public static function getUserTagList($mall_id, $user_id, $is_array = 1)
  56. {
  57. $query = self::find()->select('utr.user_id,utr.tag_id,t.id,t.name')->alias('utr')
  58. ->leftJoin(['t' => Tag::tableName()], 't.id=utr.tag_id')
  59. ->where(['t.mall_id' => $mall_id, 't.status' => StatusEnum::ENABLED]);
  60. if (is_array($user_id)) {
  61. $query->andWhere(['in', 'utr.user_id', $user_id]);
  62. } else {
  63. $query->andWhere(['utr.user_id' => $user_id]);
  64. }
  65. if ($is_array) $query->asArray();
  66. return $query->all();
  67. }
  68. /**
  69. * 保存数据
  70. * @param $user_id
  71. * @param $tag_id_arr
  72. * @return bool
  73. * @throws \yii\db\Exception
  74. */
  75. public static function setData($user_id, $tag_id_arr)
  76. {
  77. try {
  78. if ($user_id) {
  79. //bug 6272
  80. $count = self::deleteAll([
  81. 'and',
  82. ['user_id' => $user_id],
  83. ['not in', 'tag_id', $tag_id_arr]
  84. ]);
  85. $exist_tag_ids = self::find()->select('tag_id')->where(array('user_id' => $user_id))->column();
  86. $insert = [];
  87. $now = time();
  88. foreach ($tag_id_arr as $tag_id) {
  89. if (in_array($tag_id, $exist_tag_ids)) continue;
  90. $insert[] = [$user_id, $tag_id, $now, $now];
  91. }
  92. $field = ['user_id', 'tag_id', 'created_at', 'updated_at'];
  93. // 批量插入数据
  94. //bug6272
  95. if($insert) Yii::$app->db->createCommand()->batchInsert(self::tableName(), $field, $insert)->execute();
  96. }
  97. return true;
  98. } catch (Exception $e) {
  99. self::$static_error = $e->getMessage();
  100. return false;
  101. }
  102. }
  103. }