Fenix Wang 5 anni fa
parent
commit
00d6b0cc74

+ 1 - 0
.gitignore

@@ -2,3 +2,4 @@
 /.buildpath
 /.settings
 /php_errors.log
+.idea

+ 145 - 145
application/newhome/controller/Buddy.php

@@ -1,146 +1,146 @@
-<?php
-namespace app\newhome\controller;
-
-use think\Controller;
-use app\user\model\UserBuddy;
-use app\user\model\User;
-
-class Buddy extends Controller{
-	private $buddyModel, $userModel;
-	
-	public function _initialize(){
-		parent::_initialize();
-		
-		$this->buddyModel = new UserBuddy();
-		$this->userModel = new User();
-	}
-	
-	public function index(){
-		$data = decode($this->request->post());
-		$user = $data['u'];
-		
-		$res = $this->buddyModel->findUserBuddy($user);
-		
-		return json(['l'=>$res]);
-	}
-	
-	public function blist(){
-		$data = decode($this->request->post());
-		$user = $data['u'];
-		
-		$res = $this->buddyModel->findUserBuddy($user, UserBuddy::Apply);
-		
-		return json(['l'=>$res]);
-	}
-	
-	public function recommend(){
-		$data = decode($this->request->post());
-		$user = $data['u'];
-		
-		$res = $this->userModel->recommendUser($user);
-		
-		return json(['l'=>$res]);
-	}
-	
-	public function apply(){
-		$data = decode($this->request->post());
-		
-		$buddy = $data['b'];
-		$user = $data['u'];
-		
-		$this->checkBuddyNum($user, $buddy);
-		
-		$info = $this->buddyModel->getBuddy($user, $buddy);
-		if(empty($info)){
-			$this->buddyModel->addAndSave(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Wait]);
-		}
-		
-		$res = $this->buddyModel->getBuddy($buddy, $user);
-		if(empty($res)){
-			$this->buddyModel->addAndSave(['user_id'=>$buddy, 'buddy_id'=>$user]);
-		}
-		
-		return json(['error'=>0]);
-	}
-	
-	public function find(){
-		
-	}
-	
-	public function agree(){
-		$data = decode($this->request->post());
-		
-		$buddy = $data['b'];
-		$user = $data['u'];
-		
-		$this->checkBuddyNum($user, $buddy);
-		
-		$info = $this->buddyModel->getBuddy($user, $buddy);
-		if($info){
-			$this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$info['id']]);
-		}else{
-			$this->buddyModel->save(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]);
-		}
-		
-		$res = $this->buddyModel->getBuddy($buddy, $user);
-		if($res){
-			$this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$res['id']]);
-		}else{
-			$this->buddyModel->save(['user_id'=>$buddy, 'buddy_id'=>$user, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]);
-		}
-		
-		return json(['error'=>0]);
-	}
-	
-	public function remove(){
-		$data = decode($this->request->post());
-		
-		$buddy = $data['b'];
-		$user = $data['u'];
-		
-		$info = $this->buddyModel->getBuddy($user, $buddy);
-		
-		if($info){
-			$this->buddyModel->remove($info->toArray());
-		}
-		
-		$res = $this->buddyModel->getBuddy($buddy, $user);
-		
-		if($res){
-			$this->buddyModel->remove($res->toArray());
-		}
-		
-		return json(['error'=>0]);
-	}
-	
-	public function like(){
-		$data = decode($this->request->post());
-		
-		$user = $data['u'];
-		$nick = $data['n'];
-		
-		$res = $this->userModel->likeUserByNick($user, $nick);
-		
-		return json(['l'=>$res]);
-	}
-	
-	private function checkBuddyNum($user, $buddy){
-		
-		if($user == $buddy) exit(json_encode(['error'=>1020]));
-		
-		$info = $this->userModel->getUserById($user);
-		if(empty($info)) exit(json_encode(['error'=>1023]));
-		
-		$count = $this->buddyModel->getBuddyCount($user);
-		// 个人超出好友指定数量则返回错误
-		if($count >= $info['buddy']) exit(json_encode(['error'=>1011]));
-		
-		$buddy_info = $this->userModel->getUserById($buddy);
-		if(empty($buddy_info)) exit(json_encode(['error'=>1023]));
-		
-		$buddy_count = $this->buddyModel->getBuddyCount($buddy);
-		// 好友数量超出指定数量则返回错误
-		if($buddy_count >= $buddy_info['buddy']) exit(json_encode(['error'=>1012]));
-	}
-	
+<?php
+namespace app\newhome\controller;
+
+use think\Controller;
+use app\user\model\UserBuddy;
+use app\user\model\User;
+
+class Buddy extends Controller{
+	private $buddyModel, $userModel;
+	
+	public function _initialize(){
+		parent::_initialize();
+		
+		$this->buddyModel = new UserBuddy();
+		$this->userModel = new User();
+	}
+	
+	public function index(){
+		$data = decode($this->request->post());
+		$user = $data['u'];
+		
+		$res = $this->buddyModel->findUserBuddy($user);
+		
+		return json(['l'=>$res]);
+	}
+	
+	public function blist(){
+		$data = decode($this->request->post());
+		$user = $data['u'];
+		
+		$res = $this->buddyModel->findUserBuddy($user, UserBuddy::Apply);
+		
+		return json(['l'=>$res]);
+	}
+	
+	public function recommend(){
+		$data = decode($this->request->post());
+		$user = $data['u'];
+		
+		$res = $this->userModel->recommendUser($user);
+		
+		return json(['l'=>$res]);
+	}
+	
+	public function apply(){
+		$data = decode($this->request->post());
+		
+		$buddy = $data['b'];
+		$user = $data['u'];
+		
+		$this->checkBuddyNum($user, $buddy);
+		
+		$info = $this->buddyModel->getBuddy($user, $buddy);
+		if(empty($info)){
+			$this->buddyModel->addAndSave(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Wait]);
+		}
+		
+		$res = $this->buddyModel->getBuddy($buddy, $user);
+		if(empty($res)){
+			$this->buddyModel->addAndSave(['user_id'=>$buddy, 'buddy_id'=>$user]);
+		}
+		
+		return json(['error'=>0]);
+	}
+	
+	public function find(){
+		
+	}
+	
+	public function agree(){
+		$data = decode($this->request->post());
+		
+		$buddy = $data['b'];
+		$user = $data['u'];
+		
+		$this->checkBuddyNum($user, $buddy);
+		
+		$info = $this->buddyModel->getBuddy($user, $buddy);
+		if($info){
+			$this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$info['id']]);
+		}else{
+			$this->buddyModel->save(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]);
+		}
+		
+		$res = $this->buddyModel->getBuddy($buddy, $user);
+		if($res){
+			$this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$res['id']]);
+		}else{
+			$this->buddyModel->save(['user_id'=>$buddy, 'buddy_id'=>$user, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]);
+		}
+		
+		return json(['error'=>0]);
+	}
+	
+	public function remove(){
+		$data = decode($this->request->post());
+		
+		$buddy = $data['b'];
+		$user = $data['u'];
+		
+		$info = $this->buddyModel->getBuddy($user, $buddy);
+		
+		if($info){
+			$this->buddyModel->remove($info->toArray());
+		}
+		
+		$res = $this->buddyModel->getBuddy($buddy, $user);
+		
+		if($res){
+			$this->buddyModel->remove($res->toArray());
+		}
+		
+		return json(['error'=>0]);
+	}
+	
+	public function like(){
+		$data = decode($this->request->post());
+		
+		$user = $data['u'];
+		$nick = $data['n'];
+		
+		$res = $this->userModel->likeUserByNick($user, $nick);
+		
+		return json(['l'=>$res]);
+	}
+	
+	private function checkBuddyNum($user, $buddy){
+		
+		if($user == $buddy) exit(json_encode(['error'=>1020]));
+		
+		$info = $this->userModel->getUserById($user);
+		if(empty($info)) exit(json_encode(['error'=>1023]));
+		
+		$count = $this->buddyModel->getBuddyCount($user);
+		// 个人超出好友指定数量则返回错误
+		if($count >= $info['buddy']) exit(json_encode(['error'=>1011]));
+		
+		$buddy_info = $this->userModel->getUserById($buddy);
+		if(empty($buddy_info)) exit(json_encode(['error'=>1023]));
+		
+		$buddy_count = $this->buddyModel->getBuddyCount($buddy);
+		// 好友数量超出指定数量则返回错误
+		if($buddy_count >= $buddy_info['buddy']) exit(json_encode(['error'=>1012]));
+	}
+	
 }

+ 55 - 55
application/newhome/controller/Comment.php

@@ -1,56 +1,56 @@
-<?php
-namespace app\newhome\controller;
-
-use think\Controller;
-use app\user\model\UserComment;
-
-class Comment extends Controller {
-	
-	private $commentModel;
-	
-	public function _initialize(){
-		parent::_initialize();
-		
-		$this->commentModel = new UserComment();
-	}
-	
-	public function index(){
-		$data = decode($this->request->post());
-		
-		$user = $data['u'];
-		$page = $data['p'];
-		$type = $data['t'];
-		
-		$info = $this->commentModel->getInfo($user, $type, $page);
-		
-		return json(["l"=>$info]);
-	}
-	
-	public function find(){
-		$data = decode($this->request->post());
-		
-		$user = $data['u'];
-		$comment = $data['c'];
-		$page = $data['p'];
-		$type = $data['t'];
-		
-		$info = $this->commentModel->getInfoByComment($user, $comment, $type, $page);
-		
-		return json(["l"=>$info]);
-	}
-	
-	public function comment(){
-		$data = decode($this->request->post());
-		
-		$user = $data['u'];
-		$comment = $data['c'];
-		$content = $data['i'];
-		$type = $data['t'];		
-		
-		$data = ['id'=>getId(), 'user_id'=>$user, 'comment_id'=>$comment, 'content'=>$content, 'type'=>$type];
-		$this->commentModel->add($data);
-		
-		return json(['error'=>0]);
-	}
-	
+<?php
+namespace app\newhome\controller;
+
+use think\Controller;
+use app\user\model\UserComment;
+
+class Comment extends Controller {
+	
+	private $commentModel;
+	
+	public function _initialize(){
+		parent::_initialize();
+		
+		$this->commentModel = new UserComment();
+	}
+	
+	public function index(){
+		$data = decode($this->request->post());
+		
+		$user = $data['u'];
+		$page = $data['p'];
+		$type = $data['t'];
+		
+		$info = $this->commentModel->getInfo($user, $type, $page);
+		
+		return json(["l"=>$info]);
+	}
+	
+	public function find(){
+		$data = decode($this->request->post());
+		
+		$user = $data['u'];
+		$comment = $data['c'];
+		$page = $data['p'];
+		$type = $data['t'];
+		
+		$info = $this->commentModel->getInfoByComment($user, $comment, $type, $page);
+		
+		return json(["l"=>$info]);
+	}
+	
+	public function comment(){
+		$data = decode($this->request->post());
+		
+		$user = $data['u'];
+		$comment = $data['c'];
+		$content = $data['i'];
+		$type = $data['t'];		
+		
+		$data = ['id'=>getId(), 'user_id'=>$user, 'comment_id'=>$comment, 'content'=>$content, 'type'=>$type];
+		$this->commentModel->add($data);
+		
+		return json(['error'=>0]);
+	}
+	
 }

+ 55 - 55
application/newhome/controller/Index.php

@@ -1,56 +1,56 @@
-<?php
-namespace app\newhome\controller;
-
-use think\Controller;
-use think\Db;
-use app\user\model\User;
-
-class Index extends Controller {
-	
-	private $userModel;
-	
-	public function _initialize(){
-		$this->userModel = new User();
-	}
-	
-	public function index()
-	{
-		$data = Db::name('config')->select();
-		return json(["l"=>$data]);
-	}
-	
-	public function gift(){
-		$data = Db::name('gift')->field("id, packid, pack p, diamond d, coin g, flower f, dress c, pit s, elf a, starttime, endtime")->select();
-		return json(['l'=>$data]);
-	}
-	
-	public function robot(){
-		$data = decode($this->request->post());
-		
-		$this->userModel->addAndSave(['id'=>$data['u'], 'robot'=>1]);
-		
-		return json(['error'=>0]);
-	}
-	
-	public function number(){
-		$data = decode($this->request->post());
-		
-		$res = $this->userModel->getRobotId($data['n']);
-		
-		return json(['l'=>$res]);
-	}
-	
-	public function loadFile(){
-		$data = decode($this->request->post());
-		$filename = $data['f'];
-		
-		$path = "gameconfig/$filename.txt";
-		if(!is_file($path)) return json(['error'=>1016]);
-		$file = fopen($path, "r") or die(json(['error'=>1009]));
-		$info = fread($file, filesize($path));
-		fclose($file);
-		
-		return json(['l'=>$info]);
-	}
-	
+<?php
+namespace app\newhome\controller;
+
+use think\Controller;
+use think\Db;
+use app\user\model\User;
+
+class Index extends Controller {
+	
+	private $userModel;
+	
+	public function _initialize(){
+		$this->userModel = new User();
+	}
+	
+	public function index()
+	{
+		$data = Db::name('config')->select();
+		return json(["l"=>$data]);
+	}
+	
+	public function gift(){
+		$data = Db::name('gift')->field("id, packid, pack p, diamond d, coin g, flower f, dress c, pit s, elf a, starttime, endtime")->select();
+		return json(['l'=>$data]);
+	}
+	
+	public function robot(){
+		$data = decode($this->request->post());
+		
+		$this->userModel->addAndSave(['id'=>$data['u'], 'robot'=>1]);
+		
+		return json(['error'=>0]);
+	}
+	
+	public function number(){
+		$data = decode($this->request->post());
+		
+		$res = $this->userModel->getRobotId($data['n']);
+		
+		return json(['l'=>$res]);
+	}
+	
+	public function loadFile(){
+		$data = decode($this->request->post());
+		$filename = $data['f'];
+		
+		$path = "gameconfig/$filename.txt";
+		if(!is_file($path)) return json(['error'=>1016]);
+		$file = fopen($path, "r") or die(json(['error'=>1009]));
+		$info = fread($file, filesize($path));
+		fclose($file);
+		
+		return json(['l'=>$info]);
+	}
+	
 }

+ 264 - 85
application/newhome/controller/Pay.php

@@ -1,85 +1,264 @@
-<?php
-namespace app\newhome\controller;
-
-use think\Controller;
-use think\Db;
-use app\user\model\PayPlugin;
-use app\user\model\User;
-use app\user\model\UserPay;
-
-class Pay extends Controller{
-	private $payPluginModel, $userModel;
-	
-	public function _initialize(){
-		
-		$this->payPluginModel= new PayPlugin();
-		$this->userModel = new User();
-	}
-	
-	public function pay(){
-		$data = decode($this->request->post());
-		
-// 		$data['i'] = 'com.dashgame.garden.packone';
-// 		$data['t'] = 1;
-// 		$data['u'] = 1704251601802555535;
-		
-		$iapInfo = Db::name('iap_config')->where(['item_id'=>$data['i']])->find();
-		if(empty($iapInfo)) return (json(['error'=>1111]));
-		
-		$plugin = $this->payPluginModel->getPayPluginByType($data['t']);
-		if(empty($plugin)) return (json(['error'=>1111]));
-		
-		$biz_content = $this->getAliTradeInfo($iapInfo, $data['u']);
-		$val = $this->getAliPayInfo($plugin, $biz_content);
-		
-		return http_build_query($val);
-	}
-	
-	public function notify(){
-		echo 'success';
-	}
-	
-	private function getAliTradeInfo($ipa, $user){
-		$content = [];
-		
-		$content['subject'] = $ipa['desc'];
-		$content['out_trade_no'] = $tradeNo = 'D'.getId();
-		$content['total_amount'] = $ipa['price'];
-// 		$content['total_amount'] = 0.01;
-		$content['product_code'] = 'QUICK_MSECURITY_PAY';
-		$content['timeout_express'] = '90m';
-		$content['body'] = $ipa['desc'];
-		
-		$userPay = new UserPay();
-		$userPay->add(['user_id'=>$user, 'cost'=>$ipa['price'], 'pay_id'=>$ipa['id'], 'out_trade_no'=>$tradeNo]);
-		
-		return json_encode($content);
-	}
-	
-	private function getAliPayInfo($plugin, $biz_content){
-		$params = [];
-		
-		$params['app_id'] = $plugin['appid'];
-		$params['method'] = 'alipay.trade.app.pay';
-		$params['format'] = "JSON";
-		$params['charset'] = "UTF-8";
-		$params['version'] = "1.0";
-		$params['timestamp'] = getCurrentTime();
-		$params['sign_type'] = "RSA2";
-		$params['notify_url'] = 'http://'.$_SERVER['SERVER_NAME']._PHP_FILE_.'/'.$this->request->module().'/'.$this->request->controller().'/notify';
-		$params['biz_content'] = $biz_content;
-
-		ksort($params);
-
-        $sign = aliSign($plugin['private_key'], getAliSignContent($params));
-        $params['sign'] = $sign;
-		
-		foreach ($params as &$value) {
-            $value = urlencode($value);
-		}
-		
-		return $params;
-	}
-	
-}
-
+<?php
+namespace app\newhome\controller;
+
+use think\Controller;
+use think\Db;
+use app\user\model\PayPlugin;
+use app\user\model\User;
+use app\user\model\UserPay;
+
+
+class Pay extends Controller{
+	private $payPluginModel, $userModel;
+	
+	public function _initialize(){
+		
+		$this->payPluginModel= new PayPlugin();
+		$this->userModel = new User();
+	}
+	
+	public function pay(){
+		$data = decode($this->request->post());
+		
+// 		$data['i'] = 'com.dashgame.garden.packone';
+// 		$data['t'] = 1;
+// 		$data['u'] = 1704251601802555535;
+		
+		$iapInfo = Db::name('iap_config')->where(['item_id'=>$data['i']])->find();
+		if(empty($iapInfo)) return (json(['error'=>1111]));
+		
+		$plugin = $this->payPluginModel->getPayPluginByType($data['t']);
+		if(empty($plugin)) return (json(['error'=>1111]));
+		
+		$biz_content = $this->getAliTradeInfo($iapInfo, $data['u']);
+		$val = $this->getAliPayInfo($plugin, $biz_content);
+		
+		return http_build_query($val);
+	}
+
+
+	public function sdk_notify(){
+	    $data = $this->request->post();
+
+	    $order_id = $data['order_id'];
+	    $pay_money = $data['pay_money'];
+	    $pay_time = $data['pay_time'];
+	    $exinfo = $data['exinfo'];
+	    $role_id = $data['role_id'];
+
+	    if($data['sign'] != md5($order_id.$pay_money.$pay_time.$exinfo."o6knhm0BhXBDVn3D"))
+        {
+            return json(["errno"=>101, "msg"=>"签名不对"]);
+        }
+
+        $iapInfo = Db::name('iap_config')->where(['item_id'=>$order_id])->find();
+        if(empty($iapInfo)) return (json(['errno'=>1111, "msg"=>"商品ID错误"]));
+
+        $user = Db::name('user')->where(['id'=>$role_id])->find();
+        if(empty($user)) return (json(['errno'=>1111, 'msg'=>"用户ID错误"]));
+
+        $arr = array();
+        $arr['user_id'] = $role_id;
+        $arr['pay_id'] = $iapInfo['id'];
+        $arr['out_trade_no'] = $order_id;
+        $arr['cost'] = $pay_money;
+        $arr['create_time'] = date("Y-m-d H:i:s", $pay_time);
+        Db::name('user_pay')->insert($arr);
+
+        return json(['errno'=>1, 'msg'=>""]);
+    }
+
+
+	public function notify(){
+		echo 'success';
+	}
+	
+	private function getAliTradeInfo($ipa, $user){
+		$content = [];
+		
+		$content['subject'] = $ipa['desc'];
+		$content['out_trade_no'] = $tradeNo = 'D'.getId();
+		$content['total_amount'] = $ipa['price'];
+// 		$content['total_amount'] = 0.01;
+		$content['product_code'] = 'QUICK_MSECURITY_PAY';
+		$content['timeout_express'] = '90m';
+		$content['body'] = $ipa['desc'];
+		
+		$userPay = new UserPay();
+		$userPay->add(['user_id'=>$user, 'cost'=>$ipa['price'], 'pay_id'=>$ipa['id'], 'out_trade_no'=>$tradeNo]);
+		
+		return json_encode($content);
+	}
+	
+	private function getAliPayInfo($plugin, $biz_content){
+		$params = [];
+		
+		$params['app_id'] = $plugin['appid'];
+		$params['method'] = 'alipay.trade.app.pay';
+		$params['format'] = "JSON";
+		$params['charset'] = "UTF-8";
+		$params['version'] = "1.0";
+		$params['timestamp'] = getCurrentTime();
+		$params['sign_type'] = "RSA2";
+		$params['notify_url'] = 'http://'.$_SERVER['SERVER_NAME']._PHP_FILE_.'/'.$this->request->module().'/'.$this->request->controller().'/notify';
+		$params['biz_content'] = $biz_content;
+
+		ksort($params);
+
+        $sign = aliSign($plugin['private_key'], getAliSignContent($params));
+        $params['sign'] = $sign;
+		
+		foreach ($params as &$value) {
+            $value = urlencode($value);
+		}
+		
+		return $params;
+	}
+
+
+
+
+	public function wxPay()
+    {
+        $data = decode($this->request->post());
+
+// 		$data['i'] = 'com.dashgame.garden.packone';
+// 		$data['t'] = 1;
+// 		$data['u'] = 1704251601802555535;
+
+        $iapInfo = Db::name('iap_config')->where(['item_id'=>$data['i']])->find();
+        if(empty($iapInfo)) return (json(['error'=>1111]));
+
+        $user_id = $data['u'];
+        $price = $iapInfo['price'];
+        $out_trade_no = 'D'.getId();
+
+        $order_url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
+
+        $data = array();
+        $data['appid'] = "wx47450ab76d65a1b3";
+        $data['mch_id'] = "1495332042";
+        $data['nonce_str'] = md5(time());
+        $data['sign_type'] = "MD5";
+        $data['body'] = $iapInfo['desc'];
+        $data['out_trade_no'] = $out_trade_no;
+        $data['total_fee'] = $price*100;
+        $data['spbill_create_ip'] = $this->getip();
+        $data['notify_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/wx_notify.php';
+        $data['trade_type'] = "APP";
+        $data['attach'] = $user_id;
+
+        ksort($data);
+
+//        print_r($data);
+
+        $data['sign'] = $this->generateSign($data);
+        $xml = $this->arrayToXml($data);
+
+        $opts = array (
+            'http' => array(
+                'method' => 'POST',
+                'header' => "Content-type: application/x-www-form-urlencoded ",
+                'content' =>  $xml
+            ),
+        );
+        $context = stream_context_create($opts);
+        $html = file_get_contents($order_url, false, $context);
+
+//        echo $html;
+
+        $xml = simplexml_load_string($html);
+        if(strval($xml->return_code) != "SUCCESS" || strval($xml->result_code) != "SUCCESS")
+        {
+            return (json(['error'=>2]));
+        }
+
+        $pay = array();
+        $pay['appid'] = strval($xml->appid);
+        $pay['partnerid'] = strval($xml->mch_id);
+        $pay['prepayid'] = strval($xml->prepay_id);
+        $pay['package'] = "Sign=WXPay";
+        $pay['noncestr'] = md5(time());
+        $pay['timestamp'] = strval(time());
+        $pay['sign'] = $this->generateSign($pay);
+
+        $userPay = new UserPay();
+        $userPay->add(['user_id'=>$user_id, 'cost'=>$price, 'pay_id'=>$iapInfo['id'], 'out_trade_no'=>$out_trade_no]);
+
+        return (json($pay));
+    }
+
+    function getip() {
+        $unknown = 'unknown';
+        if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown) ) {
+            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
+        } elseif ( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown) ) {
+            $ip = $_SERVER['REMOTE_ADDR'];
+        }
+        /*
+        处理多层代理的情况
+        或者使用正则方式:$ip = preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : $unknown;
+        */
+        if (false !== strpos($ip, ','))
+            $ip = reset(explode(',', $ip));
+        return $ip;
+    }
+
+    private function generateSign($params)
+    {
+        ksort($params);
+
+        $stringToBeSigned = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->checkEmpty($v) && "@" != substr($v, 0, 1)) {
+
+                // 转换成目标字符集
+                //$v = $this->characet($v, $this->postCharset);
+
+                if ($i == 0) {
+                    $stringToBeSigned .= "$k" . "=" . "$v";
+                } else {
+                    $stringToBeSigned .= "&" . "$k" . "=" . "$v";
+                }
+                $i++;
+            }
+        }
+
+        unset ($k, $v);
+
+        $stringSignTemp = $stringToBeSigned."&key=N6a0xVVV4IyMwQrneiCweaVQ7sypOEbS";
+        return strtoupper(md5($stringSignTemp));
+    }
+
+    private function checkEmpty($value) {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function arrayToXml($arr)
+    {
+        $xml = "<xml>\n";
+        foreach ($arr as $key=>$val)
+        {
+            if(is_numeric($val))
+            {
+                $xml .= "<".$key.">".$val."</".$key.">\n";
+            }
+            else
+            {
+                $xml .= "<".$key."><![CDATA[".$val."]]></".$key.">\n";
+            }
+        }
+        $xml .= "</xml>";
+        return $xml;
+    }
+
+}
+

+ 40 - 40
application/newhome/controller/Praise.php

@@ -1,41 +1,41 @@
-<?php
-namespace app\newhome\controller;
-
-use think\Controller;
-use app\user\model\UserPraise;
-
-class Praise extends Controller{
-	private $praiseModel;
-	
-	public function _initialize(){
-		parent::_initialize();
-		
-		$this->praiseModel = new UserPraise();
-	}
-	
-	public function click(){
-		$data = decode($this->request->post());
-		
-		$user = $data['u'];
-		$target = $data['t'];
-		
-		$info = $this->praiseModel->getTargetInfo($user, $target);
-		if($info) return json(['error'=>1212]);
-		
-		$this->praiseModel->add(['id'=>getId(), "user_id"=>$user, 'target_id'=>$target]);
-		
-		return json(['error'=>0]);
-	}
-	
-	public function target(){
-		$data = decode($this->request->post());
-		
-		$user = $data['u'];
-		$target = $data['t'];
-		
-		$info = $this->praiseModel->getTargetInfo($user, $target);
-		
-		return json(['i'=>($info)?1:0]);
-	}
-	
+<?php
+namespace app\newhome\controller;
+
+use think\Controller;
+use app\user\model\UserPraise;
+
+class Praise extends Controller{
+	private $praiseModel;
+	
+	public function _initialize(){
+		parent::_initialize();
+		
+		$this->praiseModel = new UserPraise();
+	}
+	
+	public function click(){
+		$data = decode($this->request->post());
+		
+		$user = $data['u'];
+		$target = $data['t'];
+		
+		$info = $this->praiseModel->getTargetInfo($user, $target);
+		if($info) return json(['error'=>1212]);
+		
+		$this->praiseModel->add(['id'=>getId(), "user_id"=>$user, 'target_id'=>$target]);
+		
+		return json(['error'=>0]);
+	}
+	
+	public function target(){
+		$data = decode($this->request->post());
+		
+		$user = $data['u'];
+		$target = $data['t'];
+		
+		$info = $this->praiseModel->getTargetInfo($user, $target);
+		
+		return json(['i'=>($info)?1:0]);
+	}
+	
 }

+ 427 - 0
application/newhome/controller/Show.php

@@ -0,0 +1,427 @@
+<?php
+namespace app\newhome\controller;
+
+use think\Controller;
+use app\user\model\UserSkill;
+use think\Db;
+
+class Show extends Controller {
+	
+	private $userModel, $showModel;
+	
+	public function _initialize(){
+        $this->userModel = new \app\user\model\User();
+        $this->showModel = new \app\user\model\UserShow();
+	}
+	
+	public function add()
+	{
+		$data = decode($this->request->post());
+		$user_id = $data['u'];
+		if(!$user_id)
+		    return json(array("error"=>1));
+
+        $res = array();
+		try
+        {
+            $info = array();
+            $info['user_id'] = $data['u'];
+            $info['title'] = urlencode($data['tl']);
+            $info['content'] = urlencode($data['ct']);
+            $info['head'] = $data['hd'];
+            $info['headwear'] = $data['hw'];
+            $info['eyes'] = $data['ey'];
+            $info['mouth'] = $data['mo'];
+            $info['clothes'] = $data['cl'];
+            $info['skirt'] = $data['sk'];
+            $info['shoes'] = $data['sh'];
+            $info['wing'] = $data['wi'];
+            $info['create_time'] = getCurrentTime();
+            $info['del_time'] = getCurrentTime();
+
+            $result = $this->showModel->insert($info, false, true);
+            $info['id'] = $result;
+            $info['title'] = $data['tl'];
+            $info['content'] = $data['ct'];
+
+            $res['error'] = $result ? 0 : 2;
+            $res['info'] = $info;
+        }
+		catch (Exception $e)
+        {
+            $res['error'] = 3;
+            $res['reason'] = $e;
+        }
+
+		return json($res);
+	}
+
+	public function modify()
+    {
+        $data = decode($this->request->post());
+        $user_id = $data['u'];
+        $show_id = $data['s'];
+        $title = urlencode($data['tl']);
+        $content = urlencode($data['ct']);
+
+        $this->showModel->updateInfo($show_id, $title, $content);
+        $show = Db::name("user_show")->where('id', $show_id)->find();
+        $show['title'] = urldecode($show['title']);
+        $show['content'] = urldecode($show['content']);
+
+        $res = array();
+        $res['info'] = $show;
+        return json($res);
+    }
+
+	public function delete()
+    {
+        $data = decode($this->request->post());
+        $user_id = $data['u'];
+        $show_id = $data['s'];
+
+        $info = array();
+        $info['del'] = 1;
+        $info['del_time'] = getCurrentTime();
+        $this->showModel->where("id=$show_id AND user_id=$user_id")->update($info);
+
+        $res = array();
+        $res['error'] = 0;
+
+        return json($res);
+    }
+
+	public function score()
+    {
+        $data = decode($this->request->post());
+        $user_id = $data['u'];
+        $show_id = intval($data['s']);
+
+        $score = Db::name("user_show_score")->where("user_id=$user_id AND show_id=$show_id")->find();
+        if($score)
+        {
+            $res['error'] = 1;
+            $res['info'] = "already scored";
+            return json($res);
+        }
+
+        $show = Db::name("user_show")->where('id', $show_id)->find();
+
+        if($user_id != $show['user_id'])
+        {
+            $score1 = $data['s1'];
+            $score2 = $data['s2'];
+            $score3 = $data['s3'];
+            $score4 = $data['s4'];
+            $score5 = $data['s5'];
+
+
+            $info = array();
+            $info['user_id'] = $user_id;
+            $info['show_id'] = $show_id;
+            $info['score1'] = $score1;
+            $info['score2'] = $score2;
+            $info['score3'] = $score3;
+            $info['score4'] = $score4;
+            $info['score5'] = $score5;
+            $info['create_time'] = getCurrentTime();
+
+
+            Db::name("user_show_score")->insert($info, false, true);
+            $this->showModel->addScore($show_id, $score1, $score2, $score3, $score4, $score5);
+        }
+
+        $show = Db::name("user_show")->where('id', $show_id)->find();
+        $show['title'] = urldecode($show['title']);
+        $show['content'] = urldecode($show['content']);
+
+        $res = array();
+        $res['error'] = 0;
+        $res['info'] = $show;
+        return json($res);
+    }
+
+    public function like()
+    {
+        $data = decode($this->request->post());
+        $user_id = $data['u'];
+        $show_id = intval($data['s']);
+
+        $like_db = Db::name("user_show_like");
+        $show_like = $like_db->where("user_id=$user_id AND show_id=$show_id")->find();
+
+        $res = array();
+
+        if(!$show_like)
+        {
+            $info = array();
+            $info['user_id'] = $user_id;
+            $info['show_id'] = $show_id;
+            $info['like'] = 1;
+            $info['update_time'] = getCurrentTime();
+            $result = $like_db->insert($info, false, true);
+            $info['id'] = $result;
+
+            $liked = 1;
+        }
+        else
+        {
+            $liked = $show_like['like'] > 0 ? 0 : 1;
+            $info = array();
+            $info['like'] = $liked;
+            $like_db->where("user_id=$user_id AND show_id=$show_id")->update($info);
+            $show_like['like'] = $liked;
+        }
+
+        $count = $like_db->where("`like`=1 AND show_id=$show_id")->count();
+        $this->showModel->where("id", $show_id)->update(['likes'=>$count]);
+
+        $show = Db::name("user_show")->where("id", $show_id)->find();
+        $show['title'] = urldecode($show['title']);
+        $show['content'] = urldecode($show['content']);
+
+        $res['error'] = 0;
+        $res['info'] = $show;
+        $res['liked'] = $liked;
+        return json($res);
+    }
+
+    public function comment()
+    {
+        $data = decode($this->request->post());
+        $user_id = $data['u'];
+        $show_id = $data['s'];
+        $target_id = $data['t'];
+        $content = $data['c'];
+
+        $info = array();
+        $info['user_id'] = $user_id;
+        $info['target_id'] = $target_id;
+        $info['show_id'] = $show_id;
+        $info['content'] = urlencode($content);
+        $info['create_time'] = getCurrentTime();
+
+        $comment_db = Db::name("user_show_comment");
+        $result = $comment_db->insert($info, false, true);
+
+        $info['id'] = $result;
+        $info['content'] = $content;
+
+        $this->showModel->where('id', $show_id)->setInc('comments');
+
+        $res = array();
+        $res['error'] = $result ? 0 : 2;
+        $res['info'] = $info;
+        return json($res);
+    }
+
+
+    public function show_list()
+    {
+        $data = decode($this->request->post());
+        $uid = $data['u'];
+        $sort = $data['s'];
+        $page = $data['p'];
+
+        $list = $this->showModel->infoList($sort, $page);
+
+        $users = array();
+        foreach ($list as &$value)
+        {
+            $value['title'] = urldecode($value['title']);
+            $value['content'] = urldecode($value['content']);
+
+            $user_id = $value['user_id'];
+            if(!array_key_exists($user_id, $users))
+            {
+                $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
+                $users[$user_id] = $user;
+            }
+            else
+            {
+                $user = $users[$user_id];
+            }
+            if($user && isset($user['nickname']))
+            {
+                $value['nickname'] = $user['nickname'];
+            }
+            else
+            {
+                $value['nickname'] = "";
+            }
+
+            $show_id = $value['id'];
+            $like_db = Db::name("user_show_like");
+            $like = $like_db->where("user_id=$uid AND show_id=$show_id AND `like`=1")->find();
+            if($like)
+            {
+                $value['liked'] = 1;
+            }
+            else
+            {
+                $value['liked'] = 0;
+            }
+
+            $score_db = Db::name("user_show_score");
+            $score = $score_db->where("user_id=$uid AND show_id=$show_id")->find();
+            if($score)
+            {
+                $value['scored'] = 1;
+            }
+            else
+            {
+                $value['scored'] = 0;
+            }
+        }
+
+        $res = array();
+        $res['list'] = $list;
+
+        return json($res);
+    }
+
+    public function show_list_user()
+    {
+        $data = decode($this->request->post());
+        $uid = $data['mu'];
+        $user_id = $data['u'];
+        $page = $data['p'];
+        $list = $this->showModel->infoListByUser($user_id, $page);
+
+        $users = array();
+        foreach ($list as &$value)
+        {
+            $value['title'] = urldecode($value['title']);
+            $value['content'] = urldecode($value['content']);
+
+            $user_id = $value['user_id'];
+            if(!array_key_exists($user_id, $users))
+            {
+                $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
+                $users[$user_id] = $user;
+            }
+            else
+            {
+                $user = $users[$user_id];
+            }
+            if($user && isset($user['nickname']))
+            {
+                $value['nickname'] = $user['nickname'];
+            }
+            else
+            {
+                $value['nickname'] = "";
+            }
+
+            $like_db = Db::name("user_show_like");
+            $show_id = $value['id'];
+            $like = $like_db->where("user_id=$uid AND show_id=$show_id AND `like`=1")->find();
+            if($like)
+            {
+                $value['liked'] = 1;
+            }
+            else
+            {
+                $value['liked'] = 0;
+            }
+
+            $score_db = Db::name("user_show_score");
+            $score = $score_db->where("user_id=$uid AND show_id=$show_id")->find();
+            if($score)
+            {
+                $value['scored'] = 1;
+            }
+            else
+            {
+                $value['scored'] = 0;
+            }
+        }
+
+        $res['list'] = $list;
+        return json($res);
+    }
+
+    public function show()
+    {
+        $data = decode($this->request->post());
+        $show_id = $data['s'];
+        $user_id = $data['u'];
+
+        $show_db = Db::name("user_show");
+        $show = $show_db->where("id=$show_id AND user_id=$user_id")->find();
+
+        if(!$show)
+            return json(array('error', 1));
+
+        $show['title'] = urldecode($show['title']);
+        $show['content'] = urldecode($show['content']);
+
+        $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
+        $show['nickname'] = $user['nickname'] ? $user['nickname'] : "";
+
+        return json($show);
+    }
+
+    public function comment_list()
+    {
+        $data = decode($this->request->post());
+        $show_id = $data['s'];
+        $page = $data['p'];
+
+        $page = max($page, 1);
+        $num_pre_page = 10;
+        $start = ($page-1) * $num_pre_page;
+
+        $comment_db = Db::name("user_show_comment");
+        $list = $comment_db->where("show_id", $show_id)->order('create_time desc')->limit("$start, $num_pre_page")->select();
+
+        $users = array();
+        foreach ($list as &$value)
+        {
+            $value['content'] = urldecode($value['content']);
+
+            $user_id = $value['user_id'];
+            if(!array_key_exists($user_id, $users))
+            {
+                $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
+                $users[$user_id] = $user;
+            }
+            else
+            {
+                $user = $users[$user_id];
+            }
+            if($user && isset($user['nickname']))
+            {
+                $value['nickname'] = $user['nickname'];
+            }
+            else
+            {
+                $value['nickname'] = "";
+            }
+
+
+
+            $target_id = $value['target_id'];
+            if(!array_key_exists($target_id, $users))
+            {
+                $user = $this->userModel->where('id', $target_id)->field('nickname')->find();
+                $users[$target_id] = $user;
+            }
+            else
+            {
+                $user = $users[$target_id];
+            }
+            if($user && isset($user['nickname']))
+            {
+                $value['nickname_target'] = $user['nickname'];
+            }
+            else
+            {
+                $value['nickname_target'] = "";
+            }
+        }
+
+        $res['list'] = $list;
+        return json($res);
+    }
+}

+ 261 - 156
application/newhome/controller/User.php

@@ -1,157 +1,262 @@
-<?php
-namespace app\newhome\controller;
-
-use think\Controller;
-use app\user\model\UserSkill;
-
-class User extends Controller {
-	
-	private $userModel, $skillModel;
-	
-	public function _initialize(){
-		$this->skillModel = new UserSkill();
-		$this->userModel = new \app\user\model\User(); 
-		
-	}
-	
-	public function login()
-	{
-		$data = decode($this->request->post());
-		
-		$info = $this->userModel->loginByUid($data['u']);
-		$info['s'] = $this->skillModel->getUserSkill($info['i']);
-		$info['time'] = time();
-		
-		return json($info);
-	}
-	
-	public function getskill(){
-		$data = decode($this->request->post());
-		
-		$info = $this->skillModel->getSkillByInfo($data['i']);
-		return json($info);
-	}
-	
-	public function addskill(){
-		$data = decode($this->request->post());
-		
-		$info = $this->skillModel->addUserSkill($data['u'], $data['s']);
-		return json($info);
-	}
-	
-	public function other(){
-		$data = decode($this->request->post());
-		
-		$res = $this->userModel->getUserById($data['u']);
-		$path = "load/".$res['id'].'.txt';
-		
-		$file = fopen($path, "r") or die(json(['error'=>1009]));
-		$info = fread($file, filesize($path));
-		fclose($file);
-		
-		return json(['l'=>$info, 'p'=>$res['praise']]);
-	}
-	
-	public function load(){
-		$data = decode($this->request->post());
-		
-		$id = $data['u'];
-		
-		if(strlen($id) > 10){
-			$res = $this->userModel->getUserById($id);
-		}else{
-			$res = $this->userModel->getUserByCode($id);
-		}
-		
-		if(empty($res)) return json(['error'=>1023]);
-		$path = "load/".$res['id'].".txt";
-		
-		if(!is_file($path)) $path = "load/".$res['short'].".txt";
-		
-		$file = fopen($path, "r") or die(json(['error'=>1009]));
-		$info = fread($file, filesize($path));
-		fclose($file);
-		
-		return json(['l'=>$info, 'p'=>$res['praise']]);
-	}
-
-    public function save(){
-        $data = decode($this->request->post());
-
-        $id = $data['u'];
-        $version = $data['v'];
-        $path = "load/$id.txt";
-
-        $res = $this->userModel->getUserById($id);
-        if(empty($res)) return json(['error'=>1023]);
-
-        $oldversion = $res['version'];
-
-        if($version > $oldversion && $oldversion > 0){
-            // 读取旧文件
-            $old_file = fopen($path, "r") or die(json(['error'=>1009]));
-            $info = fread($old_file, filesize($path));
-            fclose($old_file);
-            // 备份旧文件
-            $backup_file = fopen("backup/$id-$oldversion.txt", 'w') or die(json(['error'=>1009]));
-            fwrite($backup_file, $info);
-            fclose($backup_file);
-
-            $this->userModel->update(['version'=>$version], ['id'=>$id]);
-        }
-
-        $file = fopen($path, 'w') or die(json(['error'=>1009]));
-        fwrite($file, $data['l']);
-        fclose($file);
-
-        return json(['error'=>0]);
-    }
-	
-	public function rand(){
-		$data = decode($this->request->post());
-		
-		$id = $this->userModel->randOtherInfoById($data['i']);
-		if(strlen($id) > 10){
-			$res = $this->userModel->getUserById($id);
-		}else{
-			$res = $this->userModel->getUserByCode($id);
-		}
-		
-		$path = "load/$id.txt";
-		$file = fopen($path, "r") or die(json(['error'=>1009]));
-		$info = fread($file, filesize($path));
-		fclose($file);
-		
-		return json(['l'=>$info, 'p'=>$res['praise'], 'i'=>$res['id']]);
-	}
-	
-	public function delete(){
-		$data = decode($this->request->post());
-		
-		$id = $data['s'];
-		
-		$path = "load/$id.txt";
-		$res = unlink($path);
-		
-		return json(['r'=>(($res)?1:0)]);
-	}
-	
-	public function look(){
-		$res = $this->userModel->lookList();
-		
-		return $res;
-	}
-	
-	public function nickname(){
-		$data = decode($this->request->post());
-		
-		$nickname = trim($data['n']);
-		$res = $this->userModel->findUserByName($nickname);
-		if($res) return json(['error'=>2020]);
-		
-		$this->userModel->addAndSave(['id'=>$data['u'], 'nickname'=>$nickname]);
-		
-		return json(['error'=>0]);
-	}
-	
+<?php
+namespace app\newhome\controller;
+
+use think\Controller;
+use app\user\model\UserSkill;
+
+class User extends Controller {
+	
+	private $userModel, $skillModel;
+	
+	public function _initialize(){
+		$this->skillModel = new UserSkill();
+		$this->userModel = new \app\user\model\User(); 
+		
+	}
+	
+	public function login()
+	{
+		$data = decode($this->request->post());
+		
+		$info = $this->userModel->loginByUid($data['u'], isset($data['e']) ? $data['e'] : '');
+		$info['s'] = $this->skillModel->getUserSkill($info['i']);
+//		$last_login = strtotime($info['t']);
+//		$now = time();
+//		$offline_time = $now - $last_login > 21600 ? 21600 : $now - $last_login;
+//		$info['time'] = $offline_time; //暂时限制离线时间上限,修正一个客户端版本的错误问题
+		$info['time'] = time();
+		
+		return json($info);
+	}
+
+	public function sdk_login()
+    {
+        $data = decode($this->request->post());
+        $arr = explode("|", $data['e']);
+        $sdk_id = $arr[0];
+        $ts = $arr[1];
+        $sign = $arr[2];
+
+        if($sign != md5($sdk_id.$ts."CzNLahsrSMBcSJF6"))
+        {
+            return json(['error'=>1009]);
+        }
+
+        $info = $this->userModel->loginBySdk($sdk_id);
+        $info['time'] = time();
+        return json($info);
+    }
+	
+	public function getskill(){
+		$data = decode($this->request->post());
+		
+		$info = $this->skillModel->getSkillByInfo($data['i']);
+		return json($info);
+	}
+	
+	public function addskill(){
+		$data = decode($this->request->post());
+		
+		$info = $this->skillModel->addUserSkill($data['u'], $data['s']);
+		return json($info);
+	}
+	
+	public function other(){
+		$data = decode($this->request->post());
+		
+		$res = $this->userModel->getUserById($data['u']);
+		$path = "load/".$res['id'].'.txt';
+		
+		$file = fopen($path, "r") or die(json(['error'=>1009]));
+		$info = fread($file, filesize($path));
+		fclose($file);
+		
+		return json(['l'=>$info, 'p'=>$res['praise']]);
+	}
+	
+	public function load(){
+		$data = decode($this->request->post());
+		
+		$id = $data['u'];
+		
+		if(strlen($id) > 10){
+			$res = $this->userModel->getUserById($id);
+		}else{
+			$res = $this->userModel->getUserByCode($id);
+		}
+		
+		if(empty($res)) return json(['error'=>1023]);
+		$path = "load/".$res['id'].".txt";
+		
+		if(!is_file($path)) $path = "load/".$res['short'].".txt";
+
+		if(!is_file($path))
+		    return json(['error'=>1009]);
+		
+		$file = fopen($path, "r") or die(json(['error'=>1009]));
+		$info = fread($file, filesize($path));
+		fclose($file);
+		
+		return json(['l'=>$info, 'p'=>$res['praise']]);
+	}
+
+    public function save(){
+        $data = decode($this->request->post());
+
+        $id = $data['u'];
+        $version = $data['v'];
+        $path = "load/$id.txt";
+
+        $res = $this->userModel->getUserById($id);
+        if(empty($res)) return json(['error'=>1023]);
+
+        if(!$res['nickname'] && isset($data['n']))
+        {
+            $this->userModel->where('id', $id)->update(['nickname'=>$data['n']]);
+        }
+
+        $oldversion = $res['version'];
+
+        if($version > $oldversion && $oldversion > 0){
+            // 读取旧文件
+            $old_file = fopen($path, "r") or die(json(['error'=>1009]));
+            $info = fread($old_file, filesize($path));
+            fclose($old_file);
+            // 备份旧文件
+            $backup_file = fopen("backup/$id-$oldversion.txt", 'w') or die(json(['error'=>1009]));
+            fwrite($backup_file, $info);
+            fclose($backup_file);
+
+            $this->userModel->update(['version'=>$version], ['id'=>$id]);
+        }
+
+        $file = fopen($path, 'w') or die(json(['error'=>1009]));
+        fwrite($file, $data['l']);
+        fclose($file);
+
+        return json(['error'=>0]);
+    }
+	
+	public function rand(){
+		$data = decode($this->request->post());
+		$my_id = isset($data['i']) ? $data['i'] : 0;
+
+		$id = $this->userModel->randOtherInfoById($data['i']);
+		if(strlen($id) > 10){
+			$res = $this->userModel->getUserById($id);
+		}else{
+			$res = $this->userModel->getUserByCode($id);
+		}
+		
+		$path = "load/$id.txt";
+		$file = fopen($path, "r") or die(json(['error'=>1009]));
+		$info = fread($file, filesize($path));
+		fclose($file);
+		
+		return json(['l'=>$info, 'p'=>$res['praise'], 'i'=>$res['id']]);
+	}
+	
+	public function delete(){
+		$data = decode($this->request->post());
+		
+		$id = $data['s'];
+		
+		$path = "load/$id.txt";
+		$res = unlink($path);
+		
+		return json(['r'=>(($res)?1:0)]);
+	}
+	
+	public function look(){
+		$res = $this->userModel->lookList();
+		
+		return $res;
+	}
+	
+	public function nickname(){
+		$data = decode($this->request->post());
+		
+		$nickname = trim($data['n']);
+		$res = $this->userModel->findUserByName($nickname);
+		if($res) return json(['error'=>2020]);
+
+		$this->userModel->addAndSave(['id'=>$data['u'], 'nickname'=>$nickname]);
+		
+		return json(['error'=>0]);
+	}
+
+	public function phone()
+    {
+        $data = decode($this->request->post());
+        $phone = trim($data['p']);
+        $zone = trim($data['z']);
+        $code = trim($data['c']);
+        $user_id = $data['u'];
+
+        $api = 'https://webapi.sms.mob.com';
+        // 发送验证码
+        $response = $this->post_request( $api . '/sms/verify', array(
+            'appkey' => '20348b3a105da',
+            'phone' => $phone,
+            'zone' => $zone,
+            'code' => $code,
+        ) );
+
+        $response = json_decode($response, true);
+        if($response['status'] != 200)
+        {
+            return json(['error'=>1010, 'msg'=>$response]);
+        }
+
+
+
+        $res = $this->userModel->where('mobile', $phone)->find();
+        if($res)
+        {
+            $path = "load/".$res['id'].".txt";
+            if(!is_file($path)) $path = "load/".$res['short'].".txt";
+            if(!is_file($path))
+                return json(['error'=>1009]);
+
+            $file = fopen($path, "r") or die(json(['error'=>1009]));
+            $info = fread($file, filesize($path));
+            fclose($file);
+
+            return json(['l'=>$info, 'p'=>$res['praise'], 'mobile'=>$phone]);
+        }
+
+        $this->userModel->where('id', $user_id)->update(['mobile'=>$phone]);
+        return json(['mobile'=>$phone, 'res'=>$response]);
+    }
+
+    /**
+     * 发起一个post请求到指定接口
+     *
+     * @param string $api 请求的接口
+     * @param array $params post参数
+     * @param int $timeout 超时时间
+     * @return string 请求结果
+     */
+    private function post_request( $api, array $params = array(), $timeout = 30 ) {
+        $ch = curl_init();
+        curl_setopt( $ch, CURLOPT_URL, $api );
+        // 以返回的形式接收信息
+        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
+        // 设置为POST方式
+        curl_setopt( $ch, CURLOPT_POST, 1 );
+        curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params ) );
+        // 不验证https证书
+        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
+        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
+        curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
+        curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
+            'Content-Type: application/x-www-form-urlencoded;charset=UTF-8',
+            'Accept: application/json',
+        ) );
+        // 发送数据
+        $response = curl_exec( $ch );
+        // 不要忘记释放资源
+        curl_close( $ch );
+        return $response;
+    }
 }