Project

Profile

Help

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...

Task #618845 » MyController.class.php

我的请求的代码 - 志鑫のdie 我是, 2016-12-14 06:58 AM

 
<?php
/**
* Created by PhpStorm.
* User: 白照运
* Date: 2016/11/28
* Time: 15:24
* Description: 实现捞一捞(随机从数据库中获取一条数据),我的请求(将我的请求表中的内容,显示出来)
*/

namespace Home\Controller;


use Think\Controller;

class MyController extends Controller
{
//如果用户想要使用下面的高级功能,是需要注册的,可以先判断当前用户是否注册然后
public function _initialize(){
//判断当前用户是否已经把id写入到session中,如果已经写入过,就不再执行写入id的步骤
if (!session('?id')) {
session("openid", 'offLcwcxIK4H4f6ncUZiL-5NVPZE');
//判断当前用户是否是从微信客户端登录的
if (!session('?openid')) {
$this->error('请在微信客户端登录此网页来使用本功能!', U('home/news/index'));
}
$openid = session('openid');
$user = M('user');
//查询当前用户的id
$conditon['openid'] = $openid;
$userinfo = $user->where($conditon)->find();
//检测当前用户是否登录
if (!$userinfo) {
$this->redirect(U('home/index/notLoginTips'));
}
//把id写入到session中
session('id',$userinfo['id']);
session('uniid',$userinfo['uniid']);
}
}
//捞一捞
public function getOneMessage(){
/* 思路:为了保证不会两次取到同一个瓶子,会每次把取到的信息的id放入到session里面保存
* 每次取数据之前,都会从session中判断这个瓶子是不是已经被取过,如果被取过,就
* 不会被取出,如果未取过,则取出,
* 这里面设置了一个中间变量$oldmid,没有没有办法对session中的数组用array_push,所以进行了一次次的赋值运算
* */

// 如果当前没有session('oldmid'),证明当前没有里面还没有取过瓶子
session_start();
if (!session('?oldmid')){
$oldmid = array();
session(array('name'=>'oldmid','expire'=>7200));
session('oldmid',$oldmid);
}
//获取用户的大学的id
$tuniid = session('uniid'); //此id从session中获取,判断当前用户所在的大学
$oldmid=session('oldmid');
$match = M('match');
// 构造查询条件
$condition = array();
$condition['tuniid'] = $tuniid;
$condition['tag'] = 0;
//此处的查询条件是因为查询条件中,not in的值不能为空,假设为空的话,证明当前没有进行过查询
if ($oldmid){
$condition['mid'] = array('not in',$oldmid);
}
//从数据库中随机取一条数据
$result = $match->where($condition)->order('rand()')->find();
//借助中间变量$oldmid,将session的值每次都增加
array_push($oldmid, $result['mid']);
session('oldmid', $oldmid);
dump(session('oldmid'));
dump($result);
}
/*假如用户同意接受这条信息,就在这里做同意的函数处理*/
public function receiveOneMessage(){
//从过渡界面接受的到匹配请求的mid
$mid = I('mid');
//从session中获取当前登录用户的的id
$id = session('id');
$tempresult = M('tempresult');
$data['mid'] = $mid;
$data['id'] = $id;
$result = $tempresult->add($data);
if ($result) {
$this->success('接受一条消息成功,请等到对方的回应!',U('home/my/index'));
}else {
$this->error('发生了未知的错误,请联系管理员',U('home/my/index'));
}
}
/*
* 如果当前用户已经捞过了所有的请求者,点击此按钮可以清空缓存,重新筛选人*/
public function refreshGetOneMessage(){
//清除session,用户重新捞
session('oldmid',null);
if(!session('?oldmid')){
$this->success('操作成功',U('home/news/index'));
}else{
$this->error('操作失败,请两个小时之后重试',U('home/news/index'));
}
}
/*my界面的内容显示*/
public function index(){
//从session中获取的的当前登录人的id
$id = session('id');
$match = D('Match');
$tempresult = D('Tempresult');
//构造myreuqest的查询条件
$condition = array();
$condition['fid'] = $id;
$condition['tag'] = 0;
//采用关联查询,查询两个大学的名字
$myRequrest = $match->where($condition)->relation(true)->select();
//采用关联查询,查询我的id所接受的请求
$myReceive = $tempresult->where("id=$id")->relation(true)->select();
//dump($myReceive->getLastSql());
//dump($myReceive);
//dump($myRequrest);
//exit();
//$result = $receiveRequest->where("id=$id")->select();
//$result['id']
//$user->where("id=")->select();
$this->assign('myrequest',$myRequrest);
$this->assign('myreceive',$myReceive);
$this->display();
}
public function request(){
$id = I('id');
//获取本条信息的详细信息
$match = D('match');
$myRequrest = $match->where("mid=$id")->relation(true)->find();
$userid = session('id');
if ($myRequrest['fid'] !== $userid){
$this->redirect(U('home/index/notYourPlace'));
}
$tempresult = D('tempresult');
$myConfirm = $tempresult->where("mid=$id")->relation(true)->select();
dump($myRequrest);
dump($myConfirm);
$this->assign('myrequest',$myRequrest);
$this->assign('myConfirm',$myConfirm);
$this->display();
}
public function deleteOneReply(){
//从url中获取要删除的那一条数据的id
$id = I('id');
$university = M('tempresult');
if($university->where("rrid=$id")->delete()){
echo 1;
}
else{
echo '数据删除失败,请联系开发者!';
exit;
}
}
}
(1-1/2)