基类

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. 数据类型对应字节数(32位,64位 int 占字节数)

    数据类型对应字节数(32位,64位 int 占字节数) 可用如sizeof(char),sizeof(char*)等得出 32位编译器: char :1个字节 char*(即指针变量): 4个字节(3 ...

  2. Java基础——工具类

    一Java 常用类 Object Object类是所有类.数组.枚举类的父类.位于Java.lang包.也就是说,Java允许把任意类型的对象赋给Object类型的变量. Object类的常用方法 1 ...

  3. 关于SPFA的双端队列优化

    7.11 Update 我做题的时候发现这样写会RE 因为在使用双端队列优化SPFA的时候 在将一个点加入队列的时候,如果队列已经空了 那么一旦出现dis[Q.front()]就会RE 可以这样修改 ...

  4. mysql数据库主从操作记录

    master数据库已投入生产一段时间后,做主从复制的操作记录 环境: master库:172.18.237.13slave库:172.18.237.14 mysql版本说明: master:mysql ...

  5. LINUX-文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消

    ls -lh 显示权限 ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 chmod ugo+rwx directory1 设置目录的所有人(u).群组(g)以及其他人(o ...

  6. 关于python字典中文显示的处理办法

    最近工作中遇到字典包含中文,显示\uxxxx的问题,怎么转换都无法输入正常的中文:{"gc": "\u4eba\u751f\u7f8e\u597d", &quo ...

  7. 泛型约束 ---类型参数上的限制(where T:class,new())

    今天遇到的一个问题,找到了解决办法,收藏以后记得看一下!

  8. js cookies all in one

    js cookies all in one cookies // http://10.1.5.202/auto-deploy-platform/publish/index.html // 非当前 UR ...

  9. Uva10562

    Professor Homer has been reported missing. We suspect that his recent research works might have had ...

  10. codevs1213 解的个数

    题目描述 Description 已知整数x,y满足如下面的条件: ax+by+c = 0 p<=x<=q r<=y<=s 求满足这些条件的x,y的个数. 输入描述 Input ...