EcShop充值卡功能插件(2)

在admin下
创建ks_card.php
由于文件比较长,基本都是一些crud 我直接展示代码  不懂的地方留言吧

<?php

define('IN_ECS', true);

require(dirname(__FILE__) . '/includes/init.php');


if (empty($_REQUEST['act']))
{
      $_REQUEST['act'] = 'cat';
}
else
{
      $_REQUEST['act'] = trim($_REQUEST['act']);
}


$exc = new exchange($ecs->table('bonus_type'), $db, 'type_id', 'type_name');


//-- 礼品卡分类列表

if ($_REQUEST['act'] == 'cat')
{
      $smarty->assign('ur_here',        '礼品卡分类');
      $smarty->assign('action_link', array('text' => '添加礼品卡类型', 'href' => 'ks_card.php?act=add'));
      $smarty->assign('full_page',    1);

      $list = get_type_list();

      $smarty->assign('type_list',      $list);

      assign_query_info();
      $smarty->display('ks_card_type.htm');
}


if ($_REQUEST['act'] == 'edit_card_type')
{
        $card_id = !empty($_REQUEST['cid'])      ? intval($_REQUEST['cid'])      : 0;
        $card_type = !empty($_REQUEST['tid'])      ? intval($_REQUEST['tid'])      : 0;
     
      $smarty->assign('lang',                $_LANG);
      $smarty->assign('ur_here',        '编辑礼品卡类别');
      $smarty->assign('action_link', array('text' => '礼品卡列表', 'href' => "ks_card.php?act=list"));
      $smarty->assign('action',            'edit_card_type');
     
      $smarty->assign('card_name',        get_type_name($card_type));
      $smarty->assign('form_act',        'card_type_update');
      $smarty->assign('card_id',        $card_id);
      $smarty->assign('card_type',        $card_type);
      $smarty->assign('cfg_lang',        $_CFG['lang']);
      $list = get_catd_type_list();
      $smarty->assign('type_list',      $list);
      assign_query_info();
      $smarty->display('ks_edit_card_type.htm');

}


//-- 修改礼品卡分类


if ($_REQUEST['act'] == 'card_type_update')
{
       
      $card_id        = !empty($_REQUEST['cid'])      ? intval($_REQUEST['cid'])      : 0;
      $up_card_type        = !empty($_REQUEST['card_type'])      ? intval($_REQUEST['card_type'])      : 0;
      $sql = "UPDATE " .$ecs->table('ks_cards'). " SET ".
                    "card_type              = '$up_card_type'".
                    "WHERE card_id      = '$card_id'";
      $db->query($sql);
     
      $url = "ks_card.php?act=edit_card_type&cid=$card_id&tid=$up_card_type";

      ecs_header("Location: $url\n");
      exit;
}


//-- 导出线下发放的信息

if ($_REQUEST['act'] == 'excel')
{
      @set_time_limit(0);

     
      $tid  = !empty($_GET['tid']) ? intval($_GET['tid']) : 0;
      $type_name = $db->getOne("SELECT cat_name FROM ".$ecs->table('ks_cardcats')." WHERE cat_id = '$tid'");

     
      $bonus_filename = $type_name .'_bonus_list';
      if (EC_CHARSET != 'gbk')
      {
              $bonus_filename = ecs_iconv('UTF8', 'GB2312',$bonus_filename);
      }

      header("Content-type: application/vnd.ms-excel; charset=utf-8");
      header("Content-Disposition: attachment; filename=$bonus_filename.xls");

     
      if (EC_CHARSET != 'gbk')
      {
              echo ecs_iconv('UTF8', 'GB2312', '礼品卡序号') ."\t";
              echo ecs_iconv('UTF8', 'GB2312', '礼品卡密码') ."\t\n";
      }
      else
      {
              echo "礼品卡序号" ."\t";
              echo "礼品卡密码" ."\t\n";
      }

      $val = array();
      $sql = "SELECT card_sn, card_pwd ".
                    "FROM ".$ecs->table('ks_cards').
                    "WHERE  card_type = '$tid' ORDER BY card_id";
      $res = $db->query($sql);

      $code_table = array();
      while ($val = $db->fetchRow($res))
      {
              echo $val['card_sn'] . "\t";
              echo $val['card_pwd'] . "\t";
              echo "\t\n";
      }
}



function get_catd_type_list()
{

   
      $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_cardcats');
                                                     
      $result = $GLOBALS['db']->getAll($sql);
      $goods = array();
     
      foreach ($result AS $idx => $row)
      {
           
              $goods[$idx]['cat_id']                    = $row['cat_id'];
              $goods[$idx]['cat_name']                    = $row['cat_name'];

      }

return $goods;
}


if ($_REQUEST['act'] == 'edit_card')
{
        $type_id        = !empty($_REQUEST['tid'])      ? intval($_REQUEST['tid'])      : 0;
     
      $smarty->assign('lang',                $_LANG);
      $smarty->assign('ur_here',        '礼品卡列表');
      $smarty->assign('action_link', array('text' => '礼品卡列表', 'href' => "ks_card.php?act=list"));
      $smarty->assign('action',            'edit_card');

      $smarty->assign('form_act',        'card_update');
      $smarty->assign('type_id',        $type_id);
      $smarty->assign('cfg_lang',        $_CFG['lang']);

      assign_query_info();
      $smarty->display('ks_edit_card.htm');

}



//-- 翻页、排序


if ($_REQUEST['act'] == 'query')
{
      $list = get_order_list();

      $smarty->assign('type_list',      $list['item']);
      $smarty->assign('filter',            $list['filter']);
      $smarty->assign('record_count', $list['record_count']);
      $smarty->assign('page_count',    $list['page_count']);

      $sort_flag  = sort_flag($list['filter']);
      $smarty->assign($sort_flag['tag'], $sort_flag['img']);

      make_json_result($smarty->fetch('ks_order_list.htm'), '',
              array('filter' => $list['filter'], 'page_count' => $list['page_count']));
}


//-- 礼品实卡列表


if ($_REQUEST['act'] == 'list')
{
     
       
      $type_id        = !empty($_REQUEST['tid'])      ? intval($_REQUEST['tid'])      : 0;
      $card_id        = !empty($_REQUEST['id'])      ? intval($_REQUEST['id'])      : 0;
      $pageid = !empty($_REQUEST['page'])      ? intval($_REQUEST['page'])      : 1;
        $pagesize = 50;
     
      $smarty->assign('ur_here',        '礼品卡实卡');
      $smarty->assign('action_link', array('text' => '生成礼品卡', 'href' => "ks_card.php?act=edit_card&tid=$type_id"));
      $smarty->assign('full_page',    1);

      $list = get_card_list($type_id,$card_id,$pagesize,$pageid);
     
      $pages = get_card_page($pagesize,$type_id);

      $smarty->assign('type_list',      $list);
      $smarty->assign('pages',      $pages);

      assign_query_info();
      $smarty->display('ks_card_list.htm');
}



function get_card_page($pagesize,$type_id)
{
      if($type_id == 0)
            {
      $sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('ks_cards'); 
          }
      else
          {
      $sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('ks_cards') . " WHERE card_type = '$type_id'"; 
           
      $total = $GLOBALS['db']->getOne($sql);
     
      $total = intval($total);
      $pagesize = intval($pagesize);
     
      $pages = ceil($total/$pagesize); //计算总分页
     
      for ($i = 1; $i <= $pages; $i++)
      {
            if($type_id == 0)
            {
                  $pagestr.="<a href="ks_card.php?act=list&page=".$i."">第".$i."页</a>&nbsp;&nbsp;";
            }
            else
            {
              $pagestr.="<a href="ks_card.php?act=list&tid=".$type_id."&page=".$i."">第".$i."页</a>&nbsp;&nbsp;";
          }
      }

return $pagestr;

}


//-- 生成礼品实卡


if ($_REQUEST['act'] == 'card_update')
{
     
       
      $type_id        = !empty($_REQUEST['tid'])      ? intval($_REQUEST['tid'])      : 0;
      $bnum        = !empty($_REQUEST['bnum'])      ? intval($_REQUEST['bnum'])      : 0;
      $cnum        = !empty($_REQUEST['cnum'])      ? intval($_REQUEST['cnum'])      : 0;
     
      if($type_id != 0)
      {
      create_card($type_id,$bnum,$cnum);
      }
 
      $url = "ks_card.php?act=list&tid=$type_id";

      ecs_header("Location: $url\n");
      exit;
}


//-- 删除礼品卡实卡

if ($_REQUEST['act'] == 'delsn')
{
      check_authz_json('card_and_card');

      $id = intval($_GET['id']);
      $tid = intval($_GET['tid']);

//    $exc->drop($id);


     
      $db->query("DELETE FROM " .$ecs->table('ks_cards'). " WHERE card_id = '$id'");

      $url = "ks_card.php?act=list&tid=$tid";

      ecs_header("Location: $url\n");
      exit;

}


//-- 礼品卡订单详情


if ($_REQUEST['act'] == 'order_info')
{
     
       
      $order_id        = !empty($_REQUEST['id'])      ? intval($_REQUEST['id'])      : 0;
     
      $smarty->assign('lang',                $_LANG);
      $smarty->assign('ur_here',        '订单详情');
      $smarty->assign('action_link', array('text' => '订单列表', 'href' => "ks_card.php?act=order"));
      $smarty->assign('action',            'order_info');

      $smarty->assign('form_act',        'order_update');
      $smarty->assign('cfg_lang',        $_CFG['lang']);

      $list = $db->getRow("SELECT * FROM " .$ecs->table('ks_order'). " WHERE order_id = '$order_id'");

      $smarty->assign('order',      $list);

      assign_query_info();
      $smarty->display('ks_order_info.htm');

}

//-- 订单编辑页面


if ($_REQUEST['act'] == 'order_update')
{

     
      $id              = !empty($_POST['id'])      ? intval($_POST['id'])      : 0;
      $order_user          = !empty($_POST['order_user'])  ? trim($_POST['order_user'])      : '';
      $order_address    = !empty($_POST['order_address'])  ? trim($_POST['order_address'])      : '';
      $order_tel          = !empty($_POST['order_tel'])  ? trim($_POST['order_tel'])      : '';
      $order_phone          = !empty($_POST['order_phone'])  ? trim($_POST['order_phone'])      : '';
      $order_bak          = !empty($_POST['order_bak'])  ? trim($_POST['order_bak'])      : '';
      $shipping_time          = !empty($_POST['shipping_time'])  ? trim($_POST['shipping_time'])      : '';


      $sql = "UPDATE " .$ecs->table('ks_order'). " SET ".
                    "order_user              = '$order_user', ".
                    "order_address              = '$order_address', ".
                    "order_tel              = '$order_tel', ".
                    "order_phone                = '$order_phone', ".
                    "order_bak                = '$order_bak', ".
                    "shipping_time                = '$shipping_time' ".
                    "WHERE order_id      = '$id'";

    $db->query($sql);

   
   
    clear_cache_files();

   
    $link[] = array('text' => '返回此订单' , 'href' => "ks_card.php?act=order_info&id=$id");
    sys_msg($_LANG['edit'] .' '.$_POST['type_name'].' '. $_LANG['attradd_succed'], 0, $link);
   
  }


//-- 订单列表

if ($_REQUEST['act'] == 'order')
{
        $keywords          = trim($_POST['keywords']);
        $order_id        = !empty($_REQUEST['id'])      ? intval($_REQUEST['id'])      : 0;
               
      $smarty->assign('ur_here',        '礼品卡订单列表');
      $smarty->assign('action_link', array('text' => '礼品卡类型', 'href' => 'ks_card.php?act=cat'));
      $smarty->assign('full_page',    1);

      $list = get_order_list($keywords,$order_id);

      $smarty->assign('type_list',      $list['item']);
      $smarty->assign('filter',            $list['filter']);
      $smarty->assign('record_count', $list['record_count']);
      $smarty->assign('page_count',    $list['page_count']);

      $sort_flag  = sort_flag($list['filter']);
      $smarty->assign($sort_flag['tag'], $sort_flag['img']);

      assign_query_info();
      $smarty->display('ks_order_list.htm');
}


//-- 礼品卡商品配送信息

if ($_REQUEST['act'] == 'goods')
{
        $id = $_GET['gid'];
       
      $smarty->assign('ur_here',        '礼品卡配送商品');
      $smarty->assign('action_link', array('text' => '礼品卡订单列表', 'href' => 'ks_card.php?act=order'));
      $smarty->assign('full_page',    1);

      $list = get_order_goods_list($id);

      $smarty->assign('type_list',      $list);

      assign_query_info();
      $smarty->display('ks_order_goods.htm');
}


//-- 删除礼品卡类型

if ($_REQUEST['act'] == 'remove')
{
      check_authz_json('card_and_card');

      $id = intval($_GET['tid']);

//    $exc->drop($id);

     
      $db->query("DELETE FROM " .$ecs->table('ks_cardgoods'). " WHERE cg_catid = '$id'");

     
      $db->query("DELETE FROM " .$ecs->table('ks_cardcats'). " WHERE cat_id = '$id'");
     
     
      $db->query("DELETE FROM " .$ecs->table('ks_cards'). " WHERE card_type = '$id'");

      $url = "ks_card.php?act=cat";

      ecs_header("Location: $url\n");
      exit;

}


//-- 礼品卡类型添加

if ($_REQUEST['act'] == 'add')
{
      admin_priv('card_and_card');

      $smarty->assign('lang',                $_LANG);
      $smarty->assign('ur_here',          '添加礼品卡类型');
      $smarty->assign('action_link',  array('href' => 'ks_card.php?act=cat', 'text' => '礼品卡类型列表'));
      $smarty->assign('action',            'add');

      $smarty->assign('form_act',        'insert');
      $smarty->assign('cfg_lang',        $_CFG['lang']);

      $next_month = local_strtotime('+1 months');
      $bonus_arr['send_start_date']    = local_date('Y-m-d');
      $bonus_arr['use_start_date']      = local_date('Y-m-d');
      $bonus_arr['send_end_date']        = local_date('Y-m-d', $next_month);
      $bonus_arr['use_end_date']          = local_date('Y-m-d', $next_month);

      $smarty->assign('bonus_arr',      $bonus_arr);

      assign_query_info();
      $smarty->display('ks_card_type_info.htm');
}


//-- 红包类型添加的处理

if ($_REQUEST['act'] == 'insert')
{
     
      $type_name    = !empty($_POST['type_name']) ? trim($_POST['type_name']) : '';
      $type_mark    = !empty($_POST['type_mark']) ? trim($_POST['type_mark']) : '';
      $type_desc    = !empty($_POST['type_desc']) ? trim($_POST['type_desc']) : '';
      $type_num      = !empty($_POST['type_num']) ? trim($_POST['type_num']) : '';

     
//      $type_id        = !empty($_POST['type_id'])      ? intval($_POST['type_id'])      : 0;
//      $min_amount  = !empty($_POST['min_amount']) ? intval($_POST['min_amount']) : 0;

     


     
      $sql = "INSERT INTO ".$ecs->table('ks_cardcats')." (cat_name, cat_mark, cat_desc, cat_sgn)
      VALUES ('$type_name',
                      '$type_mark',
                      '$type_desc',
                      '$type_num')";

      $db->query($sql);
     
     
//      admin_log($_POST['type_name'], 'add', 'bonustype');

     
      clear_cache_files();

     
      $link[0]['text'] = '添加礼品卡类型';
      $link[0]['href'] = 'ks_card.php?act=add';

      $link[1]['text'] = '礼品卡类型列表';
      $link[1]['href'] = 'ks_card.php?act=cat';

      sys_msg($_LANG['add'] . "&nbsp;" .$_POST['type_name'] . "&nbsp;" . $_LANG['attradd_succed'],0, $link);

}


//-- 礼品卡类型编辑页面

if ($_REQUEST['act'] == 'edit')
{
      admin_priv('card_and_card');

     
      $type_id = !empty($_GET['tid']) ? intval($_GET['tid']) : 0;
      $bonus_arr = $db->getRow("SELECT * FROM " .$ecs->table('ks_cardcats'). " WHERE cat_id = '$type_id'");

//      $bonus_arr['send_start_date']    = local_date('Y-m-d', $bonus_arr['send_start_date']);
//      $bonus_arr['send_end_date']        = local_date('Y-m-d', $bonus_arr['send_end_date']);
//      $bonus_arr['use_start_date']      = local_date('Y-m-d', $bonus_arr['use_start_date']);
//      $bonus_arr['use_end_date']          = local_date('Y-m-d', $bonus_arr['use_end_date']);

      $smarty->assign('lang',              $_LANG);
      $smarty->assign('ur_here',        '礼品卡类型编辑');
      $smarty->assign('action_link', array('href' => 'ks_card.php?act=cat' , 'text' => '返回礼品卡类型列表'));
      $smarty->assign('form_act',      'update');
      $smarty->assign('bonus_arr',    $bonus_arr);

      assign_query_info();
      $smarty->display('ks_card_type_info.htm');
}


//-- 礼品卡类型编辑的处理

if ($_REQUEST['act'] == 'update')
{
     

     
      $type_name    = !empty($_POST['type_name'])  ? trim($_POST['type_name'])      : '';
      $type_mark    = !empty($_POST['type_mark'])  ? trim($_POST['type_mark'])      : '';
      $type_desc    = !empty($_POST['type_desc'])  ? trim($_POST['type_desc'])      : '';
      $type_num      = !empty($_POST['type_num'])    ? intval($_POST['type_num'])    : 0;
      $type_id        = !empty($_POST['type_id'])      ? intval($_POST['type_id'])      : 0;
//      $min_amount  = !empty($_POST['min_amount']) ? intval($_POST['min_amount']) : 0;

      $sql = "UPDATE " .$ecs->table('ks_cardcats'). " SET ".
                    "cat_name              = '$type_name', ".
                    "cat_mark              = '$type_mark', ".
                    "cat_desc              = '$type_desc', ".
                    "cat_sgn                = '$type_num' ".
                    "WHERE cat_id      = '$type_id'";

    $db->query($sql);
   
   
   
    clear_cache_files();

   
    $link[] = array('text' => '返回礼品卡类型列表' , 'href' => 'ks_card.php?act=cat');
    sys_msg($_LANG['edit'] .' '.$_POST['type_name'].' '. $_LANG['attradd_succed'], 0, $link);

}

//-- 修改订单状态

if ($_REQUEST['act'] == 'order_status')
{
      check_authz_json('card_and_card');

      $id = intval($_GET['id']);
      $stat = intval($_GET['stat']);
     
      switch ($stat)
      {
            case 0:
            $sqlstat = "order_status              = 1 ";
            break;
           
            case 1:
            $sqlstat = "order_status              = 2 ";
            break;
           
            case 2:
            $sqlstat = "order_status              = 3 ";
            break;
           
            case 3:
            $sqlstat = "order_status              = 0 ";
            break;
           
            default:
            $sqlstat = "order_status              = 0 ";
      }
 
    $sql = "UPDATE " .$ecs->table('ks_order'). " SET ".
                    $sqlstat .
                    "WHERE order_id      = '$id'";

    $db->query($sql);

      $url = "ks_card.php?act=order";

      ecs_header("Location: $url\n");
      exit;

}


//-- 处理红包的发送页面

if ($_REQUEST['act'] == 'send_by_user')
{
      $user_list  = array();
      $start          = empty($_REQUEST['start']) ? 0 : intval($_REQUEST['start']);
      $limit          = empty($_REQUEST['limit']) ? 10 : intval($_REQUEST['limit']);
      $validated_email = empty($_REQUEST['validated_email']) ? 0 : intval($_REQUEST['validated_email']);
      $send_count = 0;

      if (isset($_REQUEST['send_rank']))
      {
             
              $rank_id = intval($_REQUEST['rank_id']);

              if ($rank_id > 0)
              {
                      $sql = "SELECT min_points, max_points, special_rank FROM " . $ecs->table('user_rank') . " WHERE rank_id = '$rank_id'";
                      $row = $db->getRow($sql);
                      if ($row['special_rank'])
                      {
                             
                              $sql = 'SELECT COUNT(*) FROM ' . $ecs->table('users'). " WHERE user_rank = '$rank_id'";
                              $send_count = $db->getOne($sql);
                              if($validated_email)
                              {
                                      $sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
                                                      " WHERE user_rank = '$rank_id' AND is_validated = 1".
                                                      " LIMIT $start, $limit";
                              }
                              else
                              {
                                        $sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
                                                              " WHERE user_rank = '$rank_id'".
                                                              " LIMIT $start, $limit";
                              }
                      }
                      else
                      {
                              $sql = 'SELECT COUNT(*) FROM ' . $ecs->table('users').
                                            " WHERE rank_points >= " . intval($row['min_points']) . " AND rank_points < " . intval($row['max_points']);
                              $send_count = $db->getOne($sql);

                              if($validated_email)
                              {
                                      $sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
                                              " WHERE rank_points >= " . intval($row['min_points']) . " AND rank_points < " . intval($row['max_points']) .
                                              " AND is_validated = 1 LIMIT $start, $limit";
                              }
                              else
                              {
                                        $sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
                                              " WHERE rank_points >= " . intval($row['min_points']) . " AND rank_points < " . intval($row['max_points']) .
                                              " LIMIT $start, $limit";
                              }

                      }

                      $user_list = $db->getAll($sql);
                      $count = count($user_list);
              }
      }
      elseif (isset($_REQUEST['send_user']))
      {
             
             
              if (empty($_REQUEST['user']))
              {
                      sys_msg($_LANG['send_user_empty'], 1);
              }

              $user_array = (is_array($_REQUEST['user'])) ? $_REQUEST['user'] : explode(',', $_REQUEST['user']);
              $send_count = count($user_array);

              $id_array    = array_slice($user_array, $start, $limit);

             
              $sql = "SELECT user_id, email, user_name FROM " .$ecs->table('users').
                            " WHERE user_id " .db_create_in($id_array);
              $user_list  = $db->getAll($sql);
              $count = count($user_list);
      }

     
      $loop            = 0;
      $bonus_type = bonus_type_info($_REQUEST['id']);

      $tpl = get_mail_template('send_bonus');
      $today = local_date($_CFG['date_format']);

      foreach ($user_list AS $key => $val)
      {
             
              $smarty->assign('user_name',      $val['user_name']);
              $smarty->assign('shop_name',      $GLOBALS['_CFG']['shop_name']);
              $smarty->assign('send_date',      $today);
              $smarty->assign('sent_date',      $today);
              $smarty->assign('count',              1);
              $smarty->assign('money',              price_format($bonus_type['type_money']));

              $content = $smarty->fetch('str:' . $tpl['template_content']);

              if (add_to_maillist($val['user_name'], $val['email'], $tpl['template_subject'], $content, $tpl['is_html']))
              {
                       
                      $sql = "INSERT INTO " . $ecs->table('user_bonus') .
                                      "(bonus_type_id, bonus_sn, user_id, used_time, order_id, emailed) " .
                                      "VALUES ('$_REQUEST[id]', 0, '$val[user_id]', 0, 0, " .BONUS_MAIL_SUCCEED. ")";
                      $db->query($sql);
              }
              else
              {
                     
                      $sql = "INSERT INTO " . $ecs->table('user_bonus') .
                                      "(bonus_type_id, bonus_sn, user_id, used_time, order_id, emailed) " .
                                      "VALUES ('$_REQUEST[id]', 0, '$val[user_id]', 0, 0, " .BONUS_MAIL_FAIL. ")";
                      $db->query($sql);
              }

              if ($loop >= $limit)
              {
                      break;
              }
              else
              {
                      $loop++;
              }
      }

      //admin_log(addslashes($_LANG['send_bonus']), 'add', 'bonustype');
      if ($send_count > ($start + $limit))
      {
             
              $href = "bonus.php?act=send_by_user&start=" . ($start+$limit) . "&limit=$limit&id=$_REQUEST[id]&";

              if (isset($_REQUEST['send_rank']))
              {
                      $href .= "send_rank=1&rank_id=$rank_id";
              }

              if (isset($_REQUEST['send_user']))
              {
                      $href .= "send_user=1&user=" . implode(',', $user_array);
              }

              $link[] = array('text' => $_LANG['send_continue'], 'href' => $href);
      }

      $link[] = array('text' => $_LANG['back_list'], 'href' => 'bonus.php?act=list');

      sys_msg(sprintf($_LANG['sendbonus_count'], $count), 0, $link);
}


//-- 发送邮件


if ($_REQUEST['act'] == 'send_mail')
{
     
      $bonus_id = intval($_REQUEST['bonus_id']);
      if ($bonus_id <= 0)
      {
              die('invalid params');
      }

     
      include_once(ROOT_PATH . 'includes/lib_order.php');
      $bonus = bonus_info($bonus_id);
      if (empty($bonus))
      {
              sys_msg($_LANG['bonus_not_exist']);
      }

     
      $count = send_bonus_mail($bonus['bonus_type_id'], array($bonus_id));

      $link[0]['text'] = $_LANG['back_bonus_list'];
      $link[0]['href'] = 'bonus.php?act=bonus_list&bonus_type=' . $bonus['bonus_type_id'];

      sys_msg(sprintf($_LANG['success_send_mail'], $count), 0, $link);
}


//-- 按印刷品发放红包


if ($_REQUEST['act'] == 'send_by_print')
{
      @set_time_limit(0);

     
      $bonus_typeid = !empty($_POST['bonus_type_id']) ? $_POST['bonus_type_id'] : 0;
      $bonus_sum      = !empty($_POST['bonus_sum'])        ? $_POST['bonus_sum']        : 1;

     
      $num = $db->getOne("SELECT MAX(bonus_sn) FROM ". $ecs->table('user_bonus'));
      $num = $num ? floor($num / 10000) : 100000;

      for ($i = 0, $j = 0; $i < $bonus_sum; $i++)
      {
              $bonus_sn = ($num + $i) . str_pad(mt_rand(0, 9999), 4, '0', STR_PAD_LEFT);
              $db->query("INSERT INTO ".$ecs->table('user_bonus')." (bonus_type_id, bonus_sn) VALUES('$bonus_typeid', '$bonus_sn')");

              $j++;
      }

     
      admin_log($bonus_sn, 'add', 'userbonus');

     
      clear_cache_files();

     
      $link[0]['text'] = $_LANG['back_bonus_list'];
      $link[0]['href'] = 'bonus.php?act=bonus_list&bonus_type=' . $bonus_typeid;

      sys_msg($_LANG['creat_bonus'] . $j . $_LANG['creat_bonus_num'], 0, $link);
}


//-- 导出线下发放的信息

if ($_REQUEST['act'] == 'gen_excel')
{
      @set_time_limit(0);

     
      $tid  = !empty($_GET['tid']) ? intval($_GET['tid']) : 0;
      $type_name = $db->getOne("SELECT type_name FROM ".$ecs->table('bonus_type')." WHERE type_id = '$tid'");

     
      $bonus_filename = $type_name .'_bonus_list';
      if (EC_CHARSET != 'gbk')
      {
              $bonus_filename = ecs_iconv('UTF8', 'GB2312',$bonus_filename);
      }

      header("Content-type: application/vnd.ms-excel; charset=utf-8");
      header("Content-Disposition: attachment; filename=$bonus_filename.xls");

     
      if (EC_CHARSET != 'gbk')
      {
              echo ecs_iconv('UTF8', 'GB2312', $_LANG['bonus_excel_file']) . "\t\n";
             
              echo ecs_iconv('UTF8', 'GB2312', $_LANG['bonus_sn']) ."\t";
              echo ecs_iconv('UTF8', 'GB2312', $_LANG['type_money']) ."\t";
              echo ecs_iconv('UTF8', 'GB2312', $_LANG['type_name']) ."\t";
              echo ecs_iconv('UTF8', 'GB2312', $_LANG['use_enddate']) ."\t\n";
      }
      else
      {
              echo $_LANG['bonus_excel_file'] . "\t\n";
             
              echo $_LANG['bonus_sn'] ."\t";
              echo $_LANG['type_money'] ."\t";
              echo $_LANG['type_name'] ."\t";
              echo $_LANG['use_enddate'] ."\t\n";
      }

      $val = array();
      $sql = "SELECT ub.bonus_id, ub.bonus_type_id, ub.bonus_sn, bt.type_name, bt.type_money, bt.use_end_date ".
                    "FROM ".$ecs->table('user_bonus')." AS ub, ".$ecs->table('bonus_type')." AS bt ".
                    "WHERE bt.type_id = ub.bonus_type_id AND ub.bonus_type_id = '$tid' ORDER BY ub.bonus_id DESC";
      $res = $db->query($sql);

      $code_table = array();
      while ($val = $db->fetchRow($res))
      {
              echo $val['bonus_sn'] . "\t";
              echo $val['type_money'] . "\t";
              if (!isset($code_table[$val['type_name']]))
              {
                      if (EC_CHARSET != 'gbk')
                      {
                              $code_table[$val['type_name']] = ecs_iconv('UTF8', 'GB2312', $val['type_name']);
                      }
                      else
                      {
                              $code_table[$val['type_name']] = $val['type_name'];
                      }
              }
              echo $code_table[$val['type_name']] . "\t";
              echo local_date('Y-m-d', $val['use_end_date']);
              echo "\t\n";
      }
}


//-- 搜索商品

if ($_REQUEST['act'] == 'get_goods_list')
{
      include_once(ROOT_PATH . 'includes/cls_json.php');
      $json = new JSON;

      $filters = $json->decode($_GET['JSON']);

      $arr = get_goods_list($filters);
      $opt = array();

      foreach ($arr AS $key => $val)
      {
              $opt[] = array('value'  => $val['goods_id'],
                                              'text'  => $val['goods_name'],
                                              'data'  => $val['shop_price']);
      }

      make_json_result($opt);
}


//-- 添加发放红包的商品

if ($_REQUEST['act'] == 'add_bonus_goods')
{
      include_once(ROOT_PATH . 'includes/cls_json.php');
      $json = new JSON;

      check_authz_json('card_and_card');

      $add_ids      = $json->decode($_GET['add_ids']);
      $args            = $json->decode($_GET['JSON']);
      $type_id      = $args[0];

      foreach ($add_ids AS $key => $val)
      {
              $sql = "UPDATE " .$ecs->table('goods'). " SET bonus_type_id='$type_id' WHERE goods_id='$val'";
              $db->query($sql, 'SILENT') or make_json_error($db->error());
      }

     
      $arr = get_bonus_goods($type_id);
      $opt = array();

      foreach ($arr AS $key => $val)
      {
              $opt[] = array('value'  => $val['goods_id'],
                                              'text'  => $val['goods_name'],
                                              'data'  => '');
      }

      make_json_result($opt);
}


//-- 删除发放红包的商品

if ($_REQUEST['act'] == 'drop_bonus_goods')
{
      include_once(ROOT_PATH . 'includes/cls_json.php');
      $json = new JSON;

      check_authz_json('card_and_card');

      $drop_goods        = $json->decode($_GET['drop_ids']);
      $drop_goods_ids = db_create_in($drop_goods);
      $arguments          = $json->decode($_GET['JSON']);
      $type_id              = $arguments[0];

      $db->query("UPDATE ".$ecs->table('goods')." SET bonus_type_id = 0 ".
                              "WHERE bonus_type_id = '$type_id' AND goods_id " .$drop_goods_ids);

     
      $arr = get_bonus_goods($type_id);
      $opt = array();

      foreach ($arr AS $key => $val)
      {
              $opt[] = array('value'  => $val['goods_id'],
                                              'text'  => $val['goods_name'],
                                              'data'  => '');
      }

      make_json_result($opt);
}


//-- 搜索用户

if ($_REQUEST['act'] == 'search_users')
{
      $keywords = json_str_iconv(trim($_GET['keywords']));

      $sql = "SELECT user_id, user_name FROM " . $ecs->table('users') .
                      " WHERE user_name LIKE '%" . mysql_like_quote($keywords) . "%' OR user_id LIKE '%" . mysql_like_quote($keywords) . "%'";
      $row = $db->getAll($sql);

      make_json_result($row);
}


//-- 红包列表


if ($_REQUEST['act'] == 'bonus_list')
{
      $smarty->assign('full_page',      1);
      $smarty->assign('ur_here',          $_LANG['bonus_list']);
      $smarty->assign('action_link',    array('href' => 'bonus.php?act=list', 'text' => $_LANG['04_bonustype_list']));

      $list = get_bonus_list();

     
      $bonus_type = bonus_type_info(intval($_REQUEST['bonus_type']));
      if ($bonus_type['send_type'] == SEND_BY_PRINT)
      {
              $smarty->assign('show_bonus_sn', 1);
      }

     
      elseif ($bonus_type['send_type'] == SEND_BY_USER)
      {
              $smarty->assign('show_mail', 1);
      }

      $smarty->assign('bonus_list',    $list['item']);
      $smarty->assign('filter',            $list['filter']);
      $smarty->assign('record_count', $list['record_count']);
      $smarty->assign('page_count',    $list['page_count']);

      $sort_flag  = sort_flag($list['filter']);
      $smarty->assign($sort_flag['tag'], $sort_flag['img']);

      assign_query_info();
      $smarty->display('bonus_list.htm');
}


//-- 红包列表翻页、排序


if ($_REQUEST['act'] == 'query_bonus')
{
      $list = get_bonus_list();

     
      $bonus_type = bonus_type_info(intval($_REQUEST['bonus_type']));
      if ($bonus_type['send_type'] == SEND_BY_PRINT)
      {
              $smarty->assign('show_bonus_sn', 1);
      }

     
      elseif ($bonus_type['send_type'] == SEND_BY_USER)
      {
              $smarty->assign('show_mail', 1);
      }

      $smarty->assign('bonus_list',    $list['item']);
      $smarty->assign('filter',            $list['filter']);
      $smarty->assign('record_count', $list['record_count']);
      $smarty->assign('page_count',    $list['page_count']);

      $sort_flag  = sort_flag($list['filter']);
      $smarty->assign($sort_flag['tag'], $sort_flag['img']);

      make_json_result($smarty->fetch('bonus_list.htm'), '',
              array('filter' => $list['filter'], 'page_count' => $list['page_count']));
}


//-- 删除红包

elseif ($_REQUEST['act'] == 'remove_bonus')
{
      check_authz_json('card_and_card');

      $id = intval($_GET['id']);

      $db->query("DELETE FROM " .$ecs->table('user_bonus'). " WHERE bonus_id='$id'");

      $url = 'bonus.php?act=query_bonus&' . str_replace('act=remove_bonus', '', $_SERVER['QUERY_STRING']);

      ecs_header("Location: $url\n");
      exit;
}


//-- 批量操作

if ($_REQUEST['act'] == 'batch')
{
     
      admin_priv('card_and_card');

     
      $bonus_type_id = intval($_REQUEST['bonus_type']);

     
      if (isset($_POST['checkboxes']))
      {
              $bonus_id_list = $_POST['checkboxes'];

             
              if (isset($_POST['drop']))
              {
                      $sql = "DELETE FROM " . $ecs->table('user_bonus'). " WHERE bonus_id " . db_create_in($bonus_id_list);
                      $db->query($sql);

                      admin_log(count($bonus_id_list), 'remove', 'userbonus');

                      clear_cache_files();

                      $link[] = array('text' => $_LANG['back_bonus_list'],
                              'href' => 'bonus.php?act=bonus_list&bonus_type='. $bonus_type_id);
                      sys_msg(sprintf($_LANG['batch_drop_success'], count($bonus_id_list)), 0, $link);
              }

             
              elseif (isset($_POST['mail']))
              {
                      $count = send_bonus_mail($bonus_type_id, $bonus_id_list);
                      $link[] = array('text' => $_LANG['back_bonus_list'],
                              'href' => 'bonus.php?act=bonus_list&bonus_type='. $bonus_type_id);
                      sys_msg(sprintf($_LANG['success_send_mail'], $count), 0, $link);
              }
      }
      else
      {
              sys_msg($_LANG['no_select_bonus'], 1);
      }
}


function get_order_goods_list($id)
{

   
      $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('goods') . " WHERE goods_id in ($id)" ;
                                                     
      $result = $GLOBALS['db']->getAll($sql);
      $goods = array();
     
      foreach ($result AS $idx => $row)
      {
           
              $goods[$idx]['goods_id']                    = $row['goods_id'];
              $goods[$idx]['goods_sn']                    = $row['goods_sn'];
              $goods[$idx]['goods_name']                = $row['goods_name'];

      }

return $goods;
}


function get_card_list($type_id,$card_id,$pagesize,$pageid)
{
        $startrow = ($pageid-1)*$pagesize;
       
        if($type_id != 0)
        {
      $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_cards').
                            " WHERE card_type = '$type_id' ORDER BY card_id desc LIMIT $startrow,$pagesize";
      }
      else
      {
            $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_cards'). " ORDER BY card_id desc LIMIT $startrow,$pagesize";
      }
      if($card_id != 0)
        {
      $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_cards').
                            " WHERE card_id = '$card_id' ";
      }
                                     
                                                     
      $result = $GLOBALS['db']->getAll($sql);
      $cards = array();
     
      foreach ($result AS $idx => $row)
      {
           
              $cards[$idx]['id']                    = $row['card_id'];
              $cards[$idx]['type_id']                = $row['card_type'];
              $cards[$idx]['type_name']                = get_type_name($row['card_type']);
              $cards[$idx]['card_sn']              = $row['card_sn'];
              $cards[$idx]['card_pwd']              = $row['card_pwd'];
              $cards[$idx]['add_time']              = local_date($GLOBALS['_CFG']['time_format'],$row['add_time']);
             
              if($row['used_time'] == 0)
              {
              $cards[$idx]['used_time']              = $row['used_time'];
              }
              else
              {
              $cards[$idx]['used_time']              = local_date($GLOBALS['_CFG']['time_format'],$row['used_time']);
              }
             
              $cards[$idx]['order_id']              = $row['order_id'];

      }

return $cards;

}



function get_type_name($card_type)

{
      $sql = "SELECT cat_name FROM " .$GLOBALS['ecs']->table('ks_cardcats').
                            " WHERE cat_id = '$card_type'";
  $result = $GLOBALS['db']->getOne($sql);
 
  return $result;
                           
}



function create_card($type_id,$bnum,$cnum)

{
      if($type_id != 0)
  {
     
      $add_time = gmtime();
      $sn_head = get_sn_head($type_id);
      $used_time = 0;
      $order_id = 0;
      $cnum = $cnum + $bnum;
     
      for ($i = $bnum; $i < $cnum; $i++)
      {
              $card_sn  = $sn_head . str_pad($i, 6, '0', STR_PAD_LEFT);
              $card_pwd = rancard(10,'0123456789');
             
              $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_cards').
                                          " WHERE card_sn = '$card_sn'" .
                                          " OR card_pwd = '$card_pwd'";

              $record_arr = $GLOBALS['db']->getRow($sql);
              if (empty($record_arr))

                        {
              $GLOBALS['db']->query("INSERT INTO ".$GLOBALS['ecs']->table('ks_cards')." (card_type, card_sn, card_pwd, add_time, used_time, order_id) VALUES('$type_id', '$card_sn','$card_pwd','$add_time','$used_time','$order_id')");
  }
                        else
                        {
                              break;
                        }
      }
  }

}



function get_sn_head($card_type)

{
      $sql = "SELECT cat_mark FROM " .$GLOBALS['ecs']->table('ks_cardcats').
                            " WHERE cat_id = '$card_type'";
  $result = $GLOBALS['db']->getOne($sql);
 
  return $result;
                           
}



function rancard($length,$string = '0123456789abcdefghijklmn opqrstuvwxyz') {
$rstr = '';
$strlen = strlen($string);
for ($i=0; $i<$length; $i++) {
    $rstr .= $string{mt_rand(0,$strlen-1)};
}
return $rstr;
}


function get_type_list()
{

      $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_cardcats');
                                     
                                                     
      $result = $GLOBALS['db']->getAll($sql);
      $cardtype = array();
     
      foreach ($result AS $idx => $row)
      {
           
              $cardtype[$idx]['cat_id']                    = $row['cat_id'];
              $cardtype[$idx]['cat_name']                = $row['cat_name'];
              $cardtype[$idx]['cat_mark']                = $row['cat_mark'];
              $cardtype[$idx]['cat_desc']              = $row['cat_desc'];
              $cardtype[$idx]['cat_sgn']              = $row['cat_sgn'];
             
              $cardtype[$idx]['all_num']              = get_all_num($row['cat_id']);
              $cardtype[$idx]['ok_num']              = get_ok_num($row['cat_id']);

      }

return $cardtype;
}



function get_all_num($card_type)

{
      $sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('ks_cards').
                            " WHERE card_type = '$card_type'";
  $result = $GLOBALS['db']->getOne($sql);
 
  return $result;
                           
}



function get_ok_num($card_type)

{
      $sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('ks_cards').
                            " WHERE card_type = '$card_type' and order_id <> 0";
  $result = $GLOBALS['db']->getOne($sql);
 
  return $result;
                           
}


function get_order_list($keywords,$order_id)
{
   
      $result = get_filter();
      if ($result === false)
      {
             
              $filter['sort_by']      = empty($_REQUEST['sort_by']) ? 'order_id' : trim($_REQUEST['sort_by']);
              $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);

              $sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('ks_order');
              $filter['record_count'] = $GLOBALS['db']->getOne($sql);

             
              $filter = page_and_size($filter);
   
              if(empty($keywords))
              {
              $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_order'). " ORDER BY $filter[sort_by] $filter[sort_order]";
              }
              else
              {
              $card_id = get_card_id($keywords);
              $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_order'). " WHERE card_id = '$card_id' ";
                   
              if(!empty($order_id))
              {
              $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('ks_order'). " WHERE order_id = '$order_id' ";
              }
              set_filter($filter, $sql);
      }
      else
      {
              $sql      = $result['sql'];
              $filter = $result['filter'];
      }
      $arr = array();
      $res = $GLOBALS['db']->selectLimit($sql, $filter['page_size'], $filter['start']);

      while ($row = $GLOBALS['db']->fetchRow($res))
      {
           
              $row['order_goodcatname'] = get_type_name($row['order_goodcatid']);
              $row['order_time'] = local_date($GLOBALS['_CFG']['time_format'],$row['order_time']);
              $arr[] = $row;
      }

      $arr = array('item' => $arr, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);

      return $arr;
}



function get_card_id($keywords)

{
      $sql = "SELECT card_id FROM " .$GLOBALS['ecs']->table('ks_cards').
                            " WHERE card_sn = '$keywords'";
  $result = $GLOBALS['db']->getOne($sql);
 
  return $result;
                           
}


function get_bonus_goods($type_id)
{
      $sql = "SELECT goods_id, goods_name FROM " .$GLOBALS['ecs']->table('goods').
                      " WHERE bonus_type_id = '$type_id'";
      $row = $GLOBALS['db']->getAll($sql);

      return $row;
}


function get_bonus_list()
{
     
      $filter['sort_by']      = empty($_REQUEST['sort_by']) ? 'bonus_type_id' : trim($_REQUEST['sort_by']);
      $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
      $filter['bonus_type'] = empty($_REQUEST['bonus_type']) ? 0 : intval($_REQUEST['bonus_type']);

      $where = empty($filter['bonus_type']) ? '' : " WHERE bonus_type_id='$filter[bonus_type]'";

      $sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('user_bonus'). $where;
      $filter['record_count'] = $GLOBALS['db']->getOne($sql);

     
      $filter = page_and_size($filter);

      $sql = "SELECT ub.*, u.user_name, u.email, o.order_sn, bt.type_name ".
                  " FROM ".$GLOBALS['ecs']->table('user_bonus'). " AS ub ".
                  " LEFT JOIN " .$GLOBALS['ecs']->table('bonus_type'). " AS bt ON bt.type_id=ub.bonus_type_id ".
                  " LEFT JOIN " .$GLOBALS['ecs']->table('users'). " AS u ON u.user_id=ub.user_id ".
                  " LEFT JOIN " .$GLOBALS['ecs']->table('order_info'). " AS o ON o.order_id=ub.order_id $where ".
                  " ORDER BY ".$filter['sort_by']." ".$filter['sort_order'].
                  " LIMIT ". $filter['start'] .", $filter[page_size]";
      $row = $GLOBALS['db']->getAll($sql);

      foreach ($row AS $key => $val)
      {
              $row[$key]['used_time'] = $val['used_time'] == 0 ?
                      $GLOBALS['_LANG']['no_use'] : local_date($GLOBALS['_CFG']['date_format'], $val['used_time']);
              $row[$key]['emailed'] = $GLOBALS['_LANG']['mail_status'][$row[$key]['emailed']];
      }

      $arr = array('item' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);

      return $arr;
}


function bonus_type_info($bonus_type_id)
{
      $sql = "SELECT * FROM " . $GLOBALS['ecs']->table('bonus_type') .
                      " WHERE type_id = '$bonus_type_id'";

      return $GLOBALS['db']->getRow($sql);
}


function send_bonus_mail($bonus_type_id, $bonus_id_list)
{
     
      $bonus_type = bonus_type_info($bonus_type_id);
      if ($bonus_type['send_type'] != SEND_BY_USER)
      {
              return 0;
      }

     
      $sql = "SELECT b.bonus_id, u.user_name, u.email " .
                      "FROM " . $GLOBALS['ecs']->table('user_bonus') . " AS b, " .
                              $GLOBALS['ecs']->table('users') . " AS u " .
                      " WHERE b.user_id = u.user_id " .
                      " AND b.bonus_id " . db_create_in($bonus_id_list) .
                      " AND b.order_id = 0 " .
                      " AND u.email <> ''";
      $bonus_list = $GLOBALS['db']->getAll($sql);
      if (empty($bonus_list))
      {
              return 0;
      }

     
      $send_count = 0;

     
      $tpl    = get_mail_template('send_bonus');
      $today = local_date($GLOBALS['_CFG']['date_format']);
      foreach ($bonus_list AS $bonus)
      {
              $GLOBALS['smarty']->assign('user_name',      $bonus['user_name']);
              $GLOBALS['smarty']->assign('shop_name',      $GLOBALS['_CFG']['shop_name']);
              $GLOBALS['smarty']->assign('send_date',      $today);
              $GLOBALS['smarty']->assign('sent_date',      $today);
              $GLOBALS['smarty']->assign('count',              1);
              $GLOBALS['smarty']->assign('money',              price_format($bonus_type['type_money']));

              $content = $GLOBALS['smarty']->fetch('str:' . $tpl['template_content']);
              if (add_to_maillist($bonus['user_name'], $bonus['email'], $tpl['template_subject'], $content, $tpl['is_html'], false))
              {
                      $sql = "UPDATE " . $GLOBALS['ecs']->table('user_bonus') .
                                      " SET emailed = '" . BONUS_MAIL_SUCCEED . "'" .
                                      " WHERE bonus_id = '$bonus[bonus_id]'";
                      $GLOBALS['db']->query($sql);
                      $send_count++;
              }
              else
              {
                      $sql = "UPDATE " . $GLOBALS['ecs']->table('user_bonus') .
                                      " SET emailed = '" . BONUS_MAIL_FAIL . "'" .
                                      " WHERE bonus_id = '$bonus[bonus_id]'";
                      $GLOBALS['db']->query($sql);
              }
      }

      return $send_count;
}

function add_to_maillist($username, $email, $subject, $content, $is_html)
{
      $time = time();
      $content = addslashes($content);
      $template_id = $GLOBALS['db']->getOne("SELECT template_id FROM " . $GLOBALS['ecs']->table('mail_templates') . " WHERE template_code = 'send_bonus'");
      $sql = "INSERT INTO "  . $GLOBALS['ecs']->table('email_sendlist') . " ( email, template_id, email_content, pri, last_send) VALUES ('$email', $template_id, '$content', 1, '$time')";
      $GLOBALS['db']->query($sql);
      return true;
}

?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值