Api基类
基类
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基类的更多相关文章
- 基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
在SqlSugar的开发框架的后端,我们基于Web API的封装了统一的返回结果,使得WebAPI的接口返回值更加简洁,而在前端,我们也需要统一对返回的结果进行解析,并获取和Web API接口对应的数 ...
- 使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API
Hypermedia As The Engine Of Application State (HATEOAS) HATEOAS(Hypermedia as the engine of applicat ...
- 25 BasicUsageEnvironment0基本使用环境基类——Live555源码阅读(三)UsageEnvironment
25 BasicUsageEnvironment0基本使用环境基类——Live555源码阅读(三)UsageEnvironment 25 BasicUsageEnvironment0基本使用环境基类— ...
- [theWord] 一种英文字典的基类设计
theWord --- 一种英文字典的基类设计 使用场景 想写一个应用,来记录自己背单词时候,对每个单词的记忆状况之类的东西.至于为什么做这个,试过了一些背单词软件,并不觉得好用,自己做一个吧. 那么 ...
- duilib\utils\utils.h(251) : error C2504: “VARIANT”: 未定义基类
转载:http://blog.csdn.net/SP_daiyq/article/details/44542939?locationNum=3 创建win32应用程序的工程文件,删除不需要的代码,只留 ...
- 《Programming WPF》翻译 第9章 2.选择一个基类
原文:<Programming WPF>翻译 第9章 2.选择一个基类 WPF提供了很多类,当创建一个自定义元素时,你可以从这些类中派生.图9-1显示了一组可能作为类--可能是合适的基类, ...
- 微信公众号开发系列-Http请求封装基类
HttpHelper请求封装基类,支持get请求和POS请求,方便微信开发接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 [csharp] view plaincopy using ...
- Http请求封装基类HttpHelper.cs
HttpHelper请求封装基类,支持get请求和POS请求http接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 using System; using System.Colle ...
- 谈谈Ext JS的组件——组件基类:Ext.Component
概述 Ext.Component是所有Ext组件的基类,这在Ext.Component的API中第一句话就提到了.然后第二段说明了它包含的基本功能:隐藏/显示.启用/禁用以及尺寸控制等.除了以上这些基 ...
随机推荐
- R语言学习 - 线图绘制
线图是反映趋势变化的一种方式,其输入数据一般也是一个矩阵. 单线图 假设有这么一个矩阵,第一列为转录起始位点及其上下游5 kb的区域,第二列为H3K27ac修饰在这些区域的丰度,想绘制一张线图展示. ...
- DWG转PDF
DWG转PDF DWG转换PDF有两种方法,一种是利用PDF打印机,一种是利用专业软件: 利用PDF打印机最直接,但是不能批量打印,下面讲一下利用专业软件如何进行批量转换,在这里以梦想CAD软件(Mx ...
- /etc/updatedb.conf配置文件
[root@localhost ~]# vi /etc/updatedb.conf PRUNE_BIND_MOUNTS = "yes" PRUNEFS = "9p afs ...
- iphone6,iphone6 plus适配,旧项目出现黑线问题
问题:可能开始适配iPhone6和iPhone6 plus的朋友很快就发现,模块器头部和底部会出线一条黑线.但是在其他模拟器完全没有问题.程序也能正常跑.如下图 很清楚的看到头部有一条黑线. 解决办法 ...
- (1) GoJS入门
GoJS的官方下载,若下载失败,可尝试通过我的个人网盘分享下载. GoJS是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和HTML5 Canvas程序中创建流程图,且极大地 ...
- 一只小蜜蜂(hdoj 2044,动态规划递推)
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数.其中,蜂房的结构如下所示. Input 输入数据的第一行 ...
- reading/writing files in Python
file types: plaintext files, such as .txt .py Binary files, such as .docx, .pdf, iamges, spreadsheet ...
- convert images to a video (Ubuntu)
use =avconv= package e.g. to convert images (v_1.png, v_2.png ...) to 'velocity.mp4' >>> a ...
- 洛谷 1328 生活大爆炸版石头剪刀布(NOIp2014提高组)
[题解] 简单粗暴的模拟题. #include<cstdio> #include<algorithm> #include<cstring> #define LL l ...
- BZOJ 1666 USACO 2006 Oct. 奶牛的数字游戏
直接模拟2333 #include<cstdio> #include<algorithm> using namespace std; int n,ans; void read( ...