manghe/app/api/controller/Seckill.php
2025-03-21 19:25:07 +08:00

834 lines
32 KiB
PHP
Executable File

<?php
declare (strict_types=1);
namespace app\api\controller;
use app\api\controller\Base;
use app\common\model\Product as ProductModel;
use app\common\model\ProductCate;
use \think\Request;
use \think\facade\Db;
use app\common\model\Advert;
/**
* Class Seckill 秒杀商城
* @package app\index\controller
*/
class Seckill extends Base
{
/**
* 商城分类
*/
public function shop_seckill_index(Request $request)
{
//一级
$w = [];
$w[] = ['status','=','1'];
$w[] = ['pid','=','0'];
$cate1 = ProductCate::getAllList($w,'id,title',"sort asc,id desc");
$cc = [];
$cc[0]['id'] = '0';
$cc[0]['title'] = "全部";
foreach($cate1 as $k=>$v){
$cc[$k+1]['id'] = $v['id'];
$cc[$k+1]['title'] = $v['title'];
}
$cate1 = $cc;
//二级类
$cate_id1 = $request->param("cate_id1"); //一级类id
$ww = [];
$ww[] = ['status','=',1];
$whe= [];
$whe[] = ['status','=',1];
if(!empty($cate_id1)){
$ww[] = ['pid','=',$cate_id1];
$whe[] = ['cate_id1','=',$cate_id1];
}else{
$ww[] = ['pid','>',0];
}
$cate2 = ProductCate::getAllList($ww,'id,title,imgurl',"sort asc,id desc");
$n = 0;
$cc = [];
foreach ($cate2 as $k => &$v) {
$v['imgurl'] = imageUrl($v['imgurl']);
}
$cate2 = $cate2->toArray();
$cate2 = array_chunk($cate2, 10);
#首页轮播图
$advert = Advert::field('imgurl')->where(['type' => 2])->order('sort desc,id desc')->select();
foreach ($advert as &$advert_value) {
$advert_value['imgurl'] = imageUrl($advert_value['imgurl']);
}
return $this->renderSuccess("请求成功",compact('cate1','cate2','advert'));
// $user = $this->getUser();
// $user_id = $user['id'];
// #是否有分销人
// $share_user_is = 0;
// $goods_id = request()->param('goods_id/d', 0);
// $good_info = Db::name('kk_product')->field('id')->where(['id' => $goods_id])->where(['status' => 0])->find();
//// if ($good_info) {
//// $share_user_id = request()->param('share_user_id/d', 0);
//// $share_user_id = $share_user_id -888;
//// if($share_user_id > 0){
//// $share_user = Db::name('user')->field('id')->where('id',$share_user_id)->find();
//// // && $share_user_id != $user_id
//// if($share_user){
//// $start_time = strtotime(date('Y-m-d',time()));
//// $end_time = $start_time + 86399;
//// $where_time = [];
//// $where_time[] = ['addtime','BETWEEN',[$start_time,$end_time]];
//// $shar_count = Db::name('kk_share')->field('id')->where('user_id',$user_id)->where($where_time)->count();
//// if($shar_count < 3){
//// $shar_info = Db::name('kk_share')->where('user_id',$user_id)->where('share_user_id',$user_id)->where('goods_id',$goods_id)->where($where_time)->find();
//// if(!$shar_info){
//// $share_user_is = 1;
//// Db::name('kk_share')->insert([
//// 'user_id'=>$user_id,
//// 'goods_id'=>$goods_id,
//// 'share_user_id'=>$share_user_id,
//// 'addtime'=>time(),
//// ]);
//// }
//// }else{
//// $share_user_is = 2;
//// }
//// }
//// }
//// }
//
// #时间段
// $time_data = Db::name('kk_seckill')
// ->field('id,seckill_time')
// ->order('seckill_time asc')
// ->select()->toArray();
// $new_data = $time_data;
//// $now_time = time();
//// foreach ($time_data as $key => &$value) {
//// $time_start_value = strtotime(date('Y-m-d ' . $value['seckill_time'], time()));
//// $time_end_value = $time_start_value + 3599;
//// if ($now_time < $time_start_value) {#未开始
//// $status = '未开始';
//// $status_is = 0;
//// } else if ($now_time >= $time_start_value && $now_time < $time_end_value) {#进行中
//// $status = '进行中';
//// $status_is = 1;
//// } else {#结束
//// $status = '已结束';
//// $status_is = 2;
//// }
//// $value['status'] = $status;
//// list($hour, $minute) = explode(":", $value['seckill_time']);
//// $value['seckill_time'] = $hour . ':' . $minute;
//// // if ($status_is != 2) {
//// $new_data[] = $value;
//// // }
//// }
// return $this->renderSuccess("请求成功", $new_data);
}
/**
* 商城秒杀时间段切换商品
*/
public function shop_seckill_product(Request $request)
{
$title = $request->param("title");
$cate_id2 = $request->param("cate_id2");
$cate_id1 = $request->param("cate_id1");
$w= [];
if(!empty($title)){
$w[] = ['title','like','%'.$title.'%'];
}
if(!empty($cate_id1)){
$w[] = ['cate_id1','=',$cate_id1];
}
if(!empty($cate_id2)){
$w[] = ['cate_id2','=',$cate_id2];
}
$w[] = ['status','=',0];
$seckill_data =Db::name('kk_product')
->field('id,title,image')
->where(['status' => 0])
->where($w)
->order('sort desc,id desc')
->paginate(15);
$data = $seckill_data->items();
$last_page = $seckill_data->lastPage();
foreach($data as $k=>&$v){
#商品规格信息
$spec_info = Db::name('kk_product_spec')->field('price,seckill_price,stock')
->where(['pro_id' => $v['id']])
->order('price asc')
->find();
$v['price'] = $spec_info['price'];
$v['image'] = imageUrl($v['image']);
}
#返回数据
$newData = [
'data' => $data,
'last_page' => $last_page,
];
return $this->renderSuccess("请求成功",$newData);
// $user = $this->getUser();
// $user_id = $user['id'];
// $id = request()->param('id/d', 0);
// $time_info = Db::name('kk_seckill')->where(['id' => $id])->find();
//// dd($time_info);
// if (!$time_info) {
// $time_info = Db::name('kk_seckill')
// ->order('seckill_time asc')
// ->find();
// $id = $time_info['id'];
// // $new_data = [];
// // $now_time = time();
// // foreach ($time_data as $key => &$value) {
// // $time_start_value = strtotime(date('Y-m-d ' . $value['seckill_time'], time()));
// // $time_end_value = $time_start_value + 3599;
// // if ($now_time < $time_start_value) {#未开始
// // $status_is = 0;
// // } else if ($now_time >= $time_start_value && $now_time < $time_end_value) {#进行中
// // $status_is = 1;
// // } else {#结束
// // $status_is = 2;
// // }
// // if ($status_is != 2) {
// // $id = $value['id'];
// // $time_info = $value;
// // break;
// // }
// // }
// }
// #现在时间
//// $now_time = time();
//// $time_start_value = strtotime(date('Y-m-d ' . $time_info['seckill_time'], time()));
//// $time_end_value = $time_start_value + 3599;
//// if ($now_time < $time_start_value) {#未开始
//// $status = 0;
//// } else if ($now_time >= $time_start_value && $now_time < $time_end_value) {#进行中
//// $status = 1;
//// } else {#结束
//// $status = 2;
//// }
//// #限购数量
//// $goods_num = $time_info['goods_num'];
//// $where_time = [];
//// $where_time[] = ['addtime', 'BETWEEN', [$time_start_value, $time_end_value]];
// #秒杀商品信息
// $seckill_data = Db::name('kk_product')
// ->field('id,title,image')
// ->where(['status' => 0])
// ->where(['seckill_id' => $id])
// ->order('sort desc,id desc')
// ->paginate(10);
// $data = $seckill_data->items();
// $last_page = $seckill_data->lastPage();
//
// $start_time = strtotime(date('Y-m-d',time()));
// $end_time = $start_time + 86399;
// foreach ($data as &$item){
// $shar_count = Db::name('kk_share')->field('id')->where('share_user_id',$user_id)->where('goods_id',$item['id'])->where('addtime','BETWEEN',[$start_time,$end_time])->count();
// if($shar_count >= 3){
// $status = 3;
// }
// #当前时间段购买商品数量
// $buy_num = Db::name('kk_order_good')->field('goods_num')
// ->where('goods_id','=',$item['id'])#商品ID
//// ->where($where_time)
// ->sum('goods_num');
// $item['buy_num'] = $buy_num;
//// #剩余
//// $surplus_num = ($buy_num) <= 0 ? 0 : ($buy_num);
//// $item['surplus_num'] = $surplus_num;
//// #总量
//// $item['all_num'] = $goods_num;
//// if ($surplus_num <= 0) {
//// $status = 4;#售馨
//// }
//// $pro = (float)bcdiv("$buy_num",2,2);
//// $item['pro'] = $pro * 100;
//// $item['status'] = $status;
// #商品规格信息
// $spec_info = Db::name('kk_product_spec')->field('price,seckill_price,stock')
// ->where(['pro_id' => $item['id']])
// ->order('price asc')
// ->find();
// $item['price'] = $spec_info['price'];
// $item['seckill_price'] = $spec_info['seckill_price'];
// $item['image'] = imageUrl($item['image']);
// }
//
// #返回数据
// $newData = [
// 'data' => $data,
// 'last_page' => $last_page,
// ];
// return $this->renderSuccess("请求成功", $newData);
}
/**
* 商品详情
*/
public function shop_goods_detail()
{
$user = $this->getUser();
$user_id = $user['id'];
$goods_id = request()->param('goods_id/d', 0);
$good_info = Db::name('kk_product')
->field('id,title,image,detail_image,content,sale_num,freight,spec_data')
->where(['id' => $goods_id])
->where(['status' => 0])
->find();
if (!$good_info) {
return $this->renderError("商品不存在或已下架");
}
#现在时间
$now_time = time();
// #秒杀倒计时=====================
// $seckill_data = Db::name('kk_seckill')->field('seckill_time,goods_num')->order('id asc')->select();
// $seckill_end_time = 0;
// $seckill_status = 0;
// foreach ($seckill_data as $key => $value) {
// $time_start_value = strtotime(date('Y-m-d ' . $value['seckill_time'], time()));
// $time_end_value = $time_start_value + 3599;
// if ($now_time >= $time_start_value && $now_time < $time_end_value) {#进行中
// $seckill_end_time = $time_end_value;
// $seckill_status = 1;
// break;
// }
// }
// $seckill_surplus_time = ($seckill_end_time - time()) <= 0 ? 0 : $time_end_value;
// $good_info['seckill_status'] = $seckill_status;
// $good_info['seckill_surplus_time'] = $seckill_surplus_time;
$detail_image = json_decode($good_info['detail_image'], true);
$detail_image = array_map(function ($v) {
return imageUrl($v);
}, $detail_image);
$good_info['image'] = imageUrl($good_info['image']);
$good_info['detail_image'] = $detail_image ? $detail_image : $good_info['image'];
$good_info['content'] = contentUrl($good_info['content']);
#规则信息
$spec_info = Db::name('kk_product_spec')->field('price,seckill_price')
->where(['pro_id' => $good_info['id']])
->order('price asc')
->find();
$good_info['price'] = $spec_info['price'];
$good_info['seckill_price'] = $spec_info['seckill_price'];
$good_info['spec_data'] = json_decode($good_info['spec_data'], true);
return $this->renderSuccess("请求成功", $good_info);
}
/**
* 商品规格
*/
public function shop_goods_detail_spec()
{
$pro_id = request()->param('goods_id/d', 0);
$ks = request()->param('ks', 0);
$info = Db::name('kk_product')->field('id,title,image')
->where(['id' => $pro_id])
->where(['status' => 0])
->find();
if (!$info) {
return $this->renderError("商品不存在或已下架");
}
$spec_info = Db::name('kk_product_spec')
->where(['pro_id' => $pro_id])
->where(['ks' => $ks])
->find();
if ($spec_info) {
$spec_info['pic'] = $spec_info['pic'] ? imageUrl($spec_info['pic']) : imageUrl($info['image']);
$spec_info['goods_name'] = $info['title'];
$type = 1;
} else {
$type = 0;
}
$data = [
'type' => $type,
'spec_info' => $spec_info,
];
return $this->renderSuccess("请求成功", $data);
}
/**
* 分享商品详情
* @param $goods_id 商品id
*/
public function shop_goods_share(){
$user = $this->getUser();
$user_id = $user['id'];
$pro_id = request()->param('goods_id/d', 0);
$info = Db::name('kk_product')->field('id')->where(['id' => $pro_id])->where(['status' => 0])->find();
if (!$info) {
return $this->renderError("商品不存在或已下架");
}
$start_time = strtotime(date('Y-m-d',time()));
$end_time = $start_time + 86399;
$where_time = [];
$where_time[] = ['addtime','BETWEEN',[$start_time,$end_time]];
$data = Db::name('kk_share')->where('share_user_id',$user_id)->where('goods_id',$info['id'])->where($where_time)->limit(3)->select()->toArray();
foreach ($data as $k => &$v){
$user = Db::name('user')->field('nickname,headimg')->where('id',$v['user_id'])->find();
$v['nickname'] = $user['nickname'];
$v['headimg'] = $user['headimg'];
}
return $this->renderSuccess("请求成功", $data);
}
/**
* 下单浏览
* @param $goods_id 商品id
*/
public function shop_goods_browse()
{
$user = $this->getUser();
$goods_id = request()->param('goods_id/d', 0);#商品id
$ks = request()->param('ks', 0);#规格键名
$num = request()->param('num/d', 1);#数量
$is_money = request()->param('is_money/d', 2);#余额抵扣
$is_integral = request()->param('is_integral/d', 2);#Woo币抵扣
if ($is_money != 1 && $is_money != 2) {
return $this->renderError("请求参数错误");
}
if ($is_integral != 1 && $is_integral != 2) {
return $this->renderError("请求参数错误2");
}
if (RegInt($num)) {
return $this->renderError("商品数量选择错误");
}
#商品信息
$info = Db::name('kk_product')
->field('id,image,title,freight')
->where(['id' => $goods_id])
->where(['status' => 0])
->find();
if (!$info) {
return $this->renderError("商品不存在或已下架");
}
#选择规格
$spec_goods = Db::name('kk_product_spec')
->where(['pro_id' => $info['id']])
->where(['ks' => $ks])
->find();
if (!$spec_goods) {
return $this->renderError("规格选择错误");
}
$newData = [];
$goods_info['goods_name'] = $info['title'];
$goods_info['pic'] = $spec_goods['pic'] ? imageUrl($spec_goods['pic']) : imageUrl($info['image']);
$goods_info['freight'] = (float)$info['freight'];#运费
$goods_info['ks'] = $spec_goods['ks'];
$goods_info['name'] = $spec_goods['name'];
$goods_info['num'] = $num;#数量
$goods_info['price'] = $spec_goods['price'];
$goods_info['price'] = $spec_goods['price'];
$seckill_price = $spec_goods['price'];#秒杀价
$freight = $info['freight'];#运费
$total = bcmul("$seckill_price", "$num", 2);#秒杀价*数量
$total = bcadd("$total", "$freight", 2);#秒杀价*数量 + 运费
$use_money = 0;
$use_integral = 0;
#余额抵扣
if ($is_money == 1 && $total > 0) {
if ($user['money'] >= $total) {
$use_money = $total * 1;
$total = 0;
} else {
$use_money = $user['money'];
$total = bcsub("$total", "$use_money", 2);
}
}
#Woo币抵扣
if ($is_integral == 1 && $total > 0) {
if ($user['integral'] >= $total) {
$use_integral = $total;
$total = 0;
} else {
$use_integral = $user['integral'];
$total = bcsub("$total", "$use_integral", 2);
}
}
#结果集
$newData['goods'] = $goods_info;#商品
$newData['pay_price'] = $total;#合计(商品金额)
$newData['money'] = $user['money'];#余额
$newData['use_money'] = $use_money;#余额抵扣
$newData['integral'] = $user['integral'];#Woo币
$newData['use_integral'] = $use_integral;#Woo币抵扣
return $this->renderSuccess("请求成功", $newData);
}
/**
* 秒杀商城下单
* @param $goods_id 商品id
*/
public function shop_order_buy()
{
$user = $this->getUser();
$uid = $user['id'];
$name = request()->param("name", '');
$mobile = request()->param("mobile", '');
$address = request()->param("address", '');
$message = request()->param("message", '');
$goods_id = request()->param('goods_id/d', 0);#商品id
$ks = request()->param('ks', 0);#规格键名
$num = request()->param('num/d', 1);#数量
$is_money = request()->param('is_money/d', 2);#余额抵扣
$is_integral = request()->param('is_integral/d', 2);#Woo币抵扣
#收货地址
if (!$name || !$mobile || !$address) {
return $this->renderError("请选择收货地址");
}
if ($is_money != 1 && $is_money != 2) {
return $this->renderError("请求参数错误");
}
if ($is_integral != 1 && $is_integral != 2) {
return $this->renderError("请求参数错误2");
}
if (RegInt($num)) {
return $this->renderError("商品数量选择错误");
}
// if (RegMobile($mobile)) {
// // return $this->renderError("手机号非法");
// }
#商品信息
$info = Db::name('kk_product')
->field('id,image,title,freight')
->where(['id' => $goods_id])
->where(['status' => 0])
->find();
if (!$info) {
return $this->renderError("商品不存在或已下架");
}
#选择规格
$spec_goods = Db::name('kk_product_spec')
->where(['pro_id' => $info['id']])
->where(['ks' => $ks])
->find();
if (!$spec_goods) {
return $this->renderError("规格选择错误");
}
// dd(11);
// $redis = (new \app\common\server\RedisHelper())->getRedis();
// $key = "shop_order_buy".'_'.$goods_id;
// $redis_key_info = $redis->get($key);
// if($redis_key_info){
// return $this->renderError("操作太快了");
// }else{
// $redis->set($key, 1,2);
// }
//
#判断库存
if ($num > $spec_goods['stock']) {
return $this->renderError("库存不足");
}
// $now_time = time();
// #秒杀时间
// $seckill_data = Db::name('kk_seckill')->field('seckill_time,goods_num')->order('id asc')->select();
// $seckill_statrt_time = 0;
// $seckill_end_time = 0;
// $seckill_goods_num = 0;
// $seckill_status = 0;
// foreach ($seckill_data as $key => $value) {
// $time_start_value = strtotime(date('Y-m-d ' . $value['seckill_time'], time()));
// $time_end_value = $time_start_value + 3599;
// if ($now_time >= $time_start_value && $now_time < $time_end_value) {#进行中
// $seckill_statrt_time = $time_start_value;
// $seckill_end_time = $time_end_value;
// $seckill_goods_num = $value['goods_num'];
// $seckill_status = 1;
// break;
// }
// }
// if ($seckill_status !== 1) {
// return $this->renderError("当前时间段未开放秒杀");
// }
// $where_time = [];
// $where_time[] = ['addtime', 'BETWEEN', [$seckill_statrt_time, $seckill_end_time]];
// $where_time[] = ['goods_id', '=', $goods_id['id']];#商品ID
// #当前时间段购买商品数量
// $buy_num = Db::name('kk_order_good')->field('id')->where($where_time)->sum('goods_num');
// $buy_num = $buy_num + $num;
// if ($buy_num >= $seckill_goods_num) {
// $surplus = $seckill_goods_num - $buy_num;
// return $this->renderError('剩余秒杀数量' . $surplus);
// }
//
// #判断是否满足购买添加
// $start_time = strtotime(date('Y-m-d',time()));
// $end_time = $start_time + 86399;
// $shar_count = Db::name('kk_share')->field('id')->where('share_user_id',$uid)->where('goods_id',$goods_id)->where('addtime','BETWEEN',[$start_time,$end_time])->count();
// if($shar_count < 3){
// return $this->renderError("不满足购买条件");
// }
##秒杀价
$seckill_price = $spec_goods['price'];
##运费
$freight = $info['freight'];
#商品金额 = #秒杀价*数量
$total_price = bcmul("$seckill_price", "$num", 2);
#实际支付 = 商品金额 + 运费
$price = bcadd("$total_price", "$freight", 2);
#余额抵扣
$use_money = 0;
#Woo币抵扣
$use_integral = 0;
#余额抵扣
if ($is_money == 1 && $price > 0) {
if ($user['money'] >= $price) {
$use_money = $price * 1;
$price = 0;
} else {
$use_money = $user['money'];
$price = bcsub("$price", "$use_money", 2);
}
}
#Woo币抵扣
if ($is_integral == 1 && $price > 0) {
if ($user['integral'] >= $price) {
$use_integral = $price;
$price = 0;
} else {
$use_integral = $user['integral'];
$price = bcsub("$price", "$use_integral", 2);
}
}
Db::startTrans();
$res = [];
#订单号
$order_no = create_order_no();
$save_data = [
'user_id' => $uid,
'order_no' => $order_no,
'total_price' => $total_price,#商品金额
'price' => $price,#支付金额
'money' => $use_money,#余额抵扣
'integral' => $use_integral,#Woo币抵扣
'freight_price' => $freight,#运费
'status' => 0,#0待付款 1待发货 2待收货 3确认收货
'content' => $message,
'addtime' => time(),
];
#生成订单
$res[] = $order_id = Db::name('kk_order')->insertGetId($save_data);
#收货地址信息
$res[] = Db::name('kk_order_send')->insert([
'user_id' => $uid,
'order_id' => $order_id,
'shou_name' => $name,
'shou_mobile' => $mobile,
'shou_region' => $address,
]);
#订单商品
$res[] = Db::name('kk_order_good')->insert([
'user_id' => $uid,
'order_id' => $order_id,
'goods_id' => $info['id'],
'goods_name' => $info['title'],
'goods_image' => $info['image'],
'goods_spec_id' => $spec_goods['id'],
'goods_spec' => $spec_goods['name'],
'goods_price' => $spec_goods['price'],
'goods_seckill_price' => $spec_goods['seckill_price'],
'goods_num' => $num,
'addtime' => time(),
]);
// dd($this->app);
$res_pay = new \app\api\controller\Pay($this->app);
$data = $res_pay->pay($order_no,$info['title'],$user['openid'],7);
$data = json_decode($data,true);
if(isset($data['status'])){
Db::rollback();
return $this->renderError("网络故障,请稍后重试(支付参数错误)");
}
if($data['is_weixin'] == 2){
$res = $data['res'];
$new_data['is_weixin'] = $data['is_weixin'];
}else{
$res[] = 1;
$new_data = $data;
}
if (resCheck($res)) {
Db::commit();
return $this->renderSuccess('购买成功',$new_data);
} else {
Db::rollback();
return $this->renderError("购买失败,请刷新重试");
}
}
/**
* 秒杀商城订单
* status 0待付款 1待发货 2待收货 3确认收货
*/
public function seckill_order_list(){
$user = $this->getUser();
$uid = $user['id'];
$where = [];
$status = request()->param('status/d', 0);
if ($status == 1 || $status == 2 || $status == 3) {
$where[] = ['status','=',$status];
} else {
$where[] = ['status','>=',1];
}
$data = Db::name('kk_order')
->field('id,order_no,total_price,price,money,money,freight_price,status,addtime')
->where(['user_id' => $uid])
->order('id desc')
->where($where)
->paginate(10);
$list = $data->items();
$last_page = $data->lastPage();
foreach ($list as $key => &$value) {
#状态
if ($value['status'] == 1) {
$status_name = '待发货';
} else if ($value['status'] == 2) {
$status_name = '待收货';
} else if ($value['status'] == 3) {
$status_name = '已完成';
} else {
$status_name = '未知';
}
#商品
$goods_info = Db::name('kk_order_good')->where(['order_id' => $value['id']])->find();
$goods_info['goods_image'] = imageUrl($goods_info['goods_image']);
$value['status_name'] = $status_name;
$value['goods_info'] = $goods_info;
$value['pay_price'] = bcadd($value['total_price'],$value['freight_price'],2);;
}
$newData = [
'data' => $list,
'last_page' => $last_page,
];
return $this->renderSuccess("请求成功", $newData);
}
/**
* 秒杀商城订单查看详情
* status 0待付款 1待发货 2待收货 3确认收货
*/
public function seckill_order_detail(){
$user = $this->getUser();
$uid = $user['id'];
$id = Request()->param('id/d', 0);
$order_info = Db::name('kk_order')->where('id',$id)->where('user_id',$uid)->find();
if (!$order_info) {
return $this->renderError("参数错误");
}
$goods_info = Db::name('kk_order_good')->where('order_id',$id)->where('user_id',$uid)->find();
if(!$goods_info){
return $this->renderError("参数错误1");
}
$send_info = Db::name('kk_order_send')->where('order_id',$id)->where('user_id',$uid)->find();
if(!$send_info){
return $this->renderError("参数错误2");
}
$newData = [
'shou_name'=>$send_info['shou_name'],
'shou_mobile'=>$send_info['shou_mobile'],
'shou_region'=>$send_info['shou_region'],
'goods_name'=>$goods_info['goods_name'],
'goods_image'=> imageUrl($goods_info['goods_image']),
'goods_num'=>$goods_info['goods_num'],
'goods_spec'=>$goods_info['goods_spec'],
'goods_price'=>$goods_info['goods_price'],
'goods_seckill_price'=>$goods_info['goods_seckill_price'],
'pay_price'=> bcadd($order_info['total_price'],$order_info['freight_price'],2),
'freight_price'=>$order_info['freight_price'],
'order_no'=>$order_info['order_no'],
'pay_time'=>date('Y-m-d H:i:s',$order_info['pay_time']),
];
return $this->renderSuccess("请求成功", $newData);
}
/**
* 秒杀商城订单查看物流
* status 0待付款 1待发货 2待收货 3确认收货
*/
public function seckill_order_logistics(){
$user = $this->getUser();
$uid = $user['id'];
$id = Request()->param('id/d', 0);
$send_info = Db::name('kk_order_send')->where('order_id',$id)->where('user_id',$uid)->find();
if (!$send_info) {
return $this->renderError("参数错误");
}
$goods_info = Db::name('kk_order_good')->where('order_id',$id)->where('user_id',$uid)->find();
if(!$goods_info){
return $this->renderError("参数错误1");
}
$mobile = substr($send_info['shou_mobile'],-4);
$wuliu = getcourier($send_info['delivery_no'].':'.$mobile,$send_info['delivery_name']);
if($wuliu['code'] == 0){
$data = $wuliu['result']['list'];
$status_name = $wuliu['result']['Now_Status'];
}else{
$data = [];
$status_name = '暂无物流';
}
$newData = [
'delivery_name'=>$send_info['delivery_name'],
'delivery_no'=>$send_info['delivery_no'],
'goods_image'=> imageUrl($goods_info['goods_image']),
'goods_num'=>$goods_info['goods_num'],
'status_name'=>$status_name,
'data'=>$data,
];
return $this->renderSuccess("请求成功", $newData);
}
/**
* 秒杀商城订单确认收货
* status 0待付款 1待发货 2待收货 3确认收货
*/
public function seckill_order_confirm(){
$user = $this->getUser();
$uid = $user['id'];
$id = Request()->param('id/d', 0);
$order_info = Db::name('kk_order')->where('id',$id)->where('user_id',$uid)->find();
if (!$order_info) {
return $this->renderError("参数错误");
}
if($order_info['status'] == 3){
return $this->renderError("请求重复操作");
}
if($order_info['status'] != 2){
return $this->renderError("订单状态异常");
}
$res = Db::name('kk_order')->where('id',$id)->update(['status'=>3,'confirm_time'=>time()]);
if($res){
return $this->renderSuccess("收货成功");
}else{
return $this->renderError("收货失败");
}
}
}