基类

class BaseController extends Controller{
public $outData = ['code'=>0,'msg'=>'ok'];
public $param;
public $timeNow;
public function __construct(){
parent::__construct();
header('Access-Control-Allow-Origin:*');
$this->param = I('post.');
$this->timeNow = date('Y-m-d H:i:s');
} //验证参数
public function regArguments($needParam,&$arguments){
foreach($needParam as $key=>$val){
if(!isset($arguments[$key]) || $arguments[$key]===''){
$this->outData = ['code'=>1,'msg'=>$val['msg']];
}else{
$arguments[$key] = $this->formatArguments($arguments[$key],$val['type']);
}
}
return;
}
protected function formatArguments($val,$type){
switch ($type) {
case 'int':
return intval($val);break;
case 'float':
return round($val, 2);break;
case 'tel':
if (!is_numeric($val) || !preg_match('/^1[\d]{10}$/', $val)) {
$this->outData = ['code'=>2,'msg'=>'手机号格式不正确'];
}
return $val;break;
default:
return trim($val);
}
}
//验证token
public function regToken($token,$pstr){
if($token != sha1(md5($pstr.APP_SECRET))){
$this->outData = ['code'=>1,'msg'=>'非法请求'];
}
} // 获取token
protected function getHashToken($pstr) {
return sha1(md5($pstr.APP_SECRET));
} //输出json结果
public function printOut($data=[]){
header('Content-type: application/json');
$data ? $this->outData = $data : '';
echo json_encode($this->outData,JSON_UNESCAPED_UNICODE);exit;
} // 赋值并输出
public function printInAndPrintOut($msg = "ok",$code = "0",$data = [],$ext = []) {
header('Content-type: application/json');
$this->outData['code'] = $code;
$this->outData['msg'] = $msg;
if ($data) {
$this->outData['data'] = $data;
} if ($ext && is_array($ext)) {
foreach ($ext as $k => $v) {
if ($k != 'msg' && $k != 'code' && $k != 'data') {
$this->outData[$k] = $v;
}
}
} echo json_encode($this->outData,JSON_UNESCAPED_UNICODE);exit;
} public function notfound(){
$this->display('empty/index');exit;
} }

运用

/**
* 领取详情
* @auhtor jim
* @date 2018/2/28
*/
public function myGetDepositInfo() {
/*$this->param = [
'openId' => 'xxx',
'hashToken' => 'xxx',
'id' => 'xxx',
];*/
$needParam = array(
'openId'=>array('msg'=>'openId参数异常','type'=>'str'),
'hashToken'=>array('msg'=>'hashToken参数异常','type'=>'str'),
'id'=>array('msg'=>'id参数异常','type'=>'int'),
); $this->regArguments($needParam,$this->param);
$this->regToken($this->param['hashToken'],$this->param['openId']);
if ($this->outData['code']) {
$this->printOut();
} // 获取用户uid
$uModel = new UserModel();
$uid = $uModel->getUidByOpenId($this->param['openId']); $udcModel = new UserDepositCashinfoModel();
$udcInfo = $udcModel->findData(['uid'=>$uid,['id'=>$this->param['id']]]); if (!$udcInfo) {
$this->printInAndPrintOut("领取记录不存在",1);
} // 统计之前领取的笔数
$beforeBackCount = $udcModel->sumData(['udid'=>$udcInfo['udid'],'addtime'=>['lt',$udcInfo['addtime']]],'back_percent');
if(!$beforeBackCount) {
$beforeBackCount = 0;
} $udcInfo['beginCount'] = $beforeBackCount + 1;
$udcInfo['endCount'] = $beforeBackCount + $udcInfo['back_percent']; $this->printInAndPrintOut('ok',0,$udcInfo);
}

Api基类的更多相关文章

  1. 基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理

    在SqlSugar的开发框架的后端,我们基于Web API的封装了统一的返回结果,使得WebAPI的接口返回值更加简洁,而在前端,我们也需要统一对返回的结果进行解析,并获取和Web API接口对应的数 ...

  2. 使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

    Hypermedia As The Engine Of Application State (HATEOAS) HATEOAS(Hypermedia as the engine of applicat ...

  3. 25 BasicUsageEnvironment0基本使用环境基类——Live555源码阅读(三)UsageEnvironment

    25 BasicUsageEnvironment0基本使用环境基类——Live555源码阅读(三)UsageEnvironment 25 BasicUsageEnvironment0基本使用环境基类— ...

  4. [theWord] 一种英文字典的基类设计

    theWord --- 一种英文字典的基类设计 使用场景 想写一个应用,来记录自己背单词时候,对每个单词的记忆状况之类的东西.至于为什么做这个,试过了一些背单词软件,并不觉得好用,自己做一个吧. 那么 ...

  5. duilib\utils\utils.h(251) : error C2504: “VARIANT”: 未定义基类

    转载:http://blog.csdn.net/SP_daiyq/article/details/44542939?locationNum=3 创建win32应用程序的工程文件,删除不需要的代码,只留 ...

  6. 《Programming WPF》翻译 第9章 2.选择一个基类

    原文:<Programming WPF>翻译 第9章 2.选择一个基类 WPF提供了很多类,当创建一个自定义元素时,你可以从这些类中派生.图9-1显示了一组可能作为类--可能是合适的基类, ...

  7. 微信公众号开发系列-Http请求封装基类

    HttpHelper请求封装基类,支持get请求和POS请求,方便微信开发接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 [csharp] view plaincopy using ...

  8. Http请求封装基类HttpHelper.cs

    HttpHelper请求封装基类,支持get请求和POS请求http接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 using System; using System.Colle ...

  9. 谈谈Ext JS的组件——组件基类:Ext.Component

    概述 Ext.Component是所有Ext组件的基类,这在Ext.Component的API中第一句话就提到了.然后第二段说明了它包含的基本功能:隐藏/显示.启用/禁用以及尺寸控制等.除了以上这些基 ...

随机推荐

  1. CAD得到所有实体1

    主要用到函数说明: IMxDrawSelectionSet::AllSelect 得到当前空间的所有实体.详细说明如下: 参数 说明 [in,defaultvalue(NULL)] IMxDrawRe ...

  2. Java基础(九)--反射

    什么是反射? 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性 这种动态获取的信息以及动态调用对象的方法的功能称为反射机制. 反射的前 ...

  3. django在验证登录页面时遇到的数据查询问题

    数据库查询时针对不存在的用户名进行验证 django在查询数据库时,可以使用get和filter两种方法. 两者的区别 当数据库内不存在该数据时,get会返回异常,而filter会返回空. 当数据库内 ...

  4. Win实用好用软件清单推荐

    1. 我的Win实用软件清单 排名不分先后且长期更新 有更好用的或者需要帮助的可以留言----最后一次更新于 2019.06.25 1. Dism++ 1.1. 功能: ​ 系统精简.垃圾清理.系统升 ...

  5. Plan & Future

    以下是OI省选前的数据结构与算法整理,可能还不是很全面.但是已经是全网相对比较全面的了.所有标记为“基础”“进阶”“中级”“提高”的知识为近些年来NOIp考察的内容,需重点掌握. 所有“高级”部分为N ...

  6. PyQt5Icon图标(Icon)无法显示问题

    PyQt5中设置图标无法显示 以下源码来源PyQt5教程http://zetcode.com/gui/pyqt5/firstprograms/ import sys from PyQt5.QtWidg ...

  7. ch12 GUI

    <Head First Java 2nd Edition> 摘录 JFrame 代表屏幕上的一个窗口,可以把 buttons, checkboxes, test fields 等等界面相关 ...

  8. 微信小程序-template模板

    ============================= 构建template模板                    ============================= 1.分析得出共为 ...

  9. java8 lambda 函数式编程

    package com.atguigu.java8; import java.util.ArrayList; import java.util.Comparator; import java.util ...

  10. NYOJ 832 合并游戏

    合并游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 大家都知道Yougth除了热爱编程之外,他还有一个爱好就是喜欢玩.某天在河边玩耍的时候,他发现了一种神奇的石 ...