* @version : HUOSDK 8.0 */ namespace huo\model\game; use huo\model\common\CommonModel; use huolib\constant\CacheConst; use huolib\constant\CommonConst; use think\Cache; class PsMemWhiteModel extends CommonModel { protected $name = 'ps_mem_white'; protected $autoWriteTimestamp = true; protected $key = CacheConst::CACHE_PAY_SWITCH_MEM_WHITE_PREFIX; /** * @return \think\model\relation\BelongsTo */ public function game() { return $this->belongsTo('huo\model\game\GameModel', 'app_id', 'id')->field('id,name'); } /** * 获取缓存key * * @param $app_id * @param $mem_id * * @return string */ protected function getKey($app_id, $mem_id) { $_key = $this->key.$app_id.'_'.$mem_id; return $_key; } public function addData($data) { $_data = []; $_data['app_id'] = get_val($data, 'app_id', 0); $_data['mem_id'] = get_val($data, 'mem_id', 0); $_data['username'] = get_val($data, 'username', ''); $_data['nickname'] = get_val($data, 'nickname', ''); if ($_obj = self::create($_data, true)) { $_data['id'] = $_obj->id; $_key = $this->getKey($_data['app_id'], $_data['mem_id']); Cache::set($_key, json_encode($_data), CommonConst::CONST_DAY_SECONDS); return $_data; } else { return false; } } /** * 获取详情 * * @param $app_id * @param $mem_id * * @return mixed */ public function getInfo($app_id, $mem_id) { $_key = $this->getKey($app_id, $mem_id); $_data = Cache::get($_key); if (!empty($_data)) { return json_decode($_data, true); } $_map = [ 'app_id' => $app_id, 'mem_id' => $mem_id, ]; $_data = $this->where($_map)->find(); if (is_object($_data)) { $_data = $_data->toArray(); } if (empty($_data)) { return []; } Cache::set($_key, json_encode($_data), CommonConst::CONST_DAY_SECONDS); return $_data; } /** * 修改信息 * * @param $app_id * @param $mem_id * @param $data * * @return bool */ public function updateDataPsMemWhite($app_id, $mem_id, $data) { $_key = $this->getKey($app_id, $mem_id); $_data = $this->getInfo($app_id, $mem_id); $_data = array_merge($_data, $data); $_map = [ 'app_id' => $app_id, 'mem_id' => $mem_id, ]; $_rs = $this->where($_map)->update($_data); if (false == $_rs) { return false; } Cache::set($_key, json_encode($_data), CommonConst::CONST_DAY_SECONDS); return true; } /** * 根据ID更新数据 * * @param $id * @param $data * * @return bool */ public function updateById($id, $data) { $_data = parent::getInfoById($id); $_data = array_merge($_data, $data); $_map = ['id' => $id]; $_rs = $this->where($_map)->update($_data); if (false == $_rs) { return false; } $_key = $this->getKey($_data['app_id'], $_data['mem_id']); Cache::set($_key, json_encode($_data), CommonConst::CONST_DAY_SECONDS); return true; } /** * 删除数据 * * @param $app_id * @param $mem_id * * @return int */ public function delData($app_id, $mem_id) { $_map = ['app_id' => $app_id, 'mem_id' => $mem_id]; $_rs = $this->where($_map)->delete(); if (true == $_rs) { $_key = $this->getKey($app_id, $mem_id); Cache::rm($_key); } return $_rs; } /** * 获取白名单列表 * * @param array $param 筛选条件入参 * @param string $page 分页数据 * @param string $order 排序条件 * * @return array */ public function getList($param = [], $page = '1,10', $order = '-create_time') { $_return = ['count' => 0, 'list' => []]; if (empty($param['app_id'])) { return $_return; } $_map = ['app_id' => $param['app_id']]; if (!empty($param['start_time']) && !empty($param['end_time'])) { $_map['create_time'] = ['between', [strtotime($param['start_time']), strtotime($param['end_time']) + CommonConst::CONST_DAY_SECONDS]]; } elseif (!empty($param['start_time'])) { $_map['create_time'] = ['egt', strtotime($param['start_time'])]; } elseif (!empty($param['end_time'])) { $_map['create_time'] = ['elt', strtotime($param['end_time']) + CommonConst::CONST_DAY_SECONDS]; } if (!empty($param['mem_id'])) { $_map['mem_id'] = $param['mem_id']; } if (!empty($param['username'])) { $_map['username'] = $param['username']; } if (!empty($param['nickname'])) { $_map['nickname'] = $param['nickname']; } $_count = $this->where($_map)->count(); if (empty($_count)) { return $_return; } $_order = $this->orderFilter($order); $_data = $this->with('game')->where($_map)->order($_order)->page($page)->select(); if (is_object($_data)) { $_data = $_data->toArray(); } if (empty($_data)) { return $_return; } $_return['count'] = $_count; $_return['list'] = $_data; return $_return; } }