MessageController.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. <?php
  2. namespace app\admin\controller;
  3. use cmf\controller\AdminBaseController;
  4. use think\Db;
  5. use think\Session;
  6. class MessageController extends AdminBaseController{
  7. public function index(){
  8. //分类信息
  9. $param = $this->request->param();
  10. isset($param['cate_id']) or $param['cate_id']=0;
  11. $this->assign('cate_id',$param['cate_id']);
  12. $username = $_SESSION['think']['name'];
  13. $userinfo = Db::name('user')->where('user_login',$username)->find();
  14. $catid = isset($param['catid'])?$param['catid']:0;
  15. $this->assign("catid",$catid);
  16. if($userinfo['user_type']== 1){
  17. //分类信息
  18. $cate_tree=$this->getAccessTreeData();
  19. $this->assign('cate_tree',json_encode($cate_tree));
  20. $map = array();
  21. $query = array();
  22. if($catid){
  23. $query['catid'] = $catid;
  24. //如果是一级分类则查找所有的子分类
  25. $cateinfo = Db::name('category')->where('id',$catid)->find();
  26. if($cateinfo['parent_id']==0){
  27. $sonarr = Db::name('category')->where('parent_id',$catid)->select()->toArray();
  28. $cate_arr = array();
  29. foreach ($sonarr as $kk=>$vv){
  30. $cate_arr[] = $vv['id'];
  31. }
  32. $map[] = ['catid','in',$cate_arr];
  33. }else{
  34. $map['catid'] = $catid;
  35. }
  36. }
  37. $this->assign('qx',1);
  38. $users = Db::name('user')->where('id','gt',1)->select();
  39. $this->assign('users',$users);
  40. //超级管理员
  41. $lists = Db::name('message')->where($map)->order('id desc')->paginate(20,false,['query'=>$query]);
  42. $this->assign('lists',$lists);
  43. }else{
  44. $map = array();
  45. if($catid){
  46. $map['catid'] = $catid;
  47. }
  48. //普通用户
  49. $this->assign('qx',0);
  50. $userinfo = Db::name('user')->where('user_login',$username)->find();
  51. $userid = $userinfo['id'];
  52. //分配的信息id
  53. $fenpei = Db::name('user_fp')->where('userid',$userid)->find();
  54. // print_r($fenpei);exit;
  55. if(empty($fenpei)){
  56. $lists = array();
  57. }else{
  58. // $cates = explode(',',$fenpei['cates']);
  59. $cates = $fenpei['cates'];
  60. $from = $fenpei['tiaoshu'];
  61. $map[] = ['create_time','>',$fenpei['from_time']];
  62. //ppppp
  63. if($fenpei['enable']==1){
  64. $map2[] = ['p1.create_time','>',$fenpei['from_time']];
  65. $field=['p1.*','concat(LEFT(p1.mobile,4),"****",RIGHT(p1.mobile,3))'=>'mobile','count(p2.id)'=> 'vid' ];
  66. $lists = Db::name('message')
  67. ->alias('p1')
  68. ->leftJoin('mobile_log p2','p1.`id`=p2.`msg_id`')
  69. ->group('p1.`id`')
  70. ->field($field)->where('p1.catid','in',$cates)->where($map2)->limit(0,$from)->select();
  71. }else{
  72. $field=['*'];
  73. $lists = Db::name('message')->field($field)->where('catid','in',$cates)->where($map)->order('id')->limit(0,$from)->select();
  74. }
  75. // $lists = Db::name('message')->field($field)->where('catid','in',$cates)->where($map)->order('id')->limit(0,$from)->select();
  76. //ppppp
  77. // if($from<20){
  78. // $lists = Db::name('message')->where('catid','in',$cates)->where($map)->order('id desc')->limit(0,$from)->select();
  79. // }else{
  80. // $curinfo = Db::name('message')->where('catid','in',$cates)->where($map)->order('id desc')->limit($from,1)->find();
  81. // $curid = $curinfo['id'];
  82. // $lists = Db::name('message')->where('catid','in',$cates)->where($map)->where('id','>',$curid)->order('id desc')->select;
  83. // }
  84. }
  85. $this->assign('fenpei',$fenpei);
  86. $this->assign('lists',$lists);
  87. }
  88. return $this->fetch();
  89. }
  90. public function tomobile()
  91. {
  92. $param = $this->request->param();
  93. $username = $_SESSION['think']['name'];
  94. $userinfo = Db::name('user')->where('user_login',$username)->find();
  95. $userid = $userinfo['id'];
  96. //分配的信息id
  97. $fenpei = Db::name('user_fp')->where('userid',$userid)->find();
  98. $bol=0;
  99. if(!empty($fenpei))
  100. {
  101. $cates = $fenpei['cates'];
  102. $from = $fenpei['tiaoshu'];
  103. $map[] = ['create_time','>',$fenpei['from_time']];
  104. $fromid=['id'=>$param['id']];
  105. $lists = Db::name('message')->field(['id'])->where('catid','in',$cates)->where($map)->order('id')->limit(0,$from)->select()->toArray();
  106. $message = Db::name('message')->field(['id','mobile'])->where('catid','in',$cates)->where($map)->where($fromid)->limit(0,$from)->find();
  107. // dump(Db::table('message')->getLastSql());
  108. foreach ($lists as $value) {
  109. if(in_array($message['id'], $value)){
  110. $bol=$message['mobile'];
  111. }
  112. }
  113. //检查记录
  114. if(!empty($message)){
  115. $mobile_where=['user_id'=>$userid,'msg_id'=>$message['id']];
  116. $mobile_log=Db::name('mobile_log')->where($mobile_where)->find();
  117. if(empty($mobile_log))
  118. {
  119. //如果为空则需要插入记录并在user_fp减少一个点数
  120. //先判断是否还有点数
  121. if($fenpei['points']>0){
  122. $mobile_in['user_id']=$userid;
  123. $mobile_in['msg_id']=$message['id'];
  124. $mobile_in['create_time']=time();
  125. $res=Db::name('mobile_log')->insert($mobile_in);
  126. if($res){
  127. Db::name('user_fp')->where('userid',$userid)->dec('points', 1)->update();
  128. $this->success($message['mobile']);
  129. }
  130. }else{
  131. $this->error('你的点数已经用尽');
  132. }
  133. }else{
  134. $this->success($message['mobile']);
  135. }
  136. }else{
  137. $this->error('数据获取错误');
  138. }
  139. }
  140. }
  141. public function add(){
  142. return $this->fetch();
  143. }
  144. public function export()
  145. {
  146. $map = array();
  147. $username = $_SESSION['think']['name'];
  148. $userinfo = Db::name('user')->where('user_login',$username)->find();
  149. $userid = $userinfo['id'];
  150. //分配的信息id
  151. $fenpei = Db::name('user_fp')->where('userid',$userid)->find();
  152. if(!empty($fenpei))
  153. {
  154. $cates = $fenpei['cates'];
  155. $from = $fenpei['tiaoshu'];
  156. $map[] = ['create_time','>',$fenpei['from_time']];
  157. if($fenpei['enable']==1){
  158. $map2[] = ['p1.create_time','>',$fenpei['from_time']];
  159. $field=['p1.*','FROM_UNIXTIME(p1.create_time)'=>'create_time' ];
  160. $data = Db::name('message')
  161. ->alias('p1')
  162. ->leftJoin('mobile_log p2','p1.`id`=p2.`msg_id`')
  163. ->field($field)->where('p1.catid','in',$cates)->where($map2)->where('p2.user_id',$userid)->limit(0,$from)->select();
  164. }else{
  165. $field=['*'];
  166. $data = Db::name('message')->field($field)->where('catid','in',$cates)->where($map)->order('id')->limit(0,$from)->select();
  167. }
  168. }
  169. $field = array(
  170. 'A' => array('jm_title', '品牌'),
  171. 'B' => array('news_kw', '新闻'),
  172. 'C' => array('catname', '分类'),
  173. 'D' => array('name', '姓名'),
  174. 'E' => array('ip', 'IP'),
  175. 'F' => array('area', '所在区域'),
  176. 'G' => array('tzed', '投资额度'),
  177. 'H' => array('mobile', '电话'),
  178. 'I' => array('content', '留言内容'),
  179. 'J' => array('create_time', '留言时间'),
  180. );
  181. $this->exportExcel($field, $data,date('Y-m-d'));
  182. }
  183. private function exportExcel($field, $list, $title='name')
  184. {
  185. $objPHPExcel = new \PHPExcel();
  186. $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
  187. $objPHPExcel->getActiveSheet()->setTitle('用户信息表');
  188. foreach ($list as $key => $value) {
  189. foreach ($field as $k => $v) {
  190. if ($key == 0) {
  191. $objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);
  192. }
  193. $i = $key + 2;
  194. $objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);
  195. }
  196. }
  197. ob_end_clean();
  198. header("Pragma: public");
  199. header("Expires: 0");
  200. header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  201. header("Content-Type:application/force-download");
  202. header("Content-Type:application/vnd.ms-execl");
  203. header("Content-Type:application/octet-stream");
  204. header("Content-Type:application/download");;
  205. header('Content-Disposition:attachment;filename='.$title.'.xls');
  206. header("Content-Transfer-Encoding:binary");
  207. $objWriter->save('php://output');
  208. }
  209. public function addPost(){
  210. $param = $this->request->param();
  211. if($param['jm_id']){
  212. $info = Db::name('jiameng')->field('title')->where('id',$param['jm_id'])->find();
  213. if(empty($info)){
  214. $this->error('品牌id无效');
  215. }else{
  216. $param['jm_title'] = $info['title'];
  217. }
  218. }
  219. // ppppppppp
  220. if($param['catname']){
  221. $cat=Db::name('category')->where('catname',$param['catname'])->find();
  222. if(!empty($cat)){
  223. $param['catid']=$cat['id'];
  224. }else{
  225. $this->error('添加失败');
  226. }
  227. }
  228. // ppppppppp
  229. $param['create_time'] = time();
  230. $res = Db::name('message')->insert($param);
  231. if($res){
  232. $this->success('添加成功');
  233. }else{
  234. $this->error('添加失败');
  235. }
  236. }
  237. /**
  238. * 信息分配给用户
  239. */
  240. public function fenpei(){
  241. $param = $this->request->param();
  242. if(count($param['msg'])<1){
  243. $this->error('请选择信息');
  244. }
  245. if(count($param['members'])<1){
  246. $this->error('请选择用户');
  247. }
  248. foreach($param['msg'] as $k=>$v){
  249. foreach($param['members'] as $kk=>$vv){
  250. $data = array(
  251. 'msg_id' => $v,
  252. 'user_id'=> $vv
  253. );
  254. $yicha = Db::name('message_fp')->where($data)->count();
  255. if($yicha){
  256. }else{
  257. $data['create_time'] = time();
  258. Db::name('message_fp')->insert($data);
  259. }
  260. }
  261. }
  262. $this->success('分配成功');
  263. }
  264. public function edit(){
  265. $param = $this->request->param();
  266. isset($param['id']) or $this->error('需要id');
  267. $users = Db::name('user')->where('id','gt',1)->select();
  268. $this->assign('users',$users);
  269. //已分配的
  270. $yifen = Db::name('Message_fp')->where('msg_id',$param['id'])->select();
  271. $yifenarr = array();
  272. foreach($yifen as $k=>$v){
  273. $yifenarr[] = $v['user_id'];
  274. }
  275. $this->assign('yifenarr',$yifenarr);
  276. $info = Db::name('Message')->where('id',$param['id'])->find();
  277. $this->assign('info',$info);
  278. return $this->fetch();
  279. }
  280. public function editPost(){
  281. $param = $this->request->param();
  282. isset($param['id']) or $this->error('需要id');
  283. //先删掉
  284. Db::name('Message_fp')->where('msg_id',$param['id'])->delete();
  285. foreach($param['members'] as $kk=>$vv){
  286. $data = array(
  287. 'msg_id' => $param['id'],
  288. 'user_id'=> $vv,
  289. 'create_time' => time()
  290. );
  291. Db::name('message_fp')->insert($data);
  292. }
  293. $this->success('调整成功');
  294. }
  295. public function edit1(){
  296. $param = $this->request->param();
  297. isset($param['id']) or $this->error('需要id');
  298. $info = Db::name('Message')->where('id',$param['id'])->find();
  299. $this->assign('info',$info);
  300. return $this->fetch();
  301. }
  302. public function editCatePost(){
  303. $param = $this->request->param();
  304. isset($param['id']) or $this->error('需要id');
  305. //先删掉
  306. // ppppppppp
  307. if($param['catname']){
  308. $cat=Db::name('category')->where('catname',$param['catname'])->find();
  309. if(!empty($cat)){
  310. $param['catid']=$cat['id'];
  311. }else{
  312. $this->error('添加失败,没有该分类');
  313. }
  314. }
  315. // ppppppppp
  316. $res = Db::name('message')->update($param);
  317. $this->success('修改成功');
  318. }
  319. public function delete(){
  320. $param = $this->request->param();
  321. isset($param['id']) or $this->error('需要id');
  322. $res = Db::name('Message')->where('id',$param['id'])->delete();
  323. if($res){
  324. $this->success('删除成功');
  325. }else{
  326. $this->error('删除失败');
  327. }
  328. }
  329. /**
  330. * 获取树的信息
  331. */
  332. public function getAccessTreeData(){
  333. $rs_array=[];
  334. $list=Db::name('category')->order(["list_order" => "ASC"])->select()->toArray();
  335. if(!empty($list)){
  336. foreach($list as $k=>$v){
  337. $rs_array[$v['id']]=$v;
  338. $parents=$this->getDeepParent($v);
  339. foreach($parents as $pv){
  340. $rs_array[$pv['id']]=$pv;
  341. }
  342. }
  343. }else{
  344. $rs_array=$list;
  345. }
  346. if(!empty($rs_array)){
  347. foreach($rs_array as $k=>$v){
  348. $rs_array[$k]['name']=$v['catname'];
  349. $rs_array[$k]['iconSkin']='dept';
  350. }
  351. }
  352. return array_values($rs_array);
  353. }
  354. /**
  355. * 父节点数据
  356. */
  357. public function getDeepParent($data){
  358. $temp_array=[];
  359. $parent_data_info=Db::name('category')->where('id',$data['parent_id'])->find();
  360. if(empty($parent_data_info)){
  361. return $temp_array;
  362. }
  363. if(!empty($parent_data_info)){
  364. $temp_array[$parent_data_info['id']]=$parent_data_info;
  365. $rs_array=$this->getDeepParent($parent_data_info);
  366. }
  367. return array_merge($temp_array,$rs_array);
  368. }
  369. public function shanghu(){
  370. $param = $this->request->param();
  371. $shname = isset($param['shname'])?trim($param['shname']):'';
  372. $map = array();
  373. if($shname){
  374. $map['a.user_login'] = $shname;
  375. }
  376. $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);
  377. $this->assign('lists',$shanghu_list);
  378. //分类信息
  379. $cates = Db::name('category')->select();
  380. $cate_arr = array();
  381. foreach($cates as $k=>$v){
  382. $cate_arr[$v['id']] = $v['catname'];
  383. }
  384. $this->assign('shname',$shname);
  385. $this->assign('cate_arr',$cate_arr);
  386. return $this->fetch();
  387. }
  388. /**
  389. * 编辑商户
  390. */
  391. public function shanghuEdit(){
  392. $param = $this->request->param();
  393. isset($param['userid']) or $this->error('需要id');
  394. $info = array();
  395. $info = Db::name('user_fp')->where('userid',$param['userid'])->find();
  396. $userinfo = Db::name('user')->where('id',$param['userid'])->find();
  397. if(empty($info)){
  398. $ypz = 0;
  399. }else{
  400. $ypz = 1;
  401. }
  402. //分类信息
  403. $cates = Db::name('category')->where('parent_id','gt',0)->select();
  404. $this->assign('cates',$cates);
  405. $this->assign('userinfo',$userinfo);
  406. $this->assign('ypz',$ypz);
  407. $this->assign('info',$info);
  408. return $this->fetch();
  409. }
  410. public function shanghuPost(){
  411. $param = $this->request->param();
  412. isset($param['from_time'])&&$param['from_time']!='' or $this->error('需要开始时间');
  413. // isset($param['end_time'])&&$param['end_time']!='' or $this->error('需要开始时间');
  414. isset($param['cates'])&&count($param['cates'])>0 or $this->error('请选择至少一个分类');
  415. $param['cates'] = implode(",",$param['cates']);
  416. $param['from_time'] = strtotime($param['from_time']);
  417. $param['end_time'] = strtotime($param['end_time']);
  418. //pppppp
  419. if(!$param['enable']){
  420. $param['enable']='2';
  421. }
  422. //pppppp
  423. if($param['ypz']==1){
  424. //更新
  425. unset($param['ypz']);
  426. $param['update_time'] = time();
  427. $res = Db::name('user_fp')->where('userid',$param['userid'])->update($param);
  428. }else{
  429. //添加
  430. unset($param['ypz']);
  431. $param['create_time'] = time();
  432. $res = Db::name('user_fp')->insert($param);
  433. }
  434. if($res){
  435. $this->success('调整成功');
  436. }else{
  437. $this->error('调整失败');
  438. }
  439. }
  440. }