db()->insert($data); return $id; } # 获取某一个商户的订单总额 public function getTotal($mid, $status = 1) { $where['mid'] = $mid; if ($status > 0) { $where['status'] = $status; } return $this->db()->where($where)->sum('cash'); } # 查找订单 public function get($order_id, $merchant_order_id = false, $mid = false) { if ($merchant_order_id) { $where['merchant_order_id'] = $merchant_order_id; } else { if (is_numeric($order_id)) { $where['id'] = $order_id; } else { $where['order_id'] = $order_id; } } if ($mid) { $where['mid'] = $mid; } return $this->db()->where($where)->find(); } # 查找下单订单 public function getData() { $cur = time(); $time = 12 * 3600; $whereRaw = $cur . '-unix_timestamp(create_at) <=' . $time; return $this->db()->whereRaw('status = 1 and ' . $whereRaw)->order('id asc')->select(); } // # 查找回调错误的订单 // public function getErrorData() // { // return $this->db()->whereRaw('merchant_callback_error = 2 and merchant_callback_num < 5 and status in(2,3)')->order('id asc')->select(); // } # 获取某一个商户的订单数量 public function getOrderTotal($mid, $status = 1) { $where['mid'] = $mid; if ($status > 0) { $where['status'] = $status; } return $this->db()->where($where)->count(); } public function cancelOrder($v){ $v['order']=$v['order_id']; MerchantService::instance()->qxdd($v); } # 获取成功的订单 public function getTotalData($day, $cid = false, $pid = false) { if (!$day) { $day = date('Y-m-d', strtotime('-1 day')); } $begin = $day . ' 00:00:00'; $after = $day . ' 23:59:59'; $time = [$begin, $after]; $db = $this->db()->whereRaw('status in(2,3) '); $where = array(); if ($cid) { $where['cid'] = $cid; } if ($pid) { $where['pid'] = $pid; } if ($where) { $db->where($where); } $data = $db->whereBetween('create_at', $time)->order('id asc')->select()->toArray(); $result = array(); if ($data) { $result['success'] = 0; $result['fail'] = 0; $result['total'] = 0; $result['product_cash'] = 0; $result['actual_cash'] = 0; $result['profit'] = 0; # 计算每个产品的总数 $result['product'] = array(); # 计算每个商户的总数 $result['merchant'] = array(); # 计算每个商户的总数 $result['merchant_total'] = array(); # 产品信息 $result['product_info'] = array(); $productService = ProductService::instance(); foreach ($data as $k => $v) { # 检查是否是固定数值 if (!isset($result['product_info'][$v['pid']])) { $result['product_info'][$v['pid']] = $productService->getInfo($v['pid']); } $product = $result['product_info'][$v['pid']]; if ($product) { if ($product['rule']) { $product['percent'] = MerchantService::instance()->getPercent($product['percent'], $v['account'], $v['product_key'], $v['cash'], $product['rule'], $v['isp']); } $product_percent_type = 1; if (isset($product['percent_type']) && $product['percent_type']) { $product_percent_type = $product['percent_type']; } if ($product_percent_type == 2) { $v['product_cash'] = $product['percent']; } else { $v['product_cash'] = $product['percent']*$v['cash']; } } if ($v['status'] == 3) { $result['fail'] += $v['cash']; } else { $result['success'] += $v['cash']; if (!isset($result['product'][$v['pid']])) { $result['product'][$v['pid']]['num'] = 0; $result['product'][$v['pid']]['actual_num'] = 0; $result['product'][$v['pid']]['percent'] = array(); } $result['product'][$v['pid']]['num'] += $v['cash']; $result['product'][$v['pid']]['actual_num'] += $v['product_cash']; $result['product'][$v['pid']]['actual_num'] = round($result['product'][$v['pid']]['actual_num'], 2); if (isset($result['product_info'][$v['pid']]['percent_type']) && $result['product_info'][$v['pid']]['percent_type'] == 2) { $percent = $v['product_cash']; } else { $percent = $v['product_cash']/$v['cash']; } $percent = 'k_' . $percent; if (!isset($result['product'][$v['pid']]['percent'][$percent][$v['cash']])) { $result['product'][$v['pid']]['percent'][$percent][$v['cash']]['num'] = 0; $result['product'][$v['pid']]['percent'][$percent][$v['cash']]['cash'] = $v['product_cash']; } $result['product'][$v['pid']]['percent'][$percent][$v['cash']]['num'] += 1; if (!isset($result['merchant'][$v['mid']][$v['pid']])) { $result['merchant'][$v['mid']][$v['pid']]['num'] = 0; $result['merchant'][$v['mid']][$v['pid']]['actual_num'] = 0; $result['merchant'][$v['mid']][$v['pid']]['product_num'] = 0; $result['merchant'][$v['mid']][$v['pid']]['percent'] = array(); $result['merchant'][$v['mid']][$v['pid']]['profit'] = 0; } $result['merchant'][$v['mid']][$v['pid']]['num'] += $v['cash']; $result['merchant'][$v['mid']][$v['pid']]['actual_num'] += $v['actual_cash']; $result['merchant'][$v['mid']][$v['pid']]['product_num'] += $v['product_cash']; $result['merchant'][$v['mid']][$v['pid']]['actual_num'] = round($result['merchant'][$v['mid']][$v['pid']]['actual_num'], 2); $result['merchant'][$v['mid']][$v['pid']]['product_num'] = round($result['merchant'][$v['mid']][$v['pid']]['product_num'], 2); $result['merchant'][$v['mid']][$v['pid']]['profit'] += $v['actual_cash'] - $v['product_cash']; $result['merchant'][$v['mid']][$v['pid']]['profit'] = round($result['merchant'][$v['mid']][$v['pid']]['profit'], 2); if (isset($result['product_info'][$v['pid']]['percent_type']) && $result['product_info'][$v['pid']]['percent_type'] == 2) { $percent = $v['actual_cash']; } else { $percent = $v['actual_cash']/$v['cash']; } $percent = 'k_' . $percent; if (!isset($result['merchant'][$v['mid']][$v['pid']]['percent'][$percent][$v['cash']])) { $result['merchant'][$v['mid']][$v['pid']]['percent'][$percent][$v['cash']]['num'] = 0; $result['merchant'][$v['mid']][$v['pid']]['percent'][$percent][$v['cash']]['cash'] = $v['actual_cash']; } $result['merchant'][$v['mid']][$v['pid']]['percent'][$percent][$v['cash']]['num'] += 1; if (!isset($result['merchant_total'][$v['mid']][$v['product_key']])) { $result['merchant_total'][$v['mid']][$v['product_key']]['num'] = 0; $result['merchant_total'][$v['mid']][$v['product_key']]['actual_num'] = 0; $result['merchant_total'][$v['mid']][$v['product_key']]['product_num'] = 0; $result['merchant_total'][$v['mid']][$v['product_key']]['cash'] = array(); $result['merchant_total'][$v['mid']][$v['product_key']]['profit'] = 0; } $result['merchant_total'][$v['mid']][$v['product_key']]['num'] += $v['cash']; $result['merchant_total'][$v['mid']][$v['product_key']]['actual_num'] += $v['actual_cash']; $result['merchant_total'][$v['mid']][$v['product_key']]['product_num'] += $v['product_cash']; $result['merchant_total'][$v['mid']][$v['product_key']]['actual_num'] = round($result['merchant_total'][$v['mid']][$v['product_key']]['actual_num'], 2); $result['merchant_total'][$v['mid']][$v['product_key']]['product_num'] = round($result['merchant_total'][$v['mid']][$v['product_key']]['product_num'], 2); $result['merchant_total'][$v['mid']][$v['product_key']]['profit'] += $v['actual_cash'] - $v['product_cash']; $result['merchant_total'][$v['mid']][$v['product_key']]['profit'] = round($result['merchant_total'][$v['mid']][$v['product_key']]['profit'], 2); if (!isset($result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']])) { $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['num'] = 0; $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['actual_num'] = 0; $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['product_num'] = 0; } $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['num'] += $v['cash']; $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['actual_num'] += $v['actual_cash']; $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['product_num'] += $v['product_cash']; $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['actual_num'] = round($result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['actual_num'], 2); $result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['product_num'] = round($result['merchant_total'][$v['mid']][$v['product_key']]['cash'][$v['cash']]['product_num'], 2); $result['product_cash'] += $v['product_cash']; $result['actual_cash'] += $v['actual_cash']; $result['profit'] = round($result['actual_cash'] - $result['product_cash'], 2); } /* if (isset($result['product_info'][$v['pid']]['percent_type']) && $result['product_info'][$v['pid']]['percent_type'] == 2 && $v['status'] != 3) { $result['success'] += $v['cash']; if (!isset($result['product'][$v['pid']])) { $result['product'][$v['pid']] = 0; } if (!isset($result['product_num'][$v['pid']])) { $result['product_num'][$v['pid']] = 0; } $result['product'][$v['pid']] += $v['cash']; $result['product_num'][$v['pid']] += 1; if (!isset($result['merchant'][$v['mid']][$v['pid']])) { $result['merchant'][$v['mid']][$v['pid']] = 0; } if (!isset($result['merchant_num'][$v['mid']][$v['pid']])) { $result['merchant_num'][$v['mid']][$v['pid']] = 0; } $result['merchant'][$v['mid']][$v['pid']] += $v['cash']; $result['merchant_num'][$v['mid']][$v['pid']] += 1; } else { if ($v['status'] == 2) { $result['success'] += $v['cash']; if (!isset($result['product'][$v['pid']])) { $result['product'][$v['pid']] = 0; } $result['product'][$v['pid']] += $v['cash']; if (!isset($result['merchant'][$v['mid']][$v['pid']])) { $result['merchant'][$v['mid']][$v['pid']] = 0; } $result['merchant'][$v['mid']][$v['pid']] += $v['cash']; } else { $result['fail'] += $v['cash']; } } */ } $result['total'] = $result['success'] + $result['fail']; } $test = input('test'); if ($test == 1) { print_r($result);die; } return $result; } # 删除重复数据 public function delcf($day) { if (!$day) { $day = date('Y-m-d', strtotime('-1 day')); } $begin = $day . ' 00:00:00'; $after = $day . ' 23:59:59'; $time = [$begin, $after]; $db = $this->db(); $data = $db->whereBetween('create_at', $time)->order('id asc')->select()->toArray(); if ($data) { $result = array(); foreach ($data as $k => $v) { if (!isset($result[$v['order_id']])) { $result[$v['order_id']] = array(); } $result[$v['order_id']][] = $v['id']; } foreach ($result as $k => $v) { $num = count($v); if ($num > 1 && isset($v[0]) && isset($v[1])) { $this->db()->where(array('id' => $v[0]))->delete(); } } } } }