增加預製卡功能

main
Wayne 3 years ago
parent 2eb24248d7
commit aed59ed8cc

@ -10,39 +10,34 @@ use app\common\lib\Aes;
class Card extends ApiController class Card extends ApiController
{ {
public function addPrecard(){ public function addPrecard(){
$req=input(); $req=input('post.');
//取得prefix
$agent = Db::name('agent')
->where('id',$req['agent_id'])
->find();
$aes = new Aes([]); $aes = new Aes([]);
for($i=0;$i<input('number');$i++){ for($i=0;$i<input('number');$i++){
// $user_id=genUniqid($agent['prefix']); // $user_id=genUniqid($agent['prefix']);
// $verify_code = genSerialNo(); // $serial_no = genSerialNo(10);
// $params = urlencode($aes->encrypt('user_id='.$user_id.'&verify_code='.$verify_code)); // $params = urlencode($aes->encrypt('user_id='.$user_id.'&verify_code='.$verify_code));
// $nfcUrl = genQrCode(getUrl().'/card/?params='.$params,$user_id,'nfc'); // $nfcUrl = genQrCode(getUrl().'/card/?params='.$params,$user_id,'nfc');
$data[]=[ $data[]=[
// 'user_id'=>$user_id, 'agent_id'=>0,
'agent_id'=>$req['agent_id'], 'name'=>$req['name'],
'try_days'=>7, 'days'=>$req['days'],
'serial_no' => '',
'verify_code'=>'', 'verify_code'=>'',
'expire_time'=>$req['expire_time'], 'expire_time'=>$req['expire_time'],
'status'=>0, 'status'=>0,
]; ];
} }
try{ try{
Db::name('precard') Db::name('precard')
->insertAll($data); ->insertAll($data);
}catch(\Exception $e){ }catch(\Exception $e){
print_r($e); return $this->error($e->getMessage());
return $this->error('新增失敗');
} }
return $this->success('新增成功'); return $this->success('新增成功');
@ -80,7 +75,6 @@ class Card extends ApiController
// $aes = new Aes([]); // $aes = new Aes([]);
// $nfc_url = 'user_id='.$val['user_id'].'&verify_code='.$val['verify_code']; // $nfc_url = 'user_id='.$val['user_id'].'&verify_code='.$val['verify_code'];
// $result[$key]['params'] = getUrl().'/card/'.urlencode($aes->encrypt($nfc_url)); // $result[$key]['params'] = getUrl().'/card/'.urlencode($aes->encrypt($nfc_url));
$result[$key]['agent_name'] = Db::name('agent')->where('id',$val['agent_id'])->value('name');
$result[$key]['expire'] = date('Y-m-d',$val['expire_time']); $result[$key]['expire'] = date('Y-m-d',$val['expire_time']);
switch($val['status']){ switch($val['status']){
case 0: case 0:
@ -98,9 +92,9 @@ class Card extends ApiController
} }
$aes = new Aes([]); $aes = new Aes([]);
$params = urlencode($aes->encrypt('verify_code='.$val['verify_code'])); $params = urlencode($aes->encrypt('sno='.$val['serial_no']));
$result[$key]['nfcurl']= getUrl().'/card/?params='.$params; $result[$key]['nfcurl']= getUrl().'/card/?params='.$params;
// $nfcUrl = genQrCode('https://'.$_SERVER['HTTP_HOST'].'/card/?params='.$params,$data['user_id'],'nfc'); // $result[$key]['qrcode'] = genQrCode($result[$key]['nfcurl'],'nfc');
} }
$rtn=[ $rtn=[
@ -139,18 +133,20 @@ class Card extends ApiController
public function updateVerifyCode(){ public function updateVerifyCode(){
$id=input('id'); $id=input('id');
$verify_code=strtoupper(input('code')); $serial_no=strtoupper(input('code'));
//TODO:
$is_user = Db::name('user') $is_user = Db::name('user')
->where('uniqid',$verify_code) ->where('uniqid',$serial_no)
->count(); ->count();
if($is_user){ if($is_user){
return $this->error('卡片已綁定會員'); return $this->error('卡片已綁定會員');
} }
$is_precard = Db::name('precard') $is_precard = Db::name('precard')
->where('verify_code',$verify_code) ->where('serial_no',$serial_no)
->count(); ->count();
if($is_precard){ if($is_precard){
@ -160,9 +156,13 @@ class Card extends ApiController
try{ try{
$result=Db::name('precard') $result=Db::name('precard')
->where('id',$id) ->where('id',$id)
->update(['verify_code'=>$verify_code,'status'=>1]); ->update(['serial_no'=>$serial_no,'status'=>1]);
$aes = new Aes([]);
$params = urlencode($aes->encrypt('sno='.$serial_no));
$nfcurl= $_SERVER['HTTP_HOST'].'/card/?params='.$params;
return $this->success('設定成功'); return $this->success($nfcurl);
}catch(\Exception $e){ }catch(\Exception $e){
return $this->error('系統錯誤'); return $this->error('系統錯誤');
} }

@ -7,12 +7,16 @@ use app\common\lib\Aes;
class Auth extends ApiController class Auth extends ApiController
{ {
function test(){ function test(){
echo genSerialNo(); $token='32UQBG%2BcpJ2AnvBDCR9gEix6a2ysc1Ro5pXg5%2Fvaang%3D';
$aes = new Aes([]);
print_r($aes->descrypt($token));
// parse_str($aes->descrypt($token),$params);
// print_r($params);
} }
function testAes(){ function testAes(){
$aes = new Aes([]); $aes = new Aes([]);
echo urlencode($aes->encrypt('user_id=tg123467890&verify_code=1111')); echo ($aes->encrypt('sno=1234567890'));
} }
function testDec(){ function testDec(){

@ -25,7 +25,6 @@ class Auth extends ApiController
$id_token = input('token'); $id_token = input('token');
$line_id = input('line_id'); $line_id = input('line_id');
// $profile = (new Parser())->parse($id_token); // $profile = (new Parser())->parse($id_token);
// print_r($token->getClaim('name')); // print_r($token->getClaim('name'));
@ -346,7 +345,37 @@ class Auth extends ApiController
return $this->Success($avatar); return $this->Success($avatar);
} }
public function test(){ public function verifyActivationToken(){
Vcard::genVcf('mc63de2a162b218'); $token = input('token');
if(!$token){
return $this->error('參數錯誤');
}
$aes = new Aes([]);
parse_str($aes->descrypt($token),$params);
if(!isset($params['sno'])){
return $this->error('參數錯誤');
}
$precard = Db::name('precard')
->where('serial_no',$params['sno'])
->find();
if(!$precard){
return $this->error('查無預開卡');
}
//檢查到期日
if($precard['expire_time']!=0 && $precard['expire_time']<time()){
return $this->error('預開卡已過期');
}
//檢查是否已經開卡
if($precard['status']!=1){
return $this->error('預開卡已使用或無效');
}
return $this->success('驗證成功');
} }
} }

@ -29,20 +29,19 @@ class Card extends ApiController
$aes = new Aes([]); $aes = new Aes([]);
parse_str($aes->descrypt($token),$params); parse_str($aes->descrypt($token),$params);
if(!isset($params['verify_code'])){ if(!isset($params['sno'])){
if(!isset($params['user_id'])){ if(!isset($params['user_id'])){
return $this->error('參數錯誤'); return $this->error('參數錯誤');
} }
$user_id = $params['user_id']; $user_id = $params['user_id'];
}else{ }else{
if(strlen($params['verify_code'])>0){ if(strlen($params['sno'])>0){
$user_id = getUseridByCuid(strtoupper($params['verify_code'])); $user_id = getUseridByCuid(strtoupper($params['sno']));
}else{ }else{
return $this->error('參數錯誤'); return $this->error('參數錯誤');
} }
} }
if($user_id){ if($user_id){
Db::name('user') Db::name('user')
->where('user_id',$user_id) ->where('user_id',$user_id)
@ -52,14 +51,14 @@ class Card extends ApiController
return $this->success($user_id); return $this->success($user_id);
} }
//檢查是否為預開卡會員 //檢查是否為預開卡會員
$is_precard=Db::name('precard') $is_precard=Db::name('precard')
->where('verify_code',strtoupper($params['verify_code'])) ->where('serial_no',strtoupper($params['sno']))
->count(); ->count();
if($is_precard){ if($is_precard){
return $this->success(['verify'=>strtoupper($params['verify_code'])],201); return $this->success(['sno'=>strtoupper($params['sno'])],201);
} }
return $this->error('請求錯誤'); return $this->error('請求錯誤');

@ -1,4 +1,5 @@
<?php <?php
namespace app\appapi\controller\v1; namespace app\appapi\controller\v1;
use app\appapi\ApiController; use app\appapi\ApiController;
@ -10,96 +11,149 @@ use app\service\Sso;
class User extends ApiController class User extends ApiController
{ {
public function getUserInfo(){ /*
$user=Db::name('user') * 取得用戶資料
*/
public function getUserInfo()
{
//檢查是否有serail_no
$slashToken = urldecode(input('slashToken'));
$precardData = '';
if (!empty($slashToken)) {
$rtn = \app\common\Activation::checkSlashtoken($slashToken);
if ($rtn['code'] > 0) {
return $this->error($rtn['msg'], $rtn['code']);
}
$precardData = $rtn['data'];
}
$user = Db::name('user')
// ->field('id,user_id,address,avatar,phone,email,url,facebook,ig,youtube,mark,uniqid,overdue_time,level,nc_func,agent_id,real_name,nfc_addon,company') // ->field('id,user_id,address,avatar,phone,email,url,facebook,ig,youtube,mark,uniqid,overdue_time,level,nc_func,agent_id,real_name,nfc_addon,company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->find(); ->find();
//使用者不存在,至SSO Server取得,並加入會員資料表 //使用者不存在,至SSO Server取得,並加入會員資料表
if(!$user){ if (!$user) {
$user_data = [ $user_data = [
'user_id' => $this->uid 'user_id' => $this->uid
]; ];
$sso = Sso::getUserInfo($user_data); $sso = Sso::getUserInfo($user_data);
if(!$sso['code']==200){ if (!$sso['code'] == 200) {
return $this->error('get sso user info error!!!'); return $this->error('get sso user info error!!!');
} }
$sso_data = $sso['data']; $sso_data = $sso['data'];
try{ try {
$sso_data['level'] = 2; $sso_data['level'] = 2;
$sso_data['status'] = 1; $sso_data['status'] = 1;
$sso_data['overdue_time'] = strtotime(date('Y-m-d',time() + (60 * 60 * 24 * 7))); $sso_data['overdue_time'] = strtotime(date('Y-m-d', time() + (60 * 60 * 24 * 7)));
$sso_data['cus_card'] = ''; $sso_data['cus_card'] = '';
$sso_data['create_time'] = date('Y-m-d H:i:s'); $sso_data['create_time'] = date('Y-m-d H:i:s');
Db::name('user') Db::name('user')
->insert($sso_data); ->insert($sso_data);
$user=Db::name('user')
->where('user_id',$this->uid)
->find();
unset($sso_data); unset($sso_data);
}catch(\Exception $e){ } catch (\Exception $e) {
return $this->error($e->getMessage()); return $this->error($e->getMessage());
} }
} }
//更新預開卡狀態
if($precardData){
//更新卡號,會員編號連結
Db::name('user_sno')
->insert([
'user_id'=>$this->uid,
'serial_no'=>$precardData['serial_no'],
]);
//更新用戶資料
if($precardData['days']>0){
Db::name('user')
->where('user_id', $this->uid)
->update(
[
'level' => 1,
'overdue_time' => Db::raw('overdue_time + '.(60 * 60 * 24 * $precardData['days']))
]
);
}
//更新預開卡狀態
Db::name('precard')
->where('serial_no', $precardData['serial_no'])
->update([
'status'=>2,
'user_id'=>$this->uid
]);
}
$user = Db::name('user')
->where('user_id', $this->uid)
->find();
$aes = new Aes([]); $aes = new Aes([]);
if(strlen(trim($user['uniqid']))>0){ if (strlen(trim($user['uniqid'])) > 0) {
$params = urlencode($aes->encrypt('verify_code='.$user['uniqid'])); $params = urlencode($aes->encrypt('verify_code=' . $user['uniqid']));
}else{ } else {
$params = urlencode($aes->encrypt('user_id='.$user['user_id'])); $params = urlencode($aes->encrypt('user_id=' . $user['user_id']));
} }
$user['nfcurl'] = getUrl().'/card/?params='.$params; $user['nfcurl'] = getUrl() . '/card/?params=' . $params;
// $user['level_name'] = Db::name('user_level')->where('agent_id',$user['agent_id'])->where('level_id',$user['level'])->value('name'); // $user['level_name'] = Db::name('user_level')->where('agent_id',$user['agent_id'])->where('level_id',$user['level'])->value('name');
// $user['overdue_time'] = date('Y-m-d H:i:s',$user['overdue_time']); // $user['overdue_time'] = date('Y-m-d H:i:s',$user['overdue_time']);
if(time()>$user['overdue_time']){ if (time() > $user['overdue_time']) {
//更新用戶level //更新用戶level
Db::name('user')->where('user_id',$this->uid)->update(['level'=>0]); Db::name('user')->where('user_id', $this->uid)->update(['level' => 0]);
$user['level'] = 0; $user['level'] = 0;
} }
switch($user['level']){ switch ($user['level']) {
case 0: case 0:
$user['level_name']='未付費用戶'; $user['level_name'] = '未付費用戶';
break; break;
case 1: case 1:
$user['level_name']='付費用戶'; $user['level_name'] = '付費用戶';
break; break;
case 2: case 2:
$user['level_name']='試用用戶'; $user['level_name'] = '試用用戶';
break; break;
default: default:
break; break;
} }
$user['nc_func'] = explode(',',$user['nc_func']); $user['nc_func'] = explode(',', $user['nc_func']);
$user['agent_prefix'] = Db::name('agent')->where('id',$user['agent_id'])->value('prefix'); $user['agent_prefix'] = Db::name('agent')->where('id', $user['agent_id'])->value('prefix');
return $this->Success($user); return $this->Success($user);
} }
public function getUserCompany(){ public function getUserCompany()
if(!$this->uid){ {
if (!$this->uid) {
$this->error('用戶ID錯誤'); $this->error('用戶ID錯誤');
} }
$result = Db::name('user_company') $result = Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->select(); ->select();
return $this->success($result); return $this->success($result);
} }
public function addUserCompany(){ public function addUserCompany()
if(!$this->uid){ {
if (!$this->uid) {
$this->error('用戶ID錯誤'); $this->error('用戶ID錯誤');
} }
@ -108,59 +162,58 @@ class User extends ApiController
unset($ucData['uid']); unset($ucData['uid']);
unset($ucData['action']); unset($ucData['action']);
try{ try {
if(isset($ucData['is_default']) && $ucData['is_default']){ if (isset($ucData['is_default']) && $ucData['is_default']) {
Db::name('user_company') Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update(['is_default'=>0]); ->update(['is_default' => 0]);
Db::name('user') Db::name('user')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update([ ->update([
'company' => isset($ucData['uc_name'])?$ucData['uc_name']:'', 'company' => isset($ucData['uc_name']) ? $ucData['uc_name'] : '',
'title' => isset($ucData['uc_title'])?$ucData['uc_title']:'', 'title' => isset($ucData['uc_title']) ? $ucData['uc_title'] : '',
'tel' => isset($ucData['uc_tel'])?$ucData['uc_tel']:'', 'tel' => isset($ucData['uc_tel']) ? $ucData['uc_tel'] : '',
'address' => isset($ucData['uc_address'])?$ucData['uc_address']:'', 'address' => isset($ucData['uc_address']) ? $ucData['uc_address'] : '',
'url' => isset($ucData['uc_url'])?$ucData['uc_url']:'', 'url' => isset($ucData['uc_url']) ? $ucData['uc_url'] : '',
]); ]);
} }
Db::name('user_company') Db::name('user_company')
->insert($ucData); ->insert($ucData);
$result = Db::name('user_company') $result = Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->select(); ->select();
return $this->success($result); return $this->success($result);
} catch (\Exception $e) {
}catch(\Exception $e){
print_r($e); print_r($e);
return $this->error('操作錯誤'); return $this->error('操作錯誤');
} }
} }
public function setUCDefault(){ public function setUCDefault()
if(!$this->uid){ {
if (!$this->uid) {
$this->error('用戶ID錯誤'); $this->error('用戶ID錯誤');
} }
try{ try {
Db::name('user_company') Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update(['is_default'=>0]); ->update(['is_default' => 0]);
Db::name('user_company') Db::name('user_company')
->where('id',input('id')) ->where('id', input('id'))
->update(['is_default'=>1]); ->update(['is_default' => 1]);
$res = Db::name('user_company') $res = Db::name('user_company')
->where('id',input('id')) ->where('id', input('id'))
->find(); ->find();
Db::name('user') Db::name('user')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update([ ->update([
'company' => $res['uc_name'], 'company' => $res['uc_name'],
'title' => $res['uc_title'], 'title' => $res['uc_title'],
@ -171,34 +224,34 @@ class User extends ApiController
//更新用戶資料 //更新用戶資料
$result = Db::name('user_company') $result = Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->select(); ->select();
return $this->success($result); return $this->success($result);
} catch (\Exception $e) {
}catch(\Exception $e){
print_r($e); print_r($e);
return $this->error('操作錯誤'); return $this->error('操作錯誤');
} }
} }
public function updateUserCompany(){ public function updateUserCompany()
if(!$this->uid){ {
if (!$this->uid) {
$this->error('用戶ID錯誤'); $this->error('用戶ID錯誤');
} }
$ucData = input('post.'); $ucData = input('post.');
unset($ucData['action']); unset($ucData['action']);
unset($ucData['uid']); unset($ucData['uid']);
unset($ucData['id']); unset($ucData['id']);
try{ try {
if(isset($ucData['is_default']) && $ucData['is_default']){ if (isset($ucData['is_default']) && $ucData['is_default']) {
Db::name('user_company') Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update(['is_default'=>0]); ->update(['is_default' => 0]);
Db::name('user') Db::name('user')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update([ ->update([
'company' => $ucData['uc_name'], 'company' => $ucData['uc_name'],
'title' => $ucData['uc_title'], 'title' => $ucData['uc_title'],
@ -209,7 +262,7 @@ class User extends ApiController
} }
Db::name('user_company') Db::name('user_company')
->where('id',input('id')) ->where('id', input('id'))
->update($ucData); ->update($ucData);
// $res = Db::name('user_company') // $res = Db::name('user_company')
@ -218,35 +271,35 @@ class User extends ApiController
//更新用戶資料 //更新用戶資料
$result = Db::name('user_company') $result = Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->select(); ->select();
return $this->success($result); return $this->success($result);
} catch (\Exception $e) {
}catch(\Exception $e){
print_r($e); print_r($e);
return $this->error('操作錯誤'); return $this->error('操作錯誤');
} }
} }
public function deleteUserCompany(){ public function deleteUserCompany()
if(!$this->uid){ {
if (!$this->uid) {
$this->error('用戶ID錯誤'); $this->error('用戶ID錯誤');
} }
try{ try {
Db::name('user_company') Db::name('user_company')
->where('id',input('id')) ->where('id', input('id'))
->delete(); ->delete();
//更新用戶資料 //更新用戶資料
$result = Db::name('user_company') $result = Db::name('user_company')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->select(); ->select();
if(count($result)==0){ if (count($result) == 0) {
Db::name('user') Db::name('user')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update([ ->update([
'company' => '', 'company' => '',
'title' => '', 'title' => '',
@ -254,44 +307,43 @@ class User extends ApiController
'address' => '', 'address' => '',
'url' => '', 'url' => '',
]); ]);
} }
return $this->success($result); return $this->success($result);
} catch (\Exception $e) {
}catch(\Exception $e){
return $this->error('操作錯誤'); return $this->error('操作錯誤');
} }
} }
public function setUserLevel(){ public function setUserLevel()
$result=Db::name('user') {
->where('user_id',$this->uid) $result = Db::name('user')
->update(['level'=>input('level')]); ->where('user_id', $this->uid)
->update(['level' => input('level')]);
return $this->Success($result); return $this->Success($result);
} }
public function setUserTpl(){ public function setUserTpl()
try{ {
$result=Db::name('user') try {
->where('user_id',$this->uid) $result = Db::name('user')
->update(['nc_template'=>input('tpl')]); ->where('user_id', $this->uid)
}catch(\Excenption $e){ ->update(['nc_template' => input('tpl')]);
} catch (\Excenption $e) {
return $this->Error('更新失敗'); return $this->Error('更新失敗');
} }
return $this->Success($result); return $this->Success($result);
} }
public function uploadAvatar(){ public function uploadAvatar()
{
$files = request()->file('file'); $files = request()->file('file');
$savename = \think\facade\Filesystem::disk('public')->putFile( input('user_id'), $files); $savename = \think\facade\Filesystem::disk('public')->putFile(input('user_id'), $files);
$avatar = getUrl().'/storage/'.$savename; $avatar = getUrl() . '/storage/' . $savename;
// Db::name('user') // Db::name('user')
@ -301,11 +353,12 @@ class User extends ApiController
return $this->Success($avatar); return $this->Success($avatar);
} }
public function updateSendCount(){ public function updateSendCount()
{
$user_id = input('userid'); $user_id = input('userid');
Db::name('user') Db::name('user')
->where('user_id',input('userid')) ->where('user_id', input('userid'))
->exp('send_count', 'send_count+1') ->exp('send_count', 'send_count+1')
->update(); ->update();
// ->inc('send_count',1); // ->inc('send_count',1);
@ -313,89 +366,90 @@ class User extends ApiController
return $this->Success('更新成功'); return $this->Success('更新成功');
} }
public function addFavorite(){ public function addFavorite()
try{ {
try {
$is_exist = Db::name('user_favorite') $is_exist = Db::name('user_favorite')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->where('uf_user_id',input('userid')) ->where('uf_user_id', input('userid'))
->count(); ->count();
if(!$is_exist){ if (!$is_exist) {
Db::name('user_favorite') Db::name('user_favorite')
->insert(['user_id'=>$this->uid,'uf_user_id'=>input('userid')]); ->insert(['user_id' => $this->uid, 'uf_user_id' => input('userid')]);
} }
return $this->success('操作成功'); return $this->success('操作成功');
}catch(\Exception $e){ } catch (\Exception $e) {
return $this->error('操作失敗'); return $this->error('操作失敗');
} }
} }
public function delFavorite(){ public function delFavorite()
try{ {
try {
Db::name('user_favorite') Db::name('user_favorite')
->where('id',input('id')) ->where('id', input('id'))
->delete(); ->delete();
return $this->success('操作成功'); return $this->success('操作成功');
}catch(\Exception $e){ } catch (\Exception $e) {
return $this->error('操作失敗'); return $this->error('操作失敗');
} }
} }
public function uploadConnections(){ public function uploadConnections()
try{ {
try {
Db::name('user') Db::name('user')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->update(['connections'=>input('uc')]); ->update(['connections' => input('uc')]);
return $this->success('操作成功'); return $this->success('操作成功');
}catch(\Exception $e){ } catch (\Exception $e) {
print_r($e); print_r($e);
return $this->error('操作失敗'); return $this->error('操作失敗');
} }
} }
public function getFavorite(){ public function getFavorite()
try{ {
try {
$uf = Db::name('user_favorite') $uf = Db::name('user_favorite')
->alias('uf') ->alias('uf')
->leftjoin('user u','uf.uf_user_id = u.user_id') ->leftjoin('user u', 'uf.uf_user_id = u.user_id')
->field('uf.id as ufid,u.*') ->field('uf.id as ufid,u.*')
->where('uf.user_id',$this->uid) ->where('uf.user_id', $this->uid)
->select() ->select()
->toArray(); ->toArray();
// print_r(Db::getLastSql());
// print_r($uf);
// return;
$aes = new Aes([]); $aes = new Aes([]);
foreach($uf as $key=>$val){ foreach ($uf as $key => $val) {
if(strlen($val['uniqid'])>0){ if (strlen($val['uniqid']) > 0) {
$params = urlencode($aes->encrypt('verify_code='.$val['uniqid'])); $params = urlencode($aes->encrypt('verify_code=' . $val['uniqid']));
}else{ } else {
$params = urlencode($aes->encrypt('user_id='.$val['user_id'])); $params = urlencode($aes->encrypt('user_id=' . $val['user_id']));
} }
$uf[$key]['nfcurl'] = getUrl().'/card/?params='.$params; $uf[$key]['nfcurl'] = getUrl() . '/card/?params=' . $params;
} }
return $this->success($uf); return $this->success($uf);
}catch(\Exception $e){ } catch (\Exception $e) {
return $this->error('操作失敗'); return $this->error('操作失敗');
} }
} }
public function getConnections(){ public function getConnections()
try{ {
try {
$result = Db::name('user') $result = Db::name('user')
->where('user_id',$this->uid) ->where('user_id', $this->uid)
->value('connections'); ->value('connections');
return $this->success($result); return $this->success($result);
}catch(\Exception $e){ } catch (\Exception $e) {
return $this->error('操作失敗'); return $this->error('操作失敗');
} }
} }

@ -31,8 +31,8 @@ function getIdByLid($lid){
} }
function getUseridByCuid($cuid){ function getUseridByCuid($cuid){
$id =Db::name('user') $id =Db::name('user_sno')
->where('uniqid',$cuid) ->where('serial_no',$cuid)
->value('user_id'); ->value('user_id');
if(!$id){ if(!$id){
@ -70,8 +70,32 @@ function genUniqid($prefix='mc'){
* *
* @return array * @return array
*/ */
function genSerialNo(){ function genSerialNo($len=8){
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$serialNumber = '';
$max = strlen($characters) - 1;
for ($i = 0; $i < $len; $i++) {
$randomIndex = random_int(0, $max);
$serialNumber .= $characters[$randomIndex];
}
//檢查是否存在DB,若存在則重新產生
$result = Db::name('precard')
->where('serial_no',$serialNumber)
->count();
if($result){
$serialNumber = genSerialNo($len);
}
return $serialNumber;
}
function genSNo($len=8){
//產生$len長度序號
$code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$rand = $code[rand(0,25)] $rand = $code[rand(0,25)]
.strtoupper(dechex(date('m'))) .strtoupper(dechex(date('m')))
.date('d').substr(time(),-5) .date('d').substr(time(),-5)
@ -83,7 +107,7 @@ function genSerialNo(){
$s = '0123456789ABCDEFGHIJKLMNOPQRSTUV', $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
$d = '', $d = '',
$f = 0; $f = 0;
$f < 8; $f < $len;
$g = ord( $a[ $f ] ), $g = ord( $a[ $f ] ),
$d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ], $d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
$f++ $f++
@ -91,7 +115,6 @@ function genSerialNo(){
return $d; return $d;
} }
function encodeRefer($userId) function encodeRefer($userId)
{ {
$sourceString = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ'; $sourceString = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ';

@ -0,0 +1,39 @@
<?php
namespace app\common;
use think\facade\Db;
use app\common\lib\Aes;
class Activation
{
//驗證slashtoken
public static function checkSlashtoken($slashtoken)
{
$aes = new Aes([]);
parse_str($aes->descrypt($slashtoken), $params);
if (!isset($params['sno'])) {
return ['code' => 404, 'msg' => '預開卡不存在'];
}
$precard = Db::name('precard')
->where('serial_no', $params['sno'])
->find();
if (!$precard) {
return ['code' => 404, 'msg' => '預開卡不存在'];
}
//檢查到期日
if ($precard['expire_time'] != 0 && $precard['expire_time'] < time()) {
return ['code' => 401, 'msg' => '預開卡已過期'];
}
//檢查是否已經開卡
if ($precard['status'] != 1) {
return ['code'=>500,'msg'=>'預開卡已使用或無效'];
}
return ['code'=>0,'data'=>$precard];
}
}

@ -12,7 +12,6 @@ class Aes{
*/ */
public function __construct($config){ public function __construct($config){
foreach($config as $k=>$v){ foreach($config as $k=>$v){
$this->$k = $v; $this->$k = $v;
} }
} }

Loading…
Cancel
Save