示例#1
0
 /**
  * Overload delete() method
  *
  * @param Int $id
  * @return Boolean
  */
 public function delete($id = 0)
 {
     $orm_instance = ORM::factory('used_coupon')->where('cpn_id', $id)->delete_all();
     Mycpn_promotion::instance()->delete_by_couponid($id);
     return parent::delete($id);
 }
示例#2
0
 public function download()
 {
     role::check('promotion_coupon');
     // 收集请求数据
     $request_data = $this->input->get();
     $coupon = Mycoupon::instance($request_data['id'])->get();
     // 权限验证
     if (!$coupon['id']) {
         remind::set(Kohana::lang('o_global.bad_request'), request::referrer(), 'error');
     }
     if (!preg_match('/^\\d+$/', $request_data['amount']) || $request_data['amount'] >= 10000 || $request_data['amount'] <= 0) {
         exit;
     }
     //$used_coupons = Myused_coupon::instance()->get_used_coupon_codes($coupons['site_id']);
     $coupons = Mycoupon::instance()->gen_coupons($coupon['id'], $request_data['amount']);
     $cpn_promotion = Mycpn_promotion::instance()->get_by_couponid($coupon['id']);
     $coupon_scheme = Mycoupon_scheme::instance($cpn_promotion['cpns_id'])->get();
     //CSV输出
     $rand_name = date('Y-m-d') . '_' . mt_rand();
     header("Pragma: public");
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     header("Content-Type: application/force-download");
     header("Content-Type: application/octet-stream");
     header("Content-Type: application/download");
     header("Content-Transfer-Encoding: binary ");
     header("Content-type:application/vnd.ms-excel");
     header("Content-Disposition:attachment;filename=coupons_{$rand_name}.csv");
     //header("Content-Disposition:attachment;filename={$filename}{$file}.xls");
     header("Pragma: no-cache");
     header("Expires: 0");
     $output = ",,,,,\n";
     switch ($cpn_promotion['cpns_id']) {
         case 1:
         case 2:
             $output .= "订单开始金额,订单结束金额,,,,\n";
             $output .= "\${$cpn_promotion['money_from']},\${$cpn_promotion['money_to']},,,,\n";
             break;
         case 3:
             $related_ids = explode(',', trim($cpn_promotion['related_ids'], ','));
             $request_struct = array('where' => array('id' => $related_ids), 'orderby' => array('email' => 'ASC'));
             $all_users = Myuser::instance()->lists($request_struct);
             $output .= "用户邮箱,姓名,,,,\n";
             foreach ($all_users as $key => $rs) {
                 $output .= "{$rs['email']},{$rs['firstname']} {$rs['lastname']},,,,\n";
             }
             break;
         case 4:
             $related_ids = explode(',', trim($cpn_promotion['related_ids'], ','));
             $request_struct = array('where' => array('id' => $related_ids), 'orderby' => array('name_manage' => 'ASC'));
             $all_products = ProductService::get_instance()->index($request_struct);
             $output .= "商品SKU,名称,,,,\n";
             foreach ($all_products as $key => $rs) {
                 $output .= "{$rs['sku']},{$rs['name_manage']},,,,\n";
             }
             break;
         case 5:
             $related_ids = explode(',', trim($cpn_promotion['related_ids'], ','));
             $request_struct = array('where' => array('id' => $related_ids), 'orderby' => array('title_manage' => 'ASC'));
             $all_categories = CategoryService::get_instance()->index($request_struct);
             $output .= "分类名称,,,,,\n";
             foreach ($all_categories as $key => $rs) {
                 $output .= "{$rs['title_manage']},,,,,\n";
             }
             break;
         case 6:
             $output .= "订单商品开始数量,订单商品结束数量,,,,\n";
             $output .= "{$cpn_promotion['quantity_from']},{$cpn_promotion['quantity_to']},,,,\n";
             break;
     }
     $output .= ",,,,,\n";
     $output .= "打折号,开始时间,结束时间,打折值,折扣类型,\n";
     foreach ($coupons as $key => $rs) {
         $output .= $rs . "," . $cpn_promotion['time_begin'] . "," . $cpn_promotion['time_end'] . ",";
         switch ($cpn_promotion['discount_type']) {
             case 0:
                 $output .= '百分比 ' . $cpn_promotion['price'] * 100 . "%";
                 break;
             case 1:
                 $output .= '减去 $' . $cpn_promotion['price'];
                 break;
             case 2:
                 $output .= '减到 $' . $cpn_promotion['price'];
                 break;
         }
         $output .= ",";
         $output .= "{$coupon_scheme['cpns_memo']},\n";
     }
     echo iconv('UTF-8', 'gb2312', $output);
     exit;
 }
示例#3
0
 public function do_edit()
 {
     role::check('promotion_coupon');
     // 收集请求数据
     $request_data = $this->input->post();
     $session = Session::instance();
     $session->set_flash('sessionErrorData', $request_data);
     //标签过滤
     tool::filter_strip_tags($request_data);
     $cpn_promotion = Mycpn_promotion::instance($request_data['id'])->get();
     $cpns_id = $cpn_promotion['cpns_id'];
     if (!$cpn_promotion['id']) {
         remind::set(Kohana::lang('o_global.update_error'), request::referrer(), 'error');
     }
     //时间处理
     if (strtotime($request_data['time_end']) < strtotime($request_data['time_begin'])) {
         remind::set(Kohana::lang('o_promotion.begin_time_over_end'), request::referrer(), 'error');
     }
     $request_data['time_end'] = date("Y-m-d H:i:s", strtotime($request_data['time_end']) + 24 * 3600);
     //促销规则时间必须在促销活动时间内
     $coupon = Mycoupon::instance($request_data['cpn_id'])->get();
     //var_dump($coupon);exit;
     if (!$coupon['id']) {
         remind::set(Kohana::lang('o_global.access_denied'), request::referrer(), 'error');
     }
     $cpn_time_begin = strtotime($coupon['cpn_time_begin']);
     $cpn_time_end = strtotime($coupon['cpn_time_end']);
     if ($cpn_time_begin > strtotime($request_data['time_begin']) || $cpn_time_end < strtotime($request_data['time_end'])) {
         remind::set(Kohana::lang('o_promotion.cpn_out_time_range'), request::referrer(), 'error');
     }
     // extra process needed for IDs
     //验证打折值与订单优惠条件
     if (isset($request_data['discount_type'])) {
         if (isset($request_data['price']) && (!preg_match('/^\\d{1,12}(\\.\\d{0,3})?$/', $request_data['price']) || $request_data['price'] < 0)) {
             remind::set(Kohana::lang('o_promotion.cpn_price_error'), request::referrer(), 'error');
         }
         if ($request_data['discount_type'] == 0 && $request_data['price'] > 1) {
             remind::set(Kohana::lang('o_promotion.cpn_price_error'), request::referrer(), 'error');
         }
     }
     if (isset($request_data['money_from']) && (!preg_match('/^\\d{1,12}(\\.\\d{0,3})?$/', $request_data['money_from']) || $request_data['money_from'] < 0) || isset($request_data['money_to']) && (!preg_match('/^\\d{1,12}(\\.\\d{0,3})?$/', $request_data['money_to']) || $request_data['money_to'] < 0) || isset($request_data['money_from']) && $request_data['money_from'] >= $request_data['money_to']) {
         remind::set(Kohana::lang('o_promotion.cpn_money_error'), request::referrer(), 'error');
     }
     if (isset($request_data['quantity_from']) && (!preg_match('/^\\d+$/', $request_data['quantity_from']) || $request_data['quantity_from'] < 0) || isset($request_data['quantity_to']) && (!preg_match('/^\\d+$/', $request_data['quantity_to']) || $request_data['quantity_to'] < 0) || isset($request_data['quantity_from']) && $request_data['quantity_from'] >= $request_data['quantity_to']) {
         remind::set(Kohana::lang('o_promotion.buy_quantity_error'), request::referrer(), 'error');
     }
     switch ($cpns_id) {
         case 3:
             // discount_cart_user_buy
             isset($info) || ($info = "请选择用户");
         case 4:
             // discount_cart_buy_product
             isset($info) || ($info = "请选择货品");
         case 5:
             // discount_category
             isset($info) || ($info = "请选择分类");
             $related_ids = $this->input->post('related_ids');
             if (empty($related_ids)) {
                 remind::set($info, request::referrer(), 'error');
             }
             // enclose selected category ids with comma
             $request_data['related_ids'] = Mycpn_promotion::enclose_ids($related_ids, ',');
             break;
     }
     //print_r($request_data);exit;
     if ($promotion_id = Mycpn_promotion::instance()->edit($request_data)) {
         $session->delete('sessionErrorData');
         remind::set(Kohana::lang('o_global.update_success'), "promotion/coupon", 'success');
     } else {
         remind::set(Kohana::lang('o_global.update_error'), request::referrer(), 'error');
     }
 }