You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
4.8 KiB
151 lines
4.8 KiB
<?php
|
|
/**
|
|
*
|
|
*/
|
|
include_once(SERVER_ROOT."/model/mBase.php");
|
|
|
|
|
|
class mOrder extends mBase {
|
|
private $obj;
|
|
private $order;
|
|
|
|
public function __construct() {
|
|
$this->obj = new dOrder();
|
|
$this->order = 'order_list';
|
|
}
|
|
|
|
public function addOrder($order_sn, $order_status, $refund_status, $pay_amount, $pay_time, $shop_id, $goods_id, $sku_id, $uid) {
|
|
$data = array();
|
|
$data['order_status'] = $order_status;
|
|
$data['refund_status'] = $refund_status;
|
|
$data['pay_amount'] = $pay_amount;
|
|
$data['pay_time'] = $pay_time;
|
|
$data['shop_id'] = $shop_id;
|
|
$data['goods_id'] = $goods_id;
|
|
$data['sku_id'] = $sku_id;
|
|
$data['uid'] = $uid;
|
|
|
|
$info = $this->getOrderBySn($order_sn);
|
|
if ($info) {
|
|
$res = $this->updateOrderBySn($order_sn, $data);
|
|
if (!$res) {
|
|
$this->setError('更新订单信息失败');
|
|
return false;
|
|
}
|
|
return $info['id'];
|
|
}
|
|
|
|
$data['order_sn'] = $order_sn;
|
|
|
|
return $this->obj->insert($this->order, $data);
|
|
}
|
|
|
|
public function getOrderBySn($order_sn) {
|
|
return $this->obj->select($this->order, array('sql'=>'`order_sn`=?', 'vals'=>array($order_sn)));
|
|
}
|
|
|
|
public function updateOrderBySn($order_sn, $data) {
|
|
return $this->obj->update($this->order, $data, array('sql'=>'`order_sn`=?', 'vals'=>array($order_sn)));
|
|
}
|
|
|
|
public function getOrdersCount($uid, $shop_id, $order_status=0, $refund_status=0) {
|
|
$where = array('sql'=>'1=1');
|
|
|
|
if ($uid) {
|
|
$where['sql'] .= ' and `uid`=?';
|
|
$where['vals'][] = $uid;
|
|
}
|
|
|
|
if ($shop_id) {
|
|
$where['sql'] .= ' and `shop_id`=?';
|
|
$where['vals'][] = $shop_id;
|
|
}
|
|
|
|
if ($order_status) {
|
|
$where['sql'] .= ' and `order_status`=?';
|
|
$where['vals'][] = $order_status;
|
|
}
|
|
|
|
if ($refund_status) {
|
|
$where['sql'] .= ' and `refund_status`=?';
|
|
$where['vals'][] = $refund_status;
|
|
}
|
|
|
|
return $this->obj->count($this->order, $where);
|
|
}
|
|
|
|
public function getOrderList($uid, $shop_id, $order_status=0, $refund_status=0, $page=1, $pagesize=100) {
|
|
$where = array('sql'=>'1=1');
|
|
|
|
if ($uid) {
|
|
$where['sql'] .= ' and `uid`=?';
|
|
$where['vals'][] = $uid;
|
|
}
|
|
|
|
if ($shop_id) {
|
|
$where['sql'] .= ' and `shop_id`=?';
|
|
$where['vals'][] = $shop_id;
|
|
}
|
|
|
|
if ($order_status) {
|
|
$where['sql'] .= ' and `order_status`=?';
|
|
$where['vals'][] = $order_status;
|
|
}
|
|
|
|
if ($refund_status) {
|
|
$where['sql'] .= ' and `refund_status`=?';
|
|
$where['vals'][] = $refund_status;
|
|
}
|
|
|
|
$start = ($page - 1) * $pagesize;
|
|
return $this->obj->selectAll($this->order, $where, 'pay_time desc', array($start, $pagesize));
|
|
}
|
|
|
|
public function getNotFinishedOrders() {
|
|
return $this->obj->selectAll($this->order, array('sql'=>'`order_status`!=? and `refund_status`!=?', 'vals'=>array(ORDER_STATUS_SIGNED_FOR, REFUND_STATUS_SUCC)));
|
|
}
|
|
|
|
public function getLastThirtyDaysOrderNum($uid, $shop_id) {
|
|
$start_date = date("Y-m-d", strtotime("-30 day"));
|
|
|
|
$sql = "select DATE_FORMAT(`pay_time`,'%Y-%m-%d') sale_day, count(*) as count from {$this->order} where `uid`={$uid} and `shop_id`={$shop_id} and `pay_time`>={$start_date}";
|
|
|
|
$list = $this->obj->execute($sql, true, true);
|
|
if (!$list) return array();
|
|
|
|
$date2count = array();
|
|
foreach ($list as $info) {
|
|
$date2count[$info['sale_day']] = $info['count'];
|
|
}
|
|
|
|
unset($list);
|
|
|
|
return $date2count;
|
|
}
|
|
|
|
public function addOrders($order_list, $shop_id, $uid) {
|
|
$goods_list = array();
|
|
|
|
foreach ($order_list as $order) {
|
|
$this->addOrder($order['order_sn'], $order['order_status'], $order['refund_status'], $order['pay_amount'], $order['pay_time'], $shop_id, $order['item_list'][0]['goods_id'], $order['item_list'][0]['sku_id'], $uid);
|
|
|
|
$g = array();
|
|
$g['goods_id'] = $order['item_list'][0]['goods_id'];
|
|
$g['goods_name'] = $order['item_list'][0]['goods_name'];
|
|
$g['goods_price'] = $order['item_list'][0]['goods_price'];
|
|
$g['sku_id'] = $order['item_list'][0]['sku_id'];
|
|
$g['sku_name'] = $order['item_list'][0]['goods_spec'];
|
|
$g['shop_id'] = $shop_id;
|
|
$g['uid'] = $uid;
|
|
|
|
$goods_list[] = $g;
|
|
}
|
|
|
|
$gobj = new mGoods();
|
|
foreach ($goods_list as $goods) {
|
|
$gobj->addGoods($goods['goods_id'], $goods['goods_name'], $goods['goods_price'], $goods['sku_id'], $goods['sku_name'], $goods['shop_id'], $goods['uid']);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|