getUser(); $user_id = $user['id']; #自动变现货========================= // OrderList::field("goodslist_type") // ->where('user_id', '=', $user_id) // ->where('status', '=', 0) // ->where('goodslist_type', '=', 2) // ->where('goodslist_sale_time', '<=', time()) // ->update(['goodslist_type' => 1]); $linqi_list = OrderList::field("goodslist_type,goodslist_id,user_id,id") ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 2) ->select()->toArray(); foreach ($linqi_list as $k => $val) { $sale_time = GoodsList::where(['id' => $val['goodslist_id']])->value('sale_time'); if (!empty($sale_time)) { if ($sale_time <= time()) { OrderList::where(['id' => $val['id'], 'status' => 0, 'user_id' => $val['user_id'], 'goodslist_type' => 2])->update(['goodslist_type' => 1]); } } else { OrderList::where(['id' => $val['id'], 'status' => 0, 'user_id' => $val['user_id'], 'goodslist_type' => 2])->where('goodslist_sale_time', '<=', time())->update(['goodslist_type' => 1]); } } #自动变现货========================= $type = request()->param('type/d', 0); // $type = 3; if ($type == 1) {#赏品 $keyword = request()->param('keyword', ''); #搜索 $whe = []; if ($keyword) { $whe[] = ['goodslist_title', 'like', '%' . $keyword . '%']; } #总数量 $total = 0; #找到所在盒子 $data = OrderList::field('goods_id') ->append(['goods_title']) ->withAttr('goods_title', function ($value, $data) { if ($data['goods_id'] == 0) { $title = '无限令奖品'; } elseif ($data['goods_id'] == -1) { $title = '周榜奖品'; } elseif ($data['goods_id'] == -1) { $title = '月榜奖品'; } else { $title = Db::name('goods')->field('title')->where('id', '=', $data['goods_id'])->value('title'); } return $title ? $title : '其他'; }) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 1) ->where('insurance_is', '=', 0) ->where('order_type', 'not in', [4]) ->group("goods_id") ->order('goods_id asc') ->select()->toArray(); foreach ($data as &$data_value) { $orderlist = OrderList::field("id,goodslist_title,goodslist_imgurl,goodslist_money,goods_id,shang_id,prize_code,count(id) as prize_num") ->append(['shang_title']) ->where('goods_id', '=', $data_value['goods_id']) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 1) ->where('insurance_is', '=', 0) ->where('order_type', 'not in', [4]) ->where($whe) ->order('shang_id asc') ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->withAttr('goodslist_money', function ($value, $data) { return (float) $value * 100; }) ->group("prize_code") ->select()->toArray(); foreach ($orderlist as $k => &$v) { $v['order_list_ids'] = OrderList::where('goods_id', '=', $v['goods_id']) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 1) ->where('insurance_is', '=', 0) ->where('order_type', 'not in', [4, 9]) ->where('prize_code', '=', $v['prize_code']) ->order('shang_id asc') ->column('id'); } $orderlist_total = array_sum(array_column($orderlist, 'prize_num')); $total += $orderlist_total; $data_value['orderlist'] = $orderlist; $data_value['orderlist_total'] = $orderlist_total; $data_value['orderlist_length'] = count($orderlist); } } elseif ($type == 2) {#预售 $keyword = request()->param('keyword', ''); #搜索 $whe = []; if ($keyword) { $whe[] = ['goodslist_title', 'like', '%' . $keyword . '%']; } #总数量 $total = 0; #找到所在盒子 $data = OrderList::field('goods_id') ->append(['goods_title']) ->withAttr('goods_title', function ($value, $data) { $title = Db::name('goods')->field('title')->where('id', '=', $data['goods_id'])->value('title'); return $title ? $title : '其他'; }) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 2) ->where('insurance_is', '=', 0) ->where('order_type', 'not in', [4]) ->group("goods_id") ->order('goods_id asc') ->select()->toArray(); foreach ($data as &$data_value) { $orderlist = OrderList::field("goodslist_title,goodslist_imgurl,goodslist_money,goods_id,shang_id,prize_code,goodslist_sale_time,count(id) as prize_num") ->append(['shang_title']) ->where('goods_id', '=', $data_value['goods_id']) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 2) ->where('insurance_is', '=', 0) ->where('order_type', 'not in', [4]) ->where($whe) ->order('shang_id asc') ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->withAttr('goodslist_money', function ($value, $data) { return (float) $value * 100; }) ->withAttr('goodslist_sale_time', function ($value, $data) { return date('Y-m-d', $value); }) ->group("prize_code") ->select()->toArray(); $orderlist_total = array_sum(array_column($orderlist, 'prize_num')); $total += $orderlist_total; $data_value['orderlist'] = $orderlist; $data_value['orderlist_total'] = $orderlist_total; $data_value['orderlist_length'] = count($orderlist); } } elseif ($type == 3) {#卡册 $keyword = request()->param('keyword', ''); $category_id = request()->param('category_id/d', 0); #搜索 $whe = []; if ($keyword) { $whe[] = ['o.goods_title', 'like', '%' . $keyword . '%']; } if ($category_id) { $whe[] = ['g.category_id', $category_id]; } // dd($whe); #卡册列表 $obj = Order::field('o.id,o.goods_id,o.goods_title,o.goods_imgurl,g.category_id')->alias('o') ->join('goods g', 'g.id = o.goods_id') ->where('o.user_id', '=', $user_id) ->where('o.order_type', '=', 4); if ($keyword) { $obj->where('o.goods_title', 'like', '%' . $keyword . '%'); } if ($category_id) { $obj->where('g.category_id', $category_id); } $list = $obj->order('o.id desc') ->group('o.goods_id') ->paginate(30)->each(function ($itme) use ($user_id) { $goods_info = Db::name('goods')->field('title,imgurl')->where('id', '=', $itme['goods_id'])->find(); if ($goods_info) { $itme['goods_title'] = $goods_info['title']; $itme['goods_imgurl'] = imageUrl($goods_info['imgurl']); } else { $itme['goods_imgurl'] = imageUrl($itme['goods_imgurl']); } #奖品总量 $all_count = GoodsList::field('id') ->where('goods_id', '=', $itme['goods_id']) ->count(); #获得数量 $buy_count = OrderList::field('id') ->where('user_id', '=', $user_id) ->where('goods_id', '=', $itme['goods_id']) ->where('status', '=', 0) ->group('goodslist_id') ->count(); if ($buy_count > 0) { $gailv = (float) bcdiv("$buy_count", "$all_count", 2); $gailv = bcmul("$gailv", "100", 2); $gailv = (float) $gailv; } else { $gailv = 0; } $itme['all_count'] = $all_count; $itme['buy_count'] = $buy_count; $itme['gailv'] = $gailv; return $itme; }); $data = $list->items(); $last_page = $list->lastPage(); } elseif ($type == 4) {#保险柜 $keyword = request()->param('keyword', ''); #搜索 $whe = []; if ($keyword) { $whe[] = ['goodslist_title', 'like', '%' . $keyword . '%']; } #总数量 $total = 0; #找到所在盒子 $data = OrderList::field('goods_id') ->append(['goods_title']) ->withAttr('goods_title', function ($value, $data) { if ($data['goods_id'] == 0) { $title = '无限令奖品'; } elseif ($data['goods_id'] == -1) { $title = '周榜奖品'; } elseif ($data['goods_id'] == -1) { $title = '月榜奖品'; } else { $title = Db::name('goods')->field('title')->where('id', '=', $data['goods_id'])->value('title'); } return $title ? $title : '其他'; }) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 1) ->where('order_type', 'not in', [4]) ->group("goods_id") ->order('goods_id asc') ->select()->toArray(); foreach ($data as &$data_value) { $orderlist = OrderList::field("goodslist_title,goodslist_imgurl,goodslist_money,goods_id,shang_id,prize_code,count(id) as prize_num") ->append(['shang_title']) ->where('goods_id', '=', $data_value['goods_id']) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 1) ->where('order_type', 'not in', [4]) ->where($whe) ->order('shang_id asc') ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->withAttr('goodslist_money', function ($value, $data) { return (float) $value * 100; }) ->group("prize_code") ->select()->toArray(); $orderlist_total = array_sum(array_column($orderlist, 'prize_num')); $total += $orderlist_total; $data_value['orderlist'] = $orderlist; $data_value['orderlist_total'] = $orderlist_total; $data_value['orderlist_length'] = count($orderlist); } } else if ($type == 5) { //无限赏 $keyword = request()->param('keyword', ''); #搜索 $whe = []; if ($keyword) { $whe[] = ['goodslist_title', 'like', '%' . $keyword . '%']; } #总数量 $total = 0; #找到所在盒子 $data = OrderList::field('goods_id') ->append(['goods_title']) ->withAttr('goods_title', function ($value, $data) { if ($data['goods_id'] == 0) { $title = '无限令奖品'; } elseif ($data['goods_id'] == -1) { $title = '周榜奖品'; } elseif ($data['goods_id'] == -1) { $title = '月榜奖品'; } else { $title = Db::name('goods')->field('title')->where('id', '=', $data['goods_id'])->value('title'); } return $title ? $title : '其他'; }) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 1) ->where('insurance_is', '=', 0) ->where('order_type', '=', 2) ->group("goods_id") ->order('goods_id asc') ->select()->toArray(); foreach ($data as &$data_value) { $orderlist = OrderList::field("id,goodslist_title,goodslist_imgurl,goodslist_money,goods_id,shang_id,prize_code,count(id) as prize_num") ->append(['shang_title']) ->where('goods_id', '=', $data_value['goods_id']) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 1) ->where('insurance_is', '=', 0) ->where('order_type', '=', 2) ->where($whe) ->order('shang_id asc') ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->withAttr('goodslist_money', function ($value, $data) { return (float) $value * 100; }) ->group("prize_code") ->select()->toArray(); foreach ($orderlist as $k => &$v) { $v['order_list_ids'] = OrderList::where('goods_id', '=', $v['goods_id']) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('goodslist_type', '=', 1) ->where('insurance_is', '=', 0) ->where('order_type', '=', 2) ->where('prize_code', '=', $v['prize_code']) ->order('shang_id asc') ->column('id'); } $orderlist_total = array_sum(array_column($orderlist, 'prize_num')); $total += $orderlist_total; $data_value['orderlist'] = $orderlist; $data_value['orderlist_total'] = $orderlist_total; $data_value['orderlist_length'] = count($orderlist); } } else { return $this->renderError("请求错误"); } #运费设置 $config = getConfig("base"); $yufei = [ 'free_post' => $config['free_post'], 'post_money' => $config['post_money'], ]; $new_data = [ 'total' => isset($total) ? $total : 0, 'data' => $data, 'last_page' => isset($last_page) ? $last_page : 1, 'yufei' => $yufei, ]; return $this->renderSuccess("请求成功", $new_data); } /** * 卡册详情 */ public function warehouse_carddetail_log() { $user = $this->getUser(); $user_id = $user['id']; $keyword = request()->param('keyword', ''); $type = request()->param('type/d', 0); $shang_id = request()->param('shang_id/d', 0); $goods_id = request()->param('goods_id/d', 0); #详情 $goods = Order::field('id,goods_id,goods_title,goods_imgurl') ->where('user_id', '=', $user_id) ->where('goods_id', '=', $goods_id) ->where('order_type', '=', 4) ->order('id desc') ->find(); $goods_info = Db::name('goods')->field('title,card_banner')->where('id', '=', $goods['goods_id'])->find(); if ($goods_info) { $goods['goods_title'] = $goods_info['title']; $goods['goods_imgurl'] = imageUrl($goods_info['card_banner']); } else { $goods['goods_imgurl'] = imageUrl($goods['goods_imgurl']); } #全部数量 $all_count = GoodsList::field('id')->where('goods_id', '=', $goods_id)->count(); #获得数量 $buy_count = OrderList::field('id') ->where('user_id', '=', $user_id) ->where('goods_id', '=', $goods_id) ->where('status', '=', 0) ->group('goodslist_id') ->count(); if ($buy_count > 0) { $gailv = (float) bcdiv("$buy_count", "$all_count", 2); $gailv = bcmul("$gailv", "100", 2); $gailv = (float) $gailv; } else { $gailv = 0; } $goods['all_count'] = $all_count; $goods['buy_count'] = $buy_count; $goods['gailv'] = $gailv; #奖品分类 $category = Shang::field('id,title') ->where('goods_id', '=', $goods_id) ->order('sort desc,id asc') ->select()->toArray(); $where = []; $where_order = []; if ($shang_id) { $where[] = ['shang_id', '=', $shang_id]; $where_order[] = ['shang_id', '=', $shang_id]; } if ($type == 0) {#全部 #搜索 if ($keyword) { $where[] = ['title', 'like', '%' . $keyword . '%']; } #奖品 $data = GoodsList::field('id,title as goodslist_title,imgurl as goodslist_imgurl,money as goodslist_money,goods_id,shang_id,prize_code,card_no,shang_id') ->append(['shang_title']) ->where('goods_id', '=', $goods_id) ->where($where) ->order('sort desc,id asc') ->paginate(15); $goodslist = $data->toArray()['data']; $last_page = $data->lastPage(); foreach ($goodslist as $key => $value) { unset($goodslist[$key]['id']); $goodslist[$key]['goodslist_imgurl'] = imageUrl($value['goodslist_imgurl']); #是否被抽中 $is_info = OrderList::field('goodslist_id,goodslist_title,goodslist_imgurl,goodslist_money,goods_id,shang_id,prize_code,count(id) as prize_num,shang_id') ->append(['card_no', 'shang_title']) ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->where('user_id', '=', $user_id) ->where('goods_id', '=', $goods_id) ->where('num', '=', 0) ->where('status', '=', 0) ->where('goodslist_id', '=', $value['id']) ->where('insurance_is', '=', 0) ->where($where_order) ->group('prize_code') ->find(); if ($is_info) { $goodslist[$key] = $is_info; $goodslist[$key]['is'] = 1; } else { $goodslist[$key]['is'] = 0; $goodslist[$key]['prize_num'] = 0; } } } elseif ($type == 1) {#已拥有 #搜索 if ($keyword) { $where[] = ['goodslist_title', 'like', '%' . $keyword . '%']; } #奖品 $data = OrderList::field('goodslist_id,goodslist_title,goodslist_imgurl,goodslist_money,goods_id,shang_id,prize_code,count(id) as prize_num,shang_id') ->append(['card_no', 'shang_title']) ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->where('user_id', '=', $user_id) ->where('goods_id', '=', $goods_id) ->where('num', '=', 0) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->where($where) ->group('prize_code') ->paginate(15); $goodslist = $data->toArray()['data']; $last_page = $data->lastPage(); foreach ($goodslist as &$goodslist_value) { $goodslist_value['is'] = 1; } } elseif ($type == 2) {#未拥有 #搜索 if ($keyword) { $where[] = ['title', 'like', '%' . $keyword . '%']; } #全部奖品ID $goodslist_id = GoodsList::field('id')->where('goods_id', '=', $goods_id)->column('id'); #中奖奖品id $prize_id = OrderList::field('goodslist_id') ->where('user_id', '=', $user_id) ->where('goods_id', '=', $goods_id) ->where('num', '=', 0) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->group('goodslist_id') ->column('goodslist_id'); $arr_id = array_diff($goodslist_id, $prize_id); $where[] = ['id', 'in', $arr_id]; #奖品 $data = GoodsList::field('id,title as goodslist_title,imgurl as goodslist_imgurl,money as goodslist_money,goods_id,shang_id,prize_code,card_no,shang_id') ->append(['shang_title']) ->where('goods_id', '=', $goods_id) ->where($where) ->order('sort desc,id asc') ->paginate(15); $goodslist = $data->toArray()['data']; $last_page = $data->lastPage(); foreach ($goodslist as &$value) { $value['goodslist_imgurl'] = imageUrl($value['goodslist_imgurl']); unset($value['id']); $value['is'] = 0; $value['prize_num'] = 0; } } elseif ($type == 3) {#保险柜 #搜索 if ($keyword) { $where[] = ['goodslist_title', 'like', '%' . $keyword . '%']; } #奖品 $data = OrderList::field('goodslist_id,goodslist_title,goodslist_imgurl,goodslist_money,goods_id,shang_id,prize_code,count(id) as prize_num,shang_id') ->append(['card_no', 'shang_title']) ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->where('user_id', '=', $user_id) ->where('goods_id', '=', $goods_id) ->where('num', '=', 0) ->where('status', '=', 0) ->where('insurance_is', '=', 1) ->where($where) ->group('prize_code') ->paginate(15); $goodslist = $data->toArray()['data']; $last_page = $data->lastPage(); foreach ($goodslist as &$goodslist_value) { $goodslist_value['is'] = 1; } } else { return $this->renderError("请求错误"); } #运费设置 $config = getConfig("base"); $yufei = [ 'free_post' => $config['card_free_post'], 'post_money' => $config['card_post_money'], ]; $new_data = [ 'total' => array_sum(array_column($goodslist, 'prize_num')), 'goods' => $goods, 'yufei' => $yufei, 'category' => $category, 'goodslist' => $goodslist, 'last_page' => $last_page, ]; return $this->renderSuccess("请求成功", $new_data); } /** * 兑换 */ public function warehouse_recovery() { $user = $this->getUser(); $user_id = $user['id']; $recovery_info = request()->param('recovery_info', ''); if (empty($recovery_info)) { return $this->renderError("请选择兑换的赏品"); } $cabinet_exchange_limit = \app\common\helper\ConfigHelper::getAppSettingKey("cabinet_exchange_limit"); if($cabinet_exchange_limit>0){ $today_start = strtotime(date('Y-m-d 00:00:00', time())); $today_end = strtotime(date('Y-m-d 23:59:59', time())); $today_count = OrderListRecovery::where('user_id', '=', $user_id) ->where('addtime', '>=', $today_start) ->where('addtime', '<=', $today_end) ->count(); if($today_count>=$cabinet_exchange_limit){ return $this->renderError("今日兑换次数已达上限"); } } #装换结构 $recovery_info = json_decode($recovery_info, true); $order_list_id = []; foreach ($recovery_info as $value) { $order_list_ids = OrderList::field('id') ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->where('prize_code', '=', $value['prize_code']) ->limit($value['number']) ->column("id"); $order_list_id = array_merge($order_list_id, $order_list_ids); } if (!$order_list_id) { return $this->renderError("请刷新重新选择奖品"); } #兑换金额 $total_money = OrderList::field('goodslist_money') ->where('id', 'in', $order_list_id) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->sum("goodslist_money"); $redis = (new \app\common\server\RedisHelper())->getRedis(); $redis_key = "kpw_warehouse_recovery" . '_' . $user['id']; $redis_key_info = $redis->get($redis_key); if ($redis_key_info) { return $this->renderError("当前操作太快了,请等待"); } else { $redis->set($redis_key, 1, 10); } #兑换单号 $recovery_num = create_order_no('HS_', 'order_list_recovery', 'recovery_num'); Db::startTrans(); $res = []; #记录日志 $res[] = OrderListRecovery::insert([ 'user_id' => $user_id, 'recovery_num' => $recovery_num, 'money' => $total_money, 'count' => count($order_list_id), 'addtime' => time(), ]); #改变状态 $res[] = OrderList::field('recovery_num,status,choice_time') ->where('id', 'in', $order_list_id) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->update([ 'recovery_num' => $recovery_num, 'status' => 1, 'choice_time' => time(), ]); #兑换金额 $total_money *= 100; if ($total_money > 0) { // $res[] = User::changeMoney($user_id, $total_money, 4, '兑换获得'); // User::changeIntegral($user_id, $total_money, 4, '兑换获得'); User::changeMoney2($user_id, $total_money, 4, '兑换获得'); } if (resCheck($res)) { Db::commit(); #删除redis $redis->del($redis_key); return $this->renderSuccess("打包成功"); } else { Db::rollback(); #删除redis $redis->del($redis_key); return $this->renderError("打包失败"); } } /** * 发货 */ public function warehouse_send(Request $request) { $user = $this->getUser(); $user_id = $user['id']; $type = request()->param('type/d', 0); #背包 抽卡机 if ($type != 1 && $type != 2) { return $this->renderError("请求参数错误"); } $isTest = \app\common\helper\ConfigHelper::getSystemTestKey("disable_wechat_pay"); if ($isTest == "1") { return $this->renderError("发货未开放"); } $recovery_info = request()->param('recovery_info', ''); if (empty($recovery_info)) { return $this->renderError("请选择兑换的赏品"); } $name = request()->param("name", ''); $mobile = request()->param("mobile", ''); $address = request()->param("address", ''); $message = request()->param("message", ''); if (empty($name) || empty($mobile) || empty($address)) { return $this->renderError("缺少收货信息"); } #装换结构 $recovery_info = json_decode($recovery_info, true); $order_list_id = []; foreach ($recovery_info as $value) { $lim = $value['number']; if (is_string($lim)) { $lim = intval($lim); } $order_list_ids = OrderList::field('id') ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->where('goodslist_type', '=', 1) ->where('prize_code', '=', trim($value['prize_code'])) ->limit($lim) ->column("id"); $order_list_id = array_merge($order_list_id, $order_list_ids); } if (!$order_list_id) { return $this->renderError("请刷新重新选择奖品"); } #发货数量 $count = count($order_list_id); #运费设置 $config = getConfig("base"); if ($type == 1) {#背包 $free_post = (int) $config['free_post'];#发货数量 $free_post = $free_post <= 0 ? 0 : $free_post; $post_money = (int) $config['post_money'];#发货运费 $post_money = $post_money <= 0 ? 0 : $post_money; } elseif ($type == 2) {#抽卡机 $free_post = (int) $config['card_free_post'];#发货数量 $free_post = $free_post <= 0 ? 0 : $free_post; $post_money = (int) $config['card_post_money'];#发货运费 $post_money = $post_money <= 0 ? 0 : $post_money; } #发货订单 $send_num = create_order_no('FH_', 'order_list_send', 'send_num'); $redis = (new \app\common\server\RedisHelper())->getRedis(); $redis_key = "kpw_warehouse_send" . '_' . $user['id']; $redis_key_info = $redis->get($redis_key); if ($redis_key_info) { return $this->renderError("当前操作太快了,请等待"); } else { $redis->set($redis_key, 1, 10); } Db::startTrans(); #改变赏品信息 $res[] = OrderList::field('id,send_num') ->where('id', 'in', $order_list_id) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->where('goodslist_type', '=', 1) ->update([ 'send_num' => $send_num, ]); #生成订单 $res[] = $end_order_id = OrderListSend::insertGetId([ 'user_id' => $user_id, 'send_num' => $send_num, 'freight' => $post_money, 'status' => 0,#0待支付 1待发货 2待收货 3已完成 'count' => $count, 'name' => $name, 'mobile' => $mobile, 'address' => $address, 'message' => $message, 'addtime' => time(), ]); #为满足发货条件 // // dd($free_post,$count); if ($free_post > $count && $post_money > 0) { $body = '背包发货' . $count . '件'; $attach = 'order_list_send'; $payRes = (new Pay())->wxCreateOrder($send_num, $post_money, $user['openid'], $body, $attach); if ($payRes['status'] == 1) { #结果集 $new_data = [ 'status' => 1, 'order_no' => $send_num, 'res' => $payRes['data'], ]; } else { Db::rollback(); #删除redis $redis->del($redis_key); return $this->renderError("下单失败"); } } else { OrderListSend::field('freight')->where('id', '=', $end_order_id)->update(['freight' => 0]); #背包发货处理 $res[] = (new Notify($this->app))->reward_order_handle($user['id'], $end_order_id); #结果集 $new_data = [ 'status' => 0, 'order_no' => $send_num, ]; } if (resCheck($res)) { Db::commit(); #删除redis $redis->del($redis_key); return $this->renderSuccess("发货成功", $new_data); } else { Db::rollback(); #删除redis $redis->del($redis_key); return $this->renderError("发货失败"); } } /** * 移入保险柜 */ public function warehouse_movein() { $user = $this->getUser(); $user_id = $user['id']; $recovery_info = request()->param('recovery_info', ''); if (empty($recovery_info)) { return $this->renderError("请选择兑换的赏品"); } #装换结构 $recovery_info = json_decode($recovery_info, true); $order_list_id = []; foreach ($recovery_info as $value) { $order_list_ids = OrderList::field('id') ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->where('prize_code', '=', $value['prize_code']) ->limit($value['number']) ->column("id"); $order_list_id = array_merge($order_list_id, $order_list_ids); } if (!$order_list_id) { return $this->renderError("请刷新重新选择奖品"); } $redis = (new \app\common\server\RedisHelper())->getRedis(); $redis_key = "kpw_warehouse_movein" . '_' . $user['id']; $redis_key_info = $redis->get($redis_key); if ($redis_key_info) { return $this->renderError("当前操作太快了,请等待"); } else { $redis->set($redis_key, 1, 10); } $res = OrderList::field('insurance_is') ->where('id', 'in', $order_list_id) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 0) ->update([ 'insurance_is' => 1, ]); if ($res) { #删除redis $redis->del($redis_key); return $this->renderSuccess("移入成功"); } else { #删除redis $redis->del($redis_key); return $this->renderError("移入失败"); } } /** * 移出保险柜 */ public function warehouse_remove() { $user = $this->getUser(); $user_id = $user['id']; $recovery_info = request()->param('recovery_info', ''); if (empty($recovery_info)) { return $this->renderError("请选择兑换的赏品"); } #装换结构 $recovery_info = json_decode($recovery_info, true); $order_list_id = []; foreach ($recovery_info as $value) { $order_list_ids = OrderList::field('id') ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 1) ->where('prize_code', '=', $value['prize_code']) ->limit($value['number']) ->column("id"); $order_list_id = array_merge($order_list_id, $order_list_ids); } if (!$order_list_id) { return $this->renderError("请刷新重新选择奖品"); } $redis = (new \app\common\server\RedisHelper())->getRedis(); $redis_key = "kpw_warehouse_remove" . '_' . $user['id']; $redis_key_info = $redis->get($redis_key); if ($redis_key_info) { return $this->renderError("当前操作太快了,请等待"); } else { $redis->set($redis_key, 1, 10); } $res = OrderList::field('insurance_is') ->where('id', 'in', $order_list_id) ->where('user_id', '=', $user_id) ->where('status', '=', 0) ->where('insurance_is', '=', 1) ->update([ 'insurance_is' => 0, ]); if ($res) { #删除redis $redis->del($redis_key); return $this->renderSuccess("移出成功"); } else { #删除redis $redis->del($redis_key); return $this->renderError("移出失败"); } } /** * 打包记录 */ public function warehouse_recovery_record() { $user = $this->getUser(); $user_id = $user['id']; $data = OrderListRecovery::field('recovery_num,money,count,addtime') ->append(['order_list']) ->withAttr('addtime', function ($value, $data) { return date('Y-m-d H:i:s', $data['addtime']); }) ->where('user_id', '=', $user_id) ->order("id desc") ->paginate(10); $new_data = [ 'data' => $data->items(), 'last_pahe' => $data->lastPage(), ]; return $this->renderSuccess("请求成功", $new_data); } /** * 发货记录 */ public function warehouse_send_record(Request $request) { $user = $this->getUser(); $user_id = $user['id']; $status = \request()->param('status/d', 1); if ($status != 1 && $status != 2 && $status != 3) { return $this->renderError("非法请求"); } #自动收货===================================== $guoqi_time = time() - (7 * 86400); OrderListSend::field('status,shou_time') ->where('status', '=', 2) ->where('send_time', '<=', $guoqi_time) ->update(['status' => 3, 'shou_time' => time()]); #自动收货===================================== $data = OrderListSend::field('id,send_num,status,count,addtime') ->append(['order_list', 'status_name']) ->withAttr('addtime', function ($value, $data) { return date('Y-m-d H:i:s', $data['addtime']); }) ->where('user_id', '=', $user_id) ->where('status', '=', $status) ->order("id desc") ->paginate(10); $new_data = [ 'data' => $data->items(), 'last_pahe' => $data->lastPage(), ]; return $this->renderSuccess("请求成功", $new_data); } /** * 记录详情 */ public function warehouse_send_record_detail(Request $request) { $user = $this->getUser(); $user_id = $user['id']; $id = request()->param('id/d', 0); if (empty($id)) { return $this->renderError("非法请求"); } #发货订单详情 $info = OrderListSend::field('id,status,send_num,name,mobile,address,addtime,pay_time,send_time,shou_time') ->where('id', '=', $id) ->where('user_id', '=', $user_id) ->find(); if (!$info) { return $this->renderError("请求参数错误"); } if ($info['status'] != 1 && $info['status'] != 2 && $info['status'] != 3) { return $this->renderError("请求参数错误1"); } $info['addtime'] = date('Y-m-d H:i:s', $info['addtime']); $info['pay_time'] = date('Y-m-d H:i:s', $info['pay_time']); $info['send_time'] = $info['send_time'] ? date('Y-m-d H:i:s', $info['send_time']) : '待发货'; $info['shou_time'] = $info['shou_time'] ? date('Y-m-d H:i:s', $info['shou_time']) : '待收货'; #奖品 $data = OrderList::field('goodslist_title,goodslist_imgurl,shang_id,goodslist_money,1 as prize_num,fh_status') ->append(['shang_title']) ->where(['send_num' => $info['send_num']]) ->withAttr('goodslist_imgurl', function ($value, $data) { return imageUrl($value); }) ->order('goodslist_money desc') // ->group("prize_code") ->select(); $info['goods'] = $data; return $this->renderSuccess("请求成功", $info); } /** * 确认收货 */ public function warehouse_send_confirm(Request $request) { $user = $this->getUser(); $user_id = $user['id']; $id = request()->param('id/d', 0); if (empty($id)) { return $this->renderError("非法请求"); } #发货订单详情 $info = OrderListSend::field('id,status') ->where('id', '=', $id) ->where('user_id', '=', $user_id) ->find(); if (!$info) { return $this->renderError("请求参数错误"); } if ($info['status'] == 3) { return $this->renderError("请勿重复操作"); } if ($info['status'] != 2) { return $this->renderError("该订单暂不能确认收货"); } $res = OrderListSend::where('id', '=', $info['id'])->update(['status' => 3, 'shou_time' => time()]); if ($res) { return $this->renderSuccess("确认收货成功"); } else { return $this->renderError("网络故障,请稍后重试"); } } /** * 查看物流 */ public function warehouse_order_logistics() { $status_name = ['快递收件(揽件)', '在途中', '正在派件', '已签收', '派送失败', '疑难件', '退件签收', '其他']; $user = $this->getUser(); $user_id = $user['id']; $id = request()->param('id/d', 0); if (empty($id)) { return $this->renderError("非法请求"); } #发货订单详情 $info = OrderListSend::field('courier_number,courier_name,courier_code,delivery_list,delivery_status,delivery_time,send_num,count') ->where('id', '=', $id) ->where('user_id', '=', $user_id) ->find(); if (!$info) { return $this->renderError("请求参数错误"); } #奖品图片 $goodslist_imgurl = OrderList::field('goodslist_imgurl')->where('send_num', '=', $info['send_num'])->value('goodslist_imgurl'); $info['goodslist_imgurl'] = imageUrl($goodslist_imgurl); #物流轨迹 $delivery_status = isset($status_name[$info['delivery_status']]) ? $status_name[$info['delivery_status']] : '暂无物流轨迹'; $delivery_list = $info['delivery_list'] ? json_decode($info['delivery_list'], true) : ''; #查找物流 if ($info['courier_number'] && (time() > ($info['delivery_time'] + 600))) { #顺丰快递 if ($info['delivery_code'] == 'SFEXPRESS') { $m = substr($info['mobile'], -4); $info['courier_number'] = $info['courier_number'] . ':' . $m; } $result = expressWuliu($info['courier_number'], $info['courier_code']); if ($result['code'] == 1) { #投递状态 0快递收件(揽件)1.在途中 2.正在派件 3.已签收 4.派送失败 5.疑难件 6.退件签收 $delivery_status = $result['msg']['deliverystatus']; $delivery_status = isset($status_name[$delivery_status]) ? $status_name[$delivery_status] : '暂无物流轨迹'; $delivery_list = $result['msg']['list']; OrderListSend::where(['id' => $id])->update([ 'delivery_list' => $delivery_list ? json_encode($delivery_list) : '', 'delivery_time' => time(), ]); } } $info['delivery_status'] = $delivery_status; $info['delivery_list'] = $delivery_list; return $this->renderSuccess("请求成功", $info); } }