baji/app/api/controller/Product.php
2025-03-03 14:47:45 +08:00

397 lines
12 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\Advert;
use app\common\model\User;
use app\common\model\ProductCate;
use app\common\model\ProductOrder;
use app\common\model\ProductOrderList;
use \think\Request;
class Product extends Base
{
//商品列表
public function index(Request $request){
$cate_id = $request->param("cate_id");
$type = $request->param("type") == ''?'1':$request->param("type");
$whe_advert = [];
$whe_advert[] = ['type','=','1'];
$advert = Advert::getAllList($whe_advert,'id,imgurl','sort desc,id desc');
foreach ($advert as $key => &$val) {
$val['imgurl'] = imageUrl($val['imgurl']);
}
//一级
$w = [];
$w[] = ['status','=','1'];
$w[] = ['pid','=','0'];
$cate = ProductCate::getAllList($w,'id,title',"sort desc,id desc");
$ca = [];
$ca[0]['id'] = '';
$ca[0]['title'] = '全部';
foreach($cate as $k=>$v){
$ca[$k+1] = $v;
}
$cate = $ca;
$whe = [];
$whe[] = ['status','=','1'];
if(!empty($cate_id)){
$whe[] = ['cate_id','=',$cate_id];
}
if($type==1){
$order = "id desc";
}elseif($type==2){
$order = "integral desc,id desc";
}elseif($type==3){
$order = "integral asc,id desc";
}elseif($type==4){
$whe[] = ['integral','=',0];
$order = "integral asc,id desc";
}
$field="id,title,imgurl,integral,money";
$data = Productmodel::getList($whe,$field,$order,$this->page);
foreach($data['list'] as $k=>&$v){
$v['imgurl'] = imageUrl($v['imgurl']);
}
$result = $data;
return $this->renderSuccess("请求成功",compact('advert','cate','result'));
}
/**
* 商品详情
*/
public function detail(Request $request){
$product_id = $request->param("product_id");
$whe = [];
$whe[] = ['id','=',$product_id];
$whe[] = ['status','=','1'];
$product = Productmodel::getInfo($whe,'*');
$arr = [];
$arr[] = imageUrl($product['imgurl']);
$product['imgurl'] = $arr;
$product['content'] = contentImage($product['content']);
return $this->renderSuccess("请求成功",compact('product'));
}
/**
* 兑换
*/
public function order(Request $request){
$product_id = $request->param("product_id");
$num = $request->param("num");
if($num < 1){
return $this->renderError("兑换数量最少1个");
}
$whe = [];
$whe[] = ['id','=',$product_id];
$whe[] = ['status','=','1'];
$product = Productmodel::getInfo($whe,'id,title,imgurl,money,integral');
$product['imgurl'] = imageUrl($product['imgurl']);
$total_money = jisuan($num,$product['money'],'*',2);
$total_integral = jisuan($num,$product['integral'],'*',2);
$product['num'] = $num;
$product['total_money'] = $total_money;
$product['total_integral'] = $total_integral;
$user = $this->getUser();
$integral = $user['jifen'];
return $this->renderSuccess("请求成功",compact('product',"integral"));
}
/**
* 开始兑换
*/
public function orderadd(Request $request){
$product_id = $request->param("product_id");
$num = $request->param("num");
$province = $request->param("province");
$city = $request->param("city");
$county = $request->param("county");
$address = $request->param("address");
$name = $request->param("name");
$mobile = $request->param("mobile");
$remark = $request->param("remark");
if(empty($province)){
return $this->renderError("请输入收货省");
}
if(empty($city)){
return $this->renderError("请输入收货市");
}
if(empty($county)){
return $this->renderError("请输入收货县");
}
if(empty($address)){
return $this->renderError("请输入收货地址");
}
if(empty($name)){
return $this->renderError("请输入收货姓名");
}
if(empty($mobile)){
return $this->renderError("请输入收货手机号");
}
if($num < 1){
return $this->renderError("兑换数量最少1个");
}
$user = $this->getUser();
$whe = [];
$whe[] = ['id','=',$product_id];
$whe[] = ['status','=','1'];
$product = Productmodel::getInfo($whe,'id,title,imgurl,money,integral,yunfei');
$total_money = jisuan(jisuan($num,$product['money'],'*',2),$product['yunfei'],'+',2);
$total_integral = jisuan($num,$product['integral'],'*',2);
$arr = [];
$order_num = create_order_number();
$arr['user_id'] = $user['id'];
$arr['order_num'] = $order_num;
$arr['total_money'] = $total_money;
$arr['total_integral'] = $total_integral;
$arr['total_integral'] = $total_integral;
$arr['status'] = 1;
$arr['addtime'] = time();
$arr['name'] = $name;
$arr['mobile'] = $mobile;
$arr['province'] = $province;
$arr['city'] = $city;
$arr['county'] = $county;
$arr['address'] = $address;
$arr['remark'] = $remark;
if($user['jifen'] < $total_integral){
return $this->renderError("您的积分余额不足");
}
$dd = ProductOrder::insertGetId($arr);
//添加订单详情
$row = [];
$row['order_id'] = $dd;
$row['order_num'] = $order_num;
$row['product_id'] = $product_id;
$row['title'] = $product['title'];
$row['imgurl'] = $product['imgurl'];
$row['money'] = $product['money'];
$row['integral'] = $product['integral'];
$row['num'] = $num;
$row['status'] = 1;
$row['addtime'] = time();
$pl = ProductOrderList::insert($row);
if($dd && $pl){
if($total_money > 0){
//需要调佣微信支付 唤起支付
$pay = new \app\api\controller\Pay($this->app);
$data = $pay->pay($order_num,$product['title'],$user['openid'],4);
return $this->renderSuccess("请求成功",json_decode($data,true));
}
$notify = new \app\api\controller\Notify($this->app);
$data = $notify->order_update($order_num,4);
if($data==1){
$data = [];
$data['is_weixin'] = 2;
return $this->renderSuccess("兑换成功",$data);
}
}
}
/**
* 积分商城订单
*/
public function orderlist(Request $request){
$user = $this->getUser();
$type = $request->param('type') == ''?'1':$request->param('type'); //1全部 2待支付 3代发货 4待收货 5已完成
$whe = [];
if($type==1){
}elseif($type==2){
$whe[] = ['status','=','1'];
}elseif($type==3){
$whe[] = ['status','=','2'];
}elseif($type==4){
$whe[] = ['status','=','3'];
}elseif($type==5){
$whe[] = ['status','=','4'];
}
$whe[] = ['user_id','=',$user['id']];
$field = "id,order_num,total_integral,total_money,status";
$data = ProductOrder::getList($whe,$field,'id desc',$this->page);
foreach($data['list'] as $k=>&$v){
$product = ProductOrderList::getInfo(['order_id'=>$v['id']]);
$v['title'] = $product['title'];
$v['num'] = $product['num'];
$v['imgurl'] = imageUrl($product['imgurl']);
}
return $this->renderSuccess("请求成功",$data);
}
/**
* 订单详情
*/
public function order_detail(Request $request){
$user = $this->getUser();
$order_id = $request->param("order_id");
$whe = [];
$whe[] = ['id','=',$order_id];
$whe[] = ['user_id','=',$user['id']];
$order = ProductOrder::getInfo($whe,'*');
if(empty($order)){
return $this->renderError("请求异常,请稍后重试");
}
$order_info = ProductOrderList::getInfo(['order_id'=>$order_id],'*');
$order['imgurl'] = imageUrl($order_info['imgurl']);
$order['title'] = $order_info['title'];
$order['num'] = $order_info['num'];
$order['money'] = $order_info['money'];
$order['integral'] = $order_info['integral'];
$order['addtime'] = date("Y-m-d H:i:s",$order['addtime']);
if(!empty($order['pay_time'])){
$order['pay_time'] = date("Y-m-d H:i:s",$order['pay_time']);
}else{
$order['pay_time'] = "暂无";
}
if(!empty($order['fa_time'])){
$order['deliver_time'] = date("Y-m-d H:i:s",$order['fa_time']);
}else{
$order['deliver_time'] = "暂无";
}
if(!empty($order['end_time'])){
$order['confirm_time'] = date("Y-m-d H:i:s",$order['end_time']);
}else{
$order['confirm_time'] = "暂无";
}
return $this->renderSuccess("请求成功",$order);
}
/**
* 立即支付
*/
public function orderpay(Request $request){
$user = $this->getUser();
$order_id = $request->param("order_id");
$whe = [];
$whe[] = ['id','=',$order_id];
$order = ProductOrder::getInfo($whe,'*');
if($order['status']!='1'){
return $this->renderError("请求异常,请稍后重试");
}
if($order['total_money'] > 0){
$arr = [];
$arr['order_num'] = create_order_number();
ProductOrder::where($whe)->update($arr);
//需要调佣微信支付 唤起支付
$pay = new \app\api\controller\Pay($this->app);
$title= ProductOrderList::where(['order_id'=>$order_id])->value("title");
$data = $pay->pay($arr['order_num'],$title,$user['openid'],4);
return $this->renderSuccess("请求成功",json_decode($data,true));
}else{
return $this->renderError("请求异常,请稍后重试");
}
}
/**
*
*/
public function order_cancel(Request $request){
$user = $this->getUser();
$order_id = $request->param("order_id");
$whe = [];
$whe[] = ['id','=',$order_id];
$order = ProductOrder::getInfo($whe,'*');
if($order['status']!='1'){
return $this->renderError("该订单已支付,暂不能取消");
}
$arr = [];
$arr['status'] = 5;
$dd = $order->save($arr);
if($dd){
return $this->renderSuccess("订单取消成功");
}
}
/**
* 确认收货
*/
public function over_order(Request $request){
$user = $this->getUser();
$order_id = $request->param("order_id");
$whe = [];
$whe[] = ['id','=',$order_id];
$order = ProductOrder::getInfo($whe,'*');
if($order['status']!='3'){
return $this->renderError("请求异常,请稍后重试");
}
$arr = [];
$arr['status'] = 4;
$dd = $order->save($arr);
if($dd){
return $this->renderSuccess("确认收货成功");
}
}
/**
* 查看物流信息
*/
public function express(Request $request){
$user = $this->getUser();
$order_id = $request->param("order_id");
$whe = [];
$whe[] = ['id','=',$order_id];
$order = ProductOrder::getInfo($whe,'id,order_num,courier_number,courier_name,mobile');
$order_info = ProductOrderList::getInfo(['order_id'=>$order_id],'*');
$order['imgurl'] = imageUrl($order_info['imgurl']);
$mobile = substr($order['mobile'],-4);
$order['title'] = $order_info['title'];
$order['num'] = $order_info['num'];
$order['wuliu'] = $this->getcourier($order['courier_number'].':'.$mobile,$order['courier_name']);
return $this->renderSuccess('请求成功',$order);
}
/**
* 查询物流信息
*/
public function getcourier($no,$express_name=''){
$host = "https://kdcx.market.alicloudapi.com";
$path = "/express";
$method = "POST";
$appcode = "5d7aefe1b4f548bbbc5cbdbfe4807f35";
$headers = array();
array_push($headers, "Authorization:APPCODE " . $appcode);
$querys = "express_id=".$no."&express_name=".$express_name;
$bodys = "";
$url = $host . $path . "?" . $querys;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
if (1 == strpos("$".$host, "https://"))
{
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
$out_put = curl_exec( $curl );
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
list($header, $body) = explode("\r\n\r\n", $out_put, 2);
$body = json_decode($body,true);
return $body;
}
}