erp_old/app/api/controller/order/RetailOrderController.php

212 lines
7.1 KiB
PHP
Raw Normal View History

2024-04-26 11:26:12 +08:00
<?php
namespace app\api\controller\order;
use app\admin\logic\order\CartLogic;
2024-04-30 14:14:30 +08:00
use app\admin\logic\retail\CashierclassLogic;
2024-04-26 11:26:12 +08:00
use app\api\logic\order\OrderLogic;
use app\api\controller\BaseApiController;
2024-04-29 16:36:12 +08:00
use app\api\lists\order\RetailOrderList;
2024-05-06 14:02:15 +08:00
use app\api\service\WechatUserService;
2024-04-26 11:26:12 +08:00
use app\common\logic\order\RetailOrderLogic;
use app\common\enum\PayEnum;
2024-05-06 14:02:15 +08:00
use app\common\logic\PaymentLogic;
2024-04-26 11:26:12 +08:00
use app\common\model\order\Cart;
2024-04-29 16:36:12 +08:00
use app\common\model\retail\Cashierclass;
2024-04-26 11:26:12 +08:00
use app\common\model\user\User;
2024-05-06 14:02:15 +08:00
use app\common\service\wechat\WeChatConfigService;
2024-05-06 14:51:06 +08:00
use support\Log;
2024-04-26 11:26:12 +08:00
class RetailOrderController extends BaseApiController
{
2024-04-29 16:36:12 +08:00
/**
* 订单列表
*/
public function order_list(){
return $this->dataLists(new RetailOrderList());
}
2024-04-30 18:01:52 +08:00
public function order_count(){
$userId=$this->request->userId;
$where=['uid'=>$userId,'paid'=>0];
$no_pay=Cashierclass::where($where)->count();
$where['paid']=1;
$where['status']=0;
$waiting=Cashierclass::where($where)->count();
$where['status']=1;
$receiving=Cashierclass::where($where)->count();
return $this->success('ok',['no_pay'=>$no_pay,'waiting'=>$waiting,'receiving'=>$receiving]);
}
2024-04-29 16:36:12 +08:00
/**
* @notes 检测零售订单
*/
2024-04-26 11:26:12 +08:00
public function checkOrder(){
$cartId = (Array)$this->request->post('cart_id', []);
$addressId = (int)$this->request->post('address_id');
$pay_type = (int)$this->request->post('pay_type');
$auth_code = $this->request->post('auth_code'); //微信支付条码
$params=$this->request->post();
$res=OrderLogic::cartIdByOrderInfo($cartId,$addressId,null,$params);
2024-04-29 16:36:12 +08:00
if($res==false){
$msg=OrderLogic::getError();
if($msg=='购物车为空'){
return $this->data([]);
}
return $this->fail(OrderLogic::getError());
}
2024-04-26 11:26:12 +08:00
return $this->data($res);
}
/**
* @notes 创建零售订单
*/
public function createOrder(){
2024-05-06 20:28:49 +08:00
2024-05-06 14:30:09 +08:00
// d(WeChatConfigService::getPayConfigByTerminal(1));
2024-04-26 11:26:12 +08:00
$user=User::where('id',$this->request->userId)->find();
$cartId = (Array)$this->request->post('cart_id', []);
2024-04-30 14:14:30 +08:00
$mer_id = (Array)$this->request->post('mer_id', 0);
if($mer_id<=0){
return $this->fail('自提点不能为空');
}
2024-04-29 16:36:12 +08:00
if(count($cartId)>100){
return $this->fail('购物车商品不能超过100个');
}
2024-04-26 11:26:12 +08:00
$addressId = (int)$this->request->post('address_id');
$pay_type = (int)$this->request->post('pay_type');
$auth_code = $this->request->post('auth_code'); //微信支付条码
$params=$this->request->post();
$order=OrderLogic::createOrder($cartId,$addressId,null,$params);
2024-04-27 11:41:34 +08:00
if($order!=false){
2024-04-26 11:26:12 +08:00
if($pay_type==PayEnum::BALANCE_PAY){
$user=User::where('id',$this->request->userId)->find();
2024-04-27 11:41:34 +08:00
$res=RetailOrderLogic::payBalance($user,$order);
if($res==true){
$res=RetailOrderLogic::paySuccess($order, ['money'=>$order['actual']]);
if($res){
}else{
return $this->fail(RetailOrderLogic::getError());
}
}else{
return $this->fail(RetailOrderLogic::getError());
}
2024-05-06 14:02:15 +08:00
}elseif($pay_type==PayEnum::WECHAT_PAY){
$redirectUrl = $params['redirect'] ?? '/pages/payment/payment';
2024-05-06 14:35:22 +08:00
$result = PaymentLogic::pay($pay_type,'cashierclass', $order, $this->userInfo['terminal'], $redirectUrl);
2024-05-06 14:02:15 +08:00
if (false === $result) {
return $this->fail(PaymentLogic::getError(), $params);
}
return $this->success('', $result);
2024-04-26 11:26:12 +08:00
}
return $this->data(['order_id'=>$order->id]);
}else{
return $this->fail(OrderLogic::getError());
}
}
2024-04-29 16:36:12 +08:00
/**
* 重新支付
*/
public function Repayment(){
$order_id = (int)$this->request->post('order_id');
$pay_type = (int)$this->request->post('pay_type');
$where=[
2024-05-06 14:51:06 +08:00
'id'=>$order_id,
2024-04-29 16:36:12 +08:00
'uid'=>$this->userId,
'paid'=>0,
];
$order=Cashierclass::where($where)->find();
if($pay_type==PayEnum::BALANCE_PAY){
$user=User::where('id',$this->request->userId)->find();
$res=RetailOrderLogic::payBalance($user,$order);
if($res==true){
$res=RetailOrderLogic::paySuccess($order, ['money'=>$order['actual']]);
if($res){
}else{
return $this->fail(RetailOrderLogic::getError());
}
}else{
return $this->fail(RetailOrderLogic::getError());
}
2024-05-07 10:03:45 +08:00
}elseif($pay_type==PayEnum::WECHAT_PAY){
$redirectUrl = $params['redirect'] ?? '/pages/payment/payment';
$result = PaymentLogic::pay($pay_type,'cashierclass', $order, $this->userInfo['terminal'], $redirectUrl);
if (false === $result) {
return $this->fail(PaymentLogic::getError());
}
return $this->success('', $result);
2024-04-29 16:36:12 +08:00
}
return $this->fail('支付失败');
}
2024-04-30 14:14:30 +08:00
public function detail(){
$order_id = (int)$this->request->get('order_id');
$where=[
'id'=>$order_id,
'uid'=>$this->userId,
];
$order=CashierclassLogic::detail($where);
if($order){
return $this->data($order);
}else{
return $this->fail('订单不存在');
}
}
2024-04-29 16:36:12 +08:00
/**
* 获取用户常用购买记录
*/
public function frequently_purchase(){
$params=$this->request->get();
$res=RetailOrderLogic::frequentlyPurchase($params);
2024-05-07 17:33:28 +08:00
if(RetailOrderLogic::hasError()){
2024-04-29 16:36:12 +08:00
return $this->fail(RetailOrderLogic::getError());
}else{
return $this->data($res);
}
}
2024-05-07 10:10:05 +08:00
/**
* 取消订单
*/
public function cancel_order(){
$order_id = (int)$this->request->post('order_id');
$value = (int)$this->request->post('value');
$where=[
'id'=>$order_id,
'uid'=>$this->userId,
'paid'=>0,
];
$order=Cashierclass::where($where)->find();
if($order){
$data=['data'=>$value,'delete_time'=>time()];
Cashierclass::where($where)->update($data);
return $this->success('取消成功');
}
return $this->fail('取消失败');
}
2024-05-08 09:41:50 +08:00
/**
* 确认收货
*/
public function confirm_receipt(){
$order_id = (int)$this->request->post('order_id');
$where=[
'id'=>$order_id,
'uid'=>$this->userId,
'paid'=>1,
'status'=>1,
];
$order=Cashierclass::where($where)->find();
if($order){
$data=['status'=>2];
Cashierclass::where($where)->update($data);
return $this->success('确认成功');
}
return $this->fail('确认失败');
}
2024-04-26 11:26:12 +08:00
}