| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- <?php
- namespace addons\Course\common\models;
- use addons\Course\common\enums\CourseEnum;
- use common\enums\StatusEnum;
- use common\models\base\User;
- use Yii;
- /**
- * This is the model class for table "{{%addons_course_discuss}}".
- *
- * @property int $id
- * @property int $mall_id
- * @property int $uid 用户id
- * @property int $cid 评论的课程id
- * @property int $cpid 评论的章节id
- * @property string|null $content 评论内容
- * @property int $score 课程评分
- * @property int $is_anonymous 是否匿名,1:是,0:不是
- * @property int $is_shield 是否屏蔽评论,1:是,0:否
- * @property int $status 状态 0禁用,1启用,-1是删除
- * @property int $created_at
- * @property int $updated_at
- */
- class AddonsCourseDiscuss extends \common\models\base\BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_course_discuss}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['mall_id', 'uid', 'cid', 'cpid', 'score', 'is_anonymous', 'is_shield', 'status', 'created_at', 'updated_at'], 'integer'],
- [['content'], 'string'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'mall_id' => 'Mall ID',
- 'uid' => '用户id',
- 'cid' => '评论的课程id',
- 'cpid' => '评论的章节id',
- 'content' => '评论内容',
- 'score' => '课程评分',
- 'is_anonymous' => '是否匿名,1:是,0:不是',
- 'is_shield' => '是否屏蔽评论,1:是,0:否',
- 'status' => '状态 0禁用,1启用,-1是删除',
- 'created_at' => 'Created At',
- 'updated_at' => 'Updated At',
- ];
- }
- // 关联模型
- public function getUser()
- {
- return $this->hasOne(User::class, ['id' => 'uid'])->select('nickname,avatar_url,id');
- }
- public static function setData(array $params)
- {
- try {
- if (!empty($params['id'])) {
- $model = self::findOne(['mall_id' => $params['mall_id'], 'id' => $params['id'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]);
- if (empty($model)) throw new \Exception('服务不存在或已删除');
- } else {
- $model = new self();
- $model->loadDefaultValues();
- }
- if (!empty($params['content'])) {
- $params['content'] = json_encode($params['content']);
- }
- if (!$model->load($params, '')) throw new \Exception($model->getErrorMessage());
- if (!$model->save()) throw new \Exception($model->getErrorMessage());
- return $model;
- } catch (\Exception $e) {
- self::$static_error = $e->getMessage();
- return false;
- }
- }
- /**
- * @name: allDiscussList
- * @msg: 获取某一课程下所有评论,如果是匿名的,处理用户名和头像
- * @param {Int} $course_id
- * @param {Int} $pageSize
- * @return {*}
- */
- public static function allDiscussList(int $course_id, $mall_id)
- {
- if (empty($course_id)) {
- // 返回 空数组
- $course_id = 0;
- }
- $where[] = ['status' => StatusEnum::ENABLED, 'mall_id' => $mall_id, 'cid' => $course_id, 'is_shield' => CourseEnum::IS_SHIELD_ZERO];
- $params['where'] = $where;
- $params['with'] =['user'];
- $params['select'] = 'id,uid,cid as course_id,content,score,is_anonymous,created_at';
- $params['order'] = 'created_at desc';
- $params['page'] = \Yii::$app->request->get('page', 1);
- $params['limit'] = \Yii::$app->request->get('limit', 20);
- $discuss_data = self::listPage($params);
- if (!empty($discuss_data)) {
- $base_url = \yii\helpers\Url::home(true);
- // 处理匿名评论
- foreach ($discuss_data['list'] as $dk => &$dv) {
- $discuss_data['list'][$dk]['content'] = self::decodeContent($dv['content']);
- if (0 === (int)$dv['uid']) {
- $dv['username'] = $discuss_data['list'][$dk]['nickname'] = '系统管理员';
- $discuss_data['list'][$dk]['avatar_url'] = $base_url . '/static/images/login/user.png';
- $discuss_data['list'][$dk]['user_id'] = 0;
- }
- if (1 == $dv['is_anonymous']) {
- $dv['nickname'] = '**匿名用户**';
- $dv['avatar_url'] = $base_url . 'static/images/login/user.png';
- $dv['user'] = '';
- }
- unset($discuss_data['list'][$dk]['uid'], $discuss_data['list'][$dk]['is_anonymous']);
- }
- }
- return $discuss_data;
- }
- public static function decodeContent($content)
- {
- if (empty($content)) {
- return $content;
- }
- return json_decode($content);
- }
- }
|