| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | 
							- <?php
 
- /**
 
-  * IdentifyDayDotLogic.php  UTF-8
 
-  * 设备每日在线时长统计逻辑处理
 
-  *
 
-  * @date    : 2019/11/29 21:40
 
-  *
 
-  * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 
-  * @author  : chenbingling <cbl@huosdk.com>
 
-  * @version : HUOSDK 8.5
 
-  */
 
- namespace huoIdentify\logic;
 
- use huo\model\common\CommonModel;
 
- use huoIdentify\model\IdentifyDayDotModel;
 
- use huolib\constant\CacheConst;
 
- use huolib\constant\CommonConst;
 
- use think\Cache;
 
- class IdentifyDayDotLogic extends CommonModel {
 
-     protected $update_time      = CommonConst::MINUTE_SECONDS_10; //写入数据库间隔时间 10分钟 60s
 
-     protected $cache_key_prefix = CacheConst::CACHE_IDENTIFY_DAY_DOT_PREFIX;  //缓存前缀
 
-     /**
 
-      * 获取缓存key
 
-      *
 
-      * @param string $date      日期
 
-      * @param int    $mem_id    玩家ID
 
-      * @param string $device_id 设备ID android 为imei ios 为idfa h5 为 永久cookie标识 huoh5开头标识
 
-      *
 
-      * @return string
 
-      */
 
-     protected function getCacheKeyByDateMemDevice($date, $mem_id, $device_id) {
 
-         $date = date('Ymd', strtotime($date));
 
-         return $this->cache_key_prefix.$date.$mem_id.$device_id;
 
-     }
 
-     /**
 
-      * 保存缓存数据
 
-      *
 
-      * @param $key
 
-      * @param $data
 
-      */
 
-     public function saveCacheData($key, $data) {
 
-         $_expire = CommonConst::CONST_7_DAY_SECONDS;  //缓存7天
 
-         Cache::set($key, $data, $_expire);
 
-     }
 
-     /**
 
-      * 获取信息
 
-      *
 
-      * @param string $date      日期
 
-      * @param int    $mem_id    玩家ID
 
-      * @param string $device_id 设备ID android 为imei ios 为idfa h5 为 永久cookie标识 huoh5开头标识
 
-      *
 
-      * @return array|false|mixed
 
-      */
 
-     public function getInfoByDateMemDevice($date, $mem_id, $device_id) {
 
-         $date = date('Y-m-d', strtotime($date));
 
-         /* 缓存操作 */
 
-         $_cache_key = $this->getCacheKeyByDateMemDevice($date, $mem_id, $device_id);
 
-         $_data = Cache::get($_cache_key);
 
-         if (!empty($_data)) {
 
-             return $_data;
 
-         }
 
-         $_idd_model = new IdentifyDayDotModel();
 
-         $_data = $_idd_model->getInfoByDateMemDevice($date, $mem_id, $device_id);
 
-         if (empty($_data)) {
 
-             $_data = [
 
-                 'date'      => $date,
 
-                 'device_id' => $device_id,
 
-                 'mem_id'    => $mem_id
 
-             ];
 
-             $_idd_model->addData($_data);
 
-             $_data = $_idd_model->getInfoByDateMemDevice($date, $mem_id, $device_id);
 
-         }
 
-         $_next_update_time = time() + $this->update_time;
 
-         $_data['next_update_time'] = $_next_update_time;
 
-         $this->saveCacheData($_cache_key, $_data);
 
-         return $_data;
 
-     }
 
-     /**
 
-      * 更新信息
 
-      *
 
-      * @param array  $data      更新数据
 
-      * @param string $date      日期
 
-      * @param int    $mem_id    玩家ID
 
-      * @param string $device_id 设备ID android 为imei ios 为idfa h5 为 永久cookie标识 huoh5开头标识
 
-      *
 
-      * @return bool
 
-      */
 
-     public function updateDataByDateMemDevice($data, $date, $mem_id, $device_id) {
 
-         $_cache_key = $this->getCacheKeyByDateMemDevice($date, $mem_id, $device_id);
 
-         $_old_data = $this->getInfoByDateMemDevice($date, $mem_id, $device_id);
 
-         $_data = array_merge($_old_data, $data);
 
-         $_time = time();
 
-         $_update_time = $_data['next_update_time'];   //获取当前缓存的更新时间 入库失败则回退
 
-         $_data['update_time'] = $_time;
 
-         $this->saveCacheData($_cache_key, $_data);  //先更新缓存
 
-         if ($_update_time <= $_time) {
 
-             $_data['next_update_time'] = $_time + $this->update_time;
 
-             $_rs = (new IdentifyDayDotModel())->updateData($_data, $_data['id']);
 
-             if (false !== $_rs) {
 
-                 /* 入库失败 */
 
-                 $_data['next_update_time'] = $_update_time; //还原更新时间
 
-             }
 
-             $this->saveCacheData($_cache_key, $_data);  //更新缓存
 
-         }
 
-         return true;
 
-     }
 
-     /**
 
-      * 更新时长
 
-      *
 
-      * @param int    $time      时长
 
-      * @param string $device_id 设备ID android 为imei ios 为idfa h5 为 永久cookie标识 huoh5开头标识
 
-      * @param int    $mem_id    玩家id
 
-      *
 
-      * @return bool
 
-      */
 
-     public function updateOnlineTimeByDevice($time, $device_id, $mem_id) {
 
-         $_date = date('Y-m-d');
 
-         $_data = $this->getInfoByDateMemDevice($_date, $mem_id, $device_id);
 
-         $_data['online_duration'] += $time;
 
-         $_rs = $this->updateDataByDateMemDevice($_data, $_date, $mem_id, $device_id);
 
-         return $_rs;
 
-     }
 
- }
 
 
  |