Commit d94e3f48092d58944427e381504d80a3c585288b

Authored by teemitop
1 parent 50fd3b8d

套餐管理

  1 +<?php
  2 +namespace app\admin\controller;
  3 +use think\Db;
  4 +use think\facade\Request;
  5 +class Package extends Common
  6 +{
  7 + /**
  8 + * 商家菜品套餐-套餐列表
  9 + */
  10 + public function list(){
  11 + if(Request::isAjax()){
  12 + $data = Request::except('file');
  13 +
  14 + $where = ' 1=1 and ';
  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_seller_food_set AS s
  28 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
  29 + WHERE ".$where." order by s.sid".$limit);
  30 + //格式化数据
  31 + foreach ($rs as $key => $value) {
  32 + $rs[$key]['cdate'] = date("Y年m月d日",$value['cdate']);
  33 + }
  34 +
  35 + //获取总条数
  36 + $total = Db::query("SELECT
  37 + s.id
  38 + FROM
  39 + `xt-member-two-LINE`.xt_dc_dz_seller_food_set AS s
  40 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
  41 + WHERE ".$where."");
  42 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  43 + }
  44 + $this->assign ( 'title','套餐列表');
  45 + return $this->fetch();
  46 + }
  47 +
  48 + /**
  49 + * 创建套餐-商家列表
  50 + */
  51 + public function sellerlist(){
  52 + if(Request::isAjax()){
  53 + $data = Request::except('file');
  54 +
  55 + $where = '';
  56 + $channel = $data['channel'] ? $data['channel'] : 1;
  57 +
  58 + $where .= ($channel && $channel==4) ? ' re.type_id in (1,2,3)' : " re.type_id in ($channel)";
  59 + $where .= $data['key'] ? ' and s.sellername like "%'.$data['key'].'%"' : "";
  60 +
  61 +
  62 + $offset = ($data["page"] - 1) * $data["limit"];
  63 + $limit = " LIMIT $offset,".$data['limit'];
  64 +
  65 + //商家基本数据
  66 + $rs = Db::query("SELECT
  67 + s.id,
  68 + s.sellername
  69 + FROM
  70 + `xt-member-two-LINE`.xt_seller AS s
  71 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  72 + WHERE
  73 + s.isopen_dc = 1
  74 + AND ".$where." GROUP BY s.id order by s.id".$limit);
  75 + //获取总条数
  76 + $total = Db::query("SELECT
  77 + s.id
  78 + FROM
  79 + `xt-member-two-LINE`.xt_seller AS s
  80 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  81 + WHERE
  82 + s.isopen_dc = 1
  83 + AND ".$where."
  84 + GROUP BY
  85 + s.id");
  86 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  87 + }
  88 + return $this->fetch();
  89 + }
  90 +
  91 + /**
  92 + * 创建菜品套餐-完成创建
  93 + */
  94 + public function add_foodset(){
  95 + $data = Request::except('file');
  96 + if(Request::isAjax()){
  97 + $arr = [];
  98 + $arr['sid'] = $data['seller_id'] ? $data['seller_id'] : 0;
  99 + $arr['sellername'] = $data['seller_name'] ? $data['seller_name'] : '';
  100 + $arr['name'] = $data['name'];
  101 + $arr['market_price'] = $data['market_price'];
  102 + $arr['sale_price'] = $data['sale_price'];
  103 + $arr['cost_price'] = $data['cost_price'];
  104 + $arr['discount'] = bcdiv($data['sale_price'], $data['market_price'], 1);//折扣 = 现价【销售价】 / 原价【市场价】
  105 + $arr['service'] = isset($data['server']) ? implode(',', $data['server']) : '';
  106 + $arr['main_url'] = $data['upload_main_val'];
  107 + $arr['detail_url'] = $data['upload_detail_val'];
  108 + $time = $data['date'] ? explode(' - ', $data['date']) : '';
  109 + $arr['eff_time_start'] = $time ? strtotime(date($time[0],time())) : 0;
  110 + $arr['eff_time_end'] = $time ? strtotime(date($time[1],time())) : 0;
  111 + $arr['use_time'] = $data['usetime'];
  112 + $arr['use_notice'] = $data['usenotice'];
  113 + $arr['status'] = $data['status'];
  114 + $arr['cdate'] = time();
  115 + $arr['founder'] = $_SESSION['think']['username'];
  116 + //有新加参数 需在此后追加。。。
  117 +
  118 + $keys = implode(',',array_keys($arr));
  119 +
  120 + $sql = "INSERT INTO `xt-member-two-LINE`.xt_dc_dz_seller_food_set ($keys) VALUES (";
  121 + foreach ($arr as $key => $value) {
  122 + $sql .= '"'.$value.'",';
  123 + }
  124 + $sql = substr( $sql,0, strlen($sql)-1 );
  125 + $sql .=")";
  126 + $res = Db::query($sql);
  127 +
  128 + if(!$res){
  129 + $result = ['code'=>1,'msg'=>'添加成功!','rel'=>1];
  130 + }else{
  131 + $result = ['code'=>0,'msg'=>'添加失败!','rel'=>1];
  132 + }
  133 + return $result;
  134 + }
  135 + return $this->fetch();
  136 + }
  137 +
  138 + /**
  139 + * 优惠券-卡券详情
  140 + */
  141 + public function footsetdetail(){
  142 + //print_r(Request::except('file'));die;
  143 + $data = Request::except('file');
  144 + //获取套餐详情
  145 + $rs = Db::query("SELECT
  146 + *
  147 + FROM
  148 + `xt-member-two-LINE`.xt_dc_dz_seller_food_set
  149 + WHERE id = ".$data['id']."
  150 + ");
  151 + switch ($rs[0]['status']) {
  152 + case '0':
  153 + $rs[0]['status'] = '已上架';
  154 + break;
  155 + case '1':
  156 + $rs[0]['status'] = '已下架';
  157 + break;
  158 + default:
  159 + # code...
  160 + break;
  161 + }
  162 + $rs[0]['eff_time_end'] = $rs[0]['eff_time_end'] ? date("Y年m月d日",$rs[0]['eff_time_end']) : '';
  163 + $rs[0]['eff_time_start'] = $rs[0]['eff_time_start'] ? date("Y年m月d日",$rs[0]['eff_time_start']) : '';
  164 + $rs[0]['lasttime'] = $rs[0]['lasttime'] ? date("Y年m月d日",$rs[0]['lasttime']) : '';
  165 + $rs[0]['cdate'] = $rs[0]['cdate'] ? date("Y年m月d日",$rs[0]['cdate']) : '';
  166 + $rs[0]['off_time'] = $rs[0]['off_time'] ? date("Y年m月d日",$rs[0]['off_time']) : '';
  167 + $rs[0]['on_time'] = $rs[0]['on_time'] ? date("Y年m月d日",$rs[0]['on_time']) : '';
  168 + $this->assign ('rs',$rs[0]);
  169 + $this->assign ( 'title','套餐详情');
  170 + return $this->fetch();
  171 + }
  172 +
  173 + /**
  174 + * 创建套餐-选择商户
  175 + */
  176 + public function selectseller(){
  177 + $this->assign ( 'title','创建套餐');
  178 + return $this->fetch();
  179 + }
  180 +
  181 + /**
  182 + * 菜品套餐 上架/下架
  183 + */
  184 + public function foodState(){
  185 + $id=input('post.id');
  186 + $status=input('post.status');
  187 + if (empty($id)){
  188 + $result['status'] = 0;
  189 + $result['info'] = '套餐不存在!';
  190 + $result['url'] = url('list');
  191 + return $result;
  192 + }
  193 + if($status==1)
  194 + $strtime = ' ,on_time = '.time();
  195 + else
  196 + $strtime = ' ,off_time = '.time();
  197 +
  198 + $sql = "UPDATE `xt-member-two-LINE`.xt_dc_dz_seller_food_set set status = ".$status.",lasttime = ".time().", operator = '".$_SESSION['think']['username']."' $strtime where id = ".$id;
  199 + $ups = Db::query($sql);
  200 + if(!$ups){
  201 + $result['code'] = 1;
  202 + $result['info'] = '变更成功!';
  203 + $result['url'] = url('list');
  204 + }else{
  205 + $result['code'] = 0;
  206 + $result['info'] = '变更失败,请联系管理员!';
  207 + $result['url'] = url('list');
  208 + }
  209 +
  210 + return $result;
  211 + }
  212 +
  213 +
  214 +
  215 + /**
  216 + * 创建优惠券-卡券类型选择
  217 + */
  218 + public function cardtypelist(){
  219 + if(Request::isAjax()){
  220 + //商家基本数据
  221 + $rs = Db::query("SELECT
  222 + *
  223 + FROM
  224 + `xt-member-two-LINE`.xt_dc_dz_card_base ");
  225 +
  226 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'rel'=>2];
  227 + }
  228 + return $this->fetch();
  229 + }
  230 +
  231 + /**
  232 + * 商家卡券-卡券投放-卡券列表
  233 + */
  234 + public function cardput(){
  235 + if(Request::isAjax()){
  236 + $data = Request::except('file');
  237 +
  238 + $where = '';
  239 + $channel = $data['channel'] ? $data['channel'] : 1;
  240 +
  241 + $where .= ($channel && $channel==4) ? ' re.type_id in (1,2,3)' : " re.type_id in ($channel)";
  242 + $where .= $data['key'] ? ' and s.sellername like "%'.$data['key'].'%"' : "";
  243 +
  244 + $offset = ($data["page"] - 1) * $data["limit"];
  245 + $limit = " LIMIT $offset,".$data['limit'];
  246 +
  247 + //卡券信息
  248 + $rs = Db::query("SELECT
  249 + s.*
  250 + FROM
  251 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  252 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
  253 + WHERE s.owner = 2 AND
  254 + ".$where." order by s.sid".$limit);
  255 + //格式化数据
  256 + foreach ($rs as $key => $value) {
  257 + $rs[$key]['create_time'] = date("Y年m月d日",$value['create_time']);
  258 + $rs[$key]['contributor_time'] = $value['contributor_time'] ? date("Y年m月d日",$value['contributor_time']) : '';
  259 + switch ($value['status']) {
  260 + case '1':
  261 + $rs[$key]['status_msg'] = '已投放';
  262 + break;
  263 + case '2':
  264 + $rs[$key]['status_msg'] = '未投放';
  265 + break;
  266 + case '3':
  267 + $rs[$key]['status_msg'] = '停止投放';
  268 + break;
  269 + default:
  270 + # code...
  271 + break;
  272 + }
  273 + }
  274 +
  275 + //获取总条数
  276 + $total = Db::query("SELECT
  277 + s.id
  278 + FROM
  279 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  280 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
  281 + WHERE s.owner = 2 AND
  282 + ".$where."");
  283 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  284 + }
  285 + $this->assign ( 'title','商家卡券');
  286 + return $this->fetch();
  287 + }
  288 +
  289 + /**
  290 + * 商家卡券-卡券投放- 停止投放
  291 + */
  292 + public function cardstop(){
  293 + if(Request::isAjax()){
  294 + $data = Request::except('file');
  295 + $ups = Db::query("UPDATE `xt-member-two-LINE`.xt_dc_dz_card_info set status = 3 where id = ".$data['id']);
  296 + if(!$ups){
  297 + $result['code'] = 1;
  298 + $result['msg'] = '该卡券已停止投放!';
  299 + }else{
  300 + $result['code'] = 0;
  301 + $result['msg'] = '请求错误,请联系管理员!';
  302 + }
  303 + return $result;
  304 + }
  305 + return view();
  306 + }
  307 +
  308 + /**
  309 + * 商家卡券-卡券投放- 投放-弹层
  310 + */
  311 + public function cardputin(){
  312 + $id = Request::except('file');
  313 + if(request()->isPost()){
  314 + $data = input('post.');
  315 +
  316 + //商家基本数据
  317 + $end_time = Db::query("SELECT
  318 + end_time
  319 + FROM
  320 + `xt-member-two-LINE`.xt_dc_dz_card_info
  321 + WHERE id=".$data['cid']);
  322 +
  323 + $arr = [];
  324 + $time = $data['date'] ? explode(' - ', $data['date']) : '';
  325 + $arr['receive_start_time'] = $time ? strtotime(date($time[0],time())) : '';
  326 + $arr['receive_end_time'] = $time ? strtotime(date($time[1],time())) : '';
  327 + $arr['total_limit'] = $data['total_limit']=='on' ? 1 : 0;
  328 + $arr['total'] = $data['total'] ? intval($data['total']) : 0;
  329 + $arr['totals'] = $data['total'] ? intval($data['total']) : 0;
  330 + $arr['receive_condition'] = $data['receive_condition'] ? intval($data['receive_condition']) : 0;
  331 + $arr['order_price'] = $data['order_price'] ? $data['order_price'] : 0;
  332 + $arr['contributor'] = $_SESSION['think']['username'];
  333 + $arr['contributor_time'] = time();
  334 + $arr['status'] = 1;
  335 +
  336 + if(($end_time[0]['end_time']!=0) && ($end_time[0]['end_time'] < $arr['receive_end_time'])) {
  337 + $result['code'] = 0;
  338 + $result['msg'] = '领取期限必须在卡券有效期内!';
  339 + return $result;
  340 + }
  341 +
  342 + $sql = "UPDATE `xt-member-two-LINE`.xt_dc_dz_card_info SET ";
  343 + foreach ($arr as $key=>$val){
  344 + $sql .= "".$key."='".$val."',";
  345 + }
  346 + $sql = substr( $sql,0, strlen($sql)-1 );
  347 + $sql .= ' where id = '.$data['cid'];
  348 +
  349 + $ups = Db::query($sql);
  350 + if(!$ups){
  351 + $result['code'] = 1;
  352 + $result['msg'] = '已成功投放!';
  353 + }else{
  354 + $result['code'] = 0;
  355 + $result['msg'] = '请求错误,请联系管理员!';
  356 + }
  357 + return $result;
  358 + }
  359 + //商家基本数据
  360 + $rs = Db::query("SELECT
  361 + id,
  362 + sellername,
  363 + card_title,
  364 + end_time
  365 + FROM
  366 + `xt-member-two-LINE`.xt_dc_dz_card_info
  367 + WHERE id=".$id['id']);
  368 + $this->assign ( 'rs',$rs[0]);
  369 + $this->assign ( 'title','卡券投放');
  370 + return $this->fetch();
  371 + }
  372 +
  373 + /**
  374 + * 平台卡券-优惠券-卡券列表
  375 + */
  376 + public function platformcard(){
  377 + if(Request::isAjax()){
  378 + $data = Request::except('file');
  379 +
  380 + $offset = ($data["page"] - 1) * $data["limit"];
  381 + $limit = " LIMIT $offset,".$data['limit'];
  382 +
  383 + //卡券信息
  384 + $rs = Db::query("SELECT
  385 + s.*
  386 + FROM
  387 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  388 + WHERE s.owner = 1 order by s.sid".$limit);
  389 + //格式化数据
  390 + foreach ($rs as $key => $value) {
  391 + $rs[$key]['create_time'] = date("Y年m月d日",$value['create_time']);
  392 + switch ($value['status']) {
  393 + case '1':
  394 + $rs[$key]['status'] = '已投放';
  395 + break;
  396 + case '2':
  397 + $rs[$key]['status'] = '未投放';
  398 + break;
  399 + case '3':
  400 + $rs[$key]['status'] = '停止投放';
  401 + break;
  402 + default:
  403 + # code...
  404 + break;
  405 + }
  406 + }
  407 +
  408 + //获取总条数
  409 + $total = Db::query("SELECT
  410 + s.id
  411 + FROM
  412 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  413 +
  414 + WHERE s.owner = 1");
  415 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  416 + }
  417 + $this->assign ( 'title','平台卡券');
  418 + return $this->fetch();
  419 + }
  420 +
  421 + /**
  422 + * 创建优惠券-选择商户
  423 + */
  424 + public function selectplatform(){
  425 + $this->assign ( 'title','创建卡券');
  426 + return $this->fetch();
  427 + }
  428 +
  429 + /**
  430 + * 平台卡券-卡券投放-卡券列表
  431 + */
  432 + public function cardputforplat(){
  433 + if(Request::isAjax()){
  434 + $data = Request::except('file');
  435 +
  436 + $offset = ($data["page"] - 1) * $data["limit"];
  437 + $limit = " LIMIT $offset,".$data['limit'];
  438 +
  439 + //卡券信息
  440 + $rs = Db::query("SELECT
  441 + s.*
  442 + FROM
  443 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  444 + WHERE s.owner = 1 order by s.sid".$limit);
  445 + //格式化数据
  446 + foreach ($rs as $key => $value) {
  447 + $rs[$key]['create_time'] = date("Y年m月d日",$value['create_time']);
  448 + $rs[$key]['contributor_time'] = $value['contributor_time'] ? date("Y年m月d日",$value['contributor_time']) : '';
  449 + switch ($value['status']) {
  450 + case '1':
  451 + $rs[$key]['status_msg'] = '已投放';
  452 + break;
  453 + case '2':
  454 + $rs[$key]['status_msg'] = '未投放';
  455 + break;
  456 + case '3':
  457 + $rs[$key]['status_msg'] = '停止投放';
  458 + break;
  459 + default:
  460 + # code...
  461 + break;
  462 + }
  463 + }
  464 +
  465 + //获取总条数
  466 + $total = Db::query("SELECT
  467 + s.id
  468 + FROM
  469 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  470 + WHERE s.owner = 1");
  471 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  472 + }
  473 + $this->assign ( 'title','平台卡券');
  474 + return $this->fetch();
  475 + }
  476 +
  477 + /**
  478 + * 商家卡券-数据统计-统计列表
  479 + */
  480 + public function sellercarddatalist(){
  481 + if(Request::isAjax()){
  482 + $data = Request::except('file');
  483 +
  484 + $where = '';
  485 + $channel = $data['channel'] ? $data['channel'] : 1;
  486 +
  487 + $where .= ($channel && $channel==4) ? ' AND rel.type_id in (1,2,3)' : " AND rel.type_id in ($channel)";
  488 + $where .= $data['key'] ? ' AND s.sellername like "%'.$data['key'].'%"' : "";
  489 +
  490 + //日期
  491 + $time = $data['time'] ? explode(' - ', $data['time']) : '';
  492 + $start = $time ? strtotime(date($time[0],time())) : 0;
  493 + $end = $time ? strtotime(date($time[1],time())) : 0;
  494 +
  495 + $where .= $data['time'] ? ' AND i.contributor_time BETWEEN '.$start.' AND '.$end : '';
  496 +
  497 + $offset = ($data["page"] - 1) * $data["limit"];
  498 + $limit = " LIMIT $offset,".$data['limit'];
  499 +
  500 + //卡券信息
  501 + $rs = Db::query("SELECT
  502 + i.*,
  503 + s.sellername
  504 + FROM
  505 + `xt-member-two-LINE`.xt_dc_dz_card_info AS i
  506 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON i.sid = s.id
  507 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel as rel ON rel.sid = s.id
  508 + WHERE
  509 + i.`owner` = 2
  510 + AND i.STATUS IN (1,3)
  511 + ".$where.$limit);
  512 + //格式化数据
  513 + foreach ($rs as $key => $value) {
  514 + $rs[$key]['contributor_time'] = date("Y年m月d日",$value['contributor_time']);
  515 + switch ($value['status']) {
  516 + case '1':
  517 + $rs[$key]['status'] = '已投放';
  518 + break;
  519 + case '2':
  520 + $rs[$key]['status'] = '未投放';
  521 + break;
  522 + case '3':
  523 + $rs[$key]['status'] = '停止投放';
  524 + break;
  525 + default:
  526 + # code...
  527 + break;
  528 + }
  529 + //领取人数
  530 + $receive_people_number = Db::query("SELECT
  531 + count(
  532 + DISTINCT ( openid )) AS total
  533 + FROM
  534 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  535 + WHERE
  536 + cid = ".$value['id']);
  537 + $rs[$key]['receive_people_number'] = $receive_people_number[0]['total'];
  538 + //领取次数
  539 + $receive_frequency = Db::query("SELECT
  540 + count(1) as total
  541 + FROM
  542 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  543 + WHERE
  544 + cid = ".$value['id']);
  545 + $rs[$key]['receive_frequency'] = $receive_frequency[0]['total'];
  546 + //核销人数
  547 + $write_off_people_number = Db::query("SELECT
  548 + count(
  549 + DISTINCT ( openid )) AS total
  550 + FROM
  551 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  552 + WHERE
  553 + status = 1 and cid = ".$value['id']);
  554 + $rs[$key]['write_off_people_number'] = $write_off_people_number[0]['total'];
  555 + //核销次数
  556 + $write_off_people_frequency = Db::query("SELECT
  557 + count(1) as total
  558 + FROM
  559 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  560 + WHERE
  561 + status = 1 and cid = ".$value['id']);
  562 + $rs[$key]['write_off_people_frequency'] = $write_off_people_frequency[0]['total'];
  563 + //应收金额: 需要先查询出该卡券都在哪些账单中核销,并计算该卡券所牵扯账单的总的应收金额
  564 + $amount_receivable = Db::query("SELECT
  565 + SUM(should_price) as should_price,
  566 + SUM(actual_price) as actual_price
  567 + FROM
  568 + `xt-member-two-LINE`.xt_dc_dz_seller_flowing_log
  569 + WHERE
  570 + rid IN (
  571 + SELECT
  572 + rid
  573 + FROM
  574 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  575 + WHERE
  576 + STATUS = 1
  577 + AND cid = ".$value['id'].")");
  578 + $rs[$key]['amount_receivable'] = $amount_receivable[0]['should_price'];
  579 + $rs[$key]['paid_in_amount'] = $amount_receivable[0]['actual_price'];
  580 + }
  581 +
  582 + //获取总条数
  583 + $total = Db::query("SELECT
  584 + i.*,
  585 + s.sellername
  586 + FROM
  587 + `xt-member-two-LINE`.xt_dc_dz_card_info AS i
  588 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON i.sid = s.id
  589 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel as rel ON rel.sid = s.id
  590 + WHERE
  591 + i.`owner` = 2
  592 + AND i.STATUS IN (1,3)
  593 + ".$where."");
  594 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  595 + }
  596 + $this->assign ( 'title','商家卡券信息统计');
  597 + return $this->fetch();
  598 + }
  599 +
  600 + /**
  601 + * 商家卡券-数据统计-某个商家订单详情
  602 + */
  603 + public function sellercarddatalog(){
  604 + $data = Request::except('file');
  605 + if(Request::isAjax()){
  606 + $where = '';
  607 + //证明是需要根据名称搜索,忽略隐藏域商家ID
  608 + $where .= ' AND s.id = '.$data['seller_id'].'';
  609 + //如果flag==1 则是查看平台红包
  610 + $where .= $data['flag']==1 ? ' AND i.owner = 1' : ' AND i.owner = 2';
  611 +
  612 + $offset = ($data["page"] - 1) * $data["limit"];
  613 + $limit = " LIMIT $offset,".$data['limit'];
  614 +
  615 + //订单信息
  616 + $rs = Db::query("SELECT
  617 + r.id,
  618 + r.sid,
  619 + r.tableinfo,
  620 + r.ddate,
  621 + r.ddate_solt,
  622 + r.rname,
  623 + r.sex,
  624 + s.sellername,
  625 + data_rel.cid,
  626 + data_rel.oid
  627 + FROM
  628 + `xt-member-two-LINE`.xt_dc_reserve AS r
  629 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON r.sid = s.id
  630 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_data_rel AS data_rel ON data_rel.rid = r.id
  631 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_info AS i ON data_rel.cid = i.id
  632 + WHERE
  633 + data_rel.oid IS NOT NULL and data_rel.status = 1".$where.$limit);
  634 + //格式化数据
  635 + foreach ($rs as $key => $value) {
  636 + $rs[$key]['rname'] = $value['sex']==1 ? $value['rname'].'先生' : ($value['sex']==2 ? $value['rname'].'女士' : $value['rname']);
  637 + $rs[$key]['ddate'] = date("Y年m月d日",$value['ddate']);
  638 + if($value['tableinfo']){
  639 + $tableinfo = json_decode($value['tableinfo'],true);
  640 + $tableinfo = array_column($tableinfo, 'name');
  641 + $rs[$key]['tableinfo'] = implode('、', $tableinfo);
  642 + }else{
  643 + $rs[$key]['tableinfo'] = '';
  644 + }
  645 + switch ($value['ddate_solt']) {
  646 + case '1':
  647 + $rs[$key]['ddate_solt'] = '早餐';
  648 + break;
  649 + case '2':
  650 + $rs[$key]['ddate_solt'] = '午餐';
  651 + break;
  652 + case '3':
  653 + $rs[$key]['ddate_solt'] = '晚餐';
  654 + break;
  655 + default:
  656 + # code...
  657 + break;
  658 + }
  659 + //查询账单所牵扯的卡券
  660 + if($value['oid']) {
  661 + $card_title = Db::query("SELECT
  662 + i.card_title
  663 + FROM
  664 + `xt-member-two-LINE`.xt_dc_dz_discount_act act
  665 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_data_rel rel ON act.cid = rel.id
  666 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_info i ON rel.cid = i.id
  667 + WHERE
  668 + orderid = ".$value['oid']);
  669 +
  670 + $rs[$key]['card_title'] = implode("<br/>", array_column($card_title, 'card_title'));
  671 + //查询提前买单账单金额
  672 + $price = Db::query("SELECT
  673 + should_price,
  674 + actual_price
  675 + FROM
  676 + `xt-member-two-LINE`.xt_dc_dz_seller_flowing_log
  677 + WHERE
  678 + rid = ".$value['id']);
  679 + $rs[$key]['should_price'] = $price ? $price[0]['should_price'] : '';
  680 + $rs[$key]['actual_price'] = $price ? $price[0]['actual_price'] : '';
  681 + }
  682 + }
  683 +
  684 + //获取总条数
  685 + $total = Db::query("SELECT
  686 + r.id,
  687 + r.sid,
  688 + r.tableinfo,
  689 + r.ddate,
  690 + r.ddate_solt,
  691 + r.rname,
  692 + r.sex,
  693 + s.sellername,
  694 + data_rel.cid,
  695 + data_rel.oid
  696 + FROM
  697 + `xt-member-two-LINE`.xt_dc_reserve AS r
  698 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON r.sid = s.id
  699 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_data_rel AS data_rel ON data_rel.rid = r.id
  700 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_info AS i ON data_rel.cid = i.id
  701 + WHERE
  702 + data_rel.oid IS NOT NULL and data_rel.status = 1 ".$where);
  703 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  704 + }
  705 + $msgs = $data['flag'] == 1 ? '平台卡券信息统计' : '商家卡券信息统计';
  706 + $this->assign ( 'sid',$data['id']);
  707 + $this->assign ( 'flag',$data['flag']);
  708 + $this->assign ( 'title',$msgs);
  709 + return $this->fetch();
  710 + }
  711 +
  712 + /**
  713 + * 平台卡券-数据统计-统计列表
  714 + */
  715 + public function platcarddatalist(){
  716 + if(Request::isAjax()){
  717 + $data = Request::except('file');
  718 +
  719 + $where = '';
  720 + //日期
  721 + $time = $data['time'] ? explode(' - ', $data['time']) : '';
  722 + $start = $time ? strtotime(date($time[0],time())) : 0;
  723 + $end = $time ? strtotime(date($time[1],time())) : 0;
  724 +
  725 + $where .= $data['time'] ? ' AND i.contributor_time BETWEEN '.$start.' AND '.$end : '';
  726 +
  727 + $offset = ($data["page"] - 1) * $data["limit"];
  728 + $limit = " LIMIT $offset,".$data['limit'];
  729 +
  730 + //卡券信息
  731 + $rs = Db::query("SELECT
  732 + i.*,
  733 + s.sellername
  734 + FROM
  735 + `xt-member-two-LINE`.xt_dc_dz_card_info AS i
  736 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON i.sid = s.id
  737 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel as rel ON rel.sid = s.id
  738 + WHERE
  739 + i.`owner` = 1
  740 + AND i.STATUS IN (1,3)
  741 + ".$where.$limit);
  742 + //格式化数据
  743 + foreach ($rs as $key => $value) {
  744 + $rs[$key]['contributor_time'] = date("Y年m月d日",$value['contributor_time']);
  745 + switch ($value['status']) {
  746 + case '1':
  747 + $rs[$key]['status'] = '已投放';
  748 + break;
  749 + case '2':
  750 + $rs[$key]['status'] = '未投放';
  751 + break;
  752 + case '3':
  753 + $rs[$key]['status'] = '停止投放';
  754 + break;
  755 + default:
  756 + # code...
  757 + break;
  758 + }
  759 + //领取人数
  760 + $receive_people_number = Db::query("SELECT
  761 + count(
  762 + DISTINCT ( openid )) AS total
  763 + FROM
  764 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  765 + WHERE
  766 + cid = ".$value['id']);
  767 + $rs[$key]['receive_people_number'] = $receive_people_number[0]['total'];
  768 + //领取次数
  769 + $receive_frequency = Db::query("SELECT
  770 + count(1) as total
  771 + FROM
  772 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  773 + WHERE
  774 + cid = ".$value['id']);
  775 + $rs[$key]['receive_frequency'] = $receive_frequency[0]['total'];
  776 + //核销人数
  777 + $write_off_people_number = Db::query("SELECT
  778 + count(
  779 + DISTINCT ( openid )) AS total
  780 + FROM
  781 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  782 + WHERE
  783 + status = 1 and cid = ".$value['id']);
  784 + $rs[$key]['write_off_people_number'] = $write_off_people_number[0]['total'];
  785 + //核销次数
  786 + $write_off_people_frequency = Db::query("SELECT
  787 + count(1) as total
  788 + FROM
  789 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  790 + WHERE
  791 + status = 1 and cid = ".$value['id']);
  792 + $rs[$key]['write_off_people_frequency'] = $write_off_people_frequency[0]['total'];
  793 + //应收金额: 需要先查询出该卡券都在哪些账单中核销,并计算该卡券所牵扯账单的总的应收金额
  794 + $amount_receivable = Db::query("SELECT
  795 + SUM(should_price) as should_price,
  796 + SUM(actual_price) as actual_price
  797 + FROM
  798 + `xt-member-two-LINE`.xt_dc_dz_seller_flowing_log
  799 + WHERE
  800 + rid IN (
  801 + SELECT
  802 + rid
  803 + FROM
  804 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  805 + WHERE
  806 + STATUS = 1
  807 + AND cid = ".$value['id'].")");
  808 + $rs[$key]['amount_receivable'] = $amount_receivable[0]['should_price'];
  809 + $rs[$key]['paid_in_amount'] = $amount_receivable[0]['actual_price'];
  810 + //总金额:查询该卡券所牵扯的账单总金额
  811 + $price = Db::query("SELECT
  812 + sum(price) as price
  813 + FROM
  814 + `xt-member-two-LINE`.xt_dc_dz_advance_order
  815 + WHERE
  816 + id IN (
  817 + SELECT
  818 + orderid
  819 + FROM
  820 + `xt-member-two-LINE`.xt_dc_dz_discount_act
  821 + WHERE
  822 + cid IN ( SELECT id FROM `xt-member-two-LINE`.xt_dc_dz_card_data_rel WHERE cid = ".$value['id']." ))");
  823 + $rs[$key]['order_price_total'] = $price ? $price[0]['price'] : '';
  824 + }
  825 +
  826 + //获取总条数
  827 + $total = Db::query("SELECT
  828 + i.*,
  829 + s.sellername
  830 + FROM
  831 + `xt-member-two-LINE`.xt_dc_dz_card_info AS i
  832 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON i.sid = s.id
  833 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel as rel ON rel.sid = s.id
  834 + WHERE
  835 + i.`owner` = 1
  836 + AND i.STATUS IN (1,3)
  837 + ".$where."");
  838 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  839 + }
  840 + $this->assign ( 'title','平台卡券信息统计');
  841 + return $this->fetch();
  842 + }
  843 +
  844 + /**
  845 + * 商家卡券-数据统计-统计列表
  846 + */
  847 + public function platcarddatalog(){
  848 + if(Request::isAjax()){
  849 + $data = Request::except('file');
  850 +
  851 + $where = '';
  852 + $channel = $data['channel'] ? $data['channel'] : 1;
  853 +
  854 + $where .= ($channel && $channel==4) ? ' AND re.type_id in (1,2,3)' : " AND re.type_id in ($channel)";
  855 + $where .= $data['key'] ? ' AND s.sellername like "%'.$data['key'].'%"' : "";
  856 +
  857 + //日期
  858 + $time = $data['time'] ? explode(' - ', $data['time']) : '';
  859 + $start = $time ? strtotime(date($time[0],time())) : 0;
  860 + $end = $time ? strtotime(date($time[1],time())) : 0;
  861 +
  862 + $where .= $data['time'] ? ' AND i.contributor_time BETWEEN '.$start.' AND '.$end : '';
  863 +
  864 + $offset = ($data["page"] - 1) * $data["limit"];
  865 + $limit = " LIMIT $offset,".$data['limit'];
  866 +
  867 + //卡券信息
  868 + $rs = Db::query("SELECT
  869 + i.id,
  870 + i.price,
  871 + o.sid,
  872 + o.sellername,
  873 + i.card_title,
  874 + rel.oid
  875 + FROM
  876 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel AS rel
  877 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_info AS i ON rel.cid = i.id
  878 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_advance_order AS o ON rel.oid = o.id
  879 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON o.sid = s.id
  880 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  881 + WHERE
  882 + i.`owner` = 1
  883 + AND rel.oid != 0
  884 + ".$where."GROUP BY o.sid,i.id ".$limit);
  885 + //格式化数据
  886 + foreach ($rs as $key => $value) {
  887 + //核销人数
  888 + $write_off_people_number = Db::query("SELECT
  889 + count(
  890 + DISTINCT ( rel.openid )) AS total
  891 + FROM
  892 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel AS rel
  893 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_advance_order AS o ON rel.oid = o.id
  894 + WHERE
  895 + rel.STATUS = 1
  896 + AND rel.cid = ".$value['id']."
  897 + AND o.sid = ".$value['sid']);
  898 + $rs[$key]['write_off_people_number'] = $write_off_people_number[0]['total'];
  899 + //核销次数
  900 + $write_off_people_frequency = Db::query("SELECT
  901 + count( 1 ) AS total
  902 + FROM
  903 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel AS rel
  904 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_advance_order AS o ON rel.oid = o.id
  905 + WHERE
  906 + rel.STATUS = 1
  907 + AND rel.cid = ".$value['id']."
  908 + AND o.sid = ".$value['sid']);
  909 + $rs[$key]['write_off_people_frequency'] = $write_off_people_frequency[0]['total'];
  910 + //订单总金额/红包总金额
  911 + $card_order_price = Db::query("SELECT
  912 + SUM(o.price) as order_price,
  913 + SUM(i.price) as card_price
  914 + FROM
  915 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel AS rel
  916 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_advance_order AS o ON rel.oid = o.id
  917 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_info as i ON rel.cid = i.id
  918 + WHERE
  919 + rel.STATUS = 1
  920 + AND rel.cid = ".$value['id']."
  921 + AND o.sid = ".$value['sid']);
  922 + $rs[$key]['order_price_total'] = $card_order_price[0]['order_price'];
  923 + $rs[$key]['card_price_total'] = $card_order_price[0]['card_price'];
  924 + }
  925 +
  926 + //获取总条数
  927 + $total = Db::query("SELECT
  928 + i.id,
  929 + i.price,
  930 + o.sid,
  931 + o.sellername,
  932 + i.card_title,
  933 + rel.oid
  934 + FROM
  935 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel AS rel
  936 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_card_info AS i ON rel.cid = i.id
  937 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_advance_order AS o ON rel.oid = o.id
  938 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON o.sid = s.id
  939 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
  940 + WHERE
  941 + i.`owner` = 1
  942 + AND rel.oid != 0
  943 + ".$where."GROUP BY o.sid,i.id ");
  944 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  945 + }
  946 + $this->assign ( 'title','平台卡券信息统计');
  947 + return $this->fetch();
  948 + }
  949 +}
@@ -106,6 +106,60 @@ class UpFiles extends Common @@ -106,6 +106,60 @@ class UpFiles extends Common
106 return $result; 106 return $result;
107 } 107 }
108 } 108 }
  109 + //传到共有七牛存储库
  110 + public function uploadQn(){
  111 + // 获取上传文件表单字段名
  112 + $fileKey = array_keys(request()->file());
  113 + // 获取表单上传文件
  114 + $file = request()->file($fileKey['0']);
  115 + $obj = $file->getInfo();
  116 + $rs = array('code' => 0, 'url' => '');
  117 + $tmpName = $obj['tmp_name'];
  118 + $name = md5($obj['name'] . $_SERVER['REQUEST_TIME']);
  119 + $ext = strrchr($obj['name'], '.');
  120 + $uploadFolder = sprintf('%s/uploads/temp/',$_SERVER['DOCUMENT_ROOT']);
  121 + if (!is_dir($uploadFolder)) {
  122 + mkdir($uploadFolder);
  123 + chmod($uploadFolder,0777);
  124 + }
  125 + $imgPath = $uploadFolder . $name . $ext;
  126 + //移动到临时目录
  127 + if (move_uploaded_file($tmpName, $imgPath)) {
  128 + $accessKey = 'uva-aaonM8dukeR6phc9yuPBrOXk9brrNW_PxLD7';
  129 + $secretKey = 'oZMMVN6phk49lG0J1xwmi1Ju0ETT15EnAEWcU9Cs';
  130 + $auth = new Auth($accessKey, $secretKey);
  131 + $bucket = 'colorcun-attr';
  132 + $key = date('YmdHis',time()).'_'.$name . $ext; //七牛云存储名称
  133 + // 生成上传Token
  134 + $token = $auth->uploadToken($bucket);
  135 + // 构建 UploadManager 对象
  136 + $uploadMgr = new UploadManager();
  137 + $backUrl = "http://qn.colorcun.com"; //返回图片在七牛的路径
  138 + //压缩处理
  139 + //$image = new Compression($imgPath);
  140 + //$imgPath = $image->getThumb();
  141 + list($ret, $err) = $uploadMgr->putFile($token,$key,$imgPath);
  142 + $rs['url'] = $backUrl."/".$key;
  143 + }
  144 + if($rs['url']){
  145 + //上传成功之后删除服务器文件
  146 + $this->deldir($uploadFolder);
  147 + $result['code'] = 1;
  148 + $result['info'] = '图片上传成功!';
  149 + $path=str_replace('\\','/',$rs['url']);
  150 + $result['url'] = $path;
  151 + $key = substr($key,0,strrpos($key,"."));
  152 + $result['picname'] = $key;
  153 + return $result;
  154 + }else{
  155 + // 上传失败获取错误信息
  156 + $result['code'] =0;
  157 + $result['info'] = $file->getError();
  158 + $result['url'] = '';
  159 + return $result;
  160 + }
  161 + }
  162 +
109 //菜品库 163 //菜品库
110 public function vegetabledata(){ 164 public function vegetabledata(){
111 // 获取上传文件表单字段名 165 // 获取上传文件表单字段名
  1 +{include file="common/head"/}
  2 +<div class="admin-main layui-anim layui-anim-upbit">
  3 +<form class="layui-form layui-form-pane" action="" lay-filter="card_info">
  4 +<div class="layui-tab layui-tab-card" lay-filter="demo">
  5 + <input type="hidden" value="" id="seller_id" name="seller_id" lay-filter="seller_id">
  6 + <input type="hidden" value="" id="seller_name" name="seller_name" lay-filter="seller_name">
  7 + <ul class="layui-tab-title" >
  8 + <li>套餐信息</li>
  9 + </ul>
  10 + <div class="layui-tab-content">
  11 + <div class="layui-tab-item layui-show">
  12 + <div class="layui-form-item">
  13 + <label class="layui-form-label">套餐名称</label>
  14 + <div class="layui-input-inline">
  15 + <input type="text" name="name" lay-verify="required" lay-reqtext="套餐名称是必填项,岂能为空?" id="name" autocomplete="off" placeholder="{$rs.name}" class="layui-input">
  16 + </div>
  17 + <div class="layui-form-mid layui-word-aux">C端展示的名字</div>
  18 + </div>
  19 + <div class="layui-form-item">
  20 + <div class="layui-inline">
  21 + <label class="layui-form-label">套餐金额</label>
  22 + <div class="layui-input-inline" style="width: 150px;">
  23 + <input type="text" name="market_price" id="market_price" lay-verify="number" lay-verify="required" placeholder="{$rs.market_price}" autocomplete="off" class="layui-input">
  24 + </div>
  25 + <div class="layui-input-inline" style="width: 150px;">
  26 + <input type="text" name="sale_price" id="sale_price" lay-verify="number" lay-verify="required" placeholder="{$rs.sale_price}" autocomplete="off" class="layui-input">
  27 + </div>
  28 + <div class="layui-input-inline" style="width: 150px;">
  29 + <input type="text" name="cost_price" id="cost_price" lay-verify="number" lay-verify="required" placeholder="{$rs.cost_price}" autocomplete="off" class="layui-input">
  30 + </div>
  31 + <div class="layui-form-mid layui-word-aux">CNY 折扣:{$rs.discount}</div>
  32 + </div>
  33 + </div>
  34 +
  35 + <div class="layui-form-item">
  36 + <div class="layui-inline">
  37 + <label class="layui-form-label">套餐主图</label>
  38 + <div class="layui-upload-drag" id="upload_main">
  39 + <img src="{$rs.main_url}" alt="上传成功后渲染" style="max-width: 196px">
  40 + </div>
  41 + </div>
  42 + </div>
  43 +
  44 + <div class="layui-form-item">
  45 + <div class="layui-inline">
  46 + <label class="layui-form-label">套餐详情</label>
  47 + <div class="layui-upload-drag" id="upload_detail">
  48 + <img src="{$rs.detail_url}" alt="上传成功后渲染" style="max-width: 196px">
  49 + </div>
  50 + </div>
  51 + </div>
  52 +
  53 + <div class="layui-form-item">
  54 + <div class="layui-inline">
  55 + <label class="layui-form-label">服务项目</label>
  56 + <div class="layui-input-block">
  57 + <input type="text" lay-verify="required" placeholder="{$rs.service}" autocomplete="off" class="layui-input">
  58 + </div>
  59 + </div>
  60 + </div>
  61 +
  62 + <div class="layui-form-item">
  63 + <div class="layui-inline">
  64 + <label class="layui-form-label">套餐有效期</label>
  65 + <div class="layui-input-inline" style="width: 300px;">
  66 + <input type="text" name="date" id="date" lay-verify="required" readonly placeholder="{$rs.eff_time_start} - {$rs.eff_time_end}" autocomplete="off" class="layui-input">
  67 + </div>
  68 + <div class="layui-form-mid layui-word-aux">该期间内可以消费使用</div>
  69 + </div>
  70 + </div>
  71 +
  72 + <div class="layui-form-item">
  73 + <label class="layui-form-label">使用时间</label>
  74 + <div class="layui-input-inline">
  75 + <input type="text" name="usetime" lay-verify="required" id="usetime" autocomplete="off" placeholder="{$rs.use_time}" class="layui-input">
  76 + </div>
  77 + <div class="layui-form-mid layui-word-aux">类似格式: 10:30—14:00,17:00—22:00</div>
  78 + </div>
  79 +
  80 + <div class="layui-form-item">
  81 + <label class="layui-form-label">使用须知</label>
  82 + <div class="layui-input-block">
  83 + <textarea placeholder="{$rs.use_notice}" lay-verify="required" name="usenotice" class="layui-textarea"></textarea>
  84 + </div>
  85 + </div>
  86 +
  87 + <div class="layui-form-item">
  88 + <div class="layui-inline">
  89 + <label class="layui-form-label">是否上架</label>
  90 + <div class="layui-input-block">
  91 + <input type="radio" name="status" value="1" lay-skin="primary" title="是" {if $rs.total_limit eq 1} checked=""{/if}>
  92 + <input type="radio" name="status" value="0" lay-skin="primary" title="否" {if $rs.total_limit eq 0} checked=""{/if}>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + </div>
  97 + </div>
  98 +</div>
  99 +</form>
  100 +</div>
  101 +{include file="common/foot"/}
  102 +<script>
  103 + layui.use('form', function(){
  104 + var form = layui.form;
  105 + //各种基于事件的操作,下面会有进一步介绍
  106 + //form.render('组件名','lay-filter名')
  107 + });
  108 +</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 +
  7 + <div class="demoTable">
  8 + 商家名称:<div class="layui-inline">
  9 + <input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}店铺名称" autocomplete="off">
  10 + </div>
  11 + 商家来源:
  12 + <div class="layui-input-inline layui-form">
  13 + <div class="layui-input-8">
  14 + <select name="class" id="channel" lay-filter="myselect">
  15 + <option value="4">全部</option>
  16 + <option value="1" selected>合作</option>
  17 + <option value="2">推广</option>
  18 + <option value="3">测试</option>
  19 + </select>
  20 + </div>
  21 + </div>
  22 + <button class="layui-btn" id="search" data-type="reload">搜索</button> <button class="layui-btn" style="float:right;" id="addfoodsed">新建套餐</button>
  23 + </div>
  24 + <table class="layui-table" id="list" lay-filter="list"></table>
  25 +</div>
  26 +<script type="text/html" id="switchTpl">
  27 + <input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="上架|下架" lay-filter="switchTpl" {{ d.status == 1 ? 'checked' : '' }}>
  28 +</script>
  29 +{include file="common/foot"/}
  30 +
  31 +<script>
  32 + layui.use(['table','form'], function() {
  33 + var table = layui.table,laydate = layui.laydate,form = layui.form,$ = layui.jquery,layer = layui.layer;
  34 + var tableIn = table.render({
  35 + elem: '#list',
  36 + url: '{:url("list")}',
  37 + method: 'post',
  38 + title: '卡券列表',
  39 + toolbar: '#toolbarDemo',
  40 + cols: [[
  41 + {field: 'id', title: '商家卡券编号',hide:true, fixed: true},
  42 + {field: 'sid', title: '商家编号', fixed: true},
  43 + {field: 'sellername', title: '商家名称'},
  44 + {field: 'name', title: '卡券名称'},
  45 + {field: 'market_price', align: 'center',title: '金额'},
  46 + {field: 'cdate', align: 'center', title: '创建日期'},
  47 + {field: 'founder', align: 'center', title: '创建人'},
  48 + {field: 'status', align: 'center', templet: '#switchTpl',title: '状态'}
  49 + ]]
  50 + ,id: 'cardReload'
  51 + ,page: true
  52 + });
  53 +
  54 + //监听单元格,上架/下架
  55 + form.on('switch(switchTpl)', function(obj){
  56 + loading =layer.load(1, {shade: [0.1,'#fff']});
  57 + var id = this.value;
  58 + var status = obj.elem.checked===true?1:0;
  59 + $.post('{:url("foodState")}',{'id':id,'status':status},function (res) {
  60 + layer.close(loading);
  61 + if (res.code==1) {
  62 + tableIn.reload();
  63 + }else{
  64 + layer.msg(res.msg,{time:1000,icon:2});
  65 + return false;
  66 + }
  67 + })
  68 + });
  69 +
  70 + //监听行双击事件
  71 + table.on('rowDouble(list)', function(obj){
  72 + //table.on('row(list)', function(obj){ 双击事件
  73 + //console.log(obj.tr) //得到当前行元素对象
  74 + console.log(obj.data) //得到当前行数据
  75 + layer.open({
  76 + type: 2,
  77 + title: obj.data.sellername,
  78 + shadeClose: true,
  79 + shade: 0.8,
  80 + area: ['90%', '90%'],
  81 + content: '{:url("footsetdetail")}?id='+obj.data.id //iframe的url
  82 + /*success:function(dom){
  83 + let $iframeDom=$(dom[0]).find("iframe").eq(0).contents();
  84 + $iframeDom.find("#test").html("我是从父级传来的值哟……")
  85 + }*/
  86 + });
  87 + });
  88 +
  89 + //搜索
  90 + $('#search').on('click', function() {
  91 + //关键字
  92 + var key = $('#key').val();
  93 + var channel = $('#channel').val();
  94 + //传参
  95 + tableIn.reload({ page: {page: 1},where: {key: key,channel: channel}});
  96 + });
  97 +
  98 + var $ = layui.$, active = {
  99 + reload: function(){
  100 + var channel = $('#channel');
  101 + var key = $('#key');
  102 + //执行重载
  103 + table.reload('cardReload', {
  104 + page: {
  105 + curr: 1 //重新从第 1 页开始
  106 + }
  107 + ,where: {
  108 + key: {
  109 + id: key.val(),
  110 + channel: channel.val()
  111 + }
  112 + }
  113 + });
  114 + }
  115 + };
  116 +
  117 + //新建卡券
  118 + $('#addfoodsed').on('click', function() {
  119 + layer.open({
  120 + type: 2,
  121 + title: '创建套餐',
  122 + shadeClose: true,
  123 + shade: 0.8,
  124 + area: ['90%', '90%'],
  125 + content: '{:url("selectseller")}' //iframe的url
  126 + /*success:function(dom){
  127 + let $iframeDom=$(dom[0]).find("iframe").eq(0).contents();
  128 + $iframeDom.find("#test").html("我是从父级传来的值哟……")
  129 + }*/
  130 + });
  131 + });
  132 + })
  133 +</script>
  1 +{include file="common/head"/}
  2 +<div class="admin-main layui-anim layui-anim-upbit">
  3 +<form class="layui-form layui-form-pane" action="" lay-filter="card_info">
  4 +<div class="layui-tab layui-tab-card" lay-filter="demo">
  5 + <input type="hidden" value="" id="seller_id" name="seller_id" lay-filter="seller_id">
  6 + <input type="hidden" value="" id="seller_name" name="seller_name" lay-filter="seller_name">
  7 + <ul class="layui-tab-title" >
  8 + <li class="layui-this" lay-id="1">1.选择商户</li>
  9 + <li lay-id="2">2.填写套餐信息</li>
  10 + </ul>
  11 + <div class="layui-tab-content">
  12 + <div class="layui-tab-item layui-show" id="seller_list_div">
  13 + <div class="demoTable">
  14 + 商家名称:<div class="layui-inline">
  15 + <input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}店铺名称" autocomplete="off">
  16 + </div>
  17 + 商家来源:
  18 + <div class="layui-input-inline layui-form">
  19 + <div class="layui-input-8">
  20 + <select name="channel" id="channel" lay-filter="myselect">
  21 + <option value="4">全部</option>
  22 + <option value="1" selected>合作</option>
  23 + <option value="2">推广</option>
  24 + <option value="3">测试</option>
  25 + </select>
  26 + </div>
  27 + </div>
  28 + <button class="layui-btn" type="button" id="search" data-type="reload">搜索</button>
  29 + </div>
  30 + <table class="layui-table" id="list" lay-filter="list"></table>
  31 + <div class="layui-form-item">
  32 + <div class="layui-input-block">
  33 + <button type="button" class="layui-btn" style="float:right;" onclick="opentab(2)">下一步</button>
  34 + </div>
  35 + </div>
  36 + </div>
  37 + <div class="layui-tab-item">
  38 + <div class="layui-form-item">
  39 + <label class="layui-form-label">套餐名称</label>
  40 + <div class="layui-input-inline">
  41 + <input type="text" name="name" lay-verify="required" lay-reqtext="套餐名称是必填项,岂能为空?" id="name" autocomplete="off" placeholder="请输入套餐名称" class="layui-input">
  42 + </div>
  43 + <div class="layui-form-mid layui-word-aux">C端展示的名字</div>
  44 + </div>
  45 + <div class="layui-form-item">
  46 + <div class="layui-inline">
  47 + <label class="layui-form-label">套餐金额</label>
  48 + <div class="layui-input-inline" style="width: 150px;">
  49 + <input type="text" name="market_price" id="market_price" lay-verify="number" lay-verify="required" placeholder="原价【市场价】" autocomplete="off" class="layui-input">
  50 + </div>
  51 + <div class="layui-input-inline" style="width: 150px;">
  52 + <input type="text" name="sale_price" id="sale_price" lay-verify="number" lay-verify="required" placeholder="现价【销售价】" autocomplete="off" class="layui-input">
  53 + </div>
  54 + <div class="layui-input-inline" style="width: 150px;">
  55 + <input type="text" name="cost_price" id="cost_price" lay-verify="number" lay-verify="required" placeholder="成本价【进货价】" autocomplete="off" class="layui-input">
  56 + </div>
  57 + <div class="layui-form-mid layui-word-aux">CNY</div>
  58 + </div>
  59 + </div>
  60 +
  61 + <div class="layui-form-item">
  62 + <div class="layui-inline">
  63 + <label class="layui-form-label">套餐主图</label>
  64 + <div class="layui-upload-drag" id="upload_main">
  65 + <i class="layui-icon"></i>
  66 + <p>点击上传,或将文件拖拽到此处</p>
  67 + <div class="layui-hide" id="uploadDemoViewMain">
  68 + <hr>
  69 + <img src="" alt="上传成功后渲染" style="max-width: 196px">
  70 + <input type="hidden" value="" id="upload_main_val" name="upload_main_val" lay-filter="upload_main_val">
  71 + </div>
  72 + </div>
  73 + </div>
  74 + </div>
  75 +
  76 + <div class="layui-form-item">
  77 + <div class="layui-inline">
  78 + <label class="layui-form-label">套餐详情</label>
  79 + <div class="layui-upload-drag" id="upload_detail">
  80 + <i class="layui-icon"></i>
  81 + <p>点击上传,或将文件拖拽到此处</p>
  82 + <div class="layui-hide" id="uploadDemoViewDetail">
  83 + <hr>
  84 + <img src="" alt="上传成功后渲染" style="max-width: 196px">
  85 + <input type="hidden" value="" id="upload_detail_val" name="upload_detail_val" lay-filter="upload_detail_val">
  86 + </div>
  87 + </div>
  88 + </div>
  89 + </div>
  90 +
  91 + <div class="layui-form-item">
  92 + <div class="layui-inline">
  93 + <label class="layui-form-label">服务项目</label>
  94 + <div class="layui-input-block">
  95 + <input type="checkbox" name="server" value="随时退" lay-skin="primary" title="随时退">
  96 + <input type="checkbox" name="server" value="免预约" lay-skin="primary" title="免预约">
  97 + <input type="checkbox" name="server" value="包间可用" lay-skin="primary" title="包间可用">
  98 + </div>
  99 + </div>
  100 + </div>
  101 +
  102 + <div class="layui-form-item">
  103 + <div class="layui-inline">
  104 + <label class="layui-form-label">套餐有效期</label>
  105 + <div class="layui-input-inline" style="width: 300px;">
  106 + <input type="text" name="date" id="date" lay-verify="required" readonly placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
  107 + </div>
  108 + <div class="layui-form-mid layui-word-aux">该期间内可以消费使用</div>
  109 + </div>
  110 + </div>
  111 +
  112 + <div class="layui-form-item">
  113 + <label class="layui-form-label">使用时间</label>
  114 + <div class="layui-input-inline">
  115 + <input type="text" name="usetime" lay-verify="required" id="usetime" autocomplete="off" placeholder="请输入使用时间" class="layui-input">
  116 + </div>
  117 + <div class="layui-form-mid layui-word-aux">类似格式: 10:30—14:00,17:00—22:00</div>
  118 + </div>
  119 +
  120 + <div class="layui-form-item">
  121 + <label class="layui-form-label">使用须知</label>
  122 + <div class="layui-input-block">
  123 + <textarea placeholder="请输入使用须知" lay-verify="required" name="usenotice" class="layui-textarea"></textarea>
  124 + </div>
  125 + </div>
  126 +
  127 + <div class="layui-form-item">
  128 + <div class="layui-inline">
  129 + <label class="layui-form-label">是否上架</label>
  130 + <div class="layui-input-block">
  131 + <input type="radio" name="status" value="1" lay-skin="primary" title="是">
  132 + <input type="radio" name="status" value="0" lay-skin="primary" title="否" checked>
  133 + </div>
  134 + </div>
  135 + </div>
  136 +
  137 + <div class="layui-form-item">
  138 + <div class="layui-input-block">
  139 + <button type="button" class="layui-btn" lay-submit="" lay-filter="submit_add_foodset">完成创建</button>
  140 + <button type="reset" class="layui-btn layui-btn-primary">重新填写</button>
  141 + <button type="button" class="layui-btn" onclick="opentab(1)">返回</button>
  142 + </div>
  143 + </div>
  144 + </div>
  145 + </div>
  146 +</div>
  147 +</form>
  148 +</div>
  149 +{include file="common/foot"/}
  150 +
  151 +<script type="text/html" id="sTpl">
  152 + {{# if(d.card_id == 1){ }}
  153 + <span style="color: #0000C6;">{{ d.card_name }}</span>
  154 + {{# } else { }}
  155 + {{ d.card_name }}
  156 + {{# } }}
  157 +</script>
  158 +
  159 +<script>
  160 + layui.use(['table','form','element','laydate','upload'], function() {
  161 + var table = layui.table,laydate = layui.laydate,form = layui.form,$ = layui.jquery,layer = layui.layer,element = layui.element,upload = layui.upload;
  162 + form.render(); //更新全部
  163 + var tableIn = table.render({
  164 + elem: '#list',
  165 + url: '{:url("sellerlist")}',
  166 + method: 'post',
  167 + cols: [[
  168 + {field: 'id', title: '商家编号', align: 'center'},
  169 + {field: 'sellername', title: '商家名称', align: 'center'},
  170 + {type:'radio', title: '选择店铺',field:'id', align: 'center',width:100}
  171 + ]]
  172 + ,id: 'reload'
  173 + ,page: true
  174 + ,done: function(res, curr, count){
  175 + return;
  176 + }
  177 + });
  178 +
  179 + //套餐主图 拖拽上传
  180 + upload.render({
  181 + elem: '#upload_main'
  182 + ,url: '{:url("UpFiles/uploadQn")}' //上传接口
  183 + ,done: function(res){
  184 + layer.msg('上传成功');
  185 + layui.$('#uploadDemoViewMain').removeClass('layui-hide').find('img').attr('src', res.url);
  186 + layui.$('#upload_main_val').val(res.url);
  187 + console.log(res)
  188 + }
  189 + });
  190 +
  191 + //套餐详情 拖拽上传
  192 + upload.render({
  193 + elem: '#upload_detail'
  194 + ,url: '{:url("UpFiles/uploadQn")}' //上传接口
  195 + ,done: function(res){
  196 + layer.msg('上传成功');
  197 + layui.$('#uploadDemoViewDetail').removeClass('layui-hide').find('img').attr('src', res.url);
  198 + layui.$('#upload_detail_val').val(res.url);
  199 + console.log(res)
  200 + }
  201 + });
  202 +
  203 + //添加套餐
  204 + form.on('submit(submit_add_foodset)', function (data) {
  205 + if(data.field.seller_id==''){
  206 + layer.msg('请勾选商家!', {time: 1800, icon: 2});return;
  207 + }
  208 + if(data.field.upload_main_val==''){
  209 + layer.msg('请上传套餐主图图片!', {time: 1800, icon: 2});return;
  210 + }
  211 + if(data.field.upload_detail_val==''){
  212 + layer.msg('请上传套餐详情图片!', {time: 1800, icon: 2});return;
  213 + }
  214 + //将页面全部复选框选中的值或者单选按钮选中的值拼接到一个数组中
  215 + var val_box = [];
  216 + $('input[type=checkbox]:checked').each(function() {
  217 + val_box.push($(this).val());
  218 + });
  219 +
  220 + data.field.server = val_box;
  221 +
  222 + var loading = layer.load(1, {shade: [0.1, '#fff']});
  223 + $.post("{:url('add_foodset')}", data.field, function (res) {
  224 + layer.close(loading);
  225 + if (res.code == 1) {
  226 + layer.msg(res.msg, {time: 1000, icon: 1}, function () {
  227 + window.parent.location.reload();
  228 + });
  229 + } else {
  230 + layer.msg(res.msg, {time: 1000, icon: 2});
  231 + }
  232 + });
  233 + })
  234 +
  235 + //触发单选按钮时赋值
  236 + table.on('row(list)', function(obj) {
  237 + $('#seller_id').val(obj.data.id);
  238 + $('#seller_name').val(obj.data.sellername);
  239 + });
  240 +
  241 + //日期时间范围
  242 + laydate.render({
  243 + elem: '#date'
  244 + ,type: 'datetime'
  245 + ,range: true
  246 + ,min: 0
  247 + ,trigger:'click'
  248 + });
  249 +
  250 + //搜索
  251 + $('#search').on('click', function() {
  252 + //关键字
  253 + var key = $('#key').val();
  254 + var channel = $('#channel').val();
  255 + //传参
  256 + tableIn.reload({ page: {page: 1},where: {key: key,channel: channel}});
  257 + });
  258 +
  259 + var $ = layui.$, active = {
  260 + reload: function(){
  261 + var channel = $('#channel');
  262 + var key = $('#key');
  263 + //执行重载
  264 + table.reload('reload', {
  265 + page: {
  266 + curr: 1 //重新从第 1 页开始
  267 + }
  268 + ,where: {
  269 + key: {
  270 + id: key.val(),
  271 + channel: channel.val()
  272 + }
  273 + }
  274 + });
  275 + }
  276 + };
  277 + })
  278 +//下一步
  279 +function opentab(id){
  280 + layui.use(['element'], function() {
  281 + var element = layui.element;
  282 + element.tabChange('demo', id);
  283 + })
  284 +}
  285 +</script>