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 = kernel::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 == '' ? app::get('base')->_('操作成功!') : app::get('base')->_('成功:') . $message; } else { $db->rollback(); $status = 'error'; $message = $message ? $message : app::get('base')->_("操作失败: 对不起,无法执行您要求的操作"); } $this->_end_message = $message; $this->splash($status, $url, $message, 'redirect', $params); }
/** * 售后服务单创建 * @param array sdf * @param string message * @return boolean success or failure */ public function create(&$sdf, &$thisObj) { if (!$sdf['order_bn'] || !$sdf['return_bn']) { $thisObj->send_user_error(app::get('b2c')->_('售后服务单数据异常!'), array('tid' => $sdf['order_bn'], 'return_id' => $sdf['return_bn'])); } else { $is_save = true; $obj_return_product = $this->app->model('return_product'); $return_id = $obj_return_product->gen_id(); $arr_product_data = json_decode($sdf['return_product_items'], true); $str_product_data = serialize($arr_product_data); $tmp = $obj_return_product->getList('*', array('return_bn' => $sdf['return_bn'], 'order_id' => $sdf['order_bn'])); if ($tmp) { $thisObj->send_user_error(app::get('b2c')->_('售后服务单已经存在!'), array('tid' => $sdf['order_bn'], 'return_id' => $sdf['return_bn'])); } // 开始事务 $db = kernel::database(); $transaction_status = $db->beginTransaction(); $arr_data = array('order_id' => $sdf['order_bn'], 'return_bn' => $sdf['return_bn'], 'return_id' => $return_id, 'title' => $sdf['title'], 'content' => $sdf['content'], 'comment' => $sdf['comment'], 'status' => $sdf['status'], 'product_data' => $str_product_data, 'member_id' => $sdf['member_id'], 'add_time' => $sdf['add_time']); if ($sdf['url'] && strpos($sdf['url'], '/') !== false) { $mdl_img = app::get('image')->model('image'); $image_name = substr($sdf['url'], strrpos($sdf['url'], '/') + 1); $image_id = $mdl_img->store($sdf['url'], null, null, $image_name); $arr_data['image_file'] = $image_id; } $is_save = $obj_return_product->save($arr_data); if ($is_save) { $db->commit($transaction_status); return array('tid' => $sdf['order_bn'], 'return_id' => $sdf['return_bn']); } else { $db->rollback(); $thisObj->send_user_error(app::get('b2c')->_('售后服务单添加失败!'), array('tid' => $sdf['order_bn'], 'return_id' => $sdf['return_bn'])); } } }
private function get_pager($page_no, $page_size, $sTableName, $sWhere = '') { $page_no = intval($page_no); $page_size = intval($page_size); $limit = ''; $rs_count = 0; $sql = 'select count(*) as c from `' . $sTableName . '` ' . $sWhere; //------------------------------------------------- $db = kernel::database(); $rs = $db->selectrow($sql); if ($rs && is_array($rs)) { $rs_count = intval($rs['c']); } $str_limit = ''; $offset = 0; $limit = -1; $page_count = 0; if ($rs_count > 0) { $page_count = ceil($rs_count / $page_size); if ($page_no < 1) { $page_no = 1; } else { if ($page_no > $page_count) { $page_no = $page_count; } } $offset = ($page_no - 1) * $page_size; $limit = $page_size; $str_limit = ' LIMIT ' . $offset . ',' . $limit; } else { $page_no = 1; } return array('rs_count' => $rs_count, 'page_count' => $page_count, 'page_no' => $page_no, 'page_size' => $page_size, 'offset' => $offset, 'limit' => $limit, 'str_limit' => $str_limit); }
/** * 退款单创建 * @param array sdf * @return boolean success or failure */ public function create(&$sdf, $thisObj) { // 退款单创建是和中心的交互 $is_payed = false; $obj_refund = $this->app->model('refunds'); $obj_order = $this->app_b2c->model('orders'); $objMath = kernel::single('ectools_math'); if (!isset($sdf['order_bn']) || !$sdf['order_bn']) { $thisObj->send_user_error(app::get('b2c')->_('退款单tid没有收到!'), array()); } $obj_order_bills = $this->app->model('order_bills'); $sql = 'SELECT * FROM ' . $obj_refund->table_name(1) . ' AS refunds' . ' LEFT JOIN ' . $obj_order_bills->table_name(1) . ' AS bill ON bill.bill_id=refunds.refund_id' . ' WHERE refunds.t_begin=' . $sdf['t_begin'] . ' AND bill.bill_type="refunds" AND bill.rel_id=\'' . $sdf['order_bn'] . '\''; if (!$obj_order_bills->db->select($sql)) { $refund_id = $sdf['refund_id'] = $obj_refund->gen_id(); $refundArr = array('refund_id' => $sdf['refund_id'], 'refund_bn' => $sdf['refund_bn'], 'order_id' => $sdf['order_bn'], 'account' => $sdf['account'], 'bank' => $sdf['bank'], 'pay_account' => $sdf['pay_account'] ? $sdf['pay_account'] : app::get('b2c')->_('付款帐号'), 'currency' => $sdf['currency'], 'money' => $sdf['money'], 'paycost' => $sdf['paycost'], 'cur_money' => $sdf['cur_money'], 'pay_type' => $sdf['pay_type'], 'pay_app_id' => $sdf['payment_tid'], 'pay_name' => $sdf['pay_name'], 'pay_ver' => '1.0', 'op_id' => '0', 'ip' => $sdf['ip'], 't_begin' => $sdf['t_begin'], 't_payed' => $sdf['t_begin'], 't_confirm' => $sdf['t_confirm'], 'status' => 'ready', 'trade_no' => $sdf['trade_no'], 'memo' => $sdf['memo'], 'return_url' => '', 'orders' => array(array('rel_id' => $sdf['order_bn'], 'bill_type' => 'refunds', 'pay_object' => 'order', 'bill_id' => $sdf['refund_id'], 'money' => $sdf['money']))); $is_save = $obj_refund->save($refundArr); } else { $sdf['refund_id'] = $refund_id = $tmp[0]['bill_id']; } // 更改支付单状态 $filter = array('refund_id' => $refund_id, 'status|in' => array('failed', 'cancel', 'error', 'invalid', 'timeout', 'ready')); $is_save = $obj_refund->update(array('status' => 'succ'), $filter); $affect_row = $obj_refund->db->affect_row(); if ($is_save) { $db = kernel::database(); $transaction_status = $db->beginTransaction(); // 防止重复充值 if ($affect_row) { $tmp_refunds = $obj_refund->getList('*', array('refund_id' => $refund_id)); if (!$tmp_refunds) { $thisObj->send_user_error(app::get('b2c')->_('退款单不存在!'), array('tid' => $sdf['order_bn'], 'refund_id' => $refund_id)); } $refundArr = $tmp_refunds[0]; $refundArr['order_id'] = $sdf['order_bn']; // 修改订单状态. $refundArr['op_name'] = 'ome' . app::get('b2c')->_('管理员'); $refundArr['payment'] = $refundArr['pay_app_id']; $obj_refund_finish = kernel::single('b2c_order_refund'); $is_payed = $obj_refund_finish->order_refund_finish($refundArr, 'succ', 'font', $msg); } else { $db->rollback(); $filter = array('refund_id' => $refund_id); $obj_refund->update(array('status' => 'failed'), $filter); $thisObj->send_user_error(app::get('b2c')->_('退款多次重复请求!'), array('tid' => $sdf['order_bn'], 'refund_id' => $sdf['refund_id'])); } } if (!$is_save || !$is_payed) { $db->rollback(); $msg = $msg ? $msg : app::get('b2c')->_('退款单生成失败!'); $filter = array('refund_id' => $refund_id); $obj_refund->update(array('status' => 'failed'), $filter); $thisObj->send_user_error($msg, array('tid' => $sdf['order_bn'], 'refund_id' => $sdf['refund_id'])); } $db->commit($transaction_status); $obj_refund_finish->send_request($refundArr); $obj_apiv = kernel::single('b2c_apiv_exchanges_request'); $req_arr = array('order_id' => $sdf['order_bn']); $obj_apiv->rpc_caller_request($req_arr, 'orderupdate'); return array('tid' => $sdf['order_bn'], 'refund_id' => $sdf['refund_id']); }
function getTreeList($pid = 0, $listMark = 'all') { $var_pid = $pid; $var_listMark = $listMark; $a = kernel::database(); if ($listMark == 'all') { $aCat = $a->select('SELECT cat_name,cat_id,o.parent_id AS pid,o.p_order,o.cat_path,o.is_leaf AS cls,o.type_id as type FROM sdb_b2c_goods_cat o WHERE o.disabled=\'false\' ORDER BY o.cat_path,o.p_order,o.cat_id'); foreach ($aCat as $k => $row) { if ($row['cat_path'] != '' && $row['cat_path'] != ',') { $aCat[$k]['cat_path'] = substr($row['cat_path'], 1); } } } else { if ($pid === 0) { $sqlWhere = '(parent_id IS NULL OR parent_id=' . intval($pid) . ')'; } else { $sqlWhere = 'parent_id=' . intval($pid); } $sqlWhere .= " AND o.disabled='false'"; $aCat = $a->select('SELECT cat_name, cat_id, o.parent_id AS pid, o.p_order, o.cat_path, o.is_leaf AS cls,o.type_id, t.name AS type_name FROM sdb_b2c_goods_cat o LEFT JOIN sdb_b2c_goods_type t ON o.type_id = t.type_id WHERE ' . $sqlWhere . ' ORDER BY o.cat_path,o.p_order,o.cat_id'); foreach ($aCat as $k => $row) { $aCat[$k]['pid'] = intval($aCat[$k]['pid']); if ($row['cat_path'] == '' || $row['cat_path'] == ',') { $aCat[$k]['step'] = 1; } else { $aCat[$k]['step'] = substr_count($row['cat_path'], ',') + 1; } $aCat[$k]['url'] =& kernel::router()->gen_url(array('app' => 'b2c', 'ctl' => 'gallery', 'act' => $render->app->getConf('gallery.default_view'), 'args' => array($aCat[$k]['cat_id']), null, $app->base_url())); } } return $aCat; }
public function offline_point($arr, $rpcService) { $sql = 'SELECT login_account AS mobile, offline_cardno FROM sdb_b2c_members AS bm LEFT JOIN sdb_pam_members as pm ON bm.member_id = pm.member_id WHERE bm.member_id = ' . $this->app->member_id . ' AND login_type = \'mobile\''; $memberData = kernel::database()->select($sql); $mobile = $memberData['mobile']; /* $pamMemberData = app::get('pam')->model('members')->getList('*',array('member_id'=>$this->app->member_id)); foreach ($pamMemberData as $row) { if ($row['login_type'] == 'mobile') { $mobile = $row['login_account']; } } */ //$mobile = '13910510236'; if ($mobile) { $client = new SoapClient("http://202.106.132.100/AppTest/WMAppCommWebService.asmx?wsdl"); $arrPara = array((object) array('authKey' => '', 'accountNo' => '2-' . $mobile, 'password' => null)); $result = $client->__Call("SearchMemberCardInfo", $arrPara); $xml = kernel::single('site_utility_xml'); $arrData = $xml->xml2arrayValues($result->SearchMemberCardInfoResult, 0); $params = $arrData['OutputResult']; if ($params['ResultFlag'] == 1) { # 写入卡号到会员 if ($params['CardNo']) { app::get('b2c')->model('members')->update(array('offline_cardno' => $params['CardNo']), array('member_id' => $this->app->member_id)); } return $params; } } return '手机号码不存在!'; }
/** * * @params $gid 商品id * @params $pid 货品id * @return bool **/ public function is_delete($gid, $pid = null) { $filter = array(); #if( $pid ) # $filter['product_id'] = $pid; if ($gid) { $filter['gid'] = $gid; } if (!$filter) { return true; } $objProducts = app::get('b2c')->model('products'); $ret = $objProducts->getList('product_id', array('goods_id' => $gid)); foreach ($ret as $val) { $product_ids[] = $val['product_id']; } $db = kernel::database(); $count = $db->select('SELECT pid FROM `sdb_groupactivity_purchase` where pid in(' . implode(',', $product_ids) . ')'); //$count = $this->o_purchase->dump( $filter ); if (count($count)) { $this->error_msg = '该商品在团购中存在!无法删除!'; return false; } return true; }
function count($filter = null) { $filter['type'] = 'sto'; $filter['object_type'] = 'goods'; $row = kernel::database()->select('SELECT count(*) AS _count FROM sdb_b2c_member_goods WHERE ' . $this->_filter($filter)); return intval($row[0]['_count']); }
public function archive($return_ids) { $db = kernel::database(); $transaction_status = $db->beginTransaction(); $insert_error_code = 0; $delete_error_code = 0; // 归档数据到新表 try { $this->op_archive($return_ids, false); } catch (Exception $e) { $insert_error_code = $e->getCode(); } if ($insert_error_code == 30002) { $db->rollback(); } else { // 删除老数据 try { $this->op_archive($return_ids, true); } catch (Exception $e) { $delete_error_code = $e->getCode(); } if ($delete_error_code == 30003) { $db->rollback(); } else { $db->commit($transaction_status); } } }
public function get_sale_num($filter = null) { //商品销售总量 $sql = 'SELECT sum(I.nums) as sale_num FROM ' . kernel::database()->prefix . 'b2c_orders as O LEFT JOIN ' . kernel::database()->prefix . 'b2c_order_items as I ON O.order_id=I.order_id WHERE ' . 'O.disabled="false" and ' . $this->_filter($filter); $row = $this->db->select($sql); return $row[0]['sale_num']; }
/** * 库存修改 * @param array sdf * @return boolean success of failure */ public function updateStore(&$sdf, $thisObj) { if (!isset($sdf['list_quantity']) || !$sdf['list_quantity']) { $thisObj->send_user_error(app::get('b2c')->_('需要更新的货品的库存不存在!'), array()); } else { $has_error = false; $arr_store = json_decode($sdf['list_quantity'], true); $product = $this->app->model('products'); $obj_goods = $this->app->model('goods'); $fail_products = array(); $db = kernel::database(); if (isset($arr_store) && $arr_store) { foreach ($arr_store as $arr_product_info) { if ($arr_product_info['bn'] && is_numeric($arr_product_info['quantity'])) { $arr_product = $product->dump(array('bn' => $arr_product_info['bn'])); if ($arr_product) { $store_increased = $this->objMath->number_minus(array(floatval($arr_product_info['quantity']), floatval($arr_product['store']))); $arr_goods = $db->selectrow('SELECT store,goods_id from sdb_b2c_goods where goods_id =' . $arr_product['goods_id']); $goods_store = $this->objMath->number_plus(array($arr_goods['store'], $store_increased, $arr_product['freez'])); $arr_goods['store'] = $goods_store == '0' ? 0 : $goods_store; $arr_product['store'] = $this->objMath->number_plus(array($arr_product_info['quantity'], $arr_product['freez'])); $arr_product['last_modify'] = time(); $storage_enable = $this->app->getConf('site.storage.enabled'); if (!is_null($arr_product['store']) && $storage_enable != 'true') { $is_save = $product->save($arr_product); if ($is_save) { $obj_goods->update($arr_goods, array('goods_id' => $arr_goods['goods_id'])); } } else { $is_save = true; } if (!$is_save) { $msg = $this->app->_('商品库存更新失败!'); $has_error = true; $fail_products[] = $arr_product_info['bn']; continue; } } else { $has_error = true; $fail_products[] = $arr_product_info['bn']; continue; } } else { $has_error = true; continue; } } if (!$has_error) { return true; } else { // 更新部分失败. $fail_products = array('error_response' => $fail_products); $thisObj->send_user_error(app::get('b2c')->_('更新库存部分失败!'), $fail_products); } } else { $thisObj->send_user_error(app::get('b2c')->_('更新的商品的库存信息不存在!'), array()); } } }
function goodslist($brand_id = 0) { $sql = 'SELECT * FROM test_goods g LEFT JOIN test_rebate r on g.brand_id = r.rebate_id' . $brand_id == 0 ? '' : 'WHERE g.brand_id =' . $brand_id; // $retult = $this->db->select($sql); $retult = kernel::database()->select($sql); return $retult; }
function get_mysql_status() { $aResult = array('mysql.server_host' => DB_HOST, 'mysql.server_dbname' => DB_NAME, 'mysql.server_user' => DB_USER); foreach (kernel::database()->select("show status") as $row) { $aResult['mysql.' . strtolower($row["Variable_name"])] = $row["Value"]; } return $aResult; }
function table_name($real = false) { if ($real) { return kernel::database()->prefix . $this->app->app_id . '_app_content'; } else { return 'app_content'; } }
function __construct() { $sql = "select * from sdb_dbeav_meta_register"; $arr_rows = kernel::database()->select($sql); foreach ($arr_rows as $row) { $this->_meta_columns[$row['tbl_name']][$row['col_name']] = $row; } }
function getProduct() { if ($_GET['product_bn']) { $sql = "select product_id,goods_id,bn,name from sdb_b2c_products where bn ='{$_GET['product_bn']}'"; } $product = kernel::database()->select($sql); $product = $product[0]; echo json_encode($product); }
public function get_data() { $pri_settings = kernel::database()->select('select app, `key`, value from sdb_base_setting'); $settings = array(); foreach ($pri_settings as $setting) { $settings['setting/' . $setting['app'] . '-' . $setting['key']] = unserialize($setting['value']); } return $settings; }
function get_goods_salesimage($goods_id = null) { $db = kernel::database(); $salesgoodsimage = $db->select("SELECT gpr.`goods_id`,gpr.`description`,srg.`image` FROM `sdb_b2c_goods_promotion_ref` as gpr\n left join sdb_b2c_sales_rule_goods as srg on gpr.rule_id = srg.rule_id\n WHERE gpr.`goods_id`=" . $goods_id . ""); foreach ($salesgoodsimage as $k => $v) { $simage = $v['image']; } return $simage; }
function _ex_vertical_getLinkBrandIds($typeids) { $sql = 'SELECT b.brand_id FROM ' . kernel::database()->prefix . 'b2c_type_brand ty_b LEFT JOIN ' . kernel::database()->prefix . 'b2c_brand b ON ty_b.brand_id=b.brand_id WHERE type_id in(' . implode(',', array_unique($typeids)) . ') order by ordernum desc'; $res = app::get('b2c')->model('brand')->db->select($sql); foreach ($res as $key => $value) { $_return[] = $value['brand_id']; } return array_unique($_return); }
public function setUp() { $this->db = kernel::database(); $this->model = app::get('b2c')->model('member_addrs'); if (!$this->_is_exist_table('sdb_b2c_member_addrs')) { $table = new base_application_dbtable(); $table->detect('b2c', 'member_addrs')->install(); } }
public function table_name($real = false) { $table_name = substr(get_class($this), strlen($this->app->app_id) + 5); if ($real) { return kernel::database()->prefix . $this->app->app_id . '_' . $table_name; } else { return $table_name; } }
function get_all_list() { $db = kernel::database(); $sql = "select kw_name FROM `sdb_mobileapi_keywords` order by ordernum asc;"; $keywords = $db->select($sql); $ret['items'] = $keywords ? $keywords : array(); $ret['show_num'] = count($keywords) > 10 ? 10 : count($keywords); return $ret; }
function table_name($real = false) { $object = $this->app->model('member_goods'); $table_name = substr(get_class($object), strlen($this->app->app_id) + 5); if ($real) { return kernel::database()->prefix . $this->app->app_id . '_' . $table_name; } else { return $table_name; } }
protected function check_vary_list() { if (!isset($this->_vary_list)) { $rs = kernel::database()->exec('SELECT UPPER(`type`) AS `type`, UPPER(`name`) AS `name`, `expire` FROM sdb_base_cache_expires', true); while ($row = mysql_fetch_assoc($rs['rs'])) { $this->_vary_list[$row['type']][$row['name']] = $row['expire']; } mysql_free_result($rs['rs']); } }
function drop($table, $col) { $mrId = kernel::database()->selectrow('SELECT mr_id FROM sdb_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 kernel::database()->exec('DELETE FROM sdb_dbeav_meta_register WHERE mr_id = ' . $mrId); }
static function get_meta_column($tbl_name) { $sql = "select col_name,col_desc from sdb_dbeav_meta_register where tbl_name='{$tbl_name}'"; $rows = kernel::database()->select($sql); foreach ($rows as $row) { $meta['metaColumn'][] = $row['col_name']; $meta['columns'][$row['col_name']] = unserialize($row['col_desc']); } return $meta; }
public function table_name($real = false) { $class_name = get_class($this); $table_name = substr($class_name, 5 + strpos($class_name, '_mdl_')); if ($real) { return kernel::database()->prefix . $this->app->app_id . '_' . $table_name; } else { return $table_name; } }
function checkAskdelete() { $type_id = $_POST['type_id']; $db =& kernel::database(); $row = $db->select("select comment_id from sdb_b2c_member_comments where object_type='ask' and for_comment_id='0' and gask_type=" . $type_id); if ($row) { echo "true"; } else { echo "false"; } }
private function auto_delete_kvstore() { $rows = kernel::database()->select('SELECT `prefix`, `key` FROM sdb_base_kvstore WHERE ttl>0 AND (dateline+ttl)<' . time()); foreach ($rows as $row) { $single = base_kvstore::instance($row['prefix']); $single->get_controller()->delete($row['key']); if (get_class($single->get_controller()) != 'base_kvstore_mysql') { kernel::single('base_kvstore_mysql', $row['prefix'])->delete($row['key']); } //todo: 删除持久化数据 } }
public function fetch($key, &$value, $timeout_version = null) { $rows = kernel::database()->select(sprintf("SELECT * FROM `sdb_base_kvstore` WHERE `prefix` = %s AND `key` = %s", kernel::database()->quote($this->prefix), kernel::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; }