=', strtotime($get['start_time'])]; } if (isset($get['end_time']) && $get['end_time'] != '') { $where[] = ['create_time', '<=', strtotime($get['end_time'])]; } return $where; } /** * Notes: 列表 * @param $get * @return array * @author 段誉(2021/2/1 10:12) */ public static function lists($get) { $order = new Order(); $where = self::getListsCondition($get); $field = 'o.*,order_status as order_status_text,pay_way as pay_way_text'; $brand = Db::name('goods_brand')->where(['del' => 0])->column('name', 'id'); //订单类型 $admin = Db::name('admin')->column('name', 'id'); $count = $order ->where($where) ->count(); $lists = $order ->where($where) ->page($get['page'], $get['limit']) ->order('id desc') ->select(); $channel = Db::name('orderchannel')->column('name', 'id'); foreach ($lists as &$item) { if (isset($channel[$item['channel_id']])) { $item['channel'] = $channel[$item['channel_id']]; } if (isset($brand[$item['type_id']])) { $item['brand'] = $brand[$item['type_id']]; } if (isset($admin[$item['admin_id']])) { $item['admin_id'] = $admin[$item['admin_id']]; } //获取订单的商品 $goods = GoodsLogic::goodsinfo($item['goods_id']); if ($goods) { $item['goods_name'] = $goods['name']; $item['goods_image'] = UrlServer::getFileUrl($goods['image']); $item['code'] = $goods['code']; } else { $item['goods_name'] = ''; $item['goods_image'] = ''; $item['code'] = ''; } $gord_id = Db::name('collection')->where('id', $item['gord_id'])->find(); if ($gord_id) { $item['gord_name'] = $gord_id['cqname']; } else { $item['gord_name'] = '-'; } } return ['count' => $count, 'lists' => $lists]; } public static function exportFile($get) { $where[] = ['o.del', '=', 0]; //订单状态 if ($get['type'] != '') { $where[] = ['order_status', '=', $get['type']]; } //订单搜素 if (!empty($get['search_key']) && !empty($get['keyword'])) { $keyword = $get['keyword']; switch ($get['search_key']) { case 'order_sn': $where[] = ['o.order_sn', 'like', '%' . $keyword . '%']; break; case 'user_sn': $where[] = ['u.sn', 'like', '%' . $keyword . '%']; break; case 'nickname': $where[] = ['nickname', 'like', '%' . $keyword . '%']; break; case 'user_mobile': $where[] = ['u.mobile', 'like', '%' . $keyword . '%']; break; case 'consignee': $where[] = ['consignee', 'like', '%' . $keyword . '%']; break; case 'consignee_mobile': $where[] = ['o.mobile', 'like', '%' . $keyword . '%']; break; } } //商品名称 if (isset($get['goods_name']) && $get['goods_name'] != '') { $where[] = ['g.name', 'like', '%' . $get['goods_name'] . '%']; } //付款方式 if (isset($get['pay_way']) && $get['pay_way'] != '') { $where[] = ['o.pay_way', '=', $get['pay_way']]; } //配送方式 if (isset($get['delivery_type']) && $get['delivery_type'] != '') { $where[] = ['o.delivery_type', '=', $get['delivery_type']]; } //订单类型 if (isset($get['order_type']) && $get['order_type'] != '') { $where[] = ['o.order_type', '=', $get['order_type']]; } //订单来源 if (isset($get['order_source']) && $get['order_source'] != '') { $where[] = ['o.order_source', '=', $get['order_source']]; } //下单时间 if (isset($get['start_time']) && $get['start_time'] != '') { $where[] = ['o.create_time', '>=', strtotime($get['start_time'])]; } if (isset($get['end_time']) && $get['end_time'] != '') { $where[] = ['o.create_time', '<=', strtotime($get['end_time'])]; } $field = 'o.*,o.order_type as order_type_text, o.order_source as order_source_text,o.pay_way as pay_way_text,address as delivery_address,o.pay_status as pay_status_text,o.order_status as order_status_text,u.sn as user_sn,u.nickname as user_nickname,u.level as user_level'; $lists = Order::alias('o') ->join('user u', 'u.id=o.user_id') ->join('order_goods og', 'og.order_id=o.id') ->join('goods g', 'g.id=og.goods_id') ->with('order_goods') ->field($field) ->where($where) ->order('o.id', 'desc') ->group('og.order_id') ->select() ->toArray(); $userLevel = UserLevel::where('del', 0)->column(['id', 'name'], 'id'); $exportTitle = ['订单编号', '订单类型', '下单时间', '支付时间', '订单来源', '会员编号', '会员昵称', '会员等级', '商品信息', '商品数量', '运费金额', '商品总金额', '优惠金额', '应付金额', '支付方式', '收货人', '手机号码', '收货地址', '配送方式', '支付状态', '订单状态']; $exportExt = 'xls'; $exportData = []; foreach ($lists as $item) { $orderSn = 'SN' . $item['order_sn']; // 转字符串 $level = isset($userLevel[$item['user_level']]) ? $userLevel[$item['user_level']] : '无等级'; $deliveryType = Order::getDeliveryType($item['delivery_type']); $goodsStr = ''; foreach ($item['order_goods'] as $subItem) { $goodsInfo = json_decode($subItem['goods_info'], true); $goodsStr .= '【' . $goodsInfo['goods_name'] . ' 规格:' . $goodsInfo['spec_value_str'] . ' 数量:' . $subItem['goods_num'] . '】'; } $exportData[] = [$orderSn, $item['order_type_text'], $item['create_time'], $item['pay_time'], $item['order_source_text'], $item['user_sn'], $item['user_nickname'], $level, $goodsStr, $item['total_num'], $item['shipping_price'], $item['goods_price'], $item['discount_amount'], $item['order_amount'], $item['pay_way_text'], $item['consignee'], $item['mobile'], $item['delivery_address'], $deliveryType, $item['pay_status_text'], $item['order_status_text']]; } return ['exportTitle' => $exportTitle, 'exportData' => $exportData, 'exportExt' => $exportExt, 'exportName' => '订单列表' . date('Y-m-d H:i:s')]; } public static function exportorder($get) { $where[] = ['o.del', '=', 0]; $where = self::getListsCondition($get); $lists = Db::name('order')->where($where)->select(); //获取订单的内容 $exportData = []; foreach ($lists as $item) { $orderSn = 'DL' . $item['order_sn']; // 转字符串 $goods = Db::name('goods')->where('id', $item['goods_id'])->find(); //获取商品的基本信息 $ervice = Db::name('order_exe') ->where('order_sn', $item['order_sn']) ->where('staff_status', 3) ->count(); //查询服务条数 if ($item['pay_status'] == 1) { $item['order_status_text'] = '已支付'; } else { $item['order_status_text'] = '未支付'; } $admin = Db::name('admin')->where('id', $item['admin_id'])->find(); //查询客服id if ($admin) { $admin_name = $admin['name']; } else { $admin_name = '-'; } $channe = Db::name('orderchannel')->where('id', $item['channel_id'])->find(); //查询渠道内容 if ($channe) { $channe_name = $channe['name']; } else { $channe_name = '-'; } $phone = Db::name('user_address')->where('telephone', $item['mobile'])->find(); if ($phone) { $cnle = Db::name('staffchannel')->where('id', $phone['brand_id'])->find(); if ($cnle) { $custom = $cnle['name']; } else { $custom = '-'; } } $dsynumber = $item['number'] - $ervice; if ($item['pay_zd'] == 0) { $item['pay_zd'] = '已收款'; } else { $item['pay_zd'] = '未收款'; } $exportData[] = [$orderSn, $item['consignee'], $item['mobile'], $item['address'], $admin_name, $goods['name'], $goods['min_price'], $item['order_amount'], $channe_name, $custom, $item['order_status_text'], $item['pay_zd'], $item['number'], $ervice, $dsynumber, date('Y-m-d H:i:s', $item['create_time']) ]; $exportTitle = ['订单序号', '客户姓名', '客户电话', '房屋地址', '订单归属', '套餐名称', '套餐金额', '付款金额', '订单渠道', '客户渠道', '是否收款', '是否支付', '总次数', '已使用', '待使用', '下单时间']; $exportExt = 'xls'; } return ['exportTitle' => $exportTitle, 'exportData' => $exportData, 'exportExt' => $exportExt, 'exportName' => '订单列表' . date('Y-m-d H:i:s')]; } /** * Notes: 我的订单导出功能 * @param $get * @return array * @author 段誉(2021/2/1 10:12) */ public static function userexport($get) { $where = []; $where = self::getListsCondition($get); $lists = Db::name('order') ->where($where) ->where('admin_id', session('admin_info.id')) ->select(); //获取订单的内容 $exportData = []; foreach ($lists as $item) { $orderSn = 'DL' . $item['order_sn']; // 转字符串 $goods = Db::name('goods')->where('id', $item['goods_id'])->find(); //获取商品的基本信息 $ervice = Db::name('order_exe') ->where('order_sn', $item['order_sn']) ->where('staff_status', 3) ->count(); //查询服务条数 if ($item['pay_status'] == 1) { $item['order_status_text'] = '已支付'; } else { $item['order_status_text'] = '未支付'; } $admin = Db::name('admin')->where('id', $item['admin_id'])->find(); //查询客服id if ($admin) { $admin_name = $admin['name']; } else { $admin_name = '-'; } $channe = Db::name('orderchannel')->where('id', $item['channel_id'])->find(); //查询渠道内容 if ($channe) { $channe_name = $channe['name']; } else { $channe_name = '-'; } $phone = Db::name('user_address')->where('telephone', $item['mobile'])->find(); if ($phone) { $cnle = Db::name('staffchannel')->where('id', $phone['brand_id'])->find(); if ($cnle) { $custom = $cnle['name']; } else { $custom = '-'; } } if ($item['pay_zd'] == 0) { $item['pay_zd'] = '已收款'; } else { $item['pay_zd'] = '未收款'; } $exportData[] = [$orderSn, $item['consignee'], $item['mobile'], $item['address'], $admin_name, $goods['name'], $goods['min_price'], $item['order_amount'], $channe_name, $custom, $item['order_status_text'], $item['pay_zd'], date('Y-m-d H:i:s', $item['create_time']) ]; $exportTitle = ['订单序号', '客户姓名', '客户电话', '房屋地址', '订单归属', '套餐名称', '套餐金额', '付款金额', '订单渠道', '客户渠道', '是否收款', '是否支付', '下单时间']; $exportExt = 'xls'; } return ['exportTitle' => $exportTitle, 'exportData' => $exportData, 'exportExt' => $exportExt, 'exportName' => '订单列表' . date('Y-m-d H:i:s')]; } // 子订单的导出 public static function exportFilestaff($get) { $where = []; //订单类型 if (isset($get['satff']) && $get['satff'] != '') { $where[] = ['staff_id', '=', $get['satff']]; } if (isset($get['order_sn']) && $get['order_sn'] != '') { $where[] = ['order_sn', '=', $get['order_sn']]; } //下单时间 if (isset($get['start_time']) && $get['start_time'] != '') { $where[] = ['autotime', '>=', strtotime($get['start_time'])]; } if (isset($get['end_time']) && $get['end_time'] != '') { $where[] = ['autotime', '<=', strtotime($get['end_time'])]; } $lists = Db::name('order_exe') ->where($where) ->select(); $exportData = []; foreach ($lists as $item) { $order = Db::name('order')->where('order_sn', $item['order_sn'])->find(); //主订单的基本信息 $goods = Db::name('goods')->where('id', $order['goods_id'])->find(); //获取套餐的名称 if ($goods) { $goods['name'] = $goods['name']; } else { $goods['name'] = '-'; } $coumst = Db::name('orderchannel')->where('id', $order['channel_id'])->find(); //获取订单的渠道 $staff = Db::name('staff')->where('id', $item['staff_id'])->find(); //获取员工的基本信息 $admin = Db::name('admin')->where('id', $order['admin_id'])->find(); //获取客服管家 if ($admin) { $admin['name'] = $admin['name']; } else { $admin['name'] = '-'; } if ($coumst) { $coumst['name'] = $coumst['name']; } else { $coumst['name'] = '-'; } if ($staff) { $staff['name'] = $staff['name']; } else { $staff['name'] = '-'; } $xdtime = date('Y-m-d', $order['create_time']); //下单日期 $autotime = date('Y-m-d', $item['autotime']); //服务日期 if ($order['number'] > 12) { $item['yeaey'] = '是'; } else { $item['yeaey'] = '否'; } if ($item['addtime'] == 1) { $item['addtime'] = '上午'; } else { $item['addtime'] = '下午'; } $tiem['sfsk'] = $order['integral_amount']; $adder = Db::name('dev_region')->where('id', $order['district'])->find(); //获取到地区信息 $adderss = Db::name('user_address')->where('telephone', $order['mobile'])->find(); //客户的房屋地址 if ($adderss) { $couadderss = Db::name('admin')->where('id', $adderss['admin_id'])->find(); if ($couadderss) { $couadderss['name_adder'] = $couadderss['name']; } } if ($adder) { $adder = $adder['name']; } else { $adder['name'] = '-'; } $timeadd = Db::name('order_timeadd') ->where('orderid', $item['id']) ->where('status', 2) ->find(); if ($timeadd) { $item['addtimes'] = $timeadd['minute'] / 60; } else { $item['addtimes'] = 0; } if ($item['staff_status'] == 0) { $item['statusdd'] = "等待接单"; } if ($item['staff_status'] == 1) { $item['statusdd'] = "等待上门"; } if ($item['staff_status'] == 2) { $item['statusdd'] = "等待服务"; } if ($item['staff_status'] == 3) { $item['statusdd'] = "服务完成"; } $exportData[] = [ $order['order_sn'], $order['mobile'], $order['consignee'], $adder, $order['address'], $goods['name'],//套餐名称 $xdtime, $autotime, $item['addtime'], $item['statusdd'] , $order['order_amount'], $tiem['sfsk'], $item['addtimes'], $item['add'], $item['yeaey'] , $order['number'], $order['code'], $coumst['name'], $staff['name'], $item['account'], $admin['name'], $couadderss['name_adder'], $item['remark']]; $exportTitle = ['订单编号', '手机号码', '客户名称', '区', '详细地址', '套餐名称', '下单日期', '服务日期', '上午/下午', '服务状态', '订单总金额', '优惠券抵用金额', '加时', '是否收款', '是否年卡', ' 总次数', '剩余次数', '渠道', '员工姓名', '报销', '订单归属', '客户归属', '订单备注']; $exportExt = 'xls'; } return ['exportTitle' => $exportTitle, 'exportData' => $exportData, 'exportExt' => $exportExt, 'exportName' => '订单列表' . date('Y-m-d H:i:s')]; } /** * Notes: 详情 * @param $id * @return Order * @author 段誉(2021/2/1 10:12) */ public static function getDetail($id) { $result = Db::name('order') ->where('id', $id) ->find(); $goods = Db::name('goods')->where('id', $result['goods_id'])->find(); $result['goods_image'] = UrlServer::getFileUrl($goods['image']); $result['goods_name'] = $goods['name']; if ($result['type'] = 1) { $result['type'] = "固定订单"; } else { $result['type'] = "非固定订单"; } $result['create_time'] = date("Y-m-d H:i:s", $result['create_time']); if ($result['pay_status'] == 1) { $result['pay_status'] = "已支付"; } return $result; } /** * Notes: 取消订单(返回商品规格表库存) * @param $order_id * @param $admin_id * @author 段誉(2021/2/1 10:12) */ public static function cancel($order_id, $admin_id) { Db::startTrans(); try { $order = Order::get(['id' => $order_id], ['orderGoods']); //取消订单 OrderRefundLogic::cancelOrder($order_id, OrderLog::TYPE_SHOP, $admin_id); //已支付的订单,取消,退款 if ($order['pay_status'] == Pay::ISPAID) { //更新订单状态 OrderRefundLogic::cancelOrderRefundUpdate($order); //订单退款 OrderRefundLogic::refund($order, $order['order_amount'], $order['order_amount']); } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); //增加退款失败记录 OrderRefundLogic::addErrorRefund($order, $e->getMessage()); return $e->getMessage(); } } /** * Notes: 删除已取消的订单 * @param $order_id * @param $admin_id * @author 段誉(2021/2/1 10:14) */ public static function del($order_id, $admin_id) { $order = Order::get(['del' => 0, 'id' => $order_id]); $order->save(['del' => 1, 'update_time' => time()]); //订单日志 OrderLogLogic::record( OrderLog::TYPE_SHOP, OrderLog::SHOP_DEL_ORDER, $order_id, $admin_id, OrderLog::SHOP_DEL_ORDER ); } /** * Notes: 物流公司 * @return array|\PDOStatement|string|\think\Collection * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @author 段誉(2021/2/1 10:15) */ public static function express() { return Db::name('express')->where('del', 0)->select(); } /** * Notes: 发货操作 * @param $data * @param $admin_id * @return bool * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException * @author 段誉(2021/2/1 10:15) */ public static function deliveryHandle($data, $admin_id) { $order_id = $data['order_id']; $order = Order::get(['del' => 0, 'id' => $order_id], ['order_goods']); if ($order['shipping_status'] == 1) { return true; } $shipping = Db::name('express')->where('id', $data['shipping_id'])->find(); //添加发货单 $delivery_data = [ 'order_id' => $order_id, 'order_sn' => $order['order_sn'], 'user_id' => $order['user_id'], 'admin_id' => $admin_id, 'consignee' => $order['consignee'], 'mobile' => $order['mobile'], 'province' => $order['province'], 'city' => $order['city'], 'district' => $order['district'], 'address' => $order['address'], 'invoice_no' => $data['invoice_no'], 'send_type' => $data['send_type'], 'create_time' => time(), ]; //配送方式->快递配送 if ($data['send_type'] == 1) { $delivery_data['shipping_id'] = $data['shipping_id']; $delivery_data['shipping_name'] = $shipping['name']; $delivery_data['shipping_status'] = 1; } $delivery_id = Db::name('delivery')->insertGetId($delivery_data); //更新订单下商品的发货状态 $order->update_time = time(); $order->shipping_time = time(); $order->shipping_status = 1; $order->order_status = Order::STATUS_WAIT_RECEIVE; $order->delivery_id = $delivery_id; $order->save(); //订单日志 OrderLogLogic::record( OrderLog::TYPE_SHOP, OrderLog::SHOP_DELIVERY_ORDER, $order_id, $admin_id, OrderLog::SHOP_DELIVERY_ORDER ); //发货短信通知 if ($order->mobile) { $nickname = Db::name('user')->where(['id' => $order['user_id']])->value('nickname'); $send_data = [ 'key' => NoticeSetting::ORDER_DELIVERY_NOTICE, 'user_id' => $order['user_id'], 'mobile' => $order->mobile, 'params' => [ 'order_sn' => $order->order_sn, 'nickname' => $nickname, 'time' => date('Y-m-d H:i:s'), 'invoice_no' => $data['invoice_no'] ?? '', 'shipping_name' => $delivery_data['shipping_name'] ?? '无需快递', 'goods_name' => omit_str($order['order_goods'][0]['goods_name'] ?? '商品', 8) ], ]; } Hook::listen('sms_send', $send_data); // 赠送成长值和积分 Hook::listen('give_reward', [ 'order_id' => $order['id'], 'scene' => 2, //2=发货场景 ]); // 发货模板消息 Hook::listen('notice', [ 'user_id' => $order['user_id'], 'order_id' => $order['id'], 'scene' => NoticeSetting::ORDER_DELIVERY_NOTICE, 'shipping_name' => $delivery_data['shipping_name'] ?? '无需快递', 'invoice_no' => $data['invoice_no'] ?? '', 'time' => date('Y-m-d H:i:s') ]); } /** * Notes: 确认收货 * @param $order_id * @param $admin_id * @author 段誉(2021/2/1 10:16) */ public static function confirm($order_id, $admin_id) { $order = Order::get(['del' => 0, 'id' => $order_id]); $order->order_status = Order::STATUS_FINISH; $order->update_time = time(); $order->confirm_take_time = time(); $order->save(); // 赠送成长值和积分 Hook::listen('give_reward', [ 'order_id' => $order_id, 'scene' => 3, //3=订单完成 ]); //订单日志 OrderLogLogic::record( OrderLog::TYPE_SHOP, OrderLog::SHOP_CONFIRM_ORDER, $order_id, $admin_id, OrderLog::SHOP_CONFIRM_ORDER ); } /** * Notes: 物流信息 * @param $order_id * @return array|\PDOStatement|string|\think\Model|null * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @author 段誉(2021/2/1 10:16) */ public static function shippingInfo($order_id) { $shipping = Db::name('delivery')->where('order_id', $order_id)->find(); if ($shipping) { $shipping['create_time_text'] = date('Y-m-d H:i:s', $shipping['create_time']); } $shipping['traces'] = self::getShipping($order_id); return $shipping; } /** * Notes: 物流轨迹 * @param $order_id * @return array|bool * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @author 段誉(2021/2/1 10:16) */ public static function getShipping($order_id) { $orderModel = new Order(); $order = $orderModel->alias('o') ->field('invoice_no,shipping_name,shipping_id,o.shipping_status') ->join('delivery d', 'd.order_id = o.id') ->where(['o.id' => $order_id]) ->find(); $express = ConfigServer::get('express', 'way', '', ''); $app = ConfigServer::get($express, 'appkey', '', ''); $key = ConfigServer::get($express, 'appsecret', '', ''); if (empty($express) || $order['shipping_status'] != 1 || empty($app) || empty($key)) { return $traces[] = ['暂无物流信息']; } //快递配置设置为快递鸟时 if ($express === 'kdniao') { $expressage = (new Kdniao($key, $app, Env::get('app.app_debug', 'true'))); $shipping_field = 'codebird'; } else { $expressage = (new Kd100($key, $app, Env::get('app.app_debug', 'true'))); $shipping_field = 'code100'; } //快递编码 $shipping_code = Db::name('express') ->where(['id' => $order['shipping_id']]) ->value($shipping_field); //获取物流轨迹 $expressage->logistics($shipping_code, $order['invoice_no']); $traces = $expressage->logisticsFormat(); if ($traces == false) { $traces[] = [$expressage->getError()]; } else { foreach ($traces as &$item) { $item = array_values(array_unique($item)); } } return $traces; } /** * Notes: 订单备注 * @param $post * @param string $type * @return int|string * @throws \think\Exception * @throws \think\exception\PDOException * @author 张无忌(2021/2/1 18:50) */ public static function remarks($post, $type = "get") { if ($type === 'get') { return Db::name('order')->field('id,order_remarks') ->where(['id' => $post['id']]) ->findOrEmpty(); } else { return Db::name('order') ->where(['id' => $post['id']]) ->update(['order_remarks' => $post['order_remarks']]); } } /** * Notes:打印接口 * @param $id int 订单id * @return string */ public static function orderPrint($id) { try { //打印机配置 $printer_config = Db::name('printer_config')->where(['status' => 1])->find(); //打印机列表 $printer_list = Db::name('printer')->where(['type' => $printer_config['id'], 'del' => 0])->select(); if (empty($printer_config) || empty($printer_list)) { throw new Exception('请先配置打印机'); } $yly_print = new YlyPrinter($printer_config['client_id'], $printer_config['client_secret']); $order = self::getPrintOrder($id); $template_config = ConfigServer::get('printer', 'yly_template', []); $yly_print->ylyPrint($printer_list, $order, $template_config); } catch (\Exception $e) { $msg = json_decode($e->getMessage(), true); if ($msg && isset($msg['error'])) { return '易联云:' . $msg['error_description']; } if (18 === $e->getCode()) { //todo token过期重新拿 Cache::rm('yly_access_token'); Cache::rm('yly_refresh_token'); }; return '易联云:' . $e->getMessage(); } } public static function getPrintOrder($id) { $order = new Order(); $result = $order ->with(['user', 'order_goods']) ->where('id', $id) ->append(['delivery_address']) ->find(); foreach ($result['order_goods'] as &$order_goods) { $info = json_decode($order_goods['goods_info'], true); $order_goods['name'] = $info['goods_name']; $order_goods['spec_value_str'] = $info['spec_value_str']; $order_goods['goods_image'] = empty($info['spec_image']) ? $info['image'] : $info['spec_image']; } return $result->toArray(); } //后台增加订单 public static function add($post) { $adder = UserLogic::adder($post['user_id']); //获取用户的地址 $goods = Db::name('goods')->where('id', $post['goods_id'])->find(); //获取商品的ID $user = Db::name('user')->where('mobile', $adder['telephone'])->find(); if ($user) { $user['id'] = $user['id']; } else { $user['id'] = 0; } if ($post['gord_id']) { $post['gord_id'] = $post['gord_id']; } else { $post['gord_id'] = 0; } $post['order_sn'] = createSn('order', 'order_sn', '', 4); if ($post['order_ysck'] == 1) { $pay_status = 0; $order_status = 0; } else { $pay_status = 1; $order_status = 1; } $data = [ 'order_sn' => $post['order_sn'], 'goods_id' => $post['goods_id'], 'user_id' => $user['id'], 'consignee' => $adder['contact'], 'province' => $adder['province_id'], 'city' => $adder['city_id'], 'district' => $adder['district_id'], 'address' => $adder['address'], 'mobile' => $adder['telephone'], 'lat' => $adder['lat'], 'lng' => $adder['lng'], 'goods_price' => $post['total_amount'], // 'order_amount'=>$post['total_amount'], 'order_amount' => $goods['max_price'], 'total_amount' => $post['total_amount'], 'pay_zd' => $post['order_ysck'], 'pay_status' => $pay_status, 'order_status' => $order_status, 'code' => $goods['code'], 'number' => $goods['code'], 'channel_id' => $post['channel_id'], 'admin_id' => session('admin_info.id'), 'order_ysck' => $post['order_ysck'], 'gord_id' => $post['gord_id'], 'create_time' => time(), 'update_time' => time(), ]; return Db::name('order')->data($data)->insert(); } //根据订单编号获取到订单信息 public static function orderinfo($order_sn) { return Db::name('order')->where('order_sn', $order_sn)->find(); } //根据订单ID获取到订单信息 public static function orderinfoid($id) { return Db::name('order')->where('id', $id)->find(); } public static function userlists($get) { $where = []; //订单搜素 if (!empty($get['search_key']) && !empty($get['keyword'])) { $keyword = $get['keyword']; switch ($get['search_key']) { case 'order_sn': $where[] = ['o.order_sn', 'like', '%' . $keyword . '%']; break; case 'user_sn': $where[] = ['u.sn', 'like', '%' . $keyword . '%']; break; case 'nickname': $where[] = ['nickname', 'like', '%' . $keyword . '%']; break; case 'user_mobile': $where[] = ['u.mobile', 'like', '%' . $keyword . '%']; break; case 'consignee': $where[] = ['consignee', 'like', '%' . $keyword . '%']; break; case 'consignee_mobile': $where[] = ['o.mobile', 'like', '%' . $keyword . '%']; break; } } //商品名称 if (isset($get['goods_name']) && $get['goods_name'] != '') { $where[] = ['g.name', 'like', '%' . $get['goods_name'] . '%']; } //付款方式 if (isset($get['pay_way']) && $get['pay_way'] != '') { $where[] = ['o.pay_way', '=', $get['pay_way']]; } //配送方式 if (isset($get['delivery_type']) && $get['delivery_type'] != '') { $where[] = ['o.delivery_type', '=', $get['delivery_type']]; } //订单类型 if (isset($get['order_type']) && $get['order_type'] != '') { $where[] = ['o.order_type', '=', $get['order_type']]; } //订单来源 if (isset($get['order_source']) && $get['order_source'] != '') { $where[] = ['o.order_source', '=', $get['order_source']]; } //下单时间 if (isset($get['start_time']) && $get['start_time'] != '') { $where[] = ['o.create_time', '>=', strtotime($get['start_time'])]; } if (isset($get['end_time']) && $get['end_time'] != '') { $where[] = ['o.create_time', '<=', strtotime($get['end_time'])]; } $order = new Order(); $where = self::getListsCondition($get); $field = 'o.*,order_status as order_status_text,pay_way as pay_way_text'; $brand = Db::name('goods_brand')->where(['del' => 0])->column('name', 'id'); //订单类型 $count = $order ->where($where) ->where('admin_id', session('admin_info.id')) ->order('id desc') ->count(); $lists = $order ->where($where) ->where('admin_id', session('admin_info.id')) ->page($get['page'], $get['limit']) ->order('id desc') ->select(); $channel = Db::name('orderchannel')->column('name', 'id'); foreach ($lists as &$item) { if (isset($channel[$item['channel_id']])) { $item['channel'] = $channel[$item['channel_id']]; } if (isset($brand[$item['type_id']])) { $item['brand'] = $brand[$item['type_id']]; } //获取订单的商品 $goods = Db::name('goods')->where('id', $item['goods_id'])->find(); if ($goods) { $item['goods_name'] = $goods['name']; $item['goods_image'] = UrlServer::getFileUrl($goods['image']); $item['code'] = $goods['code']; } else { $item['goods_name'] = ''; $item['goods_image'] = ''; $item['code'] = ''; } $gord_id = Db::name('collection')->where('id', $item['gord_id'])->find(); if ($gord_id) { $item['gord_name'] = $gord_id['cqname']; } else { $item['gord_name'] = '-'; } } return ['count' => $count, 'lists' => $lists]; } public static function edit($post) { if ($post['pay_status'] == 1) { $pay = 0; } else { $pay = 1; } $res = Db::name('order')->where('id', $post['id'])->update(['consignee' => $post['name'], 'address' => $post['address'], 'mobile' => $post['phone'], 'pay_status' => $pay, 'order_status' => $pay, 'province' => $post['first_category_id'], 'city' => $post['second_category_id'], 'district' => $post['third_category_id'], 'lat' => $post['store_longitude'], 'lng' => $post['store_latitude'], 'gord_id' => $post['gord_id'], 'pay_zd' => $post['pay_status'], 'channel_id' => $post['brand_id'], 'order_amount' => $post['total_amount']]); return $res; } /** * Notes: 后台操作划卡次数 * @param $post * @param string $type * @return int|string * @throws \think\Exception * @throws \think\exception\PDOException * @author 张无忌(2021/2/1 18:50) */ public static function delnumber($post, $type = "get") { if ($type === 'get') { return Db::name('order')->field('id,code') ->where(['id' => $post['id']]) ->findOrEmpty(); } else { return Db::name('order') ->where(['id' => $post['id']]) ->update(['code' => $post['code']]); } } public static function channel_update($post) { $order = Db::name('order')->where('id', $post['id'])->find(); Db::name('order')->where('id', $post['id'])->update(['channel_id' => $post['channel_id']]); $order_exe = Db::name('order_exe')->where('order_sn', $order['order_sn'])->find(); if ($order_exe) { return Db::name('order_exe')->where('order_sn', $order['order_sn'])->update(['channel_id' => $post['channel_id']]); } return 1; } }