getContentMenu(); $this->model_id = $model_id = 55; //$this->model_id = $model_id = $this->request->param('model_id') = 55; $list = db('Model')->column('*', 'id'); if (empty($list[$model_id])) { return $this->error("无此模型!"); } else { $this->modelInfo = $list[$model_id]; $this->model = M($this->modelInfo['name']); } $this->assign('model_id', $model_id); $this->assign('model_list', $list); } /** * 内容列表 * @return [html] [页面内容] * @author netlife <40150501@qq.com> */ public function index() { if ($this->modelInfo['list_grid'] == '') { return $this->error("列表定义不正确!", url('admin/model/edit', array('id' => $this->modelInfo['id']))); } $grid_list = get_grid_list($this->modelInfo['list_grid']); // 关键字搜索 $search_key =$this->modelInfo['search_key']?$this->modelInfo['search_key']:'title'; $order = "id desc"; $map = $this->buildMap($search_key); $field = array_filter($grid_list['fields']); $map['type'] = 1; if(session('user_auth.group')!=999){ $map['uid'] = session('user_auth.uid'); if(session('wxmpid')){ $map['wxmpid'] =session('wxmpid'); } } $list = $this->model->where($map)->order($order)->paginate($this->modelInfo['list_row']); $data = array( 'grid' => $grid_list, 'list' => $list, 'page' => $list->render(), ); if ($this->modelInfo['template_list']) { $template = 'content/' . $this->modelInfo['template_list']; } else { $template = 'customservice/index'; } $this->assign($data); $this->setMeta($this->modelInfo['title'] . "列表"); return $this->fetch($template); } /** * text [文本消息] * * @return type **/ public function text() { if ($this->modelInfo['list_grid'] == '') { return $this->error("列表定义不正确!", url('admin/model/edit', array('id' => $this->modelInfo['id']))); } $grid_list = get_grid_list($this->modelInfo['list_grid']); // 关键字搜索 $search_key =$this->modelInfo['search_key']?$this->modelInfo['search_key']:'title'; $order = "id desc"; $map = $this->buildMap($search_key); $field = array_filter($grid_list['fields']); $map['type'] = 2; if(session('user_auth.group')!=999){ $map['uid'] = session('user_auth.uid'); if(session('wxmpid')){ $map['wxmpid'] =session('wxmpid'); } } $list = $this->model->where($map)->order($order)->paginate($this->modelInfo['list_row']); $data = array( 'grid' => $grid_list, 'list' => $list, 'page' => $list->render(), ); $template = 'customservice/text'; $this->assign($data); $this->setMeta("文本消息列表"); return $this->fetch($template); } /** * 内容添加 * @author netlife <40150501@qq.com> */ public function add() { if (IS_POST) { $this->param['model_id'] = 55; $this->param['wxmpid'] = session('wxmpid'); $this->param['uid'] = session('user_auth.uid'); if($this->param['scheduled_at']){ $this->param['scheduled_at'] =strtotime($this->param['scheduled_at']); } foreach ($this->param['param']["articles"] as $k=>$v){ $this->param['param']["articles"][$k]["picurl"] = config('web_site_url').$v["picurl"]; } $this->param['param']=json_encode($this->param['param']); $this->param['create_time'] =time(); $this->param['update_time'] =time(); //unset($this->param['id']); $result = $this->model->save($this->param); if ($result) { //记录行为 //action_log('add_content', 'content', $result, session('user_auth.uid')); return $this->success("添加成功!", url('admin/customservice/index', array('model_id' => $this->modelInfo['id']))); } else { return $this->error($this->model->getError(), url('admin/customservice/add', array('model_id' => $this->modelInfo['id']))); } } else { $uid = session('user_auth.uid'); $info = db('wxmp')->where(array('uid'=>$uid))->find(); if(empty($info)) return $this->error("您的公众号配置不完整,请务必配置好公众号信息。"); $turl = db('tuiguang')->where('uid',$uid)->select(); $info = array( 'model_id' => $this->modelInfo['id'], ); $data = array( 'info' => $info, 'turl' => $turl, 'fieldGroup' => $this->getField($this->modelInfo), ); if ($this->modelInfo['template_add']) { $template = 'customservice/' . $this->modelInfo['template_add']; } else { $template = 'customservice/add'; } $this->assign($data); $this->setMeta("添加" . $this->modelInfo['title']); return $this->fetch($template); } } public function addtext() { if (IS_POST) { //$this->param['model_id'] = 55; $this->param['wxmpid'] = session('wxmpid'); $this->param['uid'] = session('user_auth.uid'); if($this->param['scheduled_at']){ $this->param['scheduled_at'] =strtotime($this->param['scheduled_at']); } $this->param['create_time'] =time(); $this->param['update_time'] =time(); //unset($this->param['id']); $result = $this->model->save($this->param); if ($result) { //记录行为 //action_log('add_content', 'content', $result, session('user_auth.uid')); return $this->success("添加成功!", url('admin/customservice/text', array('model_id' => $this->modelInfo['id']))); } else { return $this->error($this->model->getError(), url('admin/customservice/addtext', array('model_id' => $this->modelInfo['id']))); } } else { $uid = session('user_auth.uid'); $info = db('wxmp')->where(array('uid'=>$uid))->find(); if(empty($info)) return $this->error("您的公众号配置不完整,请务必配置好公众号信息。"); $info = array( 'model_id' => $this->modelInfo['id'], ); $data = array( 'info' => $info, 'fieldGroup' => $this->getField($this->modelInfo), ); $template = 'customservice/addtext'; $this->assign($data); $this->setMeta("添加文本消息"); return $this->fetch($template); } } /** * 内容修改 * @author netlife <40150501@qq.com> */ public function edit($id) { if (IS_POST) { $this->param['model_id'] = 55; $this->param['scheduled_at'] =strtotime($this->param['scheduled_at']); foreach ($this->param['param']["articles"] as $k=>$v){ if(strpos($v["picurl"],'http')===false){ $this->param['param']["articles"][$k]["picurl"] = config('web_site_url').$v["picurl"]; } } $this->param['param']=json_encode($this->param['param']); $result = $this->model->save($this->param,array('id'=>$this->param['id'])); if ($result !== false) { //记录行为 //action_log('update_content', 'content', $result, session('user_auth.uid')); return $this->success("更新成功!", url('admin/customservice/index', array('model_id' => $this->modelInfo['id']))); } else { return $this->error($this->model->getError(), url('admin/customservice/edit', array('model_id' => $this->modelInfo['id'], 'id' => $id))); } } else { if (!$id) { return $this->error("非法操作!"); } $info = $this->model->find($id); if (!$info) { return $this->error($this->model->getError()); } $info['model_id'] = $this->modelInfo['id']; $data = array( 'info' => $info, 'fieldGroup' => $this->getField($this->modelInfo), ); if ($this->modelInfo['template_edit']) { $template = 'customservice/' . $this->modelInfo['template_edit']; } else { $template = 'customservice/edit'; } $this->assign($data); $this->setMeta("编辑" . $this->modelInfo['title']); return $this->fetch($template); } } public function edittext($id) { if (IS_POST) { $this->param['model_id'] = 55; $this->param['scheduled_at'] =strtotime($this->param['scheduled_at']); $result = $this->model->save($this->param,array('id'=>$this->param['id'])); if ($result !== false) { //记录行为 //action_log('update_content', 'content', $result, session('user_auth.uid')); return $this->success("更新成功!", url('admin/customservice/text', array('model_id' => $this->modelInfo['id']))); } else { return $this->error($this->model->getError(), url('admin/customservice/edittext', array('model_id' => $this->modelInfo['id'], 'id' => $id))); } } else { if (!$id) { return $this->error("非法操作!"); } $info = $this->model->find($id); if (!$info) { return $this->error($this->model->getError()); } $info['model_id'] = $this->modelInfo['id']; $data = array( 'info' => $info, 'fieldGroup' => $this->getField($this->modelInfo), ); $this->assign($data); $this->setMeta("编辑文本消息"); return $this->fetch(); } } /** * 内容删除 * @author netlife <40150501@qq.com> */ public function del() { $id = $this->getArrayParam('id'); if (empty($id)) { return $this->error("非法操作!"); } $map['id'] = array('IN', $id); $result = $this->model->where($map)->delete(); if (false !== $result) { //记录行为 action_log('delete_content', 'content', $result, session('user_auth.uid')); return $this->success("删除成功!"); } else { return $this->error("删除失败!"); } } /** * 设置状态 * @author netlife <40150501@qq.com> */ public function status($id, $status) { $map['id'] = $id; $result = $this->model->where($map)->setField('status', $status); if (false !== $result) { return $this->success("操作成功!"); } else { return $this->error("操作失败!!"); } } /** * 设置置顶 * @author netlife <40150501@qq.com> */ public function settop($id, $is_top) { $map['id'] = $id; $result = $this->model->where($map)->setField('is_top', $is_top); if (false !== $result) { return $this->success("操作成功!"); } else { return $this->error("操作失败!!"); } } /** * 获取字段信息 * @return array 字段数组 * @author netlife <40150501@qq.com> */ protected function getField() { $field_group = parse_config_attr($this->modelInfo['attribute_group']); $map['model_id'] = $this->modelInfo['id']; if ($this->request->action() == 'add') { $map['is_show'] = array('in', array('1', '2')); } elseif ($this->request->action() == 'edit') { $map['is_show'] = array('in', array('1', '3')); } //获得数组的第一条数组 $rows = model('Attribute')->getFieldlist($map, 'id'); if (!empty($rows)) { foreach ($rows as $key => $value) { $list[$value['group_id']][] = $value; } foreach ($field_group as $key => $value) { $fields[$value] = isset($list[$key]) ? $list[$key] : array(); } }else{ $fields = array(); } return $fields; } /** * 创建搜索 * @return [array] [查询条件] */ protected function buildMap($search_key) { $map = array(); $data = $this->request->param(); foreach ($data as $key => $value) { if ($value) { if ($key == 'keyword') { $map[$search_key] = array("LIKE", "%$value%"); } elseif ($key == 'category') { $map['category_id'] = $value; } elseif ($key == 'create_time') { $map['create_time'] = array('BETWEEN', array(strtotime($value[0]), strtotime($value[1]))); } else { $map[$key] = $value; } } } if (isset($map['page'])) { unset($map['page']); } if (isset($map['model_id'])) { unset($map['model_id']); } $this->assign($data); return $map; } /** * 检测需要动态判断的文档类目有关的权限 * * @return boolean|null * 返回true则表示当前访问有权限 * 返回false则表示当前访问无权限 * 返回null,则会进入checkRule根据节点授权判断权限 * * @author 朱亚杰 */ protected function checkDynamic() { $model_id = $this->request->param('model_id'); if (IS_ROOT) { return true; //管理员允许访问任何页面 } $models = model('AuthGroup')->getAuthModels(session('user_auth.uid')); if (!$model_id) { return false; } elseif (in_array($model_id, $models)) { //返回null继续判断操作权限 return null; } else { return false; //无权限 } return false; } /** * api_get_titles [desc] * * @return type **/ public function api_get_titles() { $titles = db('articles_titles')->where('status=1')->order('id desc')->select(); header('Content-type: text/json'); echo json_encode($titles); exit(); } public function api_get_covers() { $covers = db('articles_covers')->where('status=1')->order('id desc')->select(); header('Content-type: text/json'); foreach ($covers as $k=>$v){ $result[$k]=$v; $result[$k]['cover_url']=get_cover($v['cover_url'],'path'); } echo json_encode($result); exit(); } public function api_suggest() { $uid = session('user_auth.uid'); $turl = db('tuiguang')->where('uid',$uid)->field('id,types,title as description,uid')->select(); if($turl){ $url =[]; foreach ($turl as $k=>$vo){ switch($vo['types']){ case 1: $types = '首页推广'; break; case 2: $types = '热门推荐'; break; default: $types = $vo['description']; } $url[$k]['id'] =$vo['id']; $url[$k]['description'] =$types; $url[$k]['url'] =get_agent($vo['id'],$vo['uid']); } } header('Content-type: text/json'); echo json_encode($url); exit(); } public function api_check_mp_settings() { $uid = session('user_auth.uid'); $info = db('wxmp')->where(array('uid'=>$uid))->find(); header('Content-type: text/json'); if(empty($info)){ echo json_encode(array('valid'=>false)); }else{ echo json_encode(array('valid'=>true)); } exit(); } public function api_get_templates() { $message = &load_wechat(1,'Message'); $msg = $message->getAllPrivateTemplate(); header('Content-type: text/json'); echo json_encode($msg["template_list"]); exit(); } public function api_get() { $id= input('get.id'); $info = db('customservice')->where("id=$id")->find(); $info['create_time'] = date('Y-m-d H:i',$info['create_time']); $info['update_time'] = date('Y-m-d H:i',$info['update_time']); $info['scheduled_at'] = date('Y-m-d H:i',$info['scheduled_at']); $info['param'] = json_decode($info['param'],true); header('Content-type: text/json'); echo json_encode($info); exit(); } /** * api_test [测试] * * @return type **/ public function api_test() { $data = $this->request->param(); if($data["url"]&&$data["param"]["articles"]){ foreach ($data["param"]["articles"] as $k=>$v){ if($k==0){ $data["param"]["articles"][$k]["url"] = $data["url"]; } if(strpos($v["picurl"],'http')===false){ $data["param"]["articles"][$k]["picurl"] = config('web_site_url').$v['picurl']; } } } $uid = session('user_auth.uid'); $appid = db('wxmp')->where(array('uid'=>$uid))->value('appid'); $openid = db('MemberUserapi')->where(array('uid'=>$data['test_member_id'],"appid"=>$appid))->value('wxmpid'); if(empty($openid)){ echo json_encode(array("code"=>1099)); exit(); } $result = $this->send_message($openid,$data["param"]); if($result["errmsg"]=="ok"){ echo json_encode(array("code"=>0)); exit(); } } /*****发送客服消息******/ protected function send_message($openid,$data){ $uid = session('user_auth.uid'); $receive = &load_wechat($uid,'Receive'); if (count($data["articles"]) > 1){ $content = ""; foreach ($data["articles"] as &$item) { $content .= emoji("\ue315").emoji("\ue231").''.$item["title"].''.PHP_EOL.PHP_EOL; } $template = array( "touser"=>$openid, "msgtype"=>"text", "text"=>array('content'=>trim($content.emoji("\ue003")."为方便阅读请置顶公众号!每天点击菜单栏,签到天天送书币!".emoji("\ue003"))) ); }else{ $template = array( "touser"=>$openid, "msgtype"=>"news", "news"=>$data ); } $msg = $receive->sendCustomMessage($template); return $msg; } public function rich_msg() { $id =input('id'); $info = db('customservice')->where("id=".$id)->find(); $param = json_decode($info["param"],true); //合并头条链接 if($info["url"]&&$param["articles"]){ foreach ($param["articles"] as $kk=>$vv){ if($kk==0){ $param["articles"][$kk]["url"] = $info["url"]; } } } //获取推送用户 $appid= db('wxmp')->where('uid='.$info['uid'])->value('appid'); if($info["andience"]==1){//付费用户 $fans = db('wechat_fans')->alias('f')->join(' cps_member_userapi u','u.wxmpid = f.openid','LEFT')->join(' cps_member m','m.uid = u.uid','LEFT')->where(array('f.appid'=>$appid,'f.subscribe'=>1,'m.pay'=>array('>','0'),'f.update_at'=>array('>=',time()-48*3600)))->column('f.id,f.openid'); }elseif($info["andience"]==3){//未付费用户 $fans = db('wechat_fans')->alias('f')->join(' cps_member_userapi u','u.wxmpid = f.openid','LEFT')->join(' cps_member m','m.uid = u.uid','LEFT')->where(array('f.appid'=>$appid,'f.subscribe'=>1,'m.pay'=>0,'f.update_at'=>array('>=',time()-48*3600)))->column('f.id,f.openid'); }else{ $fans = db('wechat_fans')->where(array('appid'=>$appid,'subscribe'=>1,'update_at'=>array('>=',time()-48*3600)))->column('id,openid'); } //开始推送 if($fans){ foreach ($fans as $vo){ $this->send_customservice($info['uid'],$vo,$param); } db('customservice')->where("id=".$id)->update(['completed' =>1,'scheduled_at'=>time()]); return $this->success("推送成功!"); } } /*****发送客服消息函数******/ protected function send_customservice($uid,$openid,$data){ $receive = &load_wechat($uid,'Receive'); $template = array( "touser"=>$openid, "msgtype"=>"news", "news"=>$data ); $result = $receive->sendCustomMessage($template); /** if($result["errmsg"]=="ok"){ echo json_encode(array("code"=>0)); } **/ } }