| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 | 
							- <?php
 
- /**
 
-  * IdentifyIdotLogic.php  UTF-8
 
-  * 实名信息在线时长统计逻辑处理
 
-  *
 
-  * @date    : 2019/11/29 17:43
 
-  *
 
-  * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 
-  * @author  : chenbingling <cbl@huosdk.com>
 
-  * @version : HUOSDK 8.5
 
-  */
 
- namespace huoIdentify\logic;
 
- use huo\model\common\CommonModel;
 
- use huoIdentify\model\IdentifyIdotModel;
 
- use huolib\constant\CacheConst;
 
- use huolib\constant\CommonConst;
 
- use huolib\tool\Time;
 
- use think\Cache;
 
- class IdentifyIdotLogic extends CommonModel {
 
-     protected $update_time      = CommonConst::MINUTE_SECONDS_10; //写入数据库间隔时间 10分钟 60s
 
-     protected $cache_key_prefix = CacheConst::CACHE_IDENTIFY_IDOT_PREFIX; //缓存前缀
 
-     /***
 
-      * 根据id_card和日期获取缓存key
 
-      *
 
-      * @param string $id_card 证件号
 
-      * @param string $date    日期 年月日 空者获取今日日期
 
-      *
 
-      * @return string
 
-      */
 
-     public function getCacheKeyByIdCardDate($id_card, $date = '') {
 
-         $_date = date('Ymd');
 
-         if (!empty($date)) {
 
-             $_date = date('Ymd', strtotime($date));
 
-         }
 
-         $_cache_key = $this->cache_key_prefix.$id_card.$_date;
 
-         return $_cache_key;
 
-     }
 
-     /**
 
-      * 保存缓存数据
 
-      *
 
-      * @param $key
 
-      * @param $data
 
-      */
 
-     public function saveCacheData($key, $data) {
 
-         $_expire = CommonConst::CONST_7_DAY_SECONDS;  //缓存7天
 
-         Cache::set($key, $data, $_expire);
 
-     }
 
-     /***
 
-      * 根据id_card获取统计数据
 
-      *
 
-      * @param string $id_card 证件号
 
-      *
 
-      * @return mixed
 
-      */
 
-     public function getInfoByIdCard($id_card) {
 
-         if (empty($id_card)) {
 
-             return [];
 
-         }
 
-         $_cache_key = $this->getCacheKeyByIdCardDate($id_card);
 
-         $_data = Cache::get($_cache_key);
 
-         if (!empty($_data)) {
 
-             return $_data;
 
-         }
 
-         $_model = new IdentifyIdotModel();
 
-         $_info = $_model->getInfoByIdCard($id_card);
 
-         if (empty($_info)) {
 
-             $_data = [
 
-                 'id_card' => $id_card
 
-             ];
 
-             $_model->addData($_data);
 
-             $_info = $_model->getInfoByIdCard($id_card);
 
-         }
 
-         $_last_update_date = date('Ymd', $_info['update_time']);
 
-         $_today_date = date('Ymd');
 
-         if ($_last_update_date != $_today_date) {
 
-             /* 如果上次更新时间不是今天,则清空今日数据 */
 
-             $_info['day_online_duration'] = CommonConst::CONST_ZERO;
 
-             $_info['day_money'] = CommonConst::CONST_ZERO;
 
-             list($_week_start_time, $_week_end_time) = Time::week();
 
-             if ($_week_start_time > $_data['update_time']) {
 
-                 /* 上次更新时间是上一周则清空本周数据 */
 
-                 $_info['week_online_duration'] = CommonConst::CONST_ZERO;
 
-                 $_info['week_money'] = CommonConst::CONST_ZERO;
 
-             }
 
-             list($_month_start_time, $_mont_end_time) = Time::month();
 
-             if ($_month_start_time > $_data['update_time']) {
 
-                 /* 下次时间上一月则清空本月数据 */
 
-                 $_info['month_online_duration'] = CommonConst::CONST_ZERO;
 
-                 $_info['month_money'] = CommonConst::CONST_ZERO;
 
-             }
 
-         }
 
-         $_next_update_time = time() + $this->update_time;
 
-         $_info['next_update_time'] = $_next_update_time;
 
-         $this->saveCacheData($_cache_key, $_info);
 
-         return $_info;
 
-     }
 
-     /**
 
-      * 根据id_card更新统计数据
 
-      *
 
-      * @param array  $data    更新数据
 
-      * @param string $id_card 证件号
 
-      *
 
-      * @return bool
 
-      */
 
-     public function updateByIdCard($data, $id_card) {
 
-         $_cache_key = $this->getCacheKeyByIdCardDate($id_card);
 
-         $_old_data = $this->getInfoByIdCard($id_card);
 
-         $_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) {
 
-             $_update_data = $_data;
 
-             $_data['next_update_time'] = $_time + $this->update_time;
 
-             $_next_date = date('Ymd', $_data['next_update_time']);
 
-             $_today_date = date('Ymd');
 
-             if ($_next_date != $_today_date) {
 
-                 /* 如果下次更新时间不是今天,则清空今日数据 */
 
-                 $_update_data['day_online_duration'] = CommonConst::CONST_ZERO;
 
-                 $_update_data['day_money'] = CommonConst::CONST_ZERO;
 
-                 list($_week_start_time, $_week_end_time) = Time::week();
 
-                 if ($_week_end_time < $_data['next_update_time']) {
 
-                     /* 下次时间是下一周则清空本周数据 */
 
-                     $_update_data['week_online_duration'] = CommonConst::CONST_ZERO;
 
-                     $_update_data['week_money'] = CommonConst::CONST_ZERO;
 
-                 }
 
-                 list($_month_start_time, $_mont_end_time) = Time::month();
 
-                 if ($_mont_end_time < $_data['next_update_time']) {
 
-                     /* 下次时间是下一月则清空本月数据 */
 
-                     $_update_data['month_online_duration'] = CommonConst::CONST_ZERO;
 
-                     $_update_data['month_money'] = CommonConst::CONST_ZERO;
 
-                 }
 
-             }
 
-             $_rs = (new IdentifyIdotModel())->updateByIdCard($_update_data, $id_card);
 
-             if (false === $_rs) {
 
-                 /* 入库失败 */
 
-                 $_data['next_update_time'] = $_update_time; //还原更新时间
 
-             }
 
-             $this->saveCacheData($_cache_key, $_data);  //更新缓存
 
-         }
 
-         return true;
 
-     }
 
-     /**
 
-      * 更新时长
 
-      *
 
-      * @param int    $time    时长
 
-      * @param string $id_card 证件号
 
-      *
 
-      * @return bool
 
-      */
 
-     public function updateOnlineTimeByIdCard($time, $id_card) {
 
-         $_data = $this->getInfoByIdCard($id_card);
 
-         $_data['day_online_duration'] += $time;
 
-         $_data['week_online_duration'] += $time;
 
-         $_data['month_online_duration'] += $time;
 
-         $_data['online_duration'] += $time;
 
-         $_rs = $this->updateByIdCard($_data, $id_card);
 
-         return $_rs;
 
-     }
 
-     /**
 
-      * 更新金额
 
-      *
 
-      * @param float  $money   金额
 
-      * @param string $id_card 证件号
 
-      *
 
-      * @return bool
 
-      */
 
-     public function updateSumMoneyByIdCard($money, $id_card) {
 
-         $_data = $this->getInfoByIdCard($id_card);
 
-         $_data['day_money'] += $money;
 
-         $_data['week_money'] += $money;
 
-         $_data['month_money'] += $money;
 
-         $_data['sum_money'] += $money;
 
-         $_rs = $this->updateByIdCard($_data, $id_card);
 
-         return $_rs;
 
-     }
 
- }
 
 
  |