/** * 不破坏缓存情况下的商品统计 */ 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); } } }
/** * 初始化商品促销过滤. * * @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); }
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); }
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); }
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 ''; } }
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; }
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; } }
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; }
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; } }
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); }
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; }
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, '评论成功'); } }
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; }
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'); }
/** * 构造函数. * * @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'); }
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']; }
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(); }
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, '审核成功'); }
/** * 回滚. */ 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; }
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; } }
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); }
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; }
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))); } } }
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, '订单提交成功'); }
/** * 强制刷新图片最新更新时间 * @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!'); }
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, '删除成功'); }
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(); }
/** * 构造方法 * @param object 当前应用app的对象 * @return null */ function __construct($app) { $this->app = $app; $this->db = vmc::database(); }
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...'); }
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↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ }