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中第一句话就提到了.然后第二段说明了它包含的基本功能:隐藏/显示.启用/禁用以及尺寸控制等.除了以上这些基 ...
随机推荐
- 数据类型对应字节数(32位,64位 int 占字节数)
数据类型对应字节数(32位,64位 int 占字节数) 可用如sizeof(char),sizeof(char*)等得出 32位编译器: char :1个字节 char*(即指针变量): 4个字节(3 ...
- Java基础——工具类
一Java 常用类 Object Object类是所有类.数组.枚举类的父类.位于Java.lang包.也就是说,Java允许把任意类型的对象赋给Object类型的变量. Object类的常用方法 1 ...
- 关于SPFA的双端队列优化
7.11 Update 我做题的时候发现这样写会RE 因为在使用双端队列优化SPFA的时候 在将一个点加入队列的时候,如果队列已经空了 那么一旦出现dis[Q.front()]就会RE 可以这样修改 ...
- mysql数据库主从操作记录
master数据库已投入生产一段时间后,做主从复制的操作记录 环境: master库:172.18.237.13slave库:172.18.237.14 mysql版本说明: master:mysql ...
- LINUX-文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消
ls -lh 显示权限 ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 chmod ugo+rwx directory1 设置目录的所有人(u).群组(g)以及其他人(o ...
- 关于python字典中文显示的处理办法
最近工作中遇到字典包含中文,显示\uxxxx的问题,怎么转换都无法输入正常的中文:{"gc": "\u4eba\u751f\u7f8e\u597d", &quo ...
- 泛型约束 ---类型参数上的限制(where T:class,new())
今天遇到的一个问题,找到了解决办法,收藏以后记得看一下!
- js cookies all in one
js cookies all in one cookies // http://10.1.5.202/auto-deploy-platform/publish/index.html // 非当前 UR ...
- Uva10562
Professor Homer has been reported missing. We suspect that his recent research works might have had ...
- codevs1213 解的个数
题目描述 Description 已知整数x,y满足如下面的条件: ax+by+c = 0 p<=x<=q r<=y<=s 求满足这些条件的x,y的个数. 输入描述 Input ...