| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?php
- namespace addons\BusinessCard\common\models;
- use addons\BusinessCard\common\enums\CardEnums;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use Exception;
- use Yii;
- /**
- * This is the model class for table "qimall_addons_business_card_material_browse_log".
- *
- * @property int $id 名片素材客户浏览记录
- * @property int|null $mall_id 商城ID
- * @property int|null $user_id 用户ID
- * @property int|null $material_id 素材ID
- * @property int|null $view_seconds 观看时长(秒)
- * @property int|null $status 状态[-1:删除;0:禁用;1启用]
- * @property int|null $created_at 创建时间
- * @property int|null $updated_at 更新时间
- * @property int|null $view_times 累计观看次数
- * @property int|null $share_user_id 分享的销售员
- * @property int|null $share_user_type 1分享人,2上级
- * @property string|null $unikey 标识
- */
- class BusinessCardMaterialsBrowseLog extends \common\models\base\BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return 'qimall_addons_business_card_material_browse_log';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['mall_id', 'user_id', 'material_id', 'view_seconds', 'status', 'created_at', 'updated_at', 'view_times', 'share_user_id', 'share_user_type'], 'integer'],
- [['unikey'], 'string', 'max' => 16],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'mall_id' => 'Mall ID',
- 'user_id' => 'User ID',
- 'material_id' => 'Material ID',
- 'view_seconds' => 'View Seconds',
- 'status' => 'Status',
- 'created_at' => 'Created At',
- 'updated_at' => 'Updated At',
- 'view_times' => 'View Times',
- 'share_user_id' => 'Share User ID',
- 'share_user_type' => 'Share User Type',
- 'unikey' => 'Unikey',
- ];
- }
- public function getUser()
- {
- return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username');
- }
- public function getMaterial()
- {
- return $this->hasOne(BusinessCardMaterials::class, ['id' => 'material_id'])->select('id,title,cover_img');
- }
- public function getCarduser()
- {
- return $this->hasOne(BusinessCardUser::class, ['user_id' => 'user_id'])->select('id,user_id,parent_id');
- }
- public function getShareuser()
- {
- return $this->hasOne(User::class, ['id' => 'share_user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username');
- }
- /**
- * 数据设置
- */
- public static function setData(array $params, $card_id = 0)
- {
- try{
- $is_add = 0;
- if (!isset($params['mall_id']) || empty($params['mall_id'])) throw new Exception('缺少商城ID');
- if (isset($params['id']) && !empty($params['id'])) {
- $model = self::findOne(['id' => $params['id'], 'mall_id' => $params['mall_id'], 'status' => StatusEnum::ENABLED]);
- if(empty($model)) throw new Exception('浏览记录不存在或已删除');
- if (isset($params['view_seconds'])) {
- $model->view_seconds = $model->view_seconds + $params['view_seconds'];
- unset($params['view_seconds']);
- }
- } else {
- $model = new self();
- $model->loadDefaultValues();
- $model->mall_id = $params['mall_id'];
- $is_add = 1;
- }
- if (!$model->load($params,'') || !$model->save()) throw new Exception($model->getErrorMessage());
- if($is_add == 1){
- self::cutomerLog($params,$model, $card_id);
- }
- return $model;
- }catch(Exception $e){
- self::setStaticError($e->getMessage());
- return false;
- }
- }
- /**
- * @param $params
- * @param $log_data
- * @param $card_id
- * @return void
- * @throws Exception
- */
- //添加行为
- public static function cutomerLog($params,$log_data, $card_id = 0){
- $add['mall_id'] = $params['mall_id'];
- $add['user_id'] = $params['user_id'];
- $add['item_id'] = !empty($card_id) ? $card_id : -1; // -1
- $add['material_id'] = $params['material_id'];
- //$material_times = CardMaterialBrowseLog::count([['=','user_id',$params['user_id']],['=','material_id',$params['material_id']]]);
- $add['material_times'] = $log_data->view_times;
- $add['material_log_id'] = $log_data->id;
- $add['log_type'] = CardEnums::LOG_TYPE_MATEREAL_DETAIL;
- BusinessCardCustomerLog::setData($add);
- // 记录
- BusinessCardSecretUserScore::setData($params['mall_id'], $params['user_id'], CardEnums::LOG_TYPE_MATEREAL_DETAIL);
- }
- // 用户是否阅读过该素材
- public static function isReaded($mall_id, $user_id, $material_id)
- {
- $is_readed = self::getOne([
- ['=', 'mall_id', $mall_id],
- ['=', 'user_id', $user_id],
- ['=', 'material_id', $material_id],
- ['=', 'status', StatusEnum::ENABLED],
- ], true, '', 'id desc', 'id,view_times');
- return $is_readed;
- }
- // 用户是否标记过该素材
- public static function isMarked($mall_id, $user_id, $material_id, $unikey)
- {
- $cache_key = 'addons:cache_key:mall' . $mall_id . ':user' . $user_id . ':material' . $material_id . ':' . $unikey;
- $redis = Yii::$app->redis;
- $data = $redis->get($cache_key);
- if ($data) {
- return json_decode($data, true);
- }
- $log = self::getOne([
- ['=', 'mall_id', $mall_id],
- ['=', 'user_id', $user_id],
- ['=', 'material_id', $material_id],
- ['=', 'unikey', $unikey],
- ['=', 'status', StatusEnum::ENABLED],
- ], true, '', 'id desc', 'id,user_id');
- if ($log) {
- $redis->setex($cache_key, 120, json_encode($log, JSON_UNESCAPED_UNICODE));
- }
- return $log;
- }
- }
|