984 lines
48 KiB
PHP
Executable File
984 lines
48 KiB
PHP
Executable File
<?php
|
||
|
||
if (!defined('IN_ECS'))
|
||
{
|
||
die('Hacking attempt');
|
||
}
|
||
|
||
class matrix
|
||
{
|
||
/**
|
||
* 构造函数
|
||
*
|
||
* @access public
|
||
* @param
|
||
*
|
||
* @return void
|
||
*/
|
||
function __construct(){
|
||
include_once(ROOT_PATH . 'includes/cls_transport.php');
|
||
$this->transport = new transport;
|
||
$this->shopex_app = array('taodali','ecos.ome');
|
||
$this->db = $GLOBALS['db'];
|
||
$this->ecs = $GLOBALS['ecs'];
|
||
}
|
||
|
||
/**
|
||
* 功能:查询绑定详情
|
||
*
|
||
* @param array $node_type 绑定类型
|
||
* @return array
|
||
*/
|
||
function get_bind_info($node_type)
|
||
{
|
||
if (!is_array($node_type)) {
|
||
$node_type = array($node_type);
|
||
}
|
||
$sql = "SELECT *
|
||
FROM " . $this->ecs->table('shop_bind') . "
|
||
WHERE node_type in ('".implode("','", $node_type)."') AND status='bind'";
|
||
$bind_info = $this->db->getRow($sql);
|
||
$bind_info = is_array($bind_info) ? $bind_info : array();
|
||
return $bind_info;
|
||
}
|
||
|
||
/**
|
||
* 功能:保存矩阵绑定关系
|
||
*
|
||
* @param array $data 绑定信息
|
||
* @return string
|
||
*/
|
||
function save_shop_bind($data)
|
||
{
|
||
$sql = "INSERT INTO ".$this->ecs->table('shop_bind')." (name, node_id, node_type, status, app_url) ".
|
||
"VALUES ('".$data['name']."','".$data['node_id']."','".$data['node_type']."','".$data['status']."','".$data['app_url']."')";
|
||
|
||
error_log(date("c")."\t".$sql."\n\n",3,LOG_DIR."/api.log");
|
||
|
||
$this->db->query($sql);
|
||
/* 转入权限分配列表 */
|
||
$new_id = $this->db->Insert_ID();
|
||
/* 将矩阵的绑定节点状态写入config */
|
||
$this->bind_config($data['node_type']);
|
||
return $new_id;
|
||
}
|
||
|
||
/**
|
||
* 功能:删除矩阵绑定关系
|
||
*
|
||
* @param array $node_type 绑定类型
|
||
*/
|
||
function delete_shop_bind($node_type){
|
||
error_log(date("c")."\t".__LINE__."\n\n",3,LOG_DIR."/api.log");
|
||
if(!$node_type) return false;
|
||
$sql = "delete from ".$this->ecs->table('shop_bind')." where node_type = '".$node_type."'";
|
||
error_log(date("c")."delete_shop_bind:\t".__LINE__.print_r($sql,1)."\n\n",3,LOG_DIR."/api.log");
|
||
$this->db->query($sql);
|
||
/* 将矩阵的绑定节点状态写入configg */
|
||
$this->bind_config($node_type,'false');
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 功能:将矩阵的绑定节点状态写入config
|
||
*
|
||
* @param array $code 绑定类型
|
||
* @param strint $status true:绑定 false:解绑
|
||
*/
|
||
function bind_config($code,$status='true'){
|
||
if(!$code || $code=='') return false;
|
||
$sql = "select value from ".$this->ecs->table('shop_config')." where code ='bind_list'";
|
||
$bind_row = $this->db->getOne($sql);
|
||
$bind_row and $list = json_decode($bind_row,1);
|
||
error_log(date("c")."\t".__LINE__.print_r($list,1)."\n\n",3,LOG_DIR."/api.log");
|
||
if($list){
|
||
if($status=='true'){
|
||
$list = array_push($list, $code);
|
||
}else{
|
||
unset($list[array_search($code,$list)]);
|
||
}
|
||
error_log(date("c")."list:\t".__LINE__.print_r($list,1)."\n\n",3,LOG_DIR."/api.log");
|
||
$sql = "update from ".$this->ecs->table('shop_config')." set value='".json_encode($list)."' where code='bind_list";
|
||
if(empty($list)) $sql = "delete from ".$this->ecs->table('shop_config')." where code='bind_list'";
|
||
error_log(date("c")."bind_config:\t".__LINE__.print_r($sql,1)."\n\n",3,LOG_DIR."/api.log");
|
||
$this->db->query($sql);
|
||
}else{
|
||
if($status=='true'){
|
||
$list = array($code);
|
||
$sql = "insert into ".$this->ecs->table('shop_config')." set parent_id=2,code='bind_list',type='hidden',value='".json_encode($list)."',sort_order=1";
|
||
$this->db->query($sql);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 功能:获取支付方式
|
||
*
|
||
* @param int $pay_id 支付方式ID
|
||
*/
|
||
function get_payment($pay_id){
|
||
$sql = "SELECT pay_id, pay_name,pay_code FROM ".$this->ecs->table('payment').
|
||
" WHERE enabled = 1 AND pay_id = ".$pay_id;
|
||
return $this->db->getRow($sql);
|
||
}
|
||
|
||
|
||
function getItemNum($order_id){
|
||
$sql = "SELECT SUM(goods_number) as itemnum from ".$this->ecs->table('order_goods')." where order_id=".$order_id;
|
||
return $this->db->getRow($sql);
|
||
}
|
||
|
||
|
||
function http_request_matrix($paramss,$bind_type='ecos.ome'){
|
||
//sync同步
|
||
foreach($this->shopex_app as $k){
|
||
switch($k){
|
||
case 'taodali':
|
||
$commit_setting[$k]['commit_url'] = MATRIX_COMMIT_URL_SYNC;
|
||
$commit_setting[$k]['real_time'] = 'true';
|
||
$commit_setting[$k]['callback_type'] = $paramss['callback_type'];
|
||
break;
|
||
case 'ecos.ome':
|
||
$commit_setting[$k]['commit_url'] = MATRIX_COMMIT_URL_SYNC;
|
||
$commit_setting[$k]['real_time'] = 'true';
|
||
$commit_setting[$k]['callback_type'] = $paramss['callback_type'];
|
||
break;
|
||
}
|
||
}
|
||
include_once(ROOT_PATH."includes/cls_certificate.php");
|
||
$cert = new certificate();
|
||
//系统级参数
|
||
$paramss['app_id'] = VERIFY_APP_ID;
|
||
$certificate = $cert->get_shop_certificate();
|
||
$paramss['certi_id'] = $certificate['certificate_id'];
|
||
$paramss['from_node_id'] = $certificate['node_id'];
|
||
$paramss['date'] = time();
|
||
// $paramss['timestamp'] = microtime(true);
|
||
$paramss['timestamp'] = date('Y-m-d H:i:s',time());
|
||
$paramss['refresh_time'] = date('Y-m-d H:i:s',time());
|
||
$paramss['format'] = "json";
|
||
$paramss['v'] = "1.0";
|
||
$paramss['from_api_v'] = '1.0';
|
||
$http_type = $paramss['type'];
|
||
unset($paramss['type']);
|
||
$bind_type=='retry' and $bind_type = $this->shopex_app;
|
||
$shop = $this->get_bind_info($bind_type);
|
||
$paramss['node_type'] = $shop['node_type'];
|
||
$paramss['to_node_id'] = $shop['node_id'];
|
||
$paramss['_id'] = "rel_".$paramss['from_node_id']."_".$paramss['method']."_".$paramss['to_node_id'];
|
||
$paramss['task'] = $this->create_task_id();
|
||
$paramss['real_time'] = $commit_setting[$shop['node_type']]['real_time'];
|
||
$paramss['callback_type'] = $commit_setting[$shop['node_type']]['callback_type'];
|
||
$paramss['callback_url'] = $this->ecs->url();
|
||
unset($paramss['sign']);
|
||
$paramss['sign'] = $this->get_matrix_sign($paramss,$certificate['token']);
|
||
if ( @constant( "DEBUG_API" ) ) {
|
||
foreach ($paramss as $key=>$val) {
|
||
$array_debug_info[] = $key."=".stripslashes($val);
|
||
}
|
||
$str_debug_info = implode("&", $array_debug_info);
|
||
if(!is_dir(LOG_DIR)){
|
||
mkdir(LOG_DIR,0777);
|
||
}
|
||
error_log(date("c")."\t".rawurldecode($str_debug_info)."\n".stripslashes(var_export($paramss,true))."\n\n",3,LOG_DIR."/api_".date("Y-m-d",time()).".log");
|
||
unset($str_debug_info,$array_debug_info);
|
||
}
|
||
error_log(date("c")."\t".__LINE__.print_r($commit_setting,1)."\n\n",3,LOG_DIR."/api.log");
|
||
error_log(date("c")."\t".__LINE__.print_r($shop,1)."\n\n",3,LOG_DIR."/api.log");
|
||
$i=0;
|
||
do{
|
||
$i++;
|
||
$response = $this->transport->request($commit_setting[$shop['node_type']]['commit_url'], $paramss);
|
||
}while(strlen(trim($response['body']))==0&&$i<0);
|
||
|
||
if ( @constant( "DEBUG_API" ) ) {
|
||
error_log(date("c")."\t"."\n".stripslashes(var_export($response,true))."\n\n",3,LOG_DIR."/api_".date("Y-m-d",time()).".log");
|
||
}
|
||
|
||
$callback = json_decode($response['body'],true);
|
||
$status = $callback['rsp']=='succ'?'true':'false';
|
||
$this->set_callback($callback,$http_type,$commit_setting[$shop['node_type']]['callback_type'],$paramss['callback_type_id'],$paramss['method'],$paramss,$status);
|
||
}
|
||
|
||
|
||
//创建订单
|
||
function createOrder($order_sn,$type='ecos.ome'){
|
||
include_once(ROOT_PATH.'includes/cls_certificate.php');
|
||
$cert = new certificate();
|
||
if(!$cert->is_bind_sn($type,'bind_type')) return false;
|
||
|
||
//订单总体信息
|
||
$paramss = $this->getOrderStruct($order_sn);
|
||
if(!$paramss['orders']) return null;
|
||
|
||
$paramss['method'] = 'store.trade.add';
|
||
$paramss['callback_type'] = 'CREATEORDER';
|
||
$paramss['callback_type_id'] = $paramss['tid'];
|
||
$paramss['type'] = 'request';
|
||
$paramss['from_type'] = VERIFY_APP_ID;
|
||
$this->http_request_matrix($paramss,$type);
|
||
}
|
||
|
||
|
||
//更新订单
|
||
function updateOrder($order_sn,$type='ecos.ome'){
|
||
include_once(ROOT_PATH.'includes/cls_certificate.php');
|
||
$cert = new certificate();
|
||
$flag = false;
|
||
foreach($this->shopex_app as $shopex_app){
|
||
if($cert->is_bind_sn($shopex_app,'bind_type')) $flag = true;
|
||
}
|
||
if($flag==false) return false;
|
||
//订单总体信息
|
||
$paramss = $this->getOrderStruct($order_sn);
|
||
$paramss['method'] = 'store.trade.update';
|
||
$paramss['callback_type'] = 'UPDATEORDER';
|
||
$paramss['callback_type_id'] = $paramss['tid'];
|
||
$paramss['type'] = 'request';
|
||
$paramss['from_type'] = VERIFY_APP_ID;
|
||
$this->http_request_matrix($paramss,$type);
|
||
}
|
||
|
||
//获取货品列表
|
||
function getProductList($items,$p_real_price){
|
||
if( !empty($items) ){
|
||
$sql = "select p.product_id,p.goods_id as iid,p.goods_id,p.goods_attr,attr.attr_price,attr.attr_value,g.shop_price as price,g.goods_name as name from ".$this->ecs->table('products')." as p LEFT join ".$this->ecs->table('goods_attr')." as attr on p.goods_attr=attr.goods_attr_id and p.goods_id=attr.goods_id LEFT join ".$this->ecs->table('goods')." as g on p.goods_id=g.goods_id where p.product_id in (".join(',',$items[1]).")";
|
||
$rows = $this->db->getAll($sql);
|
||
$datas = array();
|
||
$goods_ids = array();
|
||
foreach($rows as $k => $val){
|
||
if($val['attr_value']){
|
||
$val['name'] .= "(".$val['attr_value'].")";
|
||
$val['sku_properties'] = $val['attr_value'];
|
||
}
|
||
$val['num']=$items[0][$val['product_id']]['goods_number'];
|
||
|
||
$val['total_item_fee'] = $this->format_number($items[0][$val['product_id']]['goods_price'] * $val['num']);
|
||
$val['sendnum'] = 0;
|
||
$val['item_type'] = 'product';
|
||
$val['sale_price'] = $this->format_number($p_real_price[$val['product_id']] * $val['num']);
|
||
$val['discount_fee'] = $this->format_number(($val['price']+$val['attr_price'])*$val['num']-$val['sale_price']); //商品差价
|
||
$this->_total_products_price += ($val['price']+$val['attr_price'])*$val['num']; //未打折之前总的商品价格
|
||
$this->_total_discount_fee +=$val['discount_fee']; //总商品差价
|
||
$datas[$val['iid']][$val['product_id']] = $val;
|
||
$goods_ids[$val['iid']] = $val['iid'];
|
||
$goods_total[$val['iid']][$val['product_id']]['product_id'] = $val['product_id'];
|
||
$goods_total[$val['iid']][$val['product_id']]['num'] = $val['num'];
|
||
$goods_total[$val['iid']][$val['product_id']]['total'] = $val['total_item_fee'];
|
||
//unset($datas[$val['iid']][$k]['product_id']);
|
||
}
|
||
if( !empty($goods_total) ){
|
||
foreach( $goods_total as $key=>$val ){
|
||
foreach($val as $v){
|
||
$goods[$key]['items_num'] += $v['num'];
|
||
$goods[$key]['total_order_fee'] += $v['total'];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return array($datas,$goods,$goods_ids);//列表数据,商品个数和总价,商品id列表
|
||
}
|
||
|
||
//获取商品列表
|
||
function getGoodsList($goods_ids){
|
||
if( !empty($goods_ids) ){
|
||
$sql = "select goods_id as iid,goods_name as title,goods_sn as bn from ".$this->ecs->table('goods')." where goods_id in (".join(',',$goods_ids).")";
|
||
$rows = $this->db->getAll($sql);
|
||
}
|
||
return $rows;
|
||
}
|
||
|
||
//获取订单信息
|
||
function get_order_info($order_sn,$params=''){
|
||
$params = $params?$params:'*';
|
||
$sql = "select ".$params." from ".$this->ecs->table('order_info')." where order_sn='".$order_sn."'";
|
||
$row = $this->db->getRow($sql);
|
||
return $row;
|
||
}
|
||
|
||
//获取订单货品信息order_goods
|
||
function get_order_items($order_id){
|
||
$sql = "select distinct product_id,goods_name,goods_sn,goods_price,market_price,goods_number,goods_attr,rec_id from ".$this->ecs->table('order_goods')." where order_id='".$order_id."' and is_gift =0";
|
||
if($rs = $this->db->getAll($sql)){
|
||
foreach($rs as $k=>$v){
|
||
$product_ids[$v['product_id']] = $v['product_id'];
|
||
$v['goods_attr'] = str_replace("\n", "", $v['goods_attr']);
|
||
$items[$v['product_id']] = $v;
|
||
$items_id[] = $v['rec_id'];
|
||
$p_items_id[$v['product_id']] = $v['rec_id'];
|
||
}
|
||
}
|
||
$diff_items_id = array_diff($items_id, array_values($p_items_id));
|
||
return array($items,$product_ids,$diff_items_id);
|
||
}
|
||
|
||
//根据order_id获取order_goods货品信息
|
||
function getGoodsInfoByOid($order_id){
|
||
$sql = "select product_id,goods_price from ".$this->ecs->table('order_goods')." where order_id='".$order_id."' and is_gift = 0";
|
||
$row = $this->db->getAll($sql);
|
||
foreach($row as $k=>$v){
|
||
$p_real_price[$v['product_id']] = $v['goods_price'];
|
||
}
|
||
return $p_real_price;
|
||
}
|
||
|
||
//插入callback记录 写返回日志
|
||
function set_callback($msg,$http_type,$type,$tpye_id,$method,$data=array(),$status=""){
|
||
$time = time();
|
||
$status or $status = $msg['msg_id'] ? "running":"false";
|
||
$data = addslashes(serialize(array('params'=>$data,'result'=>$msg)));
|
||
if( $this->checkCallbackExit($type,$tpye_id) ){
|
||
$data and $data = ",data='$data'";
|
||
$sql = "update ".$this->ecs->table('callback_status')." set msg_id='".$msg['msg_id']."',status='".$status."',date_time='".$time."',times=times+1 {$data} WHERE method='".$method."' AND type_id='".$tpye_id."' ";
|
||
}else{
|
||
$sql = "insert into ".$this->ecs->table('callback_status')." set msg_id='".$msg['msg_id']."',type='".$type."',http_type='".$http_type."',status='".$status."',type_id='".$tpye_id."',method='".$method."',date_time='".$time."',data='".$data."',times=1";
|
||
}
|
||
error_log(date('c')."set_callback sql:\n".print_r($sql,1),3,__FILE__.".log");
|
||
$this->db->query($sql);
|
||
//接口失败,修改订单的返回状态 order_info 的 callback_status
|
||
if($status=='false' || $status=='true'){
|
||
$order_sql = "update ".$this->ecs->table('order_info')." set callback_status='".$status."' where order_sn='".$tpye_id."'";
|
||
$this->db->query($order_sql);
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 根据type_id 获取 矩阵返回日志
|
||
* @param $type_id 日志id
|
||
* @return array
|
||
*/
|
||
function get_callback($type_id){
|
||
$sql = "select * from ".$GLOBALS['ecs']->table('callback_status')." where type_id='".$type_id."' and status='false'";
|
||
$row = $GLOBALS['db']->getRow($sql,1);
|
||
if(!$row) return false;
|
||
$row['data'] = unserialize($row['data']);
|
||
return $row;
|
||
}
|
||
|
||
//验证重试次数
|
||
function checkCallbackCount($type,$type_id){
|
||
$sql = "select times from ".$this->ecs->table('callback_status')." where type='".$type."' and type_id='".$type_id."'";
|
||
$row = $this->db->getRow($sql);
|
||
return $row['times'];
|
||
}
|
||
|
||
//验证重试次数
|
||
function checkCallbackExit($type,$type_id){
|
||
$sql = "select times from ".$this->ecs->table('callback_status')." where type='".$type."' and type_id='".$type_id."'";
|
||
if($row = $this->db->getRow($sql)){
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
//更新callback记录
|
||
function update_callback($msg_id,$data="",$status='true'){
|
||
$status = $status=='true'?$status:"false";
|
||
$data and $sqlstr = ",data=CONCAT(data,'\n".addslashes(serialize($data))."')";
|
||
$set_times = $status=='true'?'times=0,':'times=times+1,';//成功后置0
|
||
if( is_array($data) && $data['type'] && $data['type_id'] ){
|
||
$sql = "update ".$this->ecs->table('callback_status')." set {$set_times}status='{$status}' {$sqlstr} where type='".$data['type']."' AND type_id='".$data['type_id']."' and status!='true' ";
|
||
}else{
|
||
$sql = "update ".$this->ecs->table('callback_status')." set {$set_times}status='{$status}' {$sqlstr} where msg_id='".$msg_id."' and status!='true' ";
|
||
}
|
||
error_log(date("c")."\t sql :".$sql."\n",3,__FILE__.".log");
|
||
if( $this->db->query($sql) === false ){
|
||
// error_log(date("c")."\t error sql :".$sql."\n",3,__FILE__.".log");
|
||
}
|
||
//修改订单的返回状态 order_info 的 callback_status
|
||
$order_sql = "update ".$this->ecs->table('order_info')." set callback_status='".$status."' where order_sn='".$data['type_id']."'";
|
||
$this->db->query($order_sql);
|
||
}
|
||
|
||
|
||
function get_card_info($order_sn,$card){
|
||
$gift_value = array();
|
||
$sql = "SELECT * FROM ".$GLOBALS['ecs']->table('card')." WHERE card_name = '{$card['card_name']}'";
|
||
$res = $GLOBALS['db']->getRow($sql);
|
||
if ($res) {
|
||
$gift_value = array(
|
||
'iid' => '0',
|
||
'title' => $res['card_name'],
|
||
'bn' => 'ECS_CARD',
|
||
// 'orders_bn' => 'ECS_CARD',
|
||
'orders_bn' => 'ECS_CARD_'.$res['card_id'], //erp要求传跟order_items里的一样
|
||
'items_num' => '1',
|
||
'total_order_fee' => $card['card_fee'],
|
||
'oid' => $order_sn,
|
||
'status' => 'TRADE_ACTIVE',
|
||
'type' => 'goods',
|
||
'order_items' => array(
|
||
'item'=> array(
|
||
0=>array(
|
||
'iid' => '0',
|
||
'bn' => 'ECS_CARD_'.$res['card_id'],
|
||
'price' => $card['card_fee']>0?$res['card_fee']:'0.00',
|
||
'name' => $res['card_name'],
|
||
'weight' => '0.00',
|
||
'num' => '1',
|
||
'total_item_fee' => $card['card_fee'],
|
||
'sku_properties' => $res['card_name'],
|
||
'sendnum' => '0',
|
||
'item_type' => 'product',
|
||
'sale_price' => $card['card_fee']>0?$res['card_fee']:'0.00',
|
||
'discount_fee' => '0.00',
|
||
'score' => '',
|
||
'item_status' => 'normal',
|
||
)
|
||
)
|
||
)
|
||
|
||
);
|
||
}
|
||
return $gift_value;
|
||
}
|
||
|
||
|
||
function get_order_goods($res,$has_product){
|
||
$return_value = array();
|
||
foreach ($res as $key => $value) {
|
||
// if (isset($value['p_goods_attr']) && strstr($value['p_goods_attr'],"|")) {
|
||
// $sql = "SELECT sum(attr_price) as attr_price FROM ".$GLOBALS['ecs']->table('goods_attr')." WHERE goods_id = '".$value['goods_id']."' AND goods_attr_id in (".str_replace("|", ",", $value['p_goods_attr']).")";
|
||
// $attr_price = $GLOBALS['db']->getOne($sql);
|
||
// $attr_price && $value['shop_price'] = $value['shop_price']+$attr_price;
|
||
// }
|
||
|
||
// if ($return_value[$value['goods_id']]) {
|
||
// $return_value[$value['goods_id']]['items_num'] = $return_value[$value['goods_id']]['items_num']+$value['goods_number'];
|
||
// $return_value[$value['goods_id']]['order_items']['item'][] = array(
|
||
// 'iid' => $value['product_id'],
|
||
// 'bn' => $has_product?$value['product_sn']:$value['goods_sn'],
|
||
// 'price' => $value['goods_price'],
|
||
// 'name' => $value['goods_name'],
|
||
// 'weight' => $value['goods_weight'],
|
||
// 'num' => $value['goods_number'],
|
||
// 'total_item_fee' => $value['goods_price'],
|
||
// 'sku_properties' => str_replace(array("\r\n", "\r", "\n"), " ", $value['goods_attr']),
|
||
// 'sendnum' => $value['send_number'],
|
||
// 'item_type' => 'product',
|
||
// 'sale_price' => $value['goods_price'],
|
||
// 'discount_fee' => '0',
|
||
// 'score' => $value['give_integral']<0?$value['goods_price']:$value['give_integral'],
|
||
// 'item_status' => 'normal'
|
||
// );
|
||
// }else{
|
||
|
||
$sku_properties = '';
|
||
if ($value['goods_attr']) {
|
||
$sku_properties = str_replace(' ','',$value['goods_attr']);
|
||
$sku_properties = str_replace(array("\r\n", "\r", "\n"), ";", $sku_properties);
|
||
$sku_properties = trim($sku_properties,';');
|
||
}
|
||
$return_value[] = array(
|
||
'iid' => $value['goods_id'],
|
||
'title' => $value['goods_name'],
|
||
'weight' => $value['goods_weight'],
|
||
'bn' => $value['goods_sn'],
|
||
// 'orders_bn' => $value['goods_sn'],
|
||
'orders_bn' => $has_product?$value['product_sn']:$value['goods_sn'], //erp要求传跟order_items里的一样
|
||
'items_num' => $value['goods_number'],
|
||
'total_order_fee' => $value['goods_price'],
|
||
'oid' => $order_sn,
|
||
'status' => 'TRADE_ACTIVE',
|
||
'type' => $value['is_gift']?'gift':'goods',
|
||
'order_items' => array(
|
||
'item' => array(
|
||
0 => array(
|
||
'iid' => $value['product_id'],
|
||
'bn' => $has_product?$value['product_sn']:$value['goods_sn'],
|
||
'price' => $value['goods_price'],
|
||
// 'price' => $value['shop_price'],
|
||
'name' => $value['goods_name'],
|
||
'weight' => $value['goods_weight'],
|
||
'num' => $value['goods_number'],
|
||
'total_item_fee' => $value['goods_price'],
|
||
'sku_properties' => $sku_properties,
|
||
'sendnum' => $value['send_number'],
|
||
'item_type' => 'product',
|
||
'sale_price' => $this->format_number($value['goods_price']*$value['goods_number']-$value['discount_fee']),
|
||
'discount_fee' => $value['discount_fee'],
|
||
'score' => $value['give_integral']<0?$value['goods_price']:$value['give_integral'],
|
||
'item_status' => 'normal'
|
||
)
|
||
)
|
||
)
|
||
);
|
||
// }
|
||
}
|
||
return $return_value;
|
||
}
|
||
|
||
|
||
function getGoods($order_id,$order_sn,$card=false,$use_gift=false,$card_fee=0){
|
||
$return_has_pro = $return_no_pro = array();
|
||
$sql = "SELECT og.*,p.product_sn,g.goods_weight,g.give_integral,g.shop_price,p.goods_attr as p_goods_attr FROM ".$GLOBALS['ecs']->table('order_goods')." as og LEFT JOIN ".$GLOBALS['ecs']->table('products')." as p on og.product_id = p.product_id LEFT JOIN ".$GLOBALS['ecs']->table('goods')." as g on p.goods_id = g.goods_id WHERE og.order_id = {$order_id} AND og.product_id>0";
|
||
$res = $GLOBALS['db']->getAll($sql);
|
||
if ($res) {
|
||
$return_has_pro = $this->get_order_goods($res,$has_product=true);
|
||
}
|
||
$sql = "SELECT og.*,g.goods_weight,g.give_integral,g.shop_price FROM ".$GLOBALS['ecs']->table('order_goods')." as og LEFT JOIN ".$GLOBALS['ecs']->table('goods')." as g on og.goods_id = g.goods_id WHERE og.order_id = {$order_id} AND og.product_id=0";
|
||
$res = $GLOBALS['db']->getAll($sql);
|
||
if ($res) {
|
||
$return_no_pro = $this->get_order_goods($res,$has_product=false);
|
||
}
|
||
if ($card) {
|
||
$gift_value[] = $this->get_card_info($order_sn,$card);
|
||
}else{
|
||
$gift_value = array();
|
||
}
|
||
$return_value = array_merge($return_has_pro,$return_no_pro,$gift_value);
|
||
return $return_value;
|
||
}
|
||
|
||
|
||
function getGoods_old($order_id,$order_sn,$card=false,$use_gift=false){
|
||
|
||
$p_real_price = $this->getGoodsInfoByOid($order_id);
|
||
$order_items = $this->get_order_items($order_id);//order_items数据
|
||
$prduct_list = $this->getProductList($order_items,$p_real_price);
|
||
$goods_list = $this->getGoodsList($prduct_list[2]);
|
||
// $sql = "SELECT o.*, IF(o.product_id > 0, p.product_number, g.goods_number) AS storage, o.goods_attr, g.suppliers_id, IFNULL(b.brand_name, '') AS brand_name, p.product_sn
|
||
// FROM " . $ecs->table('order_goods') . " AS o
|
||
// LEFT JOIN " . $ecs->table('products') . " AS p
|
||
// ON p.product_id = o.product_id
|
||
// LEFT JOIN " . $ecs->table('goods') . " AS g
|
||
// ON o.goods_id = g.goods_id
|
||
// LEFT JOIN " . $ecs->table('brand') . " AS b
|
||
// ON g.brand_id = b.brand_id
|
||
// WHERE o.order_id = '$order_id'";
|
||
$return_value = array();
|
||
if( !empty($goods_list) ){
|
||
foreach( $goods_list as $k=>$value ){
|
||
$value['orders_bn'] = $value['bn'];
|
||
$value['items_num'] = $prduct_list[1][$value['iid']]['items_num'];
|
||
$value['total_order_fee'] = $this->format_number($prduct_list[1][$value['iid']]['total_order_fee']);
|
||
$value['oid'] = $order_sn;
|
||
$value['status'] = 'TRADE_ACTIVE';
|
||
foreach($prduct_list[0][$value['iid']] as $v ){
|
||
$v['score'] = 0;
|
||
$v['item_status'] = 'normal';
|
||
$v['bn'] = $value['bn'];
|
||
unset($v['product_id'],$v['goods_id'],$v['goods_attr'],$v['attr_price'],$v['attr_value']);
|
||
$items[] = $v;
|
||
$tmp_items[$v['bn']] = $v;
|
||
$value['sale_price'] = $this->format_number($v['sale_price']);
|
||
$value['discount_fee'] = $this->format_number($v['discount_fee']);
|
||
}
|
||
$value['type'] = 'goods';
|
||
$value['order_items']['order_item'] = $items;
|
||
unset($value['goods_sn']);
|
||
unset($items);
|
||
$tmp_return_value[$value['iid']] = $value;
|
||
}
|
||
foreach($tmp_return_value as $v) $return_value[]=$v;
|
||
return $return_value;
|
||
}
|
||
}
|
||
|
||
//返回订单所有支付单信息
|
||
function get_order_payments($order_id){
|
||
$payment_list = array();
|
||
$sql = 'select p.*,m.`name` as buy_name from sdb_payments as p LEFT JOIN sdb_members as m on m.member_id = p.member_id where p.order_id ='.$order_id.' ';
|
||
|
||
foreach($this->db->select($sql) as $data){
|
||
$send_data = array();
|
||
if ($data['status'] == 'succ' || ($data['status'] == 'progress' && $data['pay_type'] == 'online') ){
|
||
$send_data['payment_id']=$data['payment_id'];
|
||
$send_data['tid']=$data['order_id'];
|
||
$send_data['seller_bank']=$data['bank'];
|
||
$send_data['seller_account']=$data['account'];
|
||
$send_data['buyer_id']=$data['member_id'];
|
||
$send_data['buy_name']=$data['buy_name'];
|
||
$send_data['buyer_account']=$data['pay_account'];
|
||
$send_data['pay_fee']=$this->format_number($data['money']);
|
||
$send_data['paycost']=$this->format_number($data['paycost']);
|
||
$send_data['currency']=$data['currency'];
|
||
$send_data['currency_fee']=$this->format_number($data['cur_money']);
|
||
$send_data['pay_type']=$data['pay_type'];
|
||
$send_data['payment_code']=$data['payment'];
|
||
$send_data['payment_name']=$data['paymethod'];
|
||
$send_data['pay_time']=date('Y-m-d H:i:s',$data['t_begin']);
|
||
$send_data['t_begin']=date('Y-m-d H:i:s',$data['t_begin']);
|
||
$send_data['t_end']=date('Y-m-d H:i:s',$data['t_end']);
|
||
$send_data['status']=strtoupper($data['status']);
|
||
$send_data['memo']=$data['memo'];
|
||
$send_data['outer_no']=$data['trade_no'];
|
||
|
||
$payment_list['payment_list'][] = $send_data;
|
||
}
|
||
|
||
}
|
||
return $payment_list;
|
||
}
|
||
|
||
//生成发给taoex 订单结构体
|
||
function getOrderStruct($order_sn,$fields='*',$is_create=FALSE){
|
||
include_once(ROOT_PATH . 'includes/lib_order.php');
|
||
$order_status['status']=array(0=>'TRADE_ACTIVE',1=>'TRADE_ACTIVE',2=>'TRADE_CLOSED',3=>'TRADE_CLOSED',4=>'TRADE_CLOSED',5=>'TRADE_FINISHED');
|
||
$order_status['ship_status']=array(0=>'SHIP_NO',1=>'SHIP_FINISH',4=>'SHIP_PART');
|
||
$order_status['pay_status']=array(0=>'PAY_NO',1=>'PAY_TO_MEDIUM',2=>'PAY_FINISH',3=>'REFUND_PART',4=>'REFUND_ALL');
|
||
|
||
$fields = '*'==$fields?$fields:explode(',',$fields);
|
||
//订单总体信息
|
||
if (!$order_info = $this->get_order_info($order_sn)) return '';
|
||
|
||
|
||
$paramss['tid'] = $order_info['order_sn'];//订单号
|
||
$paramss['trade_valid_time'] = 0;//订单失效时间
|
||
$paramss['out_time'] = '0';//订单失效时间
|
||
|
||
|
||
$paramss['lastmodify'] = date('Y-m-d H:i:s',$order_info['lastmodify']);
|
||
$paramss['pmt_order'] = '0.00';
|
||
$paramss['pmt_goods'] = '0.00';
|
||
$paramss['promotion_details'][] = array(
|
||
'promotion_name' => '',
|
||
'promotion_fee' => $order_info['discount'],//折扣价减不用减去去包装费用
|
||
);
|
||
$paramss['promotion_details'] = json_encode($paramss['promotion_details']);
|
||
$paramss['total_weight'] = '0';
|
||
|
||
|
||
$paramss['created'] = date('Y-m-d H:i:s',$order_info['add_time']);//订单创建时间
|
||
// $paramss['modified'] = date('Y-m-d H:i:s',$order_info['add_time']);//订单修改时间,没有则用创建时间
|
||
if(in_array($order_info['pay_status'], array(1,2))){ //订单支付时间 已支付或付款中
|
||
$paramss['pay_time'] = date('Y-m-d H:i:s',$order_info['pay_time']);
|
||
}
|
||
|
||
// 订单支付信息详情
|
||
$paramss['payment_lists'] = $this->get_payment_list($order_info);
|
||
$paramss['payment_lists'] = json_encode($paramss['payment_lists']);
|
||
|
||
$paramss['status'] = $order_status['status'][$order_info['order_status']];//交易状态
|
||
// $paramss['pay_status'] = $order_status['pay_status'][$order_info['pay_status']];//支付状态
|
||
// 如果是未支付,判断是否是全部退款
|
||
if ($order_info['pay_status'] == '0' && $order_info['pay_time']>0) {
|
||
$sql = "select count(user_money) as user_money from ".$GLOBALS['ecs']->table('account_log')." where user_id = '".$order_info[
|
||
'user_id']."' and user_money>0 and change_desc like '%".$order_info['order_sn']."%'";
|
||
$user_money = $GLOBALS['db']->getOne($sql);
|
||
if (isset($user_money) && $user_money>0) {
|
||
$paramss['pay_status'] = $order_status['pay_status'][4];//退款
|
||
}else{
|
||
$paramss['pay_status'] = $order_status['pay_status'][$order_info['pay_status']];//支付状态
|
||
}
|
||
}else{
|
||
$paramss['pay_status'] = $order_status['pay_status'][$order_info['pay_status']];//支付状态
|
||
}
|
||
$paramss['ship_status'] = $order_status['ship_status'][$order_info['shipping_status']];//发货状态
|
||
$paramss['payed_fee'] = $this->format_number($order_info['surplus'] + $order_info['money_paid']);//已支付金额
|
||
// $paramss['total_goods_fee'] = $order_info['card_fee']?$this->format_number($order_info['goods_amount']+$order_info['card_fee']):$this->format_number($order_info['goods_amount']);//商品总额
|
||
$paramss['total_goods_fee'] = $this->format_number($order_info['goods_amount']);//商品总额
|
||
$total_fee = $order_info['goods_amount'] - $order_info['discount'] - $order_info['goods_discount_fee'] + $order_info['tax'] + $order_info['shipping_fee'] + $order_info['insure_fee'] + $order_info['pay_fee'] + $order_info['pack_fee'] + $order_info['card_fee'];
|
||
$paramss['total_trade_fee'] = $this->format_number($total_fee);//交易总额
|
||
|
||
if ($paramss['pay_status'] == 'PAY_NO' && $paramss['payed_fee']>0) {
|
||
$paramss['pay_status'] = 'PAY_PART';
|
||
}
|
||
|
||
// 获取退款费用
|
||
// if($paramss['payed_fee'] > 0){
|
||
$refund_money = 0;
|
||
$sql = "select action_note from ".$GLOBALS['ecs']->table('order_action')." where order_id = ".$order_info['order_id']." and order_status = 4 ";
|
||
$refund_data = $this->db->getAll($sql);
|
||
if($refund_data){
|
||
foreach ($refund_data as $v) {
|
||
$_refund_money = 0;
|
||
if($pos = strpos($v['action_note'], '部分退款金额:')){
|
||
$_refund_money = substr($v['action_note'], $pos+21);
|
||
if(is_numeric($_refund_money)) $refund_money += $_refund_money;
|
||
}
|
||
}
|
||
}
|
||
// $paramss['payed_fee'] = $this->format_number($paramss['payed_fee'] - $refund_money);
|
||
// $paramss['total_trade_fee'] = $this->format_number($paramss['total_trade_fee'] - $refund_money);
|
||
//纯退款
|
||
if($refund_money > 0 and $paramss['total_trade_fee'] > ( $paramss['payed_fee'] + $order_info['bonus'] + $order_info['integral_money'] ) ){
|
||
if($paramss['payed_fee'] > 0){
|
||
$paramss['pay_status'] = 'REFUND_PART';
|
||
// $paramss['status'] = 'TRADE_ACTIVE';
|
||
$order_info['shipping_status'] == 1 and $paramss['status'] = 'TRADE_FINISHED';//已发货 订单状态就变成完成
|
||
}else{
|
||
$paramss['pay_status'] = 'REFUND_ALL';
|
||
$paramss['status'] = 'TRADE_CLOSED';
|
||
}
|
||
}
|
||
// }
|
||
|
||
$sql = "select back_id from ".$GLOBALS['ecs']->table('back_order')." where order_id = ".$order_info['order_id']." AND order_sn='".$order_info['order_sn']."'";
|
||
$back_id = $this->db->getOne($sql);
|
||
if($back_id){
|
||
$paramss['status'] = 'TRADE_FINISHED';
|
||
$paramss['ship_status'] = $order_info['shipping_status']?'RESHIP_PART':'RESHIP_ALL';
|
||
}
|
||
|
||
|
||
$paramss['currency'] = 'CNY';//货币类型
|
||
$paramss['currency_rate'] = 1;//货别汇率
|
||
$paramss['buyer_obtain_point_fee'] = 0;//获得积分
|
||
$paramss['is_protect'] = $order_info['insure_fee']>0?'true':'false';//是否保价
|
||
$paramss['protect_fee'] = $this->format_number($order_info['insure_fee']);//保价费用
|
||
$paramss['discount_fee'] = $this->format_number((-1)*($order_info['discount']-$order_info['pack_fee']));//折扣优惠金额
|
||
$payment = $this->get_payment($order_info['pay_id']);
|
||
|
||
$paramss['is_cod'] = $payment['pay_code']=='cod'?'true':'false';//是否货到付款
|
||
|
||
$paramss['payment_tid'] = $order_info['pay_id'];//支付方式ID
|
||
$paramss['payment_type'] = $order_info['pay_name'];//支付方式名名称
|
||
|
||
$item = $this->getItemNum($order_info['order_id']);
|
||
$paramss['orders_number'] = $item['itemnum'];//订单商品总数量
|
||
$weight = order_weight_price($order_info['order_id']);
|
||
$paramss['total_weight'] = $weight['weight'];//订单商品总重量
|
||
$memberinfo = $this->getMemberByMid($order_info['user_id']);
|
||
//订单购买者信息
|
||
$paramss['buyer_uname'] = $memberinfo['user_name']?$memberinfo['user_name']:'匿名用户';//账号
|
||
$paramss['buyer_name'] = $memberinfo['alias'];//姓名
|
||
$paramss['buyer_mobile'] = $memberinfo['mobile_phone'];//移动电话
|
||
$paramss['buyer_state'] = '';//省
|
||
|
||
//订单收货者信息
|
||
$paramss['receiver_name'] = $order_info['consignee'];//姓名
|
||
$paramss['receiver_phone'] = $order_info['tel'];//固定电话
|
||
$paramss['receiver_mobile'] = $order_info['mobile'];//移动电话
|
||
$paramss['receiver_state'] = $this->get_region($order_info['province'],1);//省
|
||
$paramss['receiver_city'] = $this->get_region($order_info['city'],2);//市
|
||
$paramss['receiver_district'] = $this->get_region($order_info['district'],3);//区
|
||
$paramss['receiver_address'] = $order_info['address'];//详细地区
|
||
$paramss['receiver_zip'] = $order_info['zipcode'];//邮编
|
||
|
||
// 红包+积分兑换金额
|
||
$paramss['orders_discount_fee'] = 0;
|
||
$bonus_integral = $order_info['bonus'] + $order_info['integral_money'];
|
||
$orders_discount_fee = $paramss['total_trade_fee'] - $paramss['payed_fee'];
|
||
|
||
if($bonus_integral > 0 and $orders_discount_fee > 0 and $bonus_integral >= $orders_discount_fee){
|
||
$paramss['orders_discount_fee'] = $orders_discount_fee;
|
||
$paramss['total_trade_fee'] = $this->format_number($paramss['total_trade_fee'] - $orders_discount_fee);
|
||
}
|
||
// $paramss['orders_discount_fee'] = $order_info['bonus'] + $order_info['integral_money'];
|
||
|
||
//订单商品信息
|
||
if($this->_filterParams('orders', $fields)){
|
||
$order_card = array();
|
||
if ($order_info['card_name']) {
|
||
$order_card['card_name'] = $order_info['card_name'];
|
||
$order_card['card_fee'] = $order_info['card_fee'];
|
||
$paramss['discount_fee'] = $this->format_number($paramss['discount_fee']+ $order_card['card_fee']);//折扣优惠金额
|
||
}
|
||
$goods_orders = $this->getGoods($order_info['order_id'],$order_info['order_sn'],$order_card,true);
|
||
$paramss['orders']['order'] = $goods_orders;
|
||
$paramss['orders'] = json_encode($paramss['orders']);
|
||
// $paramss['orders_discount_fee'] = 0;
|
||
$paramss['goods_discount_fee'] = $this->format_number($order_info['goods_discount_fee']);
|
||
}
|
||
//订单配送信息
|
||
$paramss['shipping_tid'] = $order_info['shipping_id'];//物流方式ID
|
||
$paramss['shipping_type'] = $order_info['shipping_name'];//物流方式
|
||
$paramss['shipping_fee'] = $this->format_number($order_info['shipping_fee']);//物流费用
|
||
|
||
//订单详细信息
|
||
$paramss['has_invoice'] = $order_info['inv_type'];//是否开发票
|
||
$paramss['invoice_title'] = $order_info['inv_payee'];//发票抬头
|
||
$paramss['invoice_fee'] = $this->format_number($order_info['tax']);//发票税金
|
||
$paramss['pay_cost'] = $this->format_number($order_info['pay_fee']);//支付手续费
|
||
$paramss['buyer_memo'] = $this->buyer_memo($order_info);
|
||
$paramss['trade_memo'] = $order_info['to_buyer'];//订单附言
|
||
$paramss['channel_ver'] = "";
|
||
$paramss['consign_time'] = "";
|
||
$paramss['step_trade_status'] = "";
|
||
$paramss['invoice_desc'] = "";
|
||
$paramss['trade_type'] = "";
|
||
$paramss['buyer_email'] = "";
|
||
$paramss['cod_status'] = "";
|
||
$paramss['step_paid_fee'] = "";
|
||
$paramss['end_time'] = "";
|
||
$paramss['channel'] = "fast";
|
||
$paramss['order_source'] = $order_info['referer'];//创建订单接口增加订单类型参数
|
||
|
||
$paramss['logistics_no'] = $order_info['invoice_no'];
|
||
|
||
$allow_params = array('rights_level','lastmodify','payment_lists','promotion_details','total_weight','buyer_name','currency_rate','app_id','shipping_type','receiver_address','has_invoice','receiver_district','from_type','callback_type','protect_fee','receiver_phone','to_node_id','order_source','logistics_no','pay_cost','buyer_uname','timestamp','_id','tid','receiver_mobile','goods_discount_fee','orders_number','invoice_fee','discount_fee','pay_status','buyer_obtain_point_fee','payment_type','v','real_time','shipping_fee','refresh_time','is_cod','msg_id','currency','node_type','pay_time','payment_tid','orders','receiver_city','channel_ver','orders_discount_fee','format','buyer_memo','from_node_id','shipping_tid','method','channel','status','total_trade_fee','buyer_state','receiver_zip','callback_type_id','to_type','node_id','total_goods_fee','date','buyer_mobile','task','created','ship_status','payed_fee','is_protect','receiver_state','receiver_name','consign_time','step_trade_status','trade_memo','invoice_desc ','invoice_title','trade_type','buyer_email','cod_status','step_paid_fee','modified','end_time');
|
||
|
||
foreach($paramss as $k=>$v){
|
||
if(!in_array($k, $allow_params)) unset($paramss[$k]);
|
||
}
|
||
return $paramss;
|
||
}
|
||
|
||
|
||
function get_payment_list($order_info){
|
||
$payment_list = array();
|
||
$sql = "SELECT * FROM ".$GLOBALS['ecs']->table('account_log')." WHERE change_desc like '%".$order_info['order_sn']."%' AND user_money<0 order by change_time asc";
|
||
$res = $GLOBALS['db']->getAll($sql);
|
||
if ($res) {
|
||
foreach ($res as $key => $list) {
|
||
$payment_list['payment_list'][] = array(
|
||
'tid' => $order_info['order_sn'],
|
||
'seller_bank' => '',
|
||
'seller_account' => '',
|
||
'buyer_id' => $_SESSION['user_id'],
|
||
'buy_name' => $_SESSION['user_name'],
|
||
'buyer_account' => '',
|
||
'pay_fee' => abs($list['user_money']),
|
||
'paycost' => abs($list['user_money']),
|
||
'currency' => 'CNY',
|
||
'currency_fee' => abs($list['user_money']),
|
||
'pay_type' => 'deposit',
|
||
'payment_code' => 'deposit',
|
||
'payment_name' => $order_info['pay_name'],
|
||
't_begin' => date('Y-m-d H:i:s',$list['change_time']),
|
||
't_end' => date('Y-m-d H:i:s',$list['change_time']),
|
||
'pay_time' => date('Y-m-d H:i:s',$list['change_time']),
|
||
'status' => 'SUCC',
|
||
'memo' => '',
|
||
'outer_no' => '',
|
||
);
|
||
}
|
||
}
|
||
$sql = "SELECT * FROM ".$GLOBALS['ecs']->table('account_other_log')." WHERE order_sn='".$order_info['order_sn']."'";
|
||
$pay_list = $GLOBALS['db']->getAll($sql);
|
||
if ($pay_list) {
|
||
foreach ($pay_list as $list) {
|
||
$payment_list['payment_list'][] = array(
|
||
'tid' => $order_info['order_sn'],
|
||
'seller_bank' => '',
|
||
'seller_account' => '',
|
||
'buyer_id' => $_SESSION['user_id'],
|
||
'buy_name' => $_SESSION['user_name'],
|
||
'buyer_account' => '',
|
||
'pay_fee' => abs($list['money']),
|
||
'paycost' => abs($list['money']),
|
||
'currency' => 'CNY',
|
||
'currency_fee' => abs($list['money']),
|
||
'pay_type' => $list['pay_type']?$list['pay_type']:'deposit',
|
||
'payment_code' => $list['pay_type']?$list['pay_type']:'deposit',
|
||
'payment_name' => $order_info['pay_name'],
|
||
't_begin' => date('Y-m-d H:i:s',$list['pay_time']),
|
||
't_end' => date('Y-m-d H:i:s',$list['pay_time']),
|
||
'pay_time' => date('Y-m-d H:i:s',$list['pay_time']),
|
||
'status' => 'SUCC',
|
||
'memo' => '',
|
||
'outer_no' => '',
|
||
);
|
||
}
|
||
}
|
||
return $payment_list;
|
||
}
|
||
|
||
|
||
function buyer_memo($order_info){
|
||
$buyer_memo = '缺货处理:'.$order_info['how_oos'];
|
||
// 包装
|
||
if ($order_info['pack_name']) {
|
||
$buyer_memo .= " 使用包装:(".$order_info['pack_name'].");";
|
||
}
|
||
if ($order_info['card_name']) {
|
||
$buyer_memo .= " 贺卡:(".$order_info['card_name']."),祝福语:(".$order_info['card_message'].");";
|
||
}
|
||
if ($buyer_memo && $order_info['postscript']) {
|
||
$buyer_memo .= "以下是客户留言:";
|
||
}
|
||
|
||
return $buyer_memo.$order_info['postscript'];
|
||
}
|
||
|
||
|
||
function get_region($region_id,$region_type){
|
||
$msg = '';
|
||
$sql = "select region_name FROM ".$GLOBALS['ecs']->table('region')." WHERE region_id = {$region_id} AND region_type = {$region_type}";
|
||
$msg = $GLOBALS['db']->getOne($sql);
|
||
if ($msg) {
|
||
return $msg;
|
||
}else{
|
||
return $region_id;
|
||
}
|
||
}
|
||
|
||
function _filterParams($needle,$haystack){
|
||
if('*'==$haystack) return true;
|
||
return in_array($needle,$haystack);
|
||
}
|
||
|
||
//签名
|
||
function get_matrix_sign($params,$token){
|
||
//如果参数是数组的话将参数json
|
||
foreach($params as $k=>$v){
|
||
if(is_array($v)){
|
||
$params[$k] = json_encode($v);
|
||
}
|
||
}
|
||
return strtoupper(md5(strtoupper(md5($this->assemble($params))).$token));
|
||
}
|
||
|
||
function assemble($params){
|
||
if(!is_array($params)) return null;
|
||
ksort($params,SORT_STRING);
|
||
$sign = '';
|
||
foreach($params AS $key=>$val){
|
||
$sign .= $key . (is_array($val) ? $this->assemble($val) : $val);
|
||
}
|
||
return $sign;
|
||
}
|
||
|
||
function create_task_id(){
|
||
$i = rand(0,9999);
|
||
if(9999==$i){
|
||
$i=0;
|
||
}
|
||
$task_id = time().str_pad($i,4,'0',STR_PAD_LEFT);
|
||
return $task_id;
|
||
}
|
||
|
||
function format_number($number){
|
||
return number_format($number, 2, '.', '');
|
||
|
||
}
|
||
|
||
function getMemberByMid($user_id,$cols='*'){
|
||
$sql = "SELECT ".$cols." FROM ".$this->ecs->table('users')." WHERE user_id = ".$user_id;
|
||
return $this->db->getRow($sql);
|
||
}
|
||
|
||
// 取消订单
|
||
function set_dead_order($order_id){
|
||
if(!$this->get_bind_info($this->shopex_app)) return null;
|
||
$sql = "update ".$this->ecs->table('order_info')." set lastmodify = ".time().",order_status = ".OS_CANCELED." where order_id = ".$order_id;
|
||
$this->db->query($sql);
|
||
$sql = "SELECT order_sn FROM ".$this->ecs->table('order_info')." WHERE order_id = ".$order_id;
|
||
$order_sn = $this->db->getOne($sql);
|
||
$this->createOrder($order_sn);
|
||
}
|
||
|
||
// 更新订单买家留言
|
||
function update_order_buyer_message($data){
|
||
if(!$this->get_bind_info($this->shopex_app)) return null;
|
||
|
||
$params['tid'] = $data['order_id'];//订单号
|
||
$params['message'] = $data['msg_content'];//留言内容
|
||
$params['title'] = $data['msg_title'];//标题
|
||
$params['sender'] = $data['user_name']?$data['user_name']:'system';//'system';//发送者
|
||
$params['add_time'] = date('Y-m-d H:i:s',time());//添加时间
|
||
|
||
$params['method'] = 'store.trade.buyer_message.add';
|
||
$params['callback_type'] = 'UPDATEORDERMESSAGE';
|
||
$params['callback_type_id'] = $params['tid'];
|
||
|
||
$this->http_request_matrix($params);
|
||
}
|
||
|
||
// 退款通知到erp
|
||
function send_refund_to_matrix($msg){
|
||
if(!$this->get_bind_info($this->shopex_app)) return null;
|
||
$msg['method'] = 'store.trade.refund.add';
|
||
$msg['callback_type'] = 'CREATEREFUND';
|
||
$msg['callback_type_id'] = $msg['refund_id'];
|
||
$this->http_request_matrix($msg);
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
?>
|