| 1 |
- <?php
namespace app\admin\controller;
use cmf\controller\AdminBaseController;
use think\Db;
use think\Session;
class MessageController extends AdminBaseController{
public function index(){
//分类信息
$param = $this->request->param();
isset($param['cate_id']) or $param['cate_id']=0;
$this->assign('cate_id',$param['cate_id']);
$username = $_SESSION['think']['name'];
$userinfo = Db::name('user')->where('user_login',$username)->find();
$catid = isset($param['catid'])?$param['catid']:0;
$this->assign("catid",$catid);
if($userinfo['user_type']== 1){
//分类信息
$cate_tree=$this->getAccessTreeData();
$this->assign('cate_tree',json_encode($cate_tree));
$map = array();
$query = array();
if($catid){
$query['catid'] = $catid;
//如果是一级分类则查找所有的子分类
$cateinfo = Db::name('category')->where('id',$catid)->find();
if($cateinfo['parent_id']==0){
$sonarr = Db::name('category')->where('parent_id',$catid)->select()->toArray();
$cate_arr = array();
foreach ($sonarr as $kk=>$vv){
$cate_arr[] = $vv['id'];
}
$map[] = ['catid','in',$cate_arr];
}else{
$map['catid'] = $catid;
}
}
$this->assign('qx',1);
$users = Db::name('user')->where('id','gt',1)->select();
$this->assign('users',$users);
//超级管理员
$lists = Db::name('message')->where($map)->order('create_time desc')->paginate(20,false,['query'=>$query]);
$this->assign('lists',$lists);
}else{
$map = array();
if($catid){
$map['catid'] = $catid;
}
//普通用户
$this->assign('qx',0);
$userinfo = Db::name('user')->where('user_login',$username)->find();
$userid = $userinfo['id'];
//分配的信息id
$fenpei = Db::name('user_fp')->where('userid',$userid)->find();
// print_r($fenpei);exit;
if(empty($fenpei)){
$lists = array();
}else{
// $cates = explode(',',$fenpei['cates']);
$cates = $fenpei['cates'];
$from = $fenpei['tiaoshu'];
$map[] = ['create_time','>',$fenpei['from_time']];
//ppppp
if($fenpei['enable']==1){
$map2[] = ['p1.create_time','>',$fenpei['from_time']];
$field=['p1.*','concat(LEFT(p1.mobile,4),"****",RIGHT(p1.mobile,3))'=>'mobile','count(p2.id)'=> 'vid' ];
$lists = Db::name('message')
->alias('p1')
->leftJoin('mobile_log p2','p1.`id`=p2.`msg_id`')
->group('p1.`id`')
->order('p1.create_time','asc')
->field($field)->where('p1.catid','in',$cates)->where($map2)->limit(0,$from)->select();
$lists=$this->covermobile($lists,$this->returnmobile());
}else{
$field=['*'];
$lists = Db::name('message')->field($field)->where('catid','in',$cates)->where($map)->order('create_time','asc')->limit(0,$from)->select();
}
$lists=$this->array_fan($lists);
array_multisort(array_column($lists,'create_time'), SORT_DESC, $lists);
}
$this->assign('fenpei',$fenpei);
$this->assign('lists',$lists);
}
return $this->fetch();
}
//已经查看的手机号
public function returnmobile()
{
$map = array();
$username = $_SESSION['think']['name'];
$userinfo = Db::name('user')->where('user_login',$username)->find();
$userid = $userinfo['id'];
//分配的信息id
$fenpei = Db::name('user_fp')->where('userid',$userid)->find();
$data=array();
if(!empty($fenpei))
{
$cates = $fenpei['cates'];
$from = $fenpei['tiaoshu'];
$map[] = ['create_time','>',$fenpei['from_time']];
if($fenpei['enable']==1){
$map2[] = ['p1.create_time','>',$fenpei['from_time']];
$field=['p1.*','FROM_UNIXTIME(p1.create_time)'=>'create_time' ];
$data = Db::name('message')
->alias('p1')
->leftJoin('mobile_log p2','p1.`id`=p2.`msg_id`')
->field($field)->where('p1.catid','in',$cates)->where($map2)->where('p2.user_id',$userid)->limit(0,$from)->select();
}
}
return $data;
}
/**
* 替换已经查看的手机,使*号变为原来手机号码,二维数组
*
* */
private function covermobile($lists,$data)
{
$j=0;
$re_list=array();
foreach ($lists as $val)
{
$re_list[$j]=$val;
foreach ($data as $arr)
{
if($val['id']==$arr['id'])
{
$re_list[$j]['mobile']=$arr['mobile'];
}
}
$j++;
}
return $re_list;
}
//把二维数组反转
public function array_fan($arr)
{
$data=array();
if(!empty($arr))
{
$num= count($arr);
$j=0;
$data=array();
for($i=$num-1;$i>=0;$i--)
{
$data[$i]=$arr[$j];
$j++;
}
}
return $data;
}
/***
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function tomobile()
{
$param = $this->request->param();
$username = $_SESSION['think']['name'];
$userinfo = Db::name('user')->where('user_login',$username)->find();
$userid = $userinfo['id'];
//分配的信息id
$fenpei = Db::name('user_fp')->where('userid',$userid)->find();
$bol=0;
if(!empty($fenpei))
{
//判断是否超过3次
$msg_id=$param['id'];
$msg=Db::name('mobile_log')->where('msg_id',$msg_id)->count();
if($msg>2){
$this->error('该条信息已经被人查看');
}
$cates = $fenpei['cates'];
$from = $fenpei['tiaoshu'];
$map[] = ['create_time','>',$fenpei['from_time']];
$fromid=['id'=>$param['id']];
$lists = Db::name('message')->field(['id'])->where('catid','in',$cates)->where($map)->order('id')->limit(0,$from)->select()->toArray();
$message = Db::name('message')->field(['id','mobile'])->where('catid','in',$cates)->where($map)->where($fromid)->limit(0,$from)->find();
// dump(Db::table('message')->getLastSql());
foreach ($lists as $value) {
if(in_array($message['id'], $value)){
$bol=$message['mobile'];
}
}
//检查记录
if(!empty($message)){
$mobile_where=['user_id'=>$userid,'msg_id'=>$message['id']];
$mobile_log=Db::name('mobile_log')->where($mobile_where)->find();
if(empty($mobile_log))
{
//如果为空则需要插入记录并在user_fp减少一个点数
//先判断是否还有点数
if($fenpei['points']>0){
$mobile_in['user_id']=$userid;
$mobile_in['msg_id']=$message['id'];
$mobile_in['create_time']=time();
$res=Db::name('mobile_log')->insert($mobile_in);
if($res){
Db::name('user_fp')->where('userid',$userid)->dec('points', 1)->update();
$arr=array(
'points'=>$fenpei['points']-1,
'mobile'=>$message['mobile']
);
$this->success($arr);
}
}else{
$this->error('你的点数已经用尽');
}
}else{
$arr=array(
'points'=>$fenpei['points'],
'mobile'=>$message['mobile']
);
$this->success($arr);
}
}else{
$this->error('数据获取错误');
}
}
}
public function add(){
return $this->fetch();
}
public function export()
{
$map = array();
$username = $_SESSION['think']['name'];
$userinfo = Db::name('user')->where('user_login',$username)->find();
$userid = $userinfo['id'];
//分配的信息id
$fenpei = Db::name('user_fp')->where('userid',$userid)->find();
if(!empty($fenpei))
{
$cates = $fenpei['cates'];
$from = $fenpei['tiaoshu'];
$map[] = ['create_time','>',$fenpei['from_time']];
if($fenpei['enable']==1){
$map2[] = ['p1.create_time','>',$fenpei['from_time']];
$field=['p1.*','FROM_UNIXTIME(p1.create_time)'=>'create_time' ];
$data = Db::name('message')
->alias('p1')
->leftJoin('mobile_log p2','p1.`id`=p2.`msg_id`')
->field($field)->where('p1.catid','in',$cates)->where($map2)->where('p2.user_id',$userid)->limit(0,$from)->select();
}else{
$field=['*'];
$data = Db::name('message')->field($field)->where('catid','in',$cates)->where($map)->order('id')->limit(0,$from)->select();
}
}
$field = array(
'A' => array('jm_title', '品牌'),
'B' => array('news_kw', '新闻'),
'C' => array('catname', '分类'),
'D' => array('name', '姓名'),
'E' => array('ip', 'IP'),
'F' => array('tzed', '投资额度'),
'G' => array('mobile', '电话'),
'H' => array('content', '留言内容'),
'I' => array('create_time', '留言时间'),
);
$this->exportExcel($field, $data,date('Y-m-d'));
}
private function exportExcel($field, $list, $title='name')
{
$objPHPExcel = new \PHPExcel();
$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
$objPHPExcel->getActiveSheet()->setTitle('用户信息表');
foreach ($list as $key => $value) {
foreach ($field as $k => $v) {
if ($key == 0) {
$objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);
}
$i = $key + 2;
$objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);
}
}
ob_end_clean();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename='.$title.'.xls');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
}
public function addPost(){
$param = $this->request->param();
if($param['jm_id']){
$info = Db::name('jiameng')->field('title')->where('id',$param['jm_id'])->find();
if(empty($info)){
$this->error('品牌id无效');
}else{
$param['jm_title'] = $info['title'];
}
}
if(!empty($param['jm_title']))
{
$info_title = Db::name('jiameng')->field('id')->where('title',$param['jm_title'])->find();
if(!$info_title)
{
$this->error('没有该品牌信息');
}
$param['jm_id']=$info_title['id'];
}
//mobile
if(strlen($param['mobile']) == 11)
{
if(!$this->checkPhoneNumberValidate($param['mobile'])){
$this->error('手机号码不正确');
}
}else{
$this->error('手机号码不正确');
}
if(empty($param['catname']))
{
$this->error('分类不能为空');
}
//$week_time=time()-604800;
// $res_mobile=Db::name('category')->where('mobile',$param['mobile'])->where('create_time','>',$week_time)->find();
// if($res_mobile)
// {
// $this->error('手机号码一个周内只能留一次');
// }
// $ip=get_client_ip();
// $start_time=strtotime(date('Y-m-d') );
// $ip_count=Db::name('category')->where('ip',$ip)->where('create_time','>',$start_time)->count();
// if($ip_count>1)
// {
// $this->error('同一个ip一天只可以留言2次');
// }
// ppppppppp
if($param['catname']){
$cat=Db::name('category')->where('catname',$param['catname'])->find();
if(!empty($cat)){
$param['catid']=$cat['id'];
}else{
$this->error('添加失败,没有该分类');
}
}
// ppppppppp
$param['create_time'] = time();
$res = Db::name('message')->insert($param);
if($res){
$this->success('添加成功');
}else{
$this->error('添加失败');
}
}
private function checkPhoneNumberValidate($phone_number){
$g = "/^1[34578]\d{9}$/";
$g2 = "/^19[89]\d{8}$/";
$g3 = "/^166\d{8}$/";
if(preg_match($g, $phone_number)){
return true;
}else if(preg_match($g2, $phone_number)){
return true;
}else if(preg_match($g3, $phone_number)){
return true;
}
return false;
}
/**
* 信息分配给用户
*/
public function fenpei(){
$param = $this->request->param();
if(count($param['msg'])<1){
$this->error('请选择信息');
}
if(count($param['members'])<1){
$this->error('请选择用户');
}
foreach($param['msg'] as $k=>$v){
foreach($param['members'] as $kk=>$vv){
$data = array(
'msg_id' => $v,
'user_id'=> $vv
);
$yicha = Db::name('message_fp')->where($data)->count();
if($yicha){
}else{
$data['create_time'] = time();
Db::name('message_fp')->insert($data);
}
}
}
$this->success('分配成功');
}
public function edit(){
$param = $this->request->param();
isset($param['id']) or $this->error('需要id');
$users = Db::name('user')->where('id','gt',1)->select();
$this->assign('users',$users);
//已分配的
$yifen = Db::name('Message_fp')->where('msg_id',$param['id'])->select();
$yifenarr = array();
foreach($yifen as $k=>$v){
$yifenarr[] = $v['user_id'];
}
$this->assign('yifenarr',$yifenarr);
$info = Db::name('Message')->where('id',$param['id'])->find();
$this->assign('info',$info);
return $this->fetch();
}
public function editPost(){
$param = $this->request->param();
isset($param['id']) or $this->error('需要id');
//先删掉
Db::name('Message_fp')->where('msg_id',$param['id'])->delete();
foreach($param['members'] as $kk=>$vv){
$data = array(
'msg_id' => $param['id'],
'user_id'=> $vv,
'create_time' => time()
);
Db::name('message_fp')->insert($data);
}
$this->success('调整成功');
}
public function edit1(){
$param = $this->request->param();
isset($param['id']) or $this->error('需要id');
$info = Db::name('Message')->where('id',$param['id'])->find();
$this->assign('info',$info);
return $this->fetch();
}
public function editCatePost(){
$param = $this->request->param();
isset($param['id']) or $this->error('需要id');
//先删掉
// ppppppppp
if($param['catname']){
$cat=Db::name('category')->where('catname',$param['catname'])->find();
if(!empty($cat)){
$param['catid']=$cat['id'];
}else{
$this->error('添加失败,没有该分类');
}
}
// ppppppppp
$res = Db::name('message')->update($param);
$this->success('修改成功');
}
public function delete(){
$param = $this->request->param();
isset($param['id']) or $this->error('需要id');
$res = Db::name('Message')->where('id',$param['id'])->delete();
if($res){
$this->success('删除成功');
}else{
$this->error('删除失败');
}
}
/**
* 获取树的信息
*/
public function getAccessTreeData(){
$rs_array=[];
$list=Db::name('category')->order(["list_order" => "ASC"])->select()->toArray();
if(!empty($list)){
foreach($list as $k=>$v){
$rs_array[$v['id']]=$v;
$parents=$this->getDeepParent($v);
foreach($parents as $pv){
$rs_array[$pv['id']]=$pv;
}
}
}else{
$rs_array=$list;
}
if(!empty($rs_array)){
foreach($rs_array as $k=>$v){
$rs_array[$k]['name']=$v['catname'];
$rs_array[$k]['iconSkin']='dept';
}
}
return array_values($rs_array);
}
/**
* 父节点数据
*/
public function getDeepParent($data){
$temp_array=[];
$parent_data_info=Db::name('category')->where('id',$data['parent_id'])->find();
if(empty($parent_data_info)){
return $temp_array;
}
if(!empty($parent_data_info)){
$temp_array[$parent_data_info['id']]=$parent_data_info;
$rs_array=$this->getDeepParent($parent_data_info);
}
return array_merge($temp_array,$rs_array);
}
public function shanghu(){
$param = $this->request->param();
$shname = isset($param['shname'])?trim($param['shname']):'';
$map = array();
if($shname){
$map['a.user_login'] = $shname;
}
$shanghu_list = Db::name('user')->alias('a')->field('a.user_login,a.id as shid,b.*')->leftJoin('jm_user_fp b','a.id=b.userid')->where('a.user_type',3)->where($map)->paginate(20);
$this->assign('lists',$shanghu_list);
//分类信息
$cates = Db::name('category')->select();
$cate_arr = array();
foreach($cates as $k=>$v){
$cate_arr[$v['id']] = $v['catname'];
}
$this->assign('shname',$shname);
$this->assign('cate_arr',$cate_arr);
return $this->fetch();
}
/**
* 编辑商户
*/
public function shanghuEdit(){
$param = $this->request->param();
isset($param['userid']) or $this->error('需要id');
$info = array();
$info = Db::name('user_fp')->where('userid',$param['userid'])->find();
$userinfo = Db::name('user')->where('id',$param['userid'])->find();
if(empty($info)){
$ypz = 0;
}else{
$ypz = 1;
}
//分类信息
$cates = Db::name('category')->where('parent_id','gt',0)->select();
$this->assign('cates',$cates);
$this->assign('userinfo',$userinfo);
$this->assign('ypz',$ypz);
$this->assign('info',$info);
return $this->fetch();
}
public function shanghuPost(){
$param = $this->request->param();
isset($param['from_time'])&&$param['from_time']!='' or $this->error('需要开始时间');
// isset($param['end_time'])&&$param['end_time']!='' or $this->error('需要开始时间');
isset($param['cates'])&&count($param['cates'])>0 or $this->error('请选择至少一个分类');
$param['cates'] = implode(",",$param['cates']);
$param['from_time'] = strtotime($param['from_time']);
$param['end_time'] = strtotime($param['end_time']);
//pppppp
if(!$param['enable']){
$param['enable']='2';
}
//pppppp
if($param['ypz']==1){
//更新
unset($param['ypz']);
$param['update_time'] = time();
$res = Db::name('user_fp')->where('userid',$param['userid'])->update($param);
}else{
//添加
unset($param['ypz']);
$param['create_time'] = time();
$res = Db::name('user_fp')->insert($param);
}
if($res){
$this->success('调整成功');
}else{
$this->error('调整失败');
}
}
public function addPostl()
{
$param = $this->request->param();
unset($param['role_id']);
if(empty($param['user_login']))
{
$this->error('用户不能为空');
}
if(empty($param['user_pass']))
{
$this->error('密码不能为空');
}
$param['create_time']=time();
$info = Db::name('user')->where('user_login',$param['user_login'])->find();
if($info){
$this->error('该用户已经存在');
}
$param['user_pass'] = cmf_password($_POST['user_pass']);
$res = Db::name('user')->insert($param);
if($res){
$this->success("添加成功!", url("user/admin_index/shanghu"));
}else{
$this->error('添加失败');
}
}
public function editShanghu()
{
$param = $this->request->param();
// dump($param);
if($param['id'])
{
$info = Db::name('user')->where('id',$param['id'])->find();
if(!$info){
$this->error('该用户不存在');
}
if($info['user_type']!=3)
{
$this->error('该用户无权限修改');
}
$this->assign('info',$info);
return $this->fetch();
}
}
public function editShanghupost()
{
$param = $this->request->param();
// dump($param);
if($param['id'])
{
if(empty($param['user_login']))
{
$this->error('用户不能为空');
}
if(!empty($param['user_pass']))
{
$param['user_pass'] = cmf_password($_POST['user_pass']);
}else{
unset($param['user_pass']);
}
$info = Db::name('user')->where('user_login',$param['user_login'])->where('id','<>',$param['id'])->find();
if($info){
$this->error('该用户已经存在');
}
$infoa = Db::name('user')->where('id',$param['id'])->find();
if($infoa['user_type']!=3)
{
$this->error('该用户无权限修改');
}
$res = Db::name('user')->update($param);
if($res){
$this->success("修改成功!", url("user/admin_index/shanghu"));
}else{
$this->error('修改失败');
}
}
}
public function deleteshanghu()
{
$param = $this->request->param();
// dump($param);
if($param['id'])
{
$infoa = Db::name('user')->where('id',$param['id'])->find();
if($infoa['user_type']!=3)
{
$this->error('该用户无权限修改');
}
$res = Db::name('user')->delete($param);
if($res){
$this->success("删除成功");
}else{
$this->error('删除失败');
}
}
}
}
|