Esempio n. 1
0
File: goods.php Progetto: noikiy/snk
 /**
  * 不破坏缓存情况下的商品统计
  */
 public function counter($args = array())
 {
     $args = array_merge((array) $args, $this->req_params);
     $mdl_goods = app::get('b2c')->model('goods');
     $gid = $args['goods_id'];
     if (!$gid) {
         return false;
     }
     $db = vmc::database();
     $kv = base_kvstore::instance('b2c_counter');
     foreach ($args as $key => $value) {
         $value = intval($value);
         $update_sql = false;
         if ($value < 1) {
             $value = 1;
         }
         switch ($key) {
             case 'view_count':
                 $this->history($gid);
                 //UV型统计 24小时同一IP记录一次
                 $c_key = 'view_count_uv_' . $gid . '_' . base_request::get_remote_addr();
                 cacheobject::get($c_key, $time);
                 $kv->fetch('view_w_count_time', $vw_last_update);
                 if (!$time || strtotime('+1 day', $time) < time()) {
                     //获得周标记
                     if ($vw_last_update > strtotime('-1 week')) {
                         $update_sql = "UPDATE vmc_b2c_goods SET view_count=view_count+{$value},view_w_count=view_w_count+{$value} WHERE goods_id={$gid}";
                     } else {
                         $update_sql = "UPDATE vmc_b2c_goods SET view_count=view_count+{$value},view_w_count={$value} WHERE goods_id={$gid}";
                         $kv->store('view_w_count_time', time());
                     }
                     cacheobject::set($c_key, time(), 86400 + time());
                 }
                 break;
             case 'buy_count':
                 //验证
                 if (md5($gid . 'buy_count' . $value * 1024) != $args['buy_count_sign']) {
                     break;
                 }
                 //获得周标记
                 $kv->fetch('buy_w_count_time', $bw_last_update);
                 if ($bw_last_update > strtotime('-1 week')) {
                     $update_sql = "UPDATE vmc_b2c_goods SET buy_count=buy_count+{$value},buy_w_count=buy_w_count+{$value} WHERE goods_id={$gid}";
                 } else {
                     $update_sql = "UPDATE vmc_b2c_goods SET buy_count=buy_count+{$value},buy_w_count={$value} WHERE goods_id={$gid}";
                     $kv->store('buy_w_count_time', time());
                 }
                 break;
             case 'comment_count':
                 if (md5($gid . 'comment_count' . $value * 1024) == $args['comment_count_sign']) {
                     $update_sql = "UPDATE vmc_b2c_goods SET comment_count=comment_count+{$value} WHERE goods_id={$gid}";
                 }
                 break;
         }
         if ($update_sql) {
             logger::info($update_sql);
             $db->exec($update_sql, true);
         }
     }
 }
Esempio n. 2
0
 /**
  * 初始化商品促销过滤.
  *
  * @param array $aGoodsId // array(xxx,xxx,xxx);
  */
 private function _init_config($goods_id_arr, $filter = array())
 {
     if (empty($goods_id_arr)) {
         return false;
     }
     $filter['goods_id'] = $goods_id_arr;
     $current_member = vmc::singleton('b2c_cart_stage')->get_member();
     if (!$filter['member_lv']) {
         $filter['member_lv'] = $current_member['member_lv'] ? $current_member['member_lv'] : -1;
     }
     //开启的促销
     $where[] = "pref.status = 'true'";
     //一定商品范围的促销
     $where[] = 'pref.goods_id IN (' . implode(',', $filter['goods_id']) . ')';
     //一定会员级别的促销
     $where[] = ' (find_in_set(\'' . $filter['member_lv'] . '\', pref.member_lv_ids))';
     //促销时间限制
     if (!empty($filter['current_time'])) {
         $where[] = sprintf('(%s >= pref.from_time or pref.from_time=0)', $filter['current_time']);
         $where[] = sprintf('(%s <= pref.to_time or pref.to_time=0)', $filter['current_time']);
     }
     $SQL = 'SELECT pref.*,srg.name,srg.s_template
                 FROM vmc_b2c_sales_rule_goods AS srg
                 JOIN vmc_b2c_goods_promotion_ref AS pref  ON pref.rule_id = srg.rule_id
                 WHERE ' . implode(' AND ', $where) . '
                 ORDER BY pref.sort_order ASC,pref.ref_id DESC';
     $res = vmc::database()->select($SQL);
     if (empty($res)) {
         return false;
     }
     return utils::array_change_key($res, 'goods_id', true);
 }
Esempio n. 3
0
 private function member_avatar($content)
 {
     $blocks = preg_split('/%AVATAR_([0-9a-z]*)_S_([a-z0-9\\:]*)_AVATAR%/', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
     $c = count($blocks);
     $block_lib = array();
     $block = array();
     for ($i = 0; $i < $c; $i++) {
         switch ($i % 3) {
             case 1:
                 $mid = $blocks[$i];
                 $block[$mid][$i] = array($blocks[$i + 1]);
                 $blocks[$i] =& $block[$mid][$i][0];
                 break;
             case 2:
                 $block[$mid][$i - 1][1] = $blocks[$i];
                 $blocks[$i] = '';
                 break;
         }
     }
     if ($block) {
         $db = vmc::database();
         foreach ($db->select('select avatar,member_id from vmc_b2c_members where member_id in(\'' . implode("','", array_keys($block)) . '\')') as $r) {
             $block_lib[$r['member_id']] = $r;
         }
         foreach ($block as $mid => $sizes) {
             foreach ($sizes as $i => $item) {
                 $block[$mid][$i][0] = '%IMG_' . $block_lib[$mid]['avatar'] . '_S_' . $item[0] . '_IMG%';
             }
         }
     }
     return implode('', $blocks);
 }
Esempio n. 4
0
 public function end($result = true, $message = null, $url_params = null, $params = array())
 {
     if (!$this->transaction_start) {
         trigger_error('The transaction has not started yet', E_USER_ERROR);
     }
     $this->transaction_start = false;
     $db = vmc::database();
     restore_error_handler();
     if (is_null($url_params)) {
         $url = $this->_action_url;
     } elseif (is_array($url_params)) {
         $url = $this->app->router()->gen_url($url_params);
     } else {
         $url = $url_params;
     }
     if ($result) {
         $db->commit($this->transaction_status);
         $status = 'success';
         $message = $message == '' ? '操作成功!' : $message;
     } else {
         $db->rollback();
         $status = 'error';
         $message = $message ? $message : '操作失败!';
     }
     $this->_end_message = $message;
     $this->_end_status = $status;
     $this->splash($status, $url, $message, 'redirect', $params);
 }
Esempio n. 5
0
 public static function getupdatesql($table_name, &$data, $whereClause)
 {
     $db = vmc::database();
     if (!$table_name) {
         trigger_error('getupdatesql UNKNOW TABLE_NAME', E_USER_WARNING);
         return false;
     }
     foreach ($data as $key => $value) {
         $data[strtolower($key)] = $value;
     }
     $table_fields = $db->fetch_colum('DESCRIBE ' . $table_name, 0);
     $table_fields_type = $db->fetch_colum('DESCRIBE ' . $table_name, 1);
     $table_fields = array_combine($table_fields, $table_fields_type);
     $ready_update_str_arr = array();
     foreach ($table_fields as $key => $type) {
         if (isset($data[$key])) {
             $ready_update_str_arr[] = '`' . $key . '`=' . self::quotevalue($db, $data[$key], $type);
         }
     }
     if (count($ready_update_str_arr) > 0) {
         $update_str = implode(',', $ready_update_str_arr);
         $sql = 'UPDATE ' . $table_name . ' SET ' . $update_str;
         if (strlen($whereClause) > 0) {
             $sql .= ' WHERE ' . $whereClause;
         } else {
             logger::warning('全表更新被拦截' . $sql);
             return '';
         }
         return $sql;
     } else {
         return '';
     }
 }
Esempio n. 6
0
 function get_mysql_status()
 {
     $aResult = array('mysql.server_host' => DB_HOST, 'mysql.server_dbname' => DB_NAME, 'mysql.server_user' => DB_USER);
     foreach (vmc::database()->select("show status") as $row) {
         $aResult['mysql.' . strtolower($row["Variable_name"])] = $row["Value"];
     }
     return $aResult;
 }
Esempio n. 7
0
 public function __construct()
 {
     $sql = 'select * from vmc_dbeav_meta_register';
     $arr_rows = vmc::database()->select($sql);
     foreach ($arr_rows as $row) {
         $this->_meta_columns[$row['tbl_name']][$row['col_name']] = $row;
     }
 }
Esempio n. 8
0
 public function get_data()
 {
     $pri_settings = vmc::database()->select('select app, `key`, value from vmc_base_setting');
     $settings = array();
     foreach ($pri_settings as $setting) {
         $settings['setting/' . $setting['app'] . '-' . $setting['key']] = unserialize($setting['value']);
     }
     return $settings;
 }
Esempio n. 9
0
 public function table_name($real = false)
 {
     $class_name = get_class($this);
     $table_name = substr($class_name, 5 + strpos($class_name, '_mdl_'));
     if ($real) {
         return vmc::database()->prefix . $this->app->app_id . '_' . $table_name;
     } else {
         return $table_name;
     }
 }
Esempio n. 10
0
 public function drop($table, $col)
 {
     $mrId = vmc::database()->selectrow('SELECT mr_id FROM vmc_dbeav_meta_register WHERE tbl_name = "' . $table . '" AND col_name = "' . $col . '"');
     if (!$mrId) {
         return true;
     }
     $mrId = $mrId['mr_id'];
     $this->delete(array('mr_id' => $mrId));
     return vmc::database()->exec('DELETE FROM vmc_dbeav_meta_register WHERE mr_id = ' . $mrId);
 }
Esempio n. 11
0
 public function fetch($key, &$value, $timeout_version = null)
 {
     $rows = vmc::database()->select(sprintf("SELECT * FROM `vmc_base_kvstore` WHERE `prefix` = %s AND `key` = %s", vmc::database()->quote($this->prefix), vmc::database()->quote($key)), true);
     if ($rows[0]['id'] > 0 && $timeout_version < $rows[0]['dateline']) {
         if ($rows[0]['ttl'] > 0 && $rows[0]['dateline'] + $rows[0]['ttl'] < time()) {
             return false;
         }
         $value = unserialize($rows[0]['value']);
         return true;
     }
     return false;
 }
Esempio n. 12
0
 public function save($type = 'comment')
 {
     extract($_POST);
     $redirect = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'orders', 'args0' => 's4'));
     if ($reply) {
         $comment['for_comment_id'] = $comment['member_id'];
         $redirect = $this->gen_url(array('app' => 'seller', 'ctl' => 'site_seller', 'act' => 'orders', 'args0' => 's4'));
     }
     $comment['comment_id'] = $this->mComment->apply_id($type);
     $comment['content'] = trim($comment['content']);
     $comment['goods_id'] = $goods_id;
     $comment['createtime'] = time();
     if (is_numeric($comment_id)) {
         //追评
         $comment['comment_num'] = 2;
         if (!$this->mComment->save($comment)) {
             $this->splash('error', $redirect, '提交失败!');
         }
         $comment_type = array('order_id' => $comment['order_id'], 'comment_type' => '2');
         if (!$this->app->model('orders')->save($comment_type)) {
             $db->rollback();
             $this->_send('error', '提交失败!');
         }
         $this->splash('success', $redirect, '评论成功!');
         $this->comment_count($goods_id);
     } else {
         //第一次评论
         $db = vmc::database();
         $db->beginTransaction();
         $comment['comment_id'] = $this->mComment->apply_id($type);
         $comment['comment_num'] = 1;
         if (!$this->mComment->save($comment)) {
             $db->rollback();
             $this->splash('error', $redirect, '提交失败!');
         }
         $mark['comment_id'] = $comment['comment_id'];
         $mark['goods_id'] = $goods_id;
         if (!$this->app->model('goods_mark')->save($mark)) {
             $db->rollback();
             $this->_send('error', '提交失败!');
         }
         $comment_type = array('order_id' => $comment['order_id'], 'comment_type' => '1');
         if (!$this->app->model('orders')->save($comment_type)) {
             $db->rollback();
             $this->_send('error', '提交失败!');
         }
         $this->comment_count($goods_id);
         $db->commit();
         $this->splash('success', $redirect, '评论成功');
     }
 }
Esempio n. 13
0
 public function getMysqlStatus()
 {
     $db = vmc::database();
     $aStatus = $db->select("show status");
     $aShowStaus = array_keys($this->_mysql_status);
     $aResult = array();
     // 可以进行分组咯
     foreach ($aStatus as $row) {
         if (in_array($row["Variable_name"], $aShowStaus)) {
             $aResult[$row["Variable_name"]] = $row["Value"];
         }
     }
     return $aResult;
 }
Esempio n. 14
0
 function get_html($from, $to)
 {
     $render = $this->render;
     $mdl_order = app::get('b2c')->model('orders');
     $where_ft = $mdl_order->_filter(array('createtime|between' => array($from, $to)));
     $SQL_amount = "SELECT sum(`order_total`) as amount_sum FROM vmc_b2c_orders WHERE (pay_status='1' OR is_cod='Y') AND " . $where_ft;
     $SQL_avg_amount = "SELECT avg(`order_total`) as amount_avg FROM vmc_b2c_orders WHERE (pay_status='1' OR is_cod='Y') AND " . $where_ft;
     $SQL_ordercount = "SELECT count(`order_id`) as order_count FROM vmc_b2c_orders WHERE (pay_status='1' OR is_cod='Y') AND " . $where_ft;
     $render->pagedata['amount_sum'] = $mdl_order->db->select($SQL_amount);
     $render->pagedata['amount_avg'] = $mdl_order->db->select($SQL_avg_amount);
     $render->pagedata['order_count'] = $mdl_order->db->select($SQL_ordercount);
     $render->pagedata['gview_count'] = vmc::database()->select("SELECT sum(view_count) as gview_count FROM vmc_b2c_goods");
     //TODO
     return $render->fetch('desktop/widgets/stats.html');
 }
Esempio n. 15
0
File: goods.php Progetto: noikiy/snk
 /**
  * 构造函数.
  *
  * @param $object $app  // service 调用必须的
  */
 public function __construct()
 {
     $this->app = app::get('b2c');
     $this->session = vmc::singleton('base_session');
     $this->session->start();
     $this->member_info = vmc::singleton('b2c_cart_stage')->get_member();
     $this->mdl_cartobjects = $this->app->model('cart_objects');
     $this->mdl_goods = $this->app->model('goods');
     $this->mdl_products = $this->app->model('products');
     if (!empty($this->member_info)) {
         $this->member_id = $this->member_info['member_id'];
         $this->member_discout = $this->member_info['lv_discount'];
     }
     $this->member_discout = $this->member_discout ? $this->member_discout : 1;
     $this->db = vmc::database();
     $this->obj_math = vmc::singleton('ectools_math');
 }
Esempio n. 16
0
 public function exec($params = null)
 {
     //每次最多处理2个
     $limit = 2;
     $model = app::get('image')->model('image');
     $db = vmc::database();
     if ($params['filter']['image_id'] == '_ALL_' || $params['filter']['image_id'] == '_ALL_') {
         unset($params['filter']['image_id']);
     }
     $where = $model->_filter($params['filter']);
     $where .= ' and last_modified<=' . $params['queue_time'];
     $rows = $db->select('select image_id from vmc_image_image where ' . $where . ' order by last_modified desc limit ' . $limit);
     foreach ($rows as $r) {
         if ($params['watermark'] == 'false') {
             $params['watermark'] = false;
         }
         $model->rebuild($r['image_id'], $params['size'], $params['watermark']);
     }
     $r = $db->selectrow('select count(*) as c from vmc_image_image where ' . $where);
     return $r['c'];
 }
Esempio n. 17
0
File: brand.php Progetto: noikiy/snk
 public function brand_add()
 {
     if ($_POST) {
         $data = $_POST;
         $data['seller_id'] = $this->member['members']['info_id'];
         $db = vmc::database();
         $db->beginTransaction();
         if ($this->brand->save($data)) {
             $brand_data['seller_id'] = $this->member['members']['info_id'];
             $brand_data['brand_id'] = $data['brand_id'];
             $brand_data['createtime'] = time();
             if ($this->app->model('brand')->save($brand_data)) {
                 $db->commit();
                 $this->splash('success', array('app' => 'seller', 'ctl' => 'site_brand', 'act' => 'brandlist'));
             } else {
                 $db->rollBack();
                 $this->splash('error', array('app' => 'seller', 'ctl' => 'site_brand', 'act' => 'brand_add'));
             }
         }
     }
     $this->out_put();
 }
Esempio n. 18
0
 public function check()
 {
     $this->begin('index.php?app=seller&ctl=admin_brand&act=index');
     if (!$_POST) {
         $this->end(false, '非法请求');
     }
     extract($_POST);
     $mdl_brand = $this->app->model('brand');
     $db = vmc::database();
     $db->beginTransaction();
     if ($status == 1) {
         $mdl_b2c_brand = app::get('b2c')->model('brand');
         if (!($brand_id = $mdl_b2c_brand->insert($brand))) {
             $db->rollback();
         }
     }
     $data = compact('id', 'brand_id', 'status', 'why');
     if (!$mdl_brand->save($data)) {
         $db - rollback();
         $this->end(false, '审核失败');
     }
     $db->commit();
     $this->end(true, '审核成功');
 }
Esempio n. 19
0
 /**
  * 回滚.
  */
 public function returned($params, &$msg)
 {
     $db = vmc::database();
     $trans = $db->beginTransaction();
     foreach ($params as $key => $item) {
         if (!$this->update_stock(array('sku_bn' => $item['sku']), 'quantity', $item['quantity'], 'plus', $msg)) {
             $db->rollback();
             return false;
         }
     }
     $db->commit();
     return true;
 }
Esempio n. 20
0
 public function active($app_id)
 {
     $row = vmc::database()->selectrow('select status from vmc_base_apps where app_id = "' . $app_id . '" AND status IN ("uninstalled", "paused") ');
     switch ($row['status']) {
         case 'paused':
             $this->enable($app_id);
             $app = app::get($app_id);
             foreach ($this->content_detector($app_id) as $detector) {
                 $detector->active_by_app($app_id);
             }
             //用自己新启用的资源探测器,启用自己的资源
             foreach (vmc::servicelist('app_content_detector') as $k => $detector) {
                 if ($detector->app->app_id == $app_id) {
                     //遍历所有已经安装的app
                     $detector->active_by_app($app_id);
                 }
             }
             app::get('base')->model('apps')->update(array('status' => 'active'), array('app_id' => $app_id));
             logger::info('Application ' . $app_id . ' actived');
             return;
         case 'uninstalled':
             $this->install($app_id);
             return;
         default:
             logger::info('Application ' . $app_id . ' don\'t be active');
             return;
     }
 }
Esempio n. 21
0
 public function end($result = true, $message = null, $ajax = false)
 {
     if (!$this->transaction_start) {
         trigger_error('The transaction has not started yet', E_USER_ERROR);
     }
     $this->transaction_start = false;
     restore_error_handler();
     if (is_null($url)) {
         //如果是错误则在当前页面返回错误信息
         $url = $this->_action_url;
     }
     $db = vmc::database();
     if ($result) {
         $db->commit($this->transaction_status);
     } else {
         $db->rollback();
     }
     $this->splash($result ? 'success' : 'failed', $url, $result ? $message : ($message ? $message : '操作失败'), $ajax);
 }
Esempio n. 22
0
 private function _signupThree($post)
 {
     $db = vmc::database();
     $db->beginTransaction();
     $post['company']['seller_id'] = $this->seller['seller_id'];
     if ($company_id = $this->app->model('contact')->save($post['company'])) {
         $update_seller_data = array('status' => 2, 'company_id' => $company_id);
         if (!$this->app->model('sellers')->update($update_seller_data, array('seller_id' => $this->seller['seller_id']))) {
             $db->rollBack();
             return false;
         }
         $db->commit();
         return true;
     }
     return false;
 }
Esempio n. 23
0
 function active_by_app($app_id)
 {
     $db = vmc::database();
     $tables = array();
     $fix = substr(md5('dbtable_' . $app_id), 0, 16);
     $rows = $db->select('show tables like ' . $db->quote(vmc::database()->prefix . $app_id . '\\_%\\_' . $fix));
     foreach ($rows as $row) {
         $tables[] = current($row);
     }
     foreach ($tables as $table) {
         $pos = strpos($table, '_' . $fix);
         if ($pos) {
             $db->exec('ALTER TABLE `' . $table . '` RENAME `' . substr($table, 0, $pos) . '`');
             logger::info(sprintf('%s restore', substr($table, 0, $pos)));
         }
     }
 }
Esempio n. 24
0
 public function create($fastbuy = false)
 {
     $member_id = $this->app->member_id;
     //parent method
     //$member_info = $this->get_member_info($member_id);
     $this->logger->set_operator(array('ident' => $member_id, 'name' => '会员', 'model' => 'members'));
     $params = utils::_filter_input($_POST);
     //新订单标准数据
     $order_sdf = array('member_id' => $member_id, 'memo' => $params['memo'], 'pay_app' => $params['payapp_id'], 'dlytype_id' => $params['dlytype_id'], 'createtime' => time(), 'need_shipping' => $params['need_shipping'], 'need_invoice' => $params['need_invoice'], 'invoice_title' => $params['invoice_title'], 'platform' => 'mobile');
     $redirect_cart = $this->gen_url(array('app' => 'b2c', 'ctl' => 'mobile_cart'), true);
     $redirect_checkout = $this->gen_url(array('app' => 'b2c', 'ctl' => 'mobile_checkout', 'args' => array($fastbuy)), true);
     if ($fastbuy) {
         $filter['is_fastbuy'] = 'true';
     }
     if ($order_sdf['need_shipping'] != 'N') {
         if ($order_sdf['need_shipping'] != 'N' && !$order_sdf['dlytype_id']) {
             $this->logger->fail('create', '未知配送方式', $params);
             $this->splash('error', $redirect_checkout, '未知配送方式');
         }
         //COD FIX
         if ($order_sdf['pay_app'] == '-1' || $order_sdf['pay_app'] == 'cod') {
             $order_sdf['is_cod'] = 'Y';
         } else {
             $dlytype = app::get('b2c')->model('dlytype')->dump($params['dlytype_id']);
             if ($dlytype['has_cod'] == 'true') {
                 $order_sdf['pay_app'] = 'cod';
                 $order_sdf['is_cod'] = 'Y';
             }
         }
         if (!$params['addr_id']) {
             $this->logger->fail('create', '无收货人信息', $params);
             $this->splash('error', $redirect_checkout, '无收货人信息');
         } else {
             $consignee = app::get('b2c')->model('member_addrs')->getRow('name,area,addr,zip,tel,mobile,email', array('member_id' => $member_id, 'addr_id' => $params['addr_id']));
             $order_sdf['consignee'] = $consignee;
         }
     }
     if (!$order_sdf['pay_app']) {
         $this->logger->fail('create', '未知支付方式', $params);
         $this->splash('error', $redirect_checkout, '未知支付方式');
     }
     //购物车数据
     $cart_result = $this->cart_stage->result($filter);
     if ($this->cart_stage->is_empty($cart_result)) {
         $this->logger->fail('create', '没有可结算商品', $params);
         $this->splash('error', $redirect_cart, '没有可结算商品');
     }
     if ($params['cart_md5'] != utils::array_md5($cart_result)) {
         $this->logger->fail('create', '购物车发生变化', $params);
         $this->splash('error', $redirect_cart, '购物车发生变化');
     }
     $db = vmc::database();
     //开启事务
     $this->transaction_status = $db->beginTransaction();
     $order_create_service = vmc::singleton('b2c_order_create');
     //&$order_sdf、&$msg
     if (!$order_create_service->generate($order_sdf, $cart_result, $msg)) {
         $db->rollback();
         //事务回滚
         $msg = $msg ? $msg : '数据组织失败';
         $this->logger->fail('create', $msg, $params);
         $this->splash('error', $redirect_cart, $msg);
     }
     if (!$order_create_service->save($order_sdf, $msg)) {
         $db->rollback();
         //事务回滚
         $msg = $msg ? $msg : '数据保存失败';
         $this->logger->fail('create', $msg, $order_sdf);
         $this->splash('error', $redirect_cart, $msg);
     }
     $db->commit($this->transaction_status);
     //事务提交
     $this->logger->set_order_id($order_sdf['order_id']);
     $this->logger->success('create', '订单创建成功', $params);
     /*
      * 优惠券冻结,优惠券使用记录
      * 未使用成功in_use!="true"的优惠券不做冻结处理,不做记录
      * @see /Applications/b2c/lib/postfilter/promotion.php line 200
      */
     foreach ($cart_result['objects']['coupon'] as $coupon) {
         if ($coupon['params']['in_use'] != 'true') {
             continue;
         }
         $couponlog_data = array('member_id' => $member_id, 'order_id' => $order_sdf['order_id'], 'cpns_id' => $coupon['params']['cpns_id'], 'memc_code' => $coupon['params']['code'], 'cpns_name' => $coupon['params']['name'], 'coupon_save' => $coupon['params']['save'], 'order_total' => $order_sdf['order_total']);
         vmc::singleton('b2c_coupon_stage')->couponlog($couponlog_data, $msg);
         if ($coupon['params']['cpns_type'] == '1') {
             //需冻结会员账户内的相关B类券
             vmc::singleton('b2c_coupon_stage')->freeze_member_coupon($member_id, $coupon['params']['code'], $msg);
         }
     }
     //清理购物车
     $this->cart_stage->clean($cart_result, $fastbuy);
     //只删除勾选结算项,对于优惠券,只删除触发促销的项
     $redirect_payment = $this->gen_url(array('app' => 'b2c', 'ctl' => 'mobile_checkout', 'act' => 'payment', 'args' => array($order_sdf['order_id'], '1')), true);
     $this->splash('success', $redirect_payment, '订单提交成功');
 }
Esempio n. 25
0
 /**
  * 强制刷新图片最新更新时间
  * @param null
  * @return null
  */
 public function command_touch()
 {
     vmc::database()->exec('update vmc_image_image SET last_modified = last_modified + 1');
     logger::info('Refresh  images last_modified OK!');
 }
Esempio n. 26
0
 public function remove($brand_id)
 {
     $redirect = $this->gen_url(array('app' => 'seller', 'ctl' => 'site_brand', 'act' => 'index'));
     $filter = app::get('store')->model('store')->getList('store_id', array('seller_id' => $this->seller['seller_id']));
     $mdl_b2c_goods = app::get('b2c')->model('goods');
     foreach ($filter as $value) {
         $value['brand_id'] = $brand_id;
         if ($mdl_b2c_goods->count($value)) {
             $this->splash('error', $redirect, '该品牌下还有商品,不允许删除');
         }
     }
     $db = vmc::database();
     $db->beginTransaction();
     $result = $this->mBrand->delete(array('brand_id' => $brand_id, 'seller_id' => $this->seller['seller_id']));
     if (!$result) {
         $db->rollback();
         $this->splash('error', $redirect, '删除失败');
     }
     $result = app::get('b2c')->model('brand')->delete(array('brand_id' => $brand_id, 'seller_id' => $this->seller['seller_id']));
     if (!$result) {
         $db->rollback();
         $this->splash('error', $redirect, '删除失败');
     }
     $db->commit();
     $this->splash('success', $redirect, '删除成功');
 }
Esempio n. 27
0
 private function _entry($params)
 {
     $db = vmc::database();
     $db->beginTransaction();
     $extra_columns = $this->page_setting($params['pageIndex']);
     //公司信息
     if (isset($params['company']) && !empty($params['company'])) {
         $params['company']['uid'] = $this->seller['seller_id'];
         $params['company']['from'] = '1';
         if (!app::get('base')->model('company')->save($params['company'])) {
             $db->rollback();
             $this->splash('error', $redirect, '注册失败');
         }
     }
     //联第人信息
     if (isset($params['contact']) && !empty($params['contact'])) {
         $params['contact']['uid'] = $this->seller['seller_id'];
         $params['contact']['from'] = '1';
         if (!app::get('base')->model('contact')->save($params['contact'])) {
             $db->rollback();
             $this->splash('error', $redirect, '注册失败');
         }
     }
     //品牌
     if (isset($params['brand']) && !empty($params['brand'])) {
         $params['brand']['seller_id'] = $this->seller['seller_id'];
         if (!$params['brand']['brand_id']) {
             if (!($barand_id = app::get('b2c')->model('brand')->insert($params['brand']))) {
                 $db->rollback();
                 $this->splash('error', $redirect, '注册失败');
             }
             $params['brand_id'] = $barand_id;
         } else {
             if (!app::get('b2c')->model('brand')->save($params['brand'])) {
                 $db->rollback();
                 $this->splash('error', $redirect, '注册失败');
             }
         }
         if (!$this->app->model('brand')->save($params['brand'])) {
             $db->rollback();
             $this->splash('error', $redirect, '注册失败');
         }
     }
     //店铺
     if (isset($params['store']) && !empty($params['store'])) {
         $params['store']['seller_id'] = $this->seller['seller_id'];
         if (!app::get('store')->model('store')->save($params['store'])) {
             $db->rollback();
             $this->splash('error', $redirect, '注册失败');
         }
     }
     //扩展
     $mdl_company_extra = app::get('base')->model('company_extra');
     foreach ($extra_columns as $key => $col) {
         if (isset($params[$key]) && !empty($params[$key])) {
             $params[$key]['content_id'] = $params[$key]['content_id'];
             $params[$key]['uid'] = $this->seller['seller_id'];
             $params[$key]['from'] = 1;
             if (!$mdl_company_extra->extra_save($key, $params)) {
                 $db->rollback();
                 $this->splash('error', $redirect, '注册失败');
             }
         }
     }
     $data = array('seller_id' => $this->seller['seller_id'], 'schedule' => $params['pageIndex']);
     if (!$this->app->model('sellers')->save($data)) {
         $db->rollback();
         $this->splash('error', $redirect, '注册失败');
     }
     $db->commit();
 }
Esempio n. 28
0
 /**
  * 构造方法
  * @param object 当前应用app的对象
  * @return null
  */
 function __construct($app)
 {
     $this->app = $app;
     $this->db = vmc::database();
 }
Esempio n. 29
0
 public function command_kvrecovery($instance = null)
 {
     if (app::get('base')->status() == 'uninstalled') {
         logger::info('系统未安装!请先运行install');
         return;
     }
     base_kvstore::config_persistent(false);
     //临时禁用KV持久化 TODO 比较危险
     $testObj = base_kvstore::instance('test');
     if (get_class($testObj->get_controller()) === 'base_kvstore_mysql') {
         logger::info('The \'base_kvstore_mysql\' is default persistent, Not necessary recovery');
         exit;
     }
     logger::info('KVrecovery BEGIN...');
     $db = vmc::database();
     $count = $db->count('SELECT count(*) AS count FROM vmc_base_kvstore', true);
     if (empty($count)) {
         logger::info('No data recovery');
         exit;
     }
     $pagesize = 100;
     $page = ceil($count / 100);
     for ($i = 0; $i < $page; $i++) {
         $rows = $db->selectlimit('SELECT * FROM vmc_base_kvstore', $pagesize, $i * $pagesize);
         foreach ($rows as $row) {
             $arr_value = unserialize($row['value']);
             if (!$arr_value || !is_array($arr_value)) {
                 logger::error($row['prefix'] . '=>' . $row['key'] . ' ... KVrecovery ERROR');
             }
             $row['value'] = $arr_value;
             if (base_kvstore::instance($row['prefix'])->recovery($row)) {
                 logger::info($row['prefix'] . '=>' . $row['key'] . ' ... KVrecovery Success');
             } else {
                 logger::warning($row['prefix'] . '=>' . $row['key'] . ' ... KVrcovery Failure');
             }
         }
     }
     logger::info('KVrecovery END...');
 }
Esempio n. 30
0
 function batchUpdateMemberPriceByOperator($goods_id, $updateLvId, $updateValue, $operator, $fromName)
 {
     #↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓记录管理员操作日志,统一调会员价@lujy↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
     if ($operator && $updateValue != null && $updateValue != '') {
         $opesql = 'SELECT  distinct sbglp.goods_id,sbml.name,sbglp.price
                    FROM vmc_b2c_goods_lv_price AS sbglp, vmc_b2c_member_lv AS sbml
                    WHERE sbglp.goods_id IN(' . implode(',', $goods_id) . ") AND sbglp.level_id={$updateLvId} AND sbml.member_lv_id={$updateLvId}";
         $probninfo = vmc::database()->select($opesql);
         $bntmp = '';
         foreach ($probninfo as $key => $val) {
             $bntmp .= '商品ID为 ' . $val['goods_id'] . ' 的' . $val['name'] . '价改为 ' . $val['price'] . ',';
         }
         $memo = rtrim($bntmp, ',');
         $this->objlog->logs('goods', '统一调会员价', $memo);
     }
     #↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑记录管理员操作日志,统一调会员价@lujy↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
 }