Commit ebd3a58adfa6ef563b243e8c2074df074fd872e8

Authored by teemitop
1 parent 10bf282e

优惠券提交

  1 +<?php
  2 +namespace app\admin\controller;
  3 +use think\Db;
  4 +use think\facade\Request;
  5 +class Card extends Common
  6 +{
  7 + /**
  8 + * 商家卡券-优惠券-卡券列表
  9 + */
  10 + public function sellercard(){
  11 + if(Request::isAjax()){
  12 + $data = Request::except('file');
  13 +
  14 + $where = '';
  15 + $channel = $data['channel'] ? $data['channel'] : 1;
  16 +
  17 + $where .= ($channel && $channel==4) ? ' re.type_id in (1,2,3)' : " re.type_id in ($channel)";
  18 + $where .= $data['key'] ? ' and s.sellername like "%'.$data['key'].'%"' : "";
  19 +
  20 + $offset = ($data["page"] - 1) * $data["limit"];
  21 + $limit = " LIMIT $offset,".$data['limit'];
  22 +
  23 + //卡券信息
  24 + $rs = Db::query("SELECT
  25 + s.*
  26 + FROM
  27 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  28 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  29 + WHERE
  30 + ".$where." order by s.sid".$limit);
  31 + //格式化数据
  32 + foreach ($rs as $key => $value) {
  33 + $rs[$key]['create_time'] = date("Y年m月d日",$value['create_time']);
  34 + switch ($value['status']) {
  35 + case '1':
  36 + $rs[$key]['status'] = '已投放';
  37 + break;
  38 + case '2':
  39 + $rs[$key]['status'] = '未投放';
  40 + break;
  41 + case '3':
  42 + $rs[$key]['status'] = '停止投放';
  43 + break;
  44 + default:
  45 + # code...
  46 + break;
  47 + }
  48 + }
  49 +
  50 + //获取总条数
  51 + $total = Db::query("SELECT
  52 + s.id
  53 + FROM
  54 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  55 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  56 + WHERE
  57 + ".$where."");
  58 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  59 + }
  60 + $this->assign ( 'title','商家卡券');
  61 + return $this->fetch();
  62 + }
  63 +
  64 + /**
  65 + * 优惠券-卡券详情
  66 + */
  67 + public function carddetail(){
  68 + //print_r(Request::except('file'));die;
  69 + $data = Request::except('file');
  70 + //获取运营人员列表
  71 + $rs = Db::query("SELECT
  72 + *
  73 + FROM
  74 + `xt-member-two-LINE`.xt_dc_dz_card_info
  75 + WHERE id = ".$data['id']."
  76 + ");
  77 + $this->assign ('rs',$rs);
  78 + $this->assign ( 'title','优惠券详情');
  79 + return $this->fetch();
  80 + }
  81 +
  82 + /**
  83 + * 创建优惠券-选择商户
  84 + */
  85 + public function selectseller(){
  86 + //获取运营人员列表
  87 + $list= file_get_contents(ON_LINE.'App.Seller.GetSellerById&sellerid='.$data['sid']);
  88 + $array = json_decode($list,TRUE);
  89 + if($array['data']['data']){
  90 + $array['data']['data']['daily'] = json_decode($array['data']['data']['daily'],TRUE);
  91 + $array['data']['data']['daily_time'] = json_decode($array['data']['data']['daily_time'],TRUE);
  92 + $array['data']['data']['cdate'] = date("Y年m月d日 H时i分s秒",$array['data']['data']['cdate']);
  93 + }
  94 + //获取短信流水
  95 + $sms= file_get_contents(ON_LINE.'App.SendSMS.GetSellerSmsFlowing&sid='.$data['sid']);
  96 + $sms_data = json_decode($sms,TRUE);
  97 + $sms_data_list = $sms_data['data'] ? $sms_data['data'] : array();
  98 + $this->assign ( 'smslist',$sms_data_list);
  99 + $this->assign ( 'data',$array['data']['data']);
  100 + $this->assign ( 'title','创建卡券');
  101 + return $this->fetch();
  102 + }
  103 +
  104 + /**
  105 + * 创建优惠券-商家列表
  106 + */
  107 + public function sellerlist(){
  108 + if(Request::isAjax()){
  109 + $data = Request::except('file');
  110 +
  111 + $where = '';
  112 + $channel = $data['channel'] ? $data['channel'] : 1;
  113 +
  114 + $where .= ($channel && $channel==4) ? ' re.type_id in (1,2,3)' : " re.type_id in ($channel)";
  115 + $where .= $data['key'] ? ' and s.sellername like "%'.$data['key'].'%"' : "";
  116 +
  117 +
  118 + $offset = ($data["page"] - 1) * $data["limit"];
  119 + $limit = " LIMIT $offset,".$data['limit'];
  120 +
  121 + //商家基本数据
  122 + $rs = Db::query("SELECT
  123 + s.id,
  124 + s.sellername
  125 + FROM
  126 + `xt-member-two-LINE`.xt_seller AS s
  127 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  128 + WHERE
  129 + s.isopen_dc = 1
  130 + AND ".$where." GROUP BY s.id order by s.id".$limit);
  131 + //获取总条数
  132 + $total = Db::query("SELECT
  133 + s.id
  134 + FROM
  135 + `xt-member-two-LINE`.xt_seller AS s
  136 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  137 + WHERE
  138 + s.isopen_dc = 1
  139 + AND ".$where."
  140 + GROUP BY
  141 + s.id");
  142 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  143 + }
  144 + return $this->fetch();
  145 + }
  146 +
  147 + /**
  148 + * 创建优惠券-卡券类型选择
  149 + */
  150 + public function cardtypelist(){
  151 + if(Request::isAjax()){
  152 + //商家基本数据
  153 + $rs = Db::query("SELECT
  154 + *
  155 + FROM
  156 + `xt-member-two-LINE`.xt_dc_dz_card_base ");
  157 +
  158 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'rel'=>2];
  159 + }
  160 + return $this->fetch();
  161 + }
  162 +
  163 + /**
  164 + * 创建优惠券-完成创建
  165 + */
  166 + public function add_card(){
  167 + $data = Request::except('file');
  168 + if(Request::isAjax()){
  169 + $arr = [];
  170 + $arr['sid'] = $data['seller_id'];
  171 + $arr['sellername'] = $data['seller_name'];
  172 + $arr['bid'] = $data['card_id'];
  173 + $arr['card_title'] = $data['title'];
  174 + $arr['price'] = $data['price'];
  175 + $arr['owner'] = $data['card_from_type'];
  176 + $time = $data['date'] ? explode(' - ', $data['date']) : '';
  177 + $arr['start_time'] = $time ? strtotime(date($time[0],time())) : '';
  178 + $arr['end_time'] = $time ? strtotime(date($time[1],time())) : '';
  179 + $arr['create_time']= time();
  180 + $arr['creator'] = $_SESSION['think']['username'];
  181 + //有新加参数 需在此后追加。。。
  182 +
  183 + $key = implode(',',array_keys($arr));
  184 +
  185 + $res = Db::query("INSERT INTO `xt-member-two-LINE`.xt_dc_dz_card_info
  186 + ($key)
  187 + VALUES(".$arr['sid'].",'".$arr['sellername']."',".$arr['bid'].",'".$arr['card_title']."',".$arr['price'].",".$arr['owner'].",".$arr['start_time'].",".$arr['end_time'].",".$arr['create_time'].",'".$arr['creator']."')");
  188 +
  189 + if(!$res){
  190 + $result = ['code'=>1,'msg'=>'添加成功!','rel'=>1];
  191 + }else{
  192 + $result = ['code'=>0,'msg'=>'添加失败!','rel'=>1];
  193 + }
  194 + return $result;
  195 + }
  196 + return $this->fetch();
  197 + }
  198 +
  199 +
  200 +
  201 +
  202 +
  203 +
  204 +
  205 +
  206 + /**
  207 + * 停用商家
  208 + */
  209 + public function configStop(){
  210 + if(Request::isAjax()){
  211 + $data = Request::except('file');
  212 + $data['status'] = $data['status'] ? 0 : 1;
  213 + $list= file_get_contents(ON_LINE.'App.Seller.SetStopBySeller&sellerid='.$data['sellerid'].'&status='.$data['status']);
  214 + $array = json_decode($list,TRUE);
  215 + if($array['ret']==200){
  216 + $result['code'] = 1;
  217 + $result['msg'] = 'SUCCESS!';
  218 + }else{
  219 + $result['code'] = 0;
  220 + $result['msg'] = '请求错误!';
  221 + }
  222 + return $result;
  223 + }
  224 + return view();
  225 + }
  226 +
  227 + /**
  228 + * 从商家维度统计:订单、短信等情况
  229 + */
  230 + public function getStatistics(){
  231 + if(Request::isAjax()){
  232 + $data = Request::except('file');
  233 + $key= input('post.key') ? input('post.key') : "";
  234 +
  235 + $sid = $data['sid'] ? implode(',', $data['sid']) : '';
  236 + $sellername = $data['key'] ? $data['key'] : '';
  237 +
  238 + $time = $data['time'] ? explode(' - ', $data['time']) : '';
  239 +
  240 + $stime = $time ? strtotime(date($time[0],time())) : '';
  241 + $etime = $time ? strtotime(date($time[1],time())) : '';
  242 +
  243 + $data['time_type'] = $data['time_type'] ? $data['time_type'] : 1;
  244 + $data['channel'] = $data['channel'] ? $data['channel'] : 1;
  245 +
  246 + $parame = '&page='.$data["page"].'&size='.$data["limit"].'&sellername='.@$sellername.'&stime='.@$stime.'&etime='.@$etime.'&channel='.@$data['channel'].'&sid='.$sid.'&time_type='.@$data['time_type'];
  247 +
  248 + //获取运营人员列表
  249 + $list= file_get_contents(ON_LINE.'App.Report.GetReserveData'.$parame);
  250 +
  251 + $array = json_decode($list,TRUE);
  252 +
  253 + $new_array = array();
  254 + foreach ($array['data'] as $key => $value) {
  255 + if(is_array($value)){
  256 + $new_array[$key]['id'] = $value['id'];
  257 + $new_array[$key]['sellername'] = $value['sellername'];
  258 + $new_array[$key]['contacts_total'] = $value['contacts_total'];
  259 + $new_array[$key]['inviting'] = $value['inviting'];
  260 + $new_array[$key]['reserve_count'] = $value['appReserveCount'] .'/'. $value['AndroidReserveCount'].'/'. $value['CReserveCount'];
  261 + $new_array[$key]['reserve_count_sort'] = $value['appReserveCount'] + $value['AndroidReserveCount'] + $value['CReserveCount'];
  262 + $new_array[$key]['sms_send_count'] = $value['appSmsCount'] .'/'. $value['AndroidSmsCount'];
  263 + $new_array[$key]['sms_send_count_sort'] = $value['appSmsCount'] + $value['AndroidSmsCount'];
  264 + $new_array[$key]['table_room_total'] = $value['table_total'] .'/'. $value['room_total'];
  265 + $new_array[$key]['address_component'] = $value['address_component']['province'] && $value['address_component']['city'] ? $value['address_component']['province'] .'-'. $value['address_component']['city'] : '无法获取地区,请检查经纬度是否正确!';
  266 + }
  267 + }
  268 + return $result = [
  269 + 'code'=>0,'msg'=>'获取成功!',
  270 + 'data'=>$new_array,
  271 + 'count'=>$array['data']['total'],
  272 + 'countReserve'=>$array['data']['appReserveCount']+$array['data']['AndroidReserveCount']+$array['data']['CReserveCount'],
  273 + 'countSms'=>$array['data']['appSmsCount']+$array['data']['AndroidSmsCount'],
  274 + 'inviteeCount'=>$array['data']['inviteeCount'],
  275 + 'appReserveCount'=>$array['data']['appReserveCount'],
  276 + 'AndroidReserveCount'=>$array['data']['AndroidReserveCount'],
  277 + 'CReserveCount'=>$array['data']['CReserveCount'],
  278 + 'appSmsCount'=>$array['data']['appSmsCount'],
  279 + 'AndroidSmsCount'=>$array['data']['AndroidSmsCount'],
  280 + 'Contacts'=>$array['data']['Contacts'],
  281 + 'rel'=>1
  282 + ];
  283 + }
  284 + $this->assign ( 'title','预定订单统计');
  285 + return $this->fetch();
  286 + }
  287 +
  288 + /**
  289 + * 从设备(电话机)维度统计:订单、短信等情况
  290 + */
  291 + public function getEquipment(){
  292 + if(Request::isAjax()){
  293 + $data = Request::except('file');
  294 + $key= input('post.key') ? input('post.key') : "";
  295 +
  296 + $sid = $data['sid'] ? implode(',', $data['sid']) : '';
  297 + $sellername = $data['key'] ? $data['key'] : '';
  298 +
  299 + $time = $data['time'] ? explode(' - ', $data['time']) : '';
  300 +
  301 + $stime = $time ? strtotime(date($time[0],time())) : '';
  302 + $etime = $time ? strtotime(date($time[1],time())) : '';
  303 +
  304 + $data['time_type'] = $data['time_type'] ? $data['time_type'] : 1;
  305 + $data['channel'] = $data['channel'] ? $data['channel'] : 1;
  306 +
  307 + $parame = '&page='.$data["page"].'&size='.$data["limit"].'&sellername='.@$sellername.'&stime='.@$stime.'&etime='.@$etime.'&channel='.@$data['channel'].'&sid='.$sid.'&time_type='.@$data['time_type'];
  308 +
  309 + //获取运营人员列表
  310 + $list= file_get_contents(ON_LINE.'App.Report.GetReserveDataBydev'.$parame);
  311 + $array = json_decode($list,TRUE);
  312 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$array['data']['list'],'count'=>$array['data']['total'],'rel'=>1];
  313 + }
  314 + $this->assign ( 'title','设备维度统计预定订单');
  315 + return $this->fetch();
  316 + }
  317 +
  318 + /**
  319 + * 商家菜系、类型配置
  320 + */
  321 + public function sellerconfig(){
  322 + $data = Request::except('file');
  323 + if(Request::isAjax()){
  324 + $cuisine = !empty($data['cuisine']) ? implode(',', array_keys($data['cuisine'])) : '';
  325 + $type = !empty($data['type']) ? implode(',', array_keys($data['type'])) : '';
  326 + $mode = !empty($data['mode']) ? implode(',', array_keys($data['mode'])) : '';
  327 + $sms_code = !empty($data['sms_code']) ? $data['sms_code'] : '';
  328 + $label = !empty($data['label']) ? implode(',', array_keys($data['label'])) : '';
  329 + $brand = !empty($data['brand']) ? implode(',', array_keys($data['brand'])) : '';
  330 + $label_1_ = !empty($data['label_1_']) ? implode(',', array_keys($data['label_1_'])) : '';
  331 + $label_2_ = !empty($data['label_2_']) ? implode(',', array_keys($data['label_2_'])) : '';
  332 + $label_3_ = !empty($data['label_3_']) ? implode(',', array_keys($data['label_3_'])) : '';
  333 + $is_checked_call = !empty($data['is_checked_call']) ? $data['is_checked_call'] : '';
  334 + $is_checked_lite = !empty($data['is_checked_lite']) ? $data['is_checked_lite'] : '';
  335 +
  336 + if(isset($data['reserve_mode'])) {
  337 + //需要修改 接单设备信息
  338 + if($data['reserve_mode']==1){
  339 + if($is_checked_lite)
  340 + $up=Db::query("UPDATE `xt-member-two-LINE`.xt_dc_dz_seller_config set is_checked_lite = 1 where sid = ".$data['sellerid']);
  341 + else
  342 + $up=Db::query("UPDATE `xt-member-two-LINE`.xt_dc_dz_seller_config set is_checked_lite = 0 where sid = ".$data['sellerid']);
  343 + if($is_checked_call)
  344 + $up=Db::query("UPDATE `xt-member-two-LINE`.xt_dc_dz_seller_config set is_checked_call = 1 where sid = ".$data['sellerid']);
  345 + else
  346 + $up=Db::query("UPDATE `xt-member-two-LINE`.xt_dc_dz_seller_config set is_checked_call = 0 where sid = ".$data['sellerid']);
  347 + }
  348 + $up=Db::query("UPDATE `xt-member-two-LINE`.xt_dc_dz_seller_config set reserve_mode = ".$data['reserve_mode']." where sid = ".$data['sellerid']);
  349 + }
  350 +
  351 + if($sms_code)
  352 + $res_sms_code= file_get_contents(ON_LINE.'App.SendSMS.SetSellerSmsTemplate&sid='.$data['sellerid'].'&sms_id='.$sms_code);
  353 +
  354 + if($cuisine)
  355 + $res_cuisine= file_get_contents(ON_LINE.'App.Seller.SetSellerCuisine&sellerid='.$data['sellerid'].'&cid='.$cuisine);
  356 + //$res_cuisine = json_decode($res_cuisine,TRUE);
  357 + if($type)
  358 + $res_type= file_get_contents(ON_LINE.'App.Seller.SetSellerType&sellerid='.$data['sellerid'].'&typeid='.$type);
  359 + //$res_type = json_decode($res_type,TRUE);
  360 +
  361 + if($mode)
  362 + $res_mode= file_get_contents(ON_LINE.'App.Seller.setSellerMode&sellerid='.$data['sellerid'].'&modeid='.$mode);
  363 + //$res_mode = json_decode($res_mode,TRUE);
  364 + if($label)
  365 + $res_label= file_get_contents(ON_LINE.'App.Seller.setSellerLabel&sid='.$data['sellerid'].'&field='.$label);
  366 +
  367 + if($brand){
  368 + $del=Db::query("DELETE FROM `xt-member-two-LINE`.xt_dc_dz_seller_brand_rel WHERE sid =".$data['sellerid']);
  369 + $add=Db::query("INSERT INTO `xt-member-two-LINE`.xt_dc_dz_seller_brand_rel VALUES(".$data['sellerid'].",".$brand.")");
  370 + }
  371 +
  372 + if($label_1_){
  373 + $del=Db::query("DELETE FROM `xt-member-two-LINE`.xt_dc_dz_seller_label_c_rel WHERE sid = ".$data['sellerid']." AND lcid in (SELECT id FROM `xt-member-two-LINE`.xt_dc_dz_seller_label_c WHERE pid = 1)");
  374 + $add=Db::query("INSERT INTO `xt-member-two-LINE`.xt_dc_dz_seller_label_c_rel VALUES(".$data['sellerid'].",".$label_1_.")");
  375 + }
  376 +
  377 + if($label_2_){
  378 + $del=Db::query("DELETE FROM `xt-member-two-LINE`.xt_dc_dz_seller_label_c_rel WHERE sid = ".$data['sellerid']." AND lcid in (SELECT id FROM `xt-member-two-LINE`.xt_dc_dz_seller_label_c WHERE pid = 2)");
  379 + $add=Db::query("INSERT INTO `xt-member-two-LINE`.xt_dc_dz_seller_label_c_rel VALUES(".$data['sellerid'].",".$label_2_.")");
  380 + }
  381 +
  382 + if($label_3_){
  383 + $del=Db::query("DELETE FROM `xt-member-two-LINE`.xt_dc_dz_seller_label_c_rel WHERE sid = ".$data['sellerid']." AND lcid in (SELECT id FROM `xt-member-two-LINE`.xt_dc_dz_seller_label_c WHERE pid = 3)");
  384 + $add=Db::query("INSERT INTO `xt-member-two-LINE`.xt_dc_dz_seller_label_c_rel VALUES(".$data['sellerid'].",".$label_3_.")");
  385 + }
  386 +
  387 + if(isset($data['edition'])){
  388 + $up=Db::query("UPDATE `xt-member-two-LINE`.xt_seller set is_online_reserve = ".$data['edition']." where id = ".$data['sellerid']);
  389 + }
  390 +
  391 + if(isset($data['is_tele'])){
  392 + $up=Db::query("UPDATE `xt-member-two-LINE`.xt_seller set is_tele = ".$data['is_tele']." where id = ".$data['sellerid']);
  393 + }
  394 +
  395 +
  396 + $result['code'] = 1;
  397 + $result['msg'] = "配置成功!";
  398 + return $result;
  399 + }
  400 +
  401 + //获取商家已有菜系
  402 + $cuisine_list= file_get_contents(ON_LINE.'App.Seller.getSellerCuisine&sellerid='.$data['id']);
  403 + $cuisine_list = json_decode($cuisine_list,TRUE);
  404 + //获取所有菜系
  405 + $list= file_get_contents(ON_LINE.'App.Reserve.GetCustomerConfig');
  406 + $array = json_decode($list,TRUE);
  407 + //组装数据
  408 + foreach ($cuisine_list['data'] as $key => $value) {
  409 + foreach ($array['data']['cate'] as $k => $v) {
  410 + if($value['cid']==$v['id']){
  411 + $array['data']['cate'][$k]['checked'] = 1;
  412 + }
  413 + }
  414 + }
  415 + $this->assign('list',$array['data']['cate']);//获取所有菜系
  416 +
  417 + //获取商家已有来源
  418 + $type_list= file_get_contents(ON_LINE.'App.Seller.GetSellerType&sellerid='.$data['id']);
  419 + $type_list = json_decode($type_list,TRUE);
  420 + //获取来源
  421 + $channel = array(array('id'=>1,'name'=>'合作'),array('id'=>2,'name'=>'推广'),array('id'=>3,'name'=>'测试'));
  422 + //组装数据
  423 + foreach ($type_list['data'] as $key => $value) {
  424 + foreach ($channel as $k => $v) {
  425 + if($value['type_id']==$v['id']){
  426 + $channel[$k]['checked'] = 1;
  427 + }
  428 + }
  429 + }
  430 + $this->assign('channel',$channel);//获取所有来源
  431 +
  432 + //获取商家已有地图显示方式
  433 + $mode_list= file_get_contents(ON_LINE.'App.Seller.getSellerMode&sellerid='.$data['id']);
  434 + $mode_list = json_decode($mode_list,TRUE);
  435 +
  436 + //获取所有地图显示方式
  437 + $mode= array(array('id'=>1,'name'=>'地图上大图标'),array('id'=>2,'name'=>'地图上文字'));
  438 + //组装数据
  439 + foreach ($mode_list['data'] as $key => $value) {
  440 + foreach ($mode as $k => $v) {
  441 + if($value['sm_id']==$v['id']){
  442 + $mode[$k]['checked'] = 1;
  443 + }
  444 + }
  445 + }
  446 + $this->assign('mode',$mode);//获取所有菜系
  447 +
  448 + //获取商家已选短信模板
  449 + $template = file_get_contents(ON_LINE.'App.Reserve.SellerInfo&seller_id='.$data['id']);
  450 + $template = json_decode($template,TRUE);
  451 + //获取短信模板列表
  452 + $template_list = file_get_contents(ON_LINE.'App.SendSMS.GetSmsTemplate');
  453 + $template_list = json_decode($template_list,TRUE);
  454 +
  455 + //组装数据
  456 + foreach ($template_list['data'] as $key => $value) {
  457 + if($value['template_code']==$template['data']['setting']['template_code']){
  458 + $template_list['data'][$key]['checked'] = 1;
  459 + }
  460 + switch ($value['template_code']) {
  461 + case 'SMS_163050401':
  462 + $vowels = array(
  463 + '周到安排演示店' => '${seller_name}',
  464 + '11月25日晚上18:00' => '${date}',
  465 + '金台夕照、卢沟晓月' =>'${region_room_name}',
  466 + '西电路447号南湖金地西门南100米' =>'${seller_addr}',
  467 + '18792581193' =>'${seller_phone}',
  468 + '毛毛' =>'${cusman}',
  469 + );
  470 + break;
  471 + case 'SMS_162733710':
  472 + $vowels = array(
  473 + '4月6日中午' => '${reserve_date}',
  474 + '周到1店西电路447号金台夕照' => '${seller_name_addr_room}',
  475 + '毛毛' =>'${cusman}',
  476 + );
  477 + break;
  478 + case 'SMS_154587043':
  479 + $vowels = array(
  480 + '侯先生' => '${guest}',
  481 + '周到安排演示店' => '${seller_name}',
  482 + '11月25日晚上18:00' =>'${date}',
  483 + '包间(金台夕照)' =>'${region_room_name}',
  484 + '西电路447号南湖金地西门南100米' =>'${seller_addr}',
  485 + '18792581193' =>'${seller_phone}\n',
  486 + '毛毛' =>'${cusman}',
  487 + );
  488 + break;
  489 + case 'SMS_164277855':
  490 + $vowels = array(
  491 + '周到1店西电路447号' => '${seller_name}',
  492 + '11月7日晚上18:30' => '${date}',
  493 + '包间(金台夕照)' =>'${region_room_name}',
  494 + '1879258119' =>'${seller_phone}',
  495 + );
  496 + break;
  497 + case 'SMS_164268239':
  498 + $vowels = array(
  499 + '周到安排演示店' => '${seller_name}',
  500 + '11月7日晚上18:30' => '${date}',
  501 + '包间(金台夕照)' =>'${region_room_name}',
  502 + '西电路447号南湖金地西门南100米' =>'${seller_addr}',
  503 + '1879258119' =>'${seller_phone}',
  504 + );
  505 + break;
  506 + case 'SMS_181200398':
  507 + $vowels = array(
  508 + '周到安排演示店' => '${sellershortname}',
  509 + '11月7日' => '${date}',
  510 + '晚上' =>'${mealtime}',
  511 + '1F' =>'${regionname}',
  512 + '<<金台夕照>>' =>'${roomname}',
  513 + '西电路447号南湖金地西门南100米' =>'${selleraddr}',
  514 + '1879258119' =>'${sellerphone}',
  515 + );
  516 + break;
  517 + case 'SMS_181210420':
  518 + $vowels = array(
  519 + '周到安排演示店' => '${salename}',
  520 + '11月7日晚上' => '${date_solt}',
  521 + '三楼4号院' =>'${regonname}',
  522 + '【金台夕照】' =>'${roomname}',
  523 + '西电路447号南湖金地西门南100米' =>'${selleraddr}',
  524 + '出门左转' =>'${sellertips}',
  525 + '毛毛' =>'${managername}',
  526 + '1879258119' =>'${managerphone}',
  527 + );
  528 + break;
  529 + default:
  530 + # code...
  531 + break;
  532 + }
  533 + $template_list['data'][$key]['content'] = str_replace($vowels, array_keys($vowels),$value['content']);
  534 + }
  535 + $this->assign('template_list',$template_list['data']);//获取短信模板列表
  536 +
  537 + //获取商家接单方式
  538 + $seller_config_res = Db::query('SELECT * from `xt-member-two-LINE`.xt_dc_dz_seller_config where sid ='.$data['id'].' GROUP by sid');
  539 + if(@$seller_config_res[0])
  540 + $this->assign('seller_config_res',$seller_config_res[0]);
  541 +
  542 + $seller_user_openid_array = array();
  543 + //获取小程序是否可选择
  544 + $seller_user_openid_array = Db::query('SELECT
  545 + a.openid,
  546 + u.nick_name,
  547 + u.phone
  548 + FROM
  549 + `xt-member-two-LINE`.xt_dc_seller_user AS u
  550 + LEFT JOIN `xt-member-two-LINE`.xt_auth_user AS a ON u.auth_user_id = a.id
  551 + WHERE
  552 + u.is_on_call = 1
  553 + AND u.sellerid = '.$data['id']);
  554 + $seller_user_openid = $seller_user_openid_array ? $seller_user_openid_array[0]['openid'] : '';
  555 +
  556 + if($seller_user_openid_array[0]['phone']==NULL || $seller_user_openid_array[0]['phone'] ==''){
  557 + $seller_user_openid_array[0]['phone'] = '电话未填写';
  558 + $seller_user_openid_array[0]['phone_status'] = 1;
  559 + }
  560 + //检测是否关注公众号
  561 + if($seller_user_openid){
  562 + $seller_user_unionid = Db::query('SELECT
  563 + openid
  564 + FROM
  565 + `xt-member-two-LINE`.xt_wechat
  566 + WHERE
  567 + unionid = ( SELECT unionid FROM `xt-member-two-LINE`.xt_wechat WHERE openid = "'.$seller_user_openid.'" )
  568 + AND source = 0');
  569 + $seller_user_unionid = $seller_user_unionid ? $seller_user_unionid[0]['openid'] : '';
  570 + //未关注公众号则不能勾选小程序
  571 + if($seller_user_unionid==''){
  572 + $seller_user_openid_array[0]['is_openid_wechat'] = 0;
  573 + $seller_user_openid_array[0]['is_openid_wechat_str'] = '未关注公众号';
  574 + }else{
  575 + $seller_user_openid_array[0]['is_openid_wechat'] = 1;
  576 + $seller_user_openid_array[0]['is_openid_wechat_str'] = '已关注公众号';
  577 + }
  578 + }
  579 +
  580 + $this->assign('seller_user_openid_array',$seller_user_openid_array[0]);
  581 +
  582 +
  583 + //获取商家拥有哪些标签
  584 + $label_list= file_get_contents(ON_LINE.'App.Seller.GetSellerLabel&sid='.$data['id']);
  585 + $label_list = json_decode($label_list,TRUE);
  586 + $this->assign('label_list',$label_list['data']);
  587 +
  588 + //商家标签
  589 + //原生:
  590 + //$label_c=Db::query("SELECT * from xt-member-two-LINE.xt_dc_dz_seller_label_c");
  591 + $label_c=Db::table("xt-member-two-LINE.xt_dc_dz_seller_label_c")->select();
  592 + $label_c_rel=Db::table("xt-member-two-LINE.xt_dc_dz_seller_label_c_rel")->where(array('sid'=>$data['id']))->select();
  593 + //组装数据
  594 + foreach ($label_c as $key => $value) {
  595 + foreach ($label_c_rel as $k => $v) {
  596 + if($value['id']==$v['lcid']){
  597 + $label_c[$key]['checked'] = 1;
  598 + }
  599 + }
  600 + }
  601 + $this->assign('label_c',$label_c);
  602 +
  603 + //商家品牌
  604 + $brand=Db::table("xt-member-two-LINE.xt_dc_dz_seller_brand")->select();
  605 + $brand_rel=Db::table("xt-member-two-LINE.xt_dc_dz_seller_brand_rel")->where(array('sid'=>$data['id']))->select();
  606 + //组装数据
  607 + foreach ($brand as $key => $value) {
  608 + foreach ($brand_rel as $k => $v) {
  609 + if($value['id']==$v['bid']){
  610 + $brand[$key]['checked'] = 1;
  611 + }
  612 + }
  613 + }
  614 + $this->assign('brand',$brand);
  615 +
  616 +
  617 + $is_online_reserve=Db::table("xt-member-two-LINE.xt_seller")->where(array('id'=>$data['id']))->select();
  618 +
  619 + //获取商家在线预定版本情况
  620 + $this->assign('is_online_reserve',$is_online_reserve[0]['is_online_reserve']);
  621 + //是否安装电话机
  622 + $this->assign('is_tele',$is_online_reserve[0]['is_tele']);
  623 +
  624 + //商户信息
  625 + $this->assign ('data',$data);
  626 + $this->assign ( 'title','商户信息配置' );
  627 + return $this->fetch();
  628 + }
  629 +
  630 + /**
  631 + * 商家基础信息配置
  632 + */
  633 + public function setsellerconfig(){
  634 + if(Request::isAjax()){
  635 + $data = Request::except('file');
  636 + $data['status'] = $data['status'] ? 0 : 1;
  637 + $list= file_get_contents(ON_LINE.'App.Seller.SetSellerConfigByPC&sid='.$data['sellerid'].'&field='.$data['field'].'&value='.$data['value']);
  638 + $array = json_decode($list,TRUE);
  639 + if($array['ret']==200){
  640 + $result['code'] = 1;
  641 + $result['msg'] = 'SUCCESS!';
  642 + }else{
  643 + $result['code'] = 0;
  644 + $result['msg'] = '请求错误!';
  645 + }
  646 + return $result;
  647 + }
  648 + return view();
  649 + }
  650 +
  651 +
  652 + //商家列表 用于配置商家活动
  653 + public function seller_activity_list(){
  654 + if(Request::isAjax()){
  655 + $data = Request::except('file');
  656 + $key= input('post.key') ? input('post.key') : "";
  657 + $channel = @$key['channel'] ? @$key['channel'] : 1;
  658 + $limit = '&x='.$data["page"].'&y='.$data["limit"].'&keywords='.@$key['id'].'&channel='.$channel;
  659 +
  660 + //获取运营人员列表
  661 + $list= file_get_contents(ON_LINE.'App.Seller.GetSellerListByActivity'.$limit);
  662 + $array = json_decode($list,TRUE);
  663 + foreach($array['data'][0]['data'] as $key=>$value){
  664 + if(!empty($value['activity'])){
  665 + foreach ($value['activity'] as $k => $v) {
  666 + $str[$key][] = ($k+1).'、'.$v['title'];
  667 + }
  668 + $array['data'][0]['data'][$key]['activity'] = implode('<br/>', $str[$key]);
  669 + //$array['data'][0]['data'][$key]['activity'] = implode('<br/>', array_column($value['activity'], 'title'));
  670 + }
  671 + }
  672 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$array['data'][0]['data'],'count'=>$array['data'][0]['total'],'rel'=>1];
  673 + }
  674 + $this->assign ( 'title','商家活动配置');
  675 + return $this->fetch();
  676 + }
  677 +
  678 + /**
  679 + * 商家活动列表页
  680 + */
  681 + public function seller_activity(){
  682 + $data = Request::except('file');
  683 + //获取商家现有活动
  684 + $seller_activity= file_get_contents(ON_LINE.'App.Seller.GetSellerActivity&sid='.$data['id']);
  685 + $seller_activity = json_decode($seller_activity,TRUE);
  686 + //活动列表
  687 + $this->assign('sid',$data['id']);
  688 + $this->assign ( 'seller_activity',$seller_activity['data']);
  689 + $this->assign ( 'title','商家活动配置页面');
  690 + return $this->fetch();
  691 + }
  692 +
  693 + //添加活动
  694 + public function add_activity(){
  695 + $data = Request::except('file');
  696 + if(Request::isAjax()){
  697 + switch ($data['type']) {
  698 + case '1':
  699 + if($data['max_num']==0){
  700 + $data['title'] = '立减'.$data['min_num'];break;
  701 + }else{
  702 + $data['title'] = '满'.$data['max_num'].'立减'.$data['min_num'];break;
  703 + }
  704 + case '2':
  705 + if($data['max_num']==0){
  706 + $data['title'] = '赠'.$data['min_num'];break;
  707 + }else{
  708 + $data['title'] = '满'.$data['max_num'].'赠'.$data['min_num'];break;
  709 + }
  710 + break;
  711 + case '3':
  712 + if($data['max_num']==0){
  713 + $data['title'] = $data['min_num'].'折';break;
  714 + }else{
  715 + $data['title'] = '满'.$data['max_num'].'立享'.$data['min_num'].'折';break;
  716 + }
  717 + case '4':
  718 + $data['title'] = $data['max_num'].'元代金券';
  719 + break;
  720 + case '5':
  721 + $data['title'] = '会员价';
  722 + break;
  723 + default:
  724 + # code...
  725 + break;
  726 + }
  727 +
  728 + //字段空值过滤
  729 + //添加活动
  730 + $res= file_get_contents(ON_LINE.'App.Seller.SetActivity&str='.serialize($data));
  731 + $res = json_decode($res,TRUE);
  732 + if($data['aid']){
  733 + if($res['data']){
  734 + $result = ['code'=>1,'msg'=>'修改成功!','rel'=>1];
  735 + }else{
  736 + $result = ['code'=>0,'msg'=>'修改失败!','rel'=>1];
  737 + }
  738 + }else{
  739 + if($res['data']){
  740 + $result = ['code'=>1,'msg'=>'添加成功!','rel'=>1];
  741 + }else{
  742 + $result = ['code'=>0,'msg'=>'添加失败!','rel'=>1];
  743 + }
  744 + }
  745 + return $result;
  746 + }
  747 + if($data['id']){
  748 + //修改---需要获取对应的数据
  749 + $activity= file_get_contents(ON_LINE.'App.Seller.GetSellerActivityById&id='.$data['id']);
  750 + $activity = json_decode($activity,TRUE);
  751 + $this->assign ('data',$activity['data']);
  752 + $this->assign ( 'title','修改活动');
  753 + }
  754 + $this->assign ( 'hid',$data['sid']);
  755 + $this->assign ( 'title','添加活动');
  756 + return $this->fetch();
  757 + }
  758 +
  759 + //删除活动
  760 + public function del_activity(){
  761 + $data = Request::except('file');
  762 + $res= file_get_contents(ON_LINE.'App.Seller.DelSellerActivity&sid='.$data['sid'].'&aid='.$data['aid']);
  763 + $res = json_decode($res,TRUE);
  764 + $this->redirect('Seller/seller_activity', ['id' => $data['sid']]);
  765 + //return $this->fetch('seller_activity',['id' => $data['sid']]);
  766 + }
  767 +
  768 + //商家设备列表
  769 + public function device_list(){
  770 + //获取类型
  771 + $facturer = Db::query("SELECT * FROM `xt-member-two-LINE`.xt_dc_dz_facturer");
  772 + if(Request::isAjax()){
  773 + $data = Request::except('file');
  774 + $channel = @$data['channel'] ? @$data['channel'] : 1;
  775 + $manufacturer = @$data['manufacturer'] ? @$data['manufacturer'] : 1;
  776 +
  777 + $limit = '&page='.$data["page"].'&size='.$data["limit"].'&sellername='.@$data['key'].'&channel='.$channel.'&type='.$manufacturer;
  778 +
  779 + //获取运营人员列表
  780 + $list= file_get_contents(ON_LINE.'App.Device.GetDeviceOnlineStatus'.$limit); //GetSellerDevice
  781 + $array = json_decode($list,TRUE);
  782 + foreach ($array['data']['list'] as $key => $value) {
  783 + switch ($value['type']) {
  784 + case '0':
  785 + $array['data']['list'][$key]['type'] = $facturer[0]['facturer'];
  786 + break;
  787 + case '1':
  788 + $array['data']['list'][$key]['type'] = $facturer[0]['facturer'];
  789 + break;
  790 + case '2':
  791 + $array['data']['list'][$key]['type'] = $facturer[1]['facturer'];
  792 + break;
  793 + case '3':
  794 + $array['data']['list'][$key]['type'] = $facturer[2]['facturer'];
  795 + break;
  796 + case '4':
  797 + $array['data']['list'][$key]['type'] = $facturer[3]['facturer'];
  798 + break;
  799 +
  800 + default:
  801 + $array['data']['list'][$key]['type'] = 'error: '.$value['type'];
  802 + break;
  803 + }
  804 +
  805 + }
  806 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$array['data']['list'],'count'=>$array['data']['total'],'rel'=>1];
  807 + }
  808 + $this->assign ( 'facturer',$facturer);
  809 + $this->assign ( 'title','商家设备列表');
  810 + return $this->fetch();
  811 + }
  812 +
  813 + //商家设备列表
  814 + public function add_gray_user(){
  815 + if(Request::isAjax()){
  816 + $data = Request::except('file');
  817 + $list= file_get_contents(ON_LINE.'App.Device.SetGrayUser&ids='.serialize($data['id']));
  818 + $array = json_decode($list,TRUE);
  819 + if($array['ret']==200){
  820 + $result['code'] = 1;
  821 + $result['msg'] = 'SUCCESS!';
  822 + }else{
  823 + $result['code'] = 0;
  824 + $result['msg'] = '服务器错误,请勿重复将设备号添加到灰度用户!';
  825 + }
  826 + return $result;
  827 + }
  828 + return view();
  829 + }
  830 +
  831 + //灰度用户列表
  832 + public function gray_user_list(){
  833 + //获取类型
  834 + $facturer = Db::query("SELECT * FROM `xt-member-two-LINE`.xt_dc_dz_facturer");
  835 + $this->assign ( 'facturer',$facturer);
  836 + if(Request::isAjax()){
  837 + $data = Request::except('file');
  838 + $channel = @$data['channel'] ? @$data['channel'] : 1;
  839 + $manufacturer = @$data['manufacturer'] ? @$data['manufacturer'] : 1;
  840 +
  841 + $limit = '&page='.$data["page"].'&size='.$data["limit"].'&sellername='.@$data['key'].'&channel='.$channel.'&type='.$manufacturer;
  842 +
  843 + $list= file_get_contents(ON_LINE.'App.Device.GetGrayUserList'.$limit);
  844 + $array = json_decode($list,TRUE);
  845 + foreach ($array['data']['list'] as $key => $value) {
  846 + switch ($value['type']) {
  847 + case '1':
  848 + $array['data']['list'][$key]['type'] = $facturer[0]['facturer'];
  849 + break;
  850 + case '2':
  851 + $array['data']['list'][$key]['type'] = $facturer[1]['facturer'];
  852 + break;
  853 + case '3':
  854 + $array['data']['list'][$key]['type'] = $facturer[2]['facturer'];
  855 + break;
  856 + case '4':
  857 + $array['data']['list'][$key]['type'] = $facturer[3]['facturer'];
  858 + break;
  859 +
  860 + default:
  861 + $array['data']['list'][$key]['type'] = 'error';
  862 + break;
  863 + }
  864 + }
  865 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$array['data']['list'],'count'=>$array['data']['total'],'rel'=>1];
  866 + }
  867 + //获取类型
  868 + $facturer = Db::query("SELECT * FROM `xt-member-two-LINE`.xt_dc_dz_facturer");
  869 + $this->assign ( 'facturer',$facturer);
  870 + $this->assign ( 'title','灰度用户列表');
  871 + return $this->fetch();
  872 + }
  873 +
  874 + //删除灰度用户
  875 + public function del_gray_user(){
  876 + if(Request::isAjax()){
  877 + $data = Request::except('file');
  878 + $list= file_get_contents(ON_LINE.'App.Device.DelGrayUser&jsstr='.serialize($data['id']));
  879 + $array = json_decode($list,TRUE);
  880 +
  881 + if($array['ret']==200){
  882 + $result['code'] = 1;
  883 + $result['msg'] = 'SUCCESS!';
  884 + }else{
  885 + $result['code'] = 0;
  886 + $result['msg'] = '请刷新页面重新尝试!';
  887 + }
  888 + return $result;
  889 + }
  890 + return view();
  891 + }
  892 +
  893 + //获取在线设备情况
  894 + public function get_device_online_status(){
  895 + //获取类型
  896 + $facturer = Db::query("SELECT * FROM `xt-member-two-LINE`.xt_dc_dz_facturer");
  897 + if(Request::isAjax()){
  898 + $data = Request::except('file');
  899 + $channel = @$data['channel'] ? @$data['channel'] : 1;
  900 + $manufacturer = @$data['manufacturer'] ? @$data['manufacturer'] : 1;
  901 +
  902 + $limit = '&page='.$data["page"].'&size='.$data["limit"].'&sellername='.@$data['key'].'&channel='.$channel.'&type='.$manufacturer;
  903 +
  904 + $list= file_get_contents(ON_LINE.'App.Device.GetDeviceOnlineStatus'.$limit);
  905 + $array = json_decode($list,TRUE);
  906 + foreach ($array['data']['list'] as $key => $value) {
  907 + switch ($value['type']) {
  908 + case '0':
  909 + $array['data']['list'][$key]['type'] = $facturer[0]['facturer'];
  910 + break;
  911 + case '1':
  912 + $array['data']['list'][$key]['type'] = $facturer[0]['facturer'];
  913 + break;
  914 + case '2':
  915 + $array['data']['list'][$key]['type'] = $facturer[1]['facturer'];
  916 + break;
  917 + case '3':
  918 + $array['data']['list'][$key]['type'] = $facturer[2]['facturer'];
  919 + break;
  920 + case '4':
  921 + $array['data']['list'][$key]['type'] = $facturer[3]['facturer'];
  922 + break;
  923 +
  924 + default:
  925 + $array['data']['list'][$key]['type'] = $value['type'];
  926 + break;
  927 + }
  928 + }
  929 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$array['data']['list'],'count'=>$array['data']['total'],'rel'=>1];
  930 + }
  931 + $this->assign ( 'facturer',$facturer);
  932 + $this->assign ( 'title','商家话机在线设备列表');
  933 + return $this->fetch();
  934 + }
  935 +
  936 + private function check($aid) {
  937 +
  938 + }
  939 +
  940 + /**
  941 + * 从商家维度统计:订单、短信等情况
  942 + */
  943 + public function GetReserveList(){
  944 + //获取类型
  945 + $facturer = Db::query("SELECT * FROM `xt-member-two-LINE`.xt_dc_dz_facturer");
  946 + if(Request::isAjax()){
  947 + $data = Request::except('file');
  948 + set_time_limit(0);
  949 + $time = $data['time'] ? explode(' - ', $data['time']) : '';
  950 + $data['stime'] = $time ? strtotime(date($time[0],time())) : strtotime(date('Y-m-d 00:00:00',time()));
  951 + $data['etime'] = $time ? strtotime(date($time[1],time())) : strtotime(date('Y-m-d 23:59:59',time()));
  952 +
  953 + $dtime = $data['dtime'] ? explode(' - ', $data['dtime']) : '';
  954 + $data['sdtime'] = $dtime ? strtotime(date($dtime[0],time())) : '';
  955 + $data['edtime'] = $dtime ? strtotime(date($dtime[1],time())) : '';
  956 +
  957 + ////////////////////////////////
  958 + $arr = array();
  959 + $where = '';
  960 +
  961 + $offset = ($data['page']-1)*$data['limit'];
  962 + $limit = " LIMIT $offset,".$data['limit'];
  963 +
  964 + switch ($data['order']) {
  965 + case '1':
  966 + $where .= ' r.type = 1'; # 1 = 顾客下单
  967 + break;
  968 + case '2':
  969 + $where .= ' r.type = 0'; # 0 = 商户下单
  970 + break;
  971 + default:
  972 + $where .= '1=1';
  973 + break;
  974 + }
  975 +
  976 + $data['status'] = $data['status'] ? $data['status'] : 2;
  977 + switch ($data['status']) {
  978 + case 1:
  979 + $where .= ' AND r.status = 0';
  980 + break;
  981 + case 2:
  982 + $where .= ' AND r.status = 0';
  983 + break;
  984 + case 3:
  985 + $where .= ' AND r.status = 6';
  986 + break;
  987 + case 4:
  988 + $where .= ' AND r.status = 5';
  989 + break;
  990 + case 5:
  991 + $where .= ' AND r.status = 4';
  992 + break;
  993 + case -1:
  994 + if($data['order']==1){
  995 + $where .= ' AND r.status in (0,6,5,4)';
  996 + }else{
  997 + $where .= ' AND r.status in (0,1,6,5,4)';
  998 + }
  999 + break;
  1000 + default:
  1001 + # code...
  1002 + break;
  1003 + }
  1004 +
  1005 + if($data['sdtime'] && $data['edtime']){
  1006 + $where .= $data['status']==2 ? ' AND r.cdate <= UNIX_TIMESTAMP(date_add(NOW(), interval -5 minute)) AND r.ddate BETWEEN '.$data['sdtime'].' AND '.$data['edtime'] : ' AND r.ddate BETWEEN '.$data['sdtime'].' AND '.$data['edtime'];
  1007 + }else{
  1008 + $where .= $data['status']==2 ? ' AND r.cdate <= UNIX_TIMESTAMP(date_add(NOW(), interval -5 minute)) AND r.cdate BETWEEN '.$data['stime'].' AND '.$data['etime'] : ' AND r.cdate BETWEEN '.$data['stime'].' AND '.$data['etime'];
  1009 + }
  1010 +
  1011 + $data['channel'] = $data['channel'] ? implode(',',$data['channel']) : 1;
  1012 +
  1013 + $where .= $data['channel'] == -1 ? '' : ' AND re.type_id in ('.$data['channel'].')';
  1014 + #key
  1015 + $where .= $data['key'] ? ' AND s.sellername like "%'.$data['key'].'%"' : ''; //商家名称
  1016 + #ID
  1017 + $where .= $data['nokey'] ? ' AND r.id ='.$data['nokey'] : ''; //商家ID
  1018 +
  1019 +
  1020 + $offset = ($data['page']-1)*$data['limit'];
  1021 + $limit = " LIMIT $offset,".$data['limit'];
  1022 +
  1023 +
  1024 + //导出操作
  1025 + if($data['export']){
  1026 + $limit = "";
  1027 + }else{
  1028 + $limit = " LIMIT $offset,".$data['limit'];
  1029 + }
  1030 +
  1031 + $admin = db('admin')->where(array('admin_id'=>session('aid')))->find();
  1032 +
  1033 + //当前用户分组为代理商时 获取代理商下面的数据
  1034 + if(in_array($admin['group_id'],array(8))) {
  1035 + //查询账号对应的区域ID
  1036 + $account = Db::query("SELECT
  1037 + *
  1038 + FROM
  1039 + `xt-member-two-LINE`.xt_dc_dz_agent_account
  1040 + WHERE
  1041 + account = '".$admin['username']."'");
  1042 +
  1043 + $where .= ' AND ags.areaid = '.$account[0]['areaid']; //区域ID
  1044 +
  1045 + //检测是否为代理商
  1046 + $rs = Db::query("SELECT
  1047 + dv.type,
  1048 + r.tid,
  1049 + r.tableinfo,
  1050 + r.id,
  1051 + r.rname,
  1052 + r.sex,
  1053 + r.pnum,
  1054 + r.phone,
  1055 + r.cusdem,
  1056 + r.ddate,
  1057 + r.cdate,
  1058 + r.status,
  1059 + r.ddate_solt,
  1060 + r.room_demand,
  1061 + r.operator_openid,
  1062 + s.sellername,
  1063 + s.is_tele,
  1064 + s.seller_tel
  1065 + FROM
  1066 + `xt-member-two-LINE`.xt_dc_reserve AS r
  1067 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON r.sid = s.id
  1068 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = r.sid
  1069 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_app_dv AS dv ON dv.sid = s.id
  1070 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_agent_seller AS ags on ags.sellerid = s.id
  1071 + WHERE
  1072 + $where
  1073 + GROUP BY
  1074 + r.id".$limit);
  1075 +
  1076 + $total = Db::query("SELECT
  1077 + r.id
  1078 + FROM
  1079 + `xt-member-two-LINE`.xt_dc_reserve AS r
  1080 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON r.sid = s.id
  1081 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = r.sid
  1082 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_app_dv AS dv ON dv.sid = s.id
  1083 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_agent_seller AS ags on ags.sellerid = s.id
  1084 + WHERE
  1085 + $where
  1086 + GROUP BY
  1087 + r.id");
  1088 + }else{
  1089 + //检测是否为代理商
  1090 + $rs = Db::query("SELECT
  1091 + dv.type,
  1092 + r.tid,
  1093 + r.tableinfo,
  1094 + r.id,
  1095 + r.rname,
  1096 + r.sex,
  1097 + r.pnum,
  1098 + r.phone,
  1099 + r.cusdem,
  1100 + r.ddate,
  1101 + r.cdate,
  1102 + r.status,
  1103 + r.ddate_solt,
  1104 + r.room_demand,
  1105 + r.operator_openid,
  1106 + s.sellername,
  1107 + s.is_tele,
  1108 + s.seller_tel
  1109 + FROM
  1110 + `xt-member-two-LINE`.xt_dc_reserve AS r
  1111 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON r.sid = s.id
  1112 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = r.sid
  1113 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_app_dv AS dv ON dv.sid = s.id
  1114 + WHERE
  1115 + $where
  1116 + GROUP BY
  1117 + r.id".$limit);
  1118 +
  1119 + $total = Db::query("SELECT
  1120 + r.id
  1121 + FROM
  1122 + `xt-member-two-LINE`.xt_dc_reserve AS r
  1123 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON r.sid = s.id
  1124 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = r.sid
  1125 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_app_dv AS dv ON dv.sid = s.id
  1126 + WHERE
  1127 + $where
  1128 + GROUP BY
  1129 + r.id");
  1130 + }
  1131 +
  1132 + foreach ($rs as $key => $value) {
  1133 + $rs[$key]['seller_tel'] = str_replace(',', '、', $value['seller_tel']);
  1134 + $message_time = Db::query("SELECT
  1135 + handle_time,rec_date
  1136 + FROM
  1137 + `xt-member-two-LINE`.xt_dc_dz_message
  1138 + WHERE
  1139 + rid = ".$value['id']." and message_type = 10");
  1140 + $rs[$key]['handle_time'] = $message_time[0]['handle_time'];
  1141 + $rs[$key]['rec_date'] = $message_time[0]['rec_date'];
  1142 + }
  1143 +
  1144 + $arr['list'] = $rs;
  1145 + $arr['total'] = count($total);
  1146 + ////////////////////////////////
  1147 +
  1148 + foreach ($arr['list'] as $key => $value) {
  1149 + //已分配的订单显示 分配的桌位
  1150 + if($value['status']==5){
  1151 + $arr['list'][$key]['tid'] = explode(',',@$value['tid']);
  1152 + }
  1153 + //有无设备
  1154 + if($value['is_tele']==1){
  1155 + switch ($value['type']) {
  1156 + case '1':
  1157 + $arr['list'][$key]['dv'] = $facturer[0]['facturer'];
  1158 + break;
  1159 + case '2':
  1160 + $arr['list'][$key]['dv'] = $facturer[1]['facturer'];
  1161 + break;
  1162 + case '3':
  1163 + $arr['list'][$key]['dv'] = $facturer[2]['facturer'];
  1164 + break;
  1165 + case '4':
  1166 + $arr['list'][$key]['dv'] = $facturer[3]['facturer'];
  1167 + break;
  1168 + default:
  1169 + $arr['list'][$key]['dv'] = '无';
  1170 + break;
  1171 + }
  1172 + }else{
  1173 + $arr['list'][$key]['dv'] = '无';
  1174 + }
  1175 + //订单接受时间段
  1176 + switch ($value['ddate_solt']) {
  1177 + //'未设置/早市/午市/晚市/夜宵 0/1/2/3/4',
  1178 + case 0:
  1179 + $value['ddate_solt'] = '未设置';
  1180 + break;
  1181 + case 1:
  1182 + $value['ddate_solt'] = '早市';
  1183 + break;
  1184 + case 2:
  1185 + $value['ddate_solt'] = '午市';
  1186 + break;
  1187 + case 3:
  1188 + $value['ddate_solt'] = '晚市';
  1189 + break;
  1190 + case 4:
  1191 + $value['ddate_solt'] = '夜宵';
  1192 + break;
  1193 + default:
  1194 + # code...
  1195 + break;
  1196 + }
  1197 + $arr['list'][$key]['ddate'] = date('Y-m-d H:i:s',$value['ddate']).'['.$value['ddate_solt'].']';
  1198 + $arr['list'][$key]['cdate'] = date('Y-m-d H:i:s',$value['cdate']);
  1199 + $arr['list'][$key]['handle_time'] = $value['handle_time'] ? date('Y-m-d H:i:s',$value['handle_time']) : '';
  1200 + $arr['list'][$key]['rec_date'] = $value['rec_date'] ? date('Y-m-d H:i:s',$value['rec_date']) : '';
  1201 + switch ($value['status']) {
  1202 + case 0:
  1203 + $arr['list'][$key]['sta'] = '待确认';
  1204 + break;
  1205 + case 1:
  1206 + $arr['list'][$key]['sta'] = '已定座';
  1207 + break;
  1208 + case 2:
  1209 + $arr['list'][$key]['sta'] = '到店';
  1210 + break;
  1211 + case 3:
  1212 + $arr['list'][$key]['sta'] = '离店';
  1213 + break;
  1214 + case 4:
  1215 + $arr['list'][$key]['sta'] = '已取消';
  1216 + break;
  1217 + case 5:
  1218 + $arr['list'][$key]['sta'] = '已分配';
  1219 + break;
  1220 + case 6:
  1221 + $arr['list'][$key]['sta'] = '拒单';
  1222 + break;
  1223 + default:
  1224 + # code...
  1225 + break;
  1226 + }
  1227 + switch ($value['sex']) {
  1228 + case 1:
  1229 + $arr['list'][$key]['rname'] = $value['rname'].'先生'.'('.$value['phone'].')';
  1230 + break;
  1231 + case 2:
  1232 + $arr['list'][$key]['rname'] = $value['rname'].'女士'.'('.$value['phone'].')';
  1233 + break;
  1234 + case 3:
  1235 + $arr['list'][$key]['rname'] = $value['rname'].'公司'.'('.$value['phone'].')';
  1236 + break;
  1237 + default:
  1238 + # code...
  1239 + break;
  1240 + }
  1241 +
  1242 + if($value['room_demand']){
  1243 + $arr['list'][$key]['room_demand'] = implode('、',array_column(json_decode($value['room_demand'],true), 'name'));
  1244 + }
  1245 +
  1246 + $arr['list'][$key]['sta'] = $value['is_tele']==1 ? $arr['list'][$key]['sta'] : $arr['list'][$key]['sta'].'无话机';
  1247 +
  1248 + //根据操作人识别操作终端
  1249 + if(isset($template['operator_openid'])){
  1250 + if(strstr($template['operator_openid'],'_',-4)=='tele'){ //话机操作
  1251 + $arr['list'][$key]['operator_openid'] = '电话机';
  1252 + }
  1253 +
  1254 + if(strstr($template['operator_openid'],'_',-4)=='wind'){ //PC操作
  1255 + $arr['list'][$key]['operator_openid'] = 'PC';
  1256 + }
  1257 +
  1258 + if(strstr($template['operator_openid'],'_',-4)=='chat'){ //PC操作
  1259 + $arr['list'][$key]['operator_openid'] = '小程序';
  1260 + }
  1261 + }
  1262 + }
  1263 + foreach ($arr['list'] as $key => $value) {
  1264 + $arr['list'][$key]['tablename'] = '';
  1265 + //如果存了桌子的信息则,直接返回桌子信息,否则去桌位表查
  1266 + if($value['tableinfo']!=NULL){
  1267 + $tableArr = json_decode($value['tableinfo'],true);
  1268 + if(is_array($tableArr)){
  1269 + foreach ($tableArr as $tkey => $tvalue) {
  1270 + $arr['list'][$key]['tablename'] .= $tvalue['name'].'、';
  1271 + }
  1272 + }
  1273 + }
  1274 + /**else{
  1275 + foreach ($value['tid'] as $k => $v) {
  1276 + //$rs[$key]['name'][] = Db::query("SELECT name FROM `xt-member-two-LINE`.xt_dc_seller_table where id = ".$v);
  1277 + }
  1278 + }**/
  1279 + }
  1280 +
  1281 + //excel 导出
  1282 + if($data['export']){
  1283 + return $result = [
  1284 + 'code'=>0,'msg'=>'获取成功!',
  1285 + 'data'=>$arr['list'],
  1286 + 'count'=>$arr['total'],
  1287 + 'rel'=>1
  1288 + ];
  1289 + //加载PHPExcle类库
  1290 + $DOCUMENT_ROOT = str_replace('public','',$_SERVER['DOCUMENT_ROOT']);
  1291 + require_once $DOCUMENT_ROOT.'vendor/Classes/PHPExcel.php';
  1292 + require_once $DOCUMENT_ROOT.'vendor/Classes/PHPExcel/IOFactory.php';
  1293 +
  1294 + //实例化PHPExcel类
  1295 + $objPHPExcel = new \PHPExcel();
  1296 + //激活当前的sheet表
  1297 + $objPHPExcel->setActiveSheetIndex(0);
  1298 + //设置表格头(即excel表格的第一行)
  1299 + $objPHPExcel->setActiveSheetIndex(0)
  1300 + ->setCellValue('A1', '订单编号')
  1301 + ->setCellValue('B1', '所属商家')
  1302 + ->setCellValue('C1', '商家电话')
  1303 + ->setCellValue('D1', '到店时间')
  1304 + ->setCellValue('E1', '包间名称')
  1305 + ->setCellValue('F1', '包间需求')
  1306 + ->setCellValue('G1', '客户信息')
  1307 + ->setCellValue('H1', '备注')
  1308 + ->setCellValue('I1', '下单时间')
  1309 + ->setCellValue('J1', '商家设备')
  1310 + ->setCellValue('K1', '消息送达时间')
  1311 + ->setCellValue('L1', '处理时间')
  1312 + ->setCellValue('M1', '状态');
  1313 + //设置A列水平居中
  1314 + $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
  1315 + ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1316 + //设置单元格宽度
  1317 + //循环刚取出来的数组,将数据逐一添加到excel表格。
  1318 + $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(10);
  1319 + $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
  1320 + $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
  1321 + $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(30);
  1322 +
  1323 + for($i=0;$i<count($arr['list']);$i++){
  1324 + $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$list[$i]['id']);//订单编号
  1325 + $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$list[$i]['sellername']);//所属商家
  1326 + $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['seller_tel']);//商家电话
  1327 + $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$list[$i]['ddate']);//到店时间
  1328 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$list[$i]['tablename']);//包间名称
  1329 + $objPHPExcel->getActiveSheet()->setCellValue('F'.($i+2),$list[$i]['room_demand']);//包间需求
  1330 + $objPHPExcel->getActiveSheet()->setCellValue('G'.($i+2),$list[$i]['rname']);//客户信息
  1331 + $objPHPExcel->getActiveSheet()->setCellValue('H'.($i+2),$list[$i]['cusdem']);//备注
  1332 + $objPHPExcel->getActiveSheet()->setCellValue('I'.($i+2),$list[$i]['cdate']);//下单时间
  1333 + $objPHPExcel->getActiveSheet()->setCellValue('J'.($i+2),$list[$i]['dv']);//商家设备
  1334 + $objPHPExcel->getActiveSheet()->setCellValue('K'.($i+2),$list[$i]['rec_date']);//消息送达时间
  1335 + $objPHPExcel->getActiveSheet()->setCellValue('L'.($i+2),$list[$i]['handle_time']);//处理时间
  1336 + $objPHPExcel->getActiveSheet()->setCellValue('M'.($i+2),$list[$i]['sta']);//状态
  1337 + }
  1338 + //设置保存的Excel表格名称
  1339 + $filename = '预定订单数据'.date('ymd',time()).'.xls';
  1340 + //8.设置当前激活的sheet表格名称;
  1341 + $objPHPExcel->getActiveSheet()->setTitle('订单内容');
  1342 + //设置浏览器窗口下载表格
  1343 + header("Content-Type: application/force-download");
  1344 + header("Content-Type: application/octet-stream");
  1345 + header("Content-Type: application/download");
  1346 + header('Content-Disposition:inline;filename="'.$filename.'"');
  1347 + header("Pragma: no-cache");
  1348 + //生成excel文件
  1349 + $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  1350 + //下载文件在浏览器窗口
  1351 + $objWriter->save('php://output');
  1352 + exit;
  1353 + }
  1354 + //print_r($arr['list']);die;
  1355 + return $result = [
  1356 + 'code'=>0,'msg'=>'获取成功!',
  1357 + 'data'=>$arr['list'],
  1358 + 'count'=>$arr['total'],
  1359 + 'rel'=>1
  1360 + ];
  1361 + }
  1362 + $this->assign ( 'title','订单管理');
  1363 + return $this->fetch();
  1364 + }
  1365 +
  1366 + /**
  1367 + * 商家详情
  1368 + */
  1369 + public function reservedetail(){
  1370 + $data = Request::except('file');
  1371 + $rs = Db::query("SELECT * FROM `xt-member-two-LINE`.xt_dc_dz_cancel where up_rid = ".$data['rid']." order by cdate desc");
  1372 + if($rs){
  1373 + foreach ($rs as $key => $value) {
  1374 + if($this->isjson_str($value['desc'])){
  1375 + $rs[$key]['desc'] = "diff";
  1376 + }
  1377 + switch ($value['action_type']) {
  1378 + case '1':
  1379 + $rs[$key]['action_type'] = '取消预定';
  1380 + break;
  1381 + case '2':
  1382 + $rs[$key]['action_type'] = '修改预定';
  1383 + break;
  1384 + case '3':
  1385 + $rs[$key]['action_type'] = '变更客户经理';
  1386 + break;
  1387 + case '4':
  1388 + $rs[$key]['action_type'] = '确认用户到店';
  1389 + break;
  1390 + case '5':
  1391 + $rs[$key]['action_type'] = '分配包间';
  1392 + break;
  1393 + case '6':
  1394 + $rs[$key]['action_type'] = '拒绝接单';
  1395 + break;
  1396 + default:
  1397 + # code...
  1398 + break;
  1399 + }
  1400 + $rs[$key]['cdate'] = date("Y年m月d日 H时i分",$value['cdate']);
  1401 + }
  1402 + }
  1403 + //订单详情
  1404 + $detail = Db::query("SELECT
  1405 + r.*,
  1406 + s.sellername
  1407 + FROM
  1408 + `xt-member-two-LINE`.xt_dc_reserve AS r
  1409 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON r.sid = s.id
  1410 + WHERE
  1411 + r.id = ".$data['rid']);
  1412 + switch ($detail[0]['channel']) {
  1413 + case 1:
  1414 + $detail[0]['channel'] = '微信小程序';
  1415 + break;
  1416 + case 2:
  1417 + $detail[0]['channel'] = '电话机';
  1418 + break;
  1419 + case 3:
  1420 + $detail[0]['channel'] = '安卓手机客户端';
  1421 + break;
  1422 + case 4:
  1423 + $detail[0]['channel'] = 'C端';
  1424 + break;
  1425 + default:
  1426 + # code...
  1427 + break;
  1428 + }
  1429 + switch ($detail[0]['sex']) {
  1430 + case 1:
  1431 + $detail[0]['sex'] = '先生';
  1432 + break;
  1433 + case 2:
  1434 + $detail[0]['sex'] = '女士';
  1435 + break;
  1436 + case 3:
  1437 + $detail[0]['sex'] = '公司';
  1438 + break;
  1439 + default:
  1440 + # code...
  1441 + break;
  1442 + }
  1443 + $this->assign ( 'html',$detail[0]);
  1444 + $this->assign ( 'rid',$data['rid']);
  1445 + $this->assign ( 'data',$rs);
  1446 + $this->assign ( 'title','订单操作日志详情');
  1447 + return $this->fetch();
  1448 + }
  1449 +
  1450 + public function isjson_str($data='',$assoc = false){
  1451 + $data = json_decode($data,$assoc);
  1452 + if(($data&&is_object($data))||(is_array($data)&&!empty($data))){
  1453 + return true;
  1454 + }
  1455 + return false;
  1456 + }
  1457 + /**
  1458 + * 状态设置
  1459 + */
  1460 + public function setReserveStatus(){
  1461 +
  1462 + if(Request::isAjax()){
  1463 + $data = Request::except('file');
  1464 +
  1465 + $data['cause'] = json_encode(array('uid'=>-1,'uname'=>session('username'),'desc'=>$data['cause']));
  1466 +
  1467 + $list= file_get_contents(ON_LINE.'App.Reserve.SetReserveStatus&rid='.$data['id'].'&status='.$data['status'].'&cause='.$data['cause']);
  1468 +
  1469 + $array = json_decode($list,TRUE);
  1470 + if($array['ret']==200){
  1471 + $result['code'] = 1;
  1472 + $result['msg'] = 'SUCCESS!';
  1473 + }else{
  1474 + $result['code'] = 0;
  1475 + $result['msg'] = '请求错误!';
  1476 + }
  1477 + return $result;
  1478 + }
  1479 + return view();
  1480 + }
  1481 +
  1482 + /**
  1483 + * 状态设置
  1484 + */
  1485 + public function devicelists(){
  1486 + $facturer = Db::query("SELECT * FROM `xt-member-two-LINE`.xt_dc_dz_facturer");
  1487 + $this->assign ( 'facturer',$facturer);
  1488 + if(Request::isAjax()){
  1489 + $data = Request::except('file');
  1490 + $channel = @$data['channel'] ? @$data['channel'] : 1;
  1491 + $manufacturer = @$data['manufacturer'] ? @$data['manufacturer'] : 1;
  1492 +
  1493 +
  1494 + $page = ($data['page']-1)*$data['limit'];
  1495 +
  1496 + $__Where = ' 1=1';
  1497 +
  1498 + $__Where .= @$data['key'] ? " and s.sellername like '%".$data['key']."%'" : "";
  1499 +
  1500 + switch ($manufacturer) {
  1501 + case '1':
  1502 + $__Where .= ' and sta.type in (0,1)';
  1503 + break;
  1504 + case '-1':
  1505 + $__Where .= ' ';
  1506 + break;
  1507 + default:
  1508 + $__Where .= ' and sta.type = '.$manufacturer;
  1509 + break;
  1510 + }
  1511 +
  1512 + if($channel && $channel!=-1) {
  1513 + $__Where .= ' and rel.type_id='. $channel;
  1514 + }else{
  1515 + $__Where .= "";
  1516 + }
  1517 +
  1518 + $total = Db::query("SELECT
  1519 + count(1) as total
  1520 + FROM
  1521 + `xt-member-two-LINE`.xt_dc_dz_seller_app_dv AS sta
  1522 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON sta.sid = s.id
  1523 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS rel ON sta.sid = rel.sid
  1524 + WHERE
  1525 + $__Where");
  1526 + $list = Db::query("SELECT
  1527 + s.sellername,
  1528 + rel.type_id,
  1529 + sta.*
  1530 + FROM
  1531 + `xt-member-two-LINE`.xt_dc_dz_seller_app_dv AS sta
  1532 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON sta.sid = s.id
  1533 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS rel ON sta.sid = rel.sid
  1534 + WHERE
  1535 + $__Where
  1536 + ORDER BY
  1537 + sta.sid
  1538 + LIMIT $page,".$data['limit']);
  1539 + foreach ($list as $key => $value) {
  1540 +
  1541 + //$list[$key]['call_jump_page'] = $value['call_jump_page'] == 1 ? "订座页面" : "桌位页面";
  1542 +
  1543 + switch ($value['type']) {
  1544 + case '0':
  1545 + $list[$key]['type'] = $facturer[0]['facturer'];
  1546 + break;
  1547 + case '1':
  1548 + $list[$key]['type'] = $facturer[0]['facturer'];
  1549 + break;
  1550 + case '2':
  1551 + $list[$key]['type'] = $facturer[1]['facturer'];
  1552 + break;
  1553 + case '3':
  1554 + $list[$key]['type'] = $facturer[2]['facturer'];
  1555 + break;
  1556 + case '4':
  1557 + $list[$key]['type'] = $facturer[3]['facturer'];
  1558 + break;
  1559 +
  1560 + default:
  1561 + $list[$key]['type'] = 'error: '.$value['type'];
  1562 + break;
  1563 + }
  1564 +
  1565 + }
  1566 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'count'=>$total[0]['total'],'rel'=>1];
  1567 + }
  1568 + $this->assign ( 'title','设备列表');
  1569 + return $this->fetch();
  1570 + }
  1571 +
  1572 + /**
  1573 + * 商家基础信息配置
  1574 + */
  1575 + public function upcalljumppage(){
  1576 + if(Request::isAjax()){
  1577 + $data = Request::except('file');
  1578 + $list= file_get_contents(ON_LINE.'Android.Device.UpDeviceCallJumpPage&device='.$data['device'].'&field='.'&status='.$data['status']);
  1579 + $array = json_decode($list,TRUE);
  1580 + if($array['ret']==200){
  1581 + $result['code'] = 1;
  1582 + $result['msg'] = 'SUCCESS!';
  1583 + }else{
  1584 + $result['code'] = 0;
  1585 + $result['msg'] = '请求错误!';
  1586 + }
  1587 + return $result;
  1588 + }
  1589 + return view();
  1590 + }
  1591 +
  1592 + /*
  1593 + * 商家短信充值查询
  1594 + */
  1595 + public function getsellersmslist(){
  1596 +
  1597 + if(Request::isAjax()){
  1598 + $data = Request::except('file');
  1599 +
  1600 + $time = (isset($data['time']) && !empty($data['time'])) ? explode(' - ',$data['time']) : (strtotime(date("Y-m-d 00:00:00")).'-'.strtotime(date("Y-m-d 23:59:59")));
  1601 +
  1602 + $newtime = is_array($time) ? (strtotime(date($time[0])).'-'.strtotime(date($time[1]))) : $time;
  1603 +
  1604 + $channel = (!isset($data['time'])) ? 1 : $data['channel'];
  1605 +
  1606 + $name = (!isset($data['time'])) ? '' : $data['key'];
  1607 +
  1608 + $url= ON_LINE.'App.Seller.QuerySelllerSmsList&offset='.$data['page'].'&size='.$data['limit'].'&time='.$newtime.'&channel='.$channel.'&name='.$name;
  1609 +
  1610 + $list = $this->curl_get($url);
  1611 +
  1612 + $array = json_decode($list,TRUE);
  1613 +
  1614 + if($array){
  1615 + foreach ($array['data']['list'] as $key => $value) {
  1616 + $array['data']['list'][$key]['bdate'] = date("Y年m月d日 H时i分s秒",$value['bdate']);
  1617 + $array['data']['list'][$key]['paystatus'] = $value['paystatus']==1 ? '成功' : '失败';
  1618 + $array['data']['list'][$key]['channel'] = $value['channel']==NULL ? '小程序' : $value['channel'];
  1619 + $array['data']['list'][$key]['package_name'] = $value['package_name']=='other' ? '其他' : $value['package_name'];
  1620 + }
  1621 + return $result = [
  1622 + 'code'=>0,'msg'=>'获取成功!',
  1623 + 'data'=>$array['data']['list'],
  1624 + 'count'=>$array['data']['total'],
  1625 + 'rel'=>1
  1626 + ];
  1627 + }else{
  1628 + $result['code'] = 0;
  1629 + $result['msg'] = '请求错误!';
  1630 + }
  1631 + return $result;
  1632 + }
  1633 + return view();
  1634 + }
  1635 +
  1636 + /**
  1637 + * post
  1638 + */
  1639 + public function curl_get($url)
  1640 + {
  1641 +
  1642 + $info = curl_init();
  1643 + curl_setopt($info,CURLOPT_RETURNTRANSFER,true);
  1644 + curl_setopt($info,CURLOPT_HEADER,0);
  1645 + curl_setopt($info,CURLOPT_NOBODY,0);
  1646 + curl_setopt($info,CURLOPT_SSL_VERIFYPEER,false);
  1647 + curl_setopt($info,CURLOPT_SSL_VERIFYPEER,false);
  1648 + curl_setopt($info,CURLOPT_SSL_VERIFYHOST,false);
  1649 + curl_setopt($info,CURLOPT_URL,$url);
  1650 + $output = curl_exec($info);
  1651 + curl_close($info);
  1652 + return $output;
  1653 + }
  1654 +}
  1 +{include file="common/head"/}
  2 +<div class="admin-main layui-anim layui-anim-upbit">
  3 + <title>{:$title}</title>
  4 + <blockquote class="layui-elem-quote">
  5 + <h1> {:$title} </h1>
  6 + </blockquote>
  7 + <form class="layui-form layui-form-pane" action="">
  8 + <div class="layui-form-item">
  9 + <label class="layui-form-label">长输入框</label>
  10 + <div class="layui-input-block">
  11 + <input type="text" name="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
  12 + </div>
  13 + </div>
  14 + <div class="layui-form-item">
  15 + <label class="layui-form-label">短输入框</label>
  16 + <div class="layui-input-inline">
  17 + <input type="text" name="username" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
  18 + </div>
  19 + </div>
  20 +
  21 + <div class="layui-form-item">
  22 + <div class="layui-inline">
  23 + <label class="layui-form-label">日期选择</label>
  24 + <div class="layui-input-block">
  25 + <input type="text" name="date" id="date1" autocomplete="off" class="layui-input">
  26 + </div>
  27 + </div>
  28 + <div class="layui-inline">
  29 + <label class="layui-form-label">行内表单</label>
  30 + <div class="layui-input-inline">
  31 + <input type="text" name="number" autocomplete="off" class="layui-input">
  32 + </div>
  33 + </div>
  34 + </div>
  35 + <div class="layui-form-item">
  36 + <label class="layui-form-label">密码</label>
  37 + <div class="layui-input-inline">
  38 + <input type="password" name="password" placeholder="请输入密码" autocomplete="off" class="layui-input">
  39 + </div>
  40 + <div class="layui-form-mid layui-word-aux">请务必填写用户名</div>
  41 + </div>
  42 +
  43 + <div class="layui-form-item">
  44 + <div class="layui-inline">
  45 + <label class="layui-form-label">范围</label>
  46 + <div class="layui-input-inline" style="width: 100px;">
  47 + <input type="text" name="price_min" placeholder="¥" autocomplete="off" class="layui-input">
  48 + </div>
  49 + <div class="layui-form-mid">-</div>
  50 + <div class="layui-input-inline" style="width: 100px;">
  51 + <input type="text" name="price_max" placeholder="¥" autocomplete="off" class="layui-input">
  52 + </div>
  53 + </div>
  54 + </div>
  55 +
  56 + <div class="layui-form-item">
  57 + <label class="layui-form-label">单行选择框</label>
  58 + <div class="layui-input-block">
  59 + <select name="interest" lay-filter="aihao">
  60 + <option value=""></option>
  61 + <option value="0">写作</option>
  62 + <option value="1" selected="">阅读</option>
  63 + <option value="2">游戏</option>
  64 + <option value="3">音乐</option>
  65 + <option value="4">旅行</option>
  66 + </select>
  67 + </div>
  68 + </div>
  69 +
  70 + <div class="layui-form-item">
  71 + <label class="layui-form-label">行内选择框</label>
  72 + <div class="layui-input-inline">
  73 + <select name="quiz1">
  74 + <option value="">请选择省</option>
  75 + <option value="浙江" selected="">浙江省</option>
  76 + <option value="你的工号">江西省</option>
  77 + <option value="你最喜欢的老师">福建省</option>
  78 + </select>
  79 + </div>
  80 + <div class="layui-input-inline">
  81 + <select name="quiz2">
  82 + <option value="">请选择市</option>
  83 + <option value="杭州">杭州</option>
  84 + <option value="宁波" disabled="">宁波</option>
  85 + <option value="温州">温州</option>
  86 + <option value="温州">台州</option>
  87 + <option value="温州">绍兴</option>
  88 + </select>
  89 + </div>
  90 + <div class="layui-input-inline">
  91 + <select name="quiz3">
  92 + <option value="">请选择县/区</option>
  93 + <option value="西湖区">西湖区</option>
  94 + <option value="余杭区">余杭区</option>
  95 + <option value="拱墅区">临安市</option>
  96 + </select>
  97 + </div>
  98 + </div>
  99 + <div class="layui-form-item" pane="">
  100 + <label class="layui-form-label">开关-开</label>
  101 + <div class="layui-input-block">
  102 + <input type="checkbox" checked="" name="open" lay-skin="switch" lay-filter="switchTest" title="开关">
  103 + </div>
  104 + </div>
  105 + <div class="layui-form-item" pane="">
  106 + <label class="layui-form-label">单选框</label>
  107 + <div class="layui-input-block">
  108 + <input type="radio" name="sex" value="男" title="男" checked="">
  109 + <input type="radio" name="sex" value="女" title="女">
  110 + <input type="radio" name="sex" value="禁" title="禁用" disabled="">
  111 + </div>
  112 + </div>
  113 + <div class="layui-form-item layui-form-text">
  114 + <label class="layui-form-label">文本域</label>
  115 + <div class="layui-input-block">
  116 + <textarea placeholder="请输入内容" class="layui-textarea"></textarea>
  117 + </div>
  118 + </div>
  119 + </form>
  120 +</div>
  121 +{include file="common/foot"/}
  1 +{include file="common/head"/}
  2 +<div class="admin-main layui-anim layui-anim-upbit">
  3 + <fieldset class="layui-elem-field layui-field-title">
  4 + <legend>{:$title}</legend>
  5 + </fieldset>
  6 +<form class="layui-form layui-form-pane" action="" lay-filter="card_info">
  7 +<div class="layui-tab layui-tab-card" lay-filter="demo">
  8 + <input type="hidden" value="2" name="card_from_type">
  9 + <input type="hidden" value="" id="seller_id" name="seller_id">
  10 + <input type="hidden" value="" id="seller_name" name="seller_name">
  11 + <input type="hidden" value="" id="card_id" name="card_id">
  12 + <ul class="layui-tab-title">
  13 + <li class="layui-this" lay-id="1">1.选择商户</li>
  14 + <li lay-id="2">2.选择卡券类型</li>
  15 + <li lay-id="3">3.填写卡券信息</li>
  16 + </ul>
  17 + <div class="layui-tab-content">
  18 + <div class="layui-tab-item layui-show" id="seller_list_div">
  19 + <div class="demoTable">
  20 + 商家名称:<div class="layui-inline">
  21 + <input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}店铺名称" autocomplete="off">
  22 + </div>
  23 + 商家来源:
  24 + <div class="layui-input-inline layui-form">
  25 + <div class="layui-input-8">
  26 + <select name="channel" id="channel" lay-filter="myselect">
  27 + <option value="4">全部</option>
  28 + <option value="1" selected>合作</option>
  29 + <option value="2">推广</option>
  30 + <option value="3">测试</option>
  31 + </select>
  32 + </div>
  33 + </div>
  34 + <button class="layui-btn" type="button" id="search" data-type="reload">搜索</button>
  35 + </div>
  36 + <table class="layui-table" id="list" lay-filter="list"></table>
  37 + </div>
  38 + <div class="layui-tab-item" id="card_list_div">
  39 + <table class="layui-table" id="card_list" lay-filter="card_list"></table>
  40 + </div>
  41 + <div class="layui-tab-item">
  42 + <div class="layui-form-item">
  43 + <label class="layui-form-label">卡券名称</label>
  44 + <div class="layui-input-inline">
  45 + <input type="text" name="title" lay-verify="required" lay-reqtext="卡券名称是必填项,岂能为空?" id="title" autocomplete="off" placeholder="请输入卡券名称" class="layui-input">
  46 + </div>
  47 + <div class="layui-form-mid layui-word-aux">例如进店红包,顾客在领取时将看到这个名字</div>
  48 + </div>
  49 + <div class="layui-form-item">
  50 + <div class="layui-inline">
  51 + <label class="layui-form-label">卡券金额</label>
  52 + <div class="layui-input-inline" style="width: 100px;">
  53 + <input type="text" name="price" id="price" lay-verify="required" placeholder="¥" autocomplete="off" class="layui-input">
  54 + </div>
  55 + <div class="layui-form-mid layui-word-aux">元</div>
  56 + </div>
  57 + </div>
  58 + <div class="layui-form-item">
  59 + <div class="layui-inline">
  60 + <label class="layui-form-label">卡券有效期</label>
  61 + <div class="layui-input-inline" style="width: 300px;">
  62 + <input type="text" name="date" id="date" lay-verify="required" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
  63 + </div>
  64 + <div class="layui-form-mid layui-word-aux">该期间内可以消费使用</div>
  65 + </div>
  66 + </div>
  67 + <div class="layui-form-item">
  68 + <div class="layui-input-block">
  69 + <button type="button" class="layui-btn" lay-submit="" lay-filter="submit_add_card">完成创建</button>
  70 + <button type="reset" class="layui-btn layui-btn-primary">重新填写</button>
  71 + </div>
  72 + </div>
  73 + </div>
  74 + </div>
  75 +</div>
  76 +</form>
  77 +</div>
  78 +{include file="common/foot"/}
  79 +
  80 +<script type="text/html" id="sTpl">
  81 + {{# if(d.card_id != 1){ }}
  82 + <span style="color: #0000C6;">{{ d.card_name }}</span>
  83 + {{# } else { }}
  84 + {{ d.card_name }}
  85 + {{# } }}
  86 +</script>
  87 +
  88 +<script>
  89 + layui.use(['table','form','element','laydate'], function() {
  90 + var table = layui.table,laydate = layui.laydate,form = layui.form,$ = layui.jquery,layer = layui.layer,element = layui.element;
  91 + form.render(); //更新全部
  92 + var tableIn = table.render({
  93 + elem: '#list',
  94 + url: '{:url("sellerlist")}',
  95 + method: 'post',
  96 + cols: [[
  97 + {field: 'id', title: '商家编号', align: 'center'},
  98 + {field: 'sellername', title: '商家名称', align: 'center'},
  99 + {type:'radio', title: '选择店铺',field:'id', align: 'center',width:100}
  100 + ]]
  101 + ,id: 'reload'
  102 + ,page: true
  103 + ,done: function(res, curr, count){
  104 + return;
  105 + }
  106 + });
  107 +
  108 + var tableCr = table.render({
  109 + elem: '#card_list',
  110 + url: '{:url("cardtypelist")}',
  111 + method: 'post',
  112 + cols: [[
  113 + {field: 'card_id', title: '类型ID', align: 'center'},
  114 + {field: 'card_name', title: '卡券类型名称', align: 'center', templet: '#sTpl'},
  115 + {field:'card_desc', title: '卡券类型描述'},
  116 + {type:'radio', title: '选择店铺', align: 'center',width:100}
  117 + ]]
  118 + ,id: 'cardtypeReload',
  119 + done: function(res, curr, count){
  120 + //部分单选按钮不可选中
  121 + for(var i = 0;i<res.data.length;i++){
  122 + var state = res.data[i].card_id;
  123 + if(state != 1 && res.rel==2){
  124 + //console.log(res.data[i]);return;
  125 + var index = res.data[i]['LAY_TABLE_INDEX'];
  126 + //按钮不可点击
  127 + $("div").children("#card_list_div tr[data-index="+index+"] input[type='radio']").prop("disabled","disabled");
  128 + //重新渲染按钮
  129 + form.render('radio');
  130 + }
  131 + }
  132 + }
  133 + });
  134 +
  135 + //添加卡券
  136 + form.on('submit(submit_add_card)', function (data) {
  137 + var loading = layer.load(1, {shade: [0.1, '#fff']});
  138 + //$("#text").attr("data_obj")
  139 + //var trclass = $("div").children("#seller_list_div tr").attr('class',true);
  140 + //console.log(trclass);return;
  141 + //$("div").children("#card_list_div").attr("class");
  142 + //console.log(table.checkStatus(id));return;
  143 + $.post("{:url('add_card')}", data.field, function (res) {
  144 + layer.close(loading);
  145 + if (res.code == 1) {
  146 + layer.msg(res.msg, {time: 1000, icon: 1}, function () {
  147 + window.parent.location.reload();
  148 + });
  149 + } else {
  150 + layer.msg(res.msg, {time: 1000, icon: 2});
  151 + }
  152 + });
  153 + })
  154 +
  155 + //触发单选按钮时赋值
  156 + table.on('row(list)', function(obj) {
  157 + $('#seller_id').val(obj.data.id);
  158 + $('#seller_name').val(obj.data.sellername);
  159 + });
  160 +
  161 + //触发单选按钮时赋值
  162 + table.on('row(card_list)', function(obj) {
  163 + if(obj.data.card_id==1)
  164 + $('#card_id').val(obj.data.card_id);
  165 + });
  166 +
  167 + //日期时间范围
  168 + laydate.render({
  169 + elem: '#date'
  170 + ,type: 'datetime'
  171 + ,range: true
  172 + });
  173 +
  174 + //搜索
  175 + $('#search').on('click', function() {
  176 + //关键字
  177 + var key = $('#key').val();
  178 + var channel = $('#channel').val();
  179 + //传参
  180 + tableIn.reload({ page: {page: 1},where: {key: key,channel: channel}});
  181 + });
  182 +
  183 + var $ = layui.$, active = {
  184 + reload: function(){
  185 + var channel = $('#channel');
  186 + var key = $('#key');
  187 + //执行重载
  188 + table.reload('reload', {
  189 + page: {
  190 + curr: 1 //重新从第 1 页开始
  191 + }
  192 + ,where: {
  193 + key: {
  194 + id: key.val(),
  195 + channel: channel.val()
  196 + }
  197 + }
  198 + });
  199 + }
  200 + };
  201 + })
  202 +</script>
  1 +{include file="common/head"/}
  2 +<div class="admin-main layui-anim layui-anim-upbit">
  3 + <fieldset class="layui-elem-field layui-field-title">
  4 + <legend>{:$title}</legend>
  5 + </fieldset>
  6 + <blockquote class="layui-elem-quote">
  7 + <a href="{:url('Seller/sellerList')}" class="layui-btn layui-btn-lg layui-btn-danger">
  8 + <i class="fa fa-file-image-o"></i> 优惠券
  9 + </a>
  10 + <a href="{:url('Template/uploadFile')}" class="layui-btn layui-btn-lg">
  11 + <i class="fa fa-file-image-o"></i> 卡券投放
  12 + </a>
  13 + <a href="{:url('Template/Vegetable')}" class="layui-btn layui-btn-lg">
  14 + <i class="fa fa-file-image-o"></i> 卡券核销
  15 + </a>
  16 + <a href="{:url('Template/Vegetable')}" class="layui-btn layui-btn-lg">
  17 + <i class="fa fa-file-image-o"></i> 数据统计
  18 + </a>
  19 + </blockquote>
  20 +
  21 + <div class="demoTable">
  22 + 商家名称:<div class="layui-inline">
  23 + <input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}店铺名称" autocomplete="off">
  24 + </div>
  25 + 商家来源:
  26 + <div class="layui-input-inline layui-form">
  27 + <div class="layui-input-8">
  28 + <select name="class" id="channel" lay-filter="myselect">
  29 + <option value="4">全部</option>
  30 + <option value="1" selected>合作</option>
  31 + <option value="2">推广</option>
  32 + <option value="3">测试</option>
  33 + </select>
  34 + </div>
  35 + </div>
  36 + <button class="layui-btn" id="search" data-type="reload">搜索</button> <button class="layui-btn" style="float:right;" id="addcard">新建卡券</button>
  37 + </div>
  38 + <table class="layui-table" id="list" lay-filter="list"></table>
  39 +</div>
  40 +{include file="common/foot"/}
  41 +
  42 +<script>
  43 + layui.use(['table','form'], function() {
  44 + var table = layui.table,laydate = layui.laydate,form = layui.form,$ = layui.jquery,layer = layui.layer;
  45 + var tableIn = table.render({
  46 + elem: '#list',
  47 + url: '{:url("sellercard")}',
  48 + method: 'post',
  49 + title: '卡券列表',
  50 + toolbar: '#toolbarDemo',
  51 + cols: [[
  52 + {field: 'id', title: '商家卡券编号',hide:true, fixed: true},
  53 + {field: 'sid', title: '商家编号', fixed: true},
  54 + {field: 'sellername', title: '商家名称'},
  55 + {field: 'card_title', title: '卡券名称'},
  56 + {field: 'price', align: 'center',title: '金额'},
  57 + {field: 'create_time', align: 'center', title: '创建日期'},
  58 + {field: 'creator', align: 'center', title: '创建人'},
  59 + {field: 'status', align: 'center',title: '状态'}
  60 + ]]
  61 + ,id: 'cardReload'
  62 + ,page: true
  63 + });
  64 +
  65 + //监听行双击事件
  66 + table.on('rowDouble(list)', function(obj){
  67 + //table.on('row(list)', function(obj){ 双击事件
  68 + //console.log(obj.tr) //得到当前行元素对象
  69 + console.log(obj.data) //得到当前行数据
  70 + layer.open({
  71 + type: 2,
  72 + title: obj.data.sellername,
  73 + shadeClose: true,
  74 + shade: 0.8,
  75 + area: ['90%', '90%'],
  76 + content: '{:url("carddetail")}?id='+obj.data.id //iframe的url
  77 + /*success:function(dom){
  78 + let $iframeDom=$(dom[0]).find("iframe").eq(0).contents();
  79 + $iframeDom.find("#test").html("我是从父级传来的值哟……")
  80 + }*/
  81 + });
  82 + });
  83 +
  84 + //搜索
  85 + $('#search').on('click', function() {
  86 + //关键字
  87 + var key = $('#key').val();
  88 + var channel = $('#channel').val();
  89 + //传参
  90 + tableIn.reload({ page: {page: 1},where: {key: key,channel: channel}});
  91 + });
  92 +
  93 + var $ = layui.$, active = {
  94 + reload: function(){
  95 + var channel = $('#channel');
  96 + var key = $('#key');
  97 + //执行重载
  98 + table.reload('cardReload', {
  99 + page: {
  100 + curr: 1 //重新从第 1 页开始
  101 + }
  102 + ,where: {
  103 + key: {
  104 + id: key.val(),
  105 + channel: channel.val()
  106 + }
  107 + }
  108 + });
  109 + }
  110 + };
  111 +
  112 + //新建卡券
  113 + $('#addcard').on('click', function() {
  114 + layer.open({
  115 + type: 2,
  116 + title: '创建优惠券',
  117 + shadeClose: true,
  118 + shade: 0.8,
  119 + area: ['90%', '90%'],
  120 + content: '{:url("selectseller")}' //iframe的url
  121 + /*success:function(dom){
  122 + let $iframeDom=$(dom[0]).find("iframe").eq(0).contents();
  123 + $iframeDom.find("#test").html("我是从父级传来的值哟……")
  124 + }*/
  125 + });
  126 + });
  127 + })
  128 +</script>