| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700 |
- <?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('调整失败');
- }
- }
- }
|