123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <?php
- /**
- * IdentifyDayIdotLogic.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\IdentifyDayIdotModel;
- use huolib\constant\CacheConst;
- use huolib\constant\CommonConst;
- use think\Cache;
- class IdentifyDayIdotLogic extends CommonModel {
- protected $update_time = CommonConst::MINUTE_SECONDS_10; //写入数据库间隔时间 10分钟 60s
- protected $cache_key_prefix = CacheConst::CACHE_IDENTIFY_DAY_IDOT_PREFIX; //缓存前缀
- /**
- * 获取缓存key
- *
- * @param string $date 日期
- * @param int $mem_id 玩家ID
- * @param string $id_card 证件号
- *
- * @return string
- */
- protected function getCacheKeyByDateMemIdCard($date, $mem_id, $id_card) {
- $date = date('Ymd', strtotime($date));
- return $this->cache_key_prefix.$date.$mem_id.$id_card;
- }
- /**
- * 保存缓存数据
- *
- * @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 $id_card 证件号
- *
- * @return array|false
- */
- public function getInfoByDateMemIdCard($date, $mem_id, $id_card) {
- $date = date('Y-m-d', strtotime($date));
- /* 缓存操作 */
- $_cache_key = $this->getCacheKeyByDateMemIdCard($date, $mem_id, $id_card);
- $_data = Cache::get($_cache_key);
- if (!empty($_data)) {
- return $_data;
- }
- $_idi_model = new IdentifyDayIdotModel();
- $_data = $_idi_model->getInfoByDateMemIdCard($date, $mem_id, $id_card);
- if (empty($_data)) {
- $_data = [
- 'date' => $date,
- 'id_card' => $id_card,
- 'mem_id' => $mem_id
- ];
- $_idi_model->addData($_data);
- $_data = $_idi_model->getInfoByDateMemIdCard($date, $mem_id, $id_card);
- }
- $_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 $id_card 证件号
- *
- * @return bool
- */
- public function updateDataByDateMemIdCard($data, $date, $mem_id, $id_card) {
- $_cache_key = $this->getCacheKeyByDateMemIdCard($date, $mem_id, $id_card);
- $_old_data = $this->getInfoByDateMemIdCard($date, $mem_id, $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) {
- $_data['next_update_time'] = $_time + $this->update_time;
- $_rs = (new IdentifyDayIdotModel())->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 $id_card 证件号
- * @param int $mem_id 玩家ID
- *
- * @return bool
- */
- public function updateOnlineTimeByIdCard($time, $id_card, $mem_id) {
- $_date = date('Y-m-d');
- $_data = $this->getInfoByDateMemIdCard($_date, $mem_id, $id_card);
- $_data['online_duration'] += $time;
- $_rs = $this->updateDataByDateMemIdCard($_data, $_date, $mem_id, $id_card);
- return $_rs;
- }
- /**
- * 更新金额
- *
- * @param float $money 金额
- * @param string $id_card 证件号
- * @param int $mem_id 玩家ID
- *
- * @return bool
- */
- public function updateSumMoneyByIdCard($money, $id_card, $mem_id) {
- $_date = date('Y-m-d');
- $_data = $this->getInfoByDateMemIdCard($_date, $mem_id, $id_card);
- $_data['sum_money'] += $money;
- $_rs = $this->updateDataByDateMemIdCard($_data, $_date, $mem_id, $id_card);
- return $_rs;
- }
- }
|