15090180611 e9bbe382a2 用户端:付费单策略内取消自动退款
活动取消已下单自动取消并退全款流程
订单未支付自动取消定时任务
活动更新状态定时任务
活动结算单生成和结算单解冻定时任务
2025-04-11 18:17:29 +08:00

269 lines
8.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\controller\school\newactivity;
use app\api\controller\school\Base;
use app\common\model\school\activity\order\Order as OrderModel;
use app\common\model\school\activity\order\OrderCode;
/**
* 用户端:新活动订单接口
*/
class Order extends Base
{
protected $noNeedLogin = [];
protected $noNeedRight = '*';
protected $model = null;
/**
* 初始化操作
* @access protected
*/
protected function _initialize()
{
$this->model = new OrderModel;
parent::_initialize();
$this->setUrlLock();
}
/**
* @ApiTitle( 我的活动订单详情)
* @ApiSummary(我的活动订单详情)
* @ApiMethod(GET)
* @ApiParams(name = "id", type = "int",required=true,description = "订单id或订单号")
* @ApiReturn({
*
*})
*/
public function detail(){
$id = $this->request->get('id/d','');
if(empty($id)){
$this->error(__('缺少必要参数'));
}
try {
$res = OrderModel::getDetail($id);
} catch (\Exception $e){
// Log::log($e->getMessage());
$this->error($e->getMessage(),['errcode'=>$e->getCode()]);
}
$this->success('获取成功', ['detail' => $res]);
}
/**
* @ApiTitle( 我的活动订单列表接口)
* @ApiSummary(我的活动订单列表接口)
* @ApiMethod(GET)
* @ApiParams(name = "keywords", type = "string",required=false,description = "搜索关键字")
* @ApiParams(name = "page", type = "string",required=true,description = "页数")
* @ApiParams(name = "limit", type = "string",required=true,description = "条数")
* @ApiParams(name = "status", type = "string",required=false,description = "订单状态:-3=已取消,0=待支付,2=已报名,3=核销中,4=售后中,5=退款结算中,6=已退款,9=已完成")
* @ApiParams(name = "server_status", type = "string",required=false,description = "售后订单状态:0=正常,3=售后中,6=售后完成")
* @ApiParams(name = "auth_status", type = "string",required=false,description = "售后结果状态:0=待审核,1=同意退款,2=拒绝退款")
* @ApiParams(name = "activity_id", type = "int",required=false,description = "活动id")
* @ApiReturn({
*
*})
*/
public function order_list()
{
$user_id = 0;
$user = $this->auth->getUser();//登录用户
if($user)$user_id = $user['id'];
$page = $this->request->get('page/d', 0); //页数
$limit = $this->request->get('limit/d', 0); //条数
$keywords = $this->request->get('keywords/s', ''); //搜索关键字
$status = $this->request->get('status/s', ''); //搜索关键字
$server_status = $this->request->get('server_status/s', ''); //搜索关键字
$params = [];
$params["auth_status"] = $this->request->get('auth_status/s', ''); //搜索关键字
$activity_id = $this->request->get('activity_id/s', ''); //搜索关键字
$has_evaluate = $this->request->get('has_evaluate/d', 0); //搜索关键字
// $type = $this->request->get('type/s', ''); //筛选学员和教练单
try{
//当前申请状态
$res = $this->model::allList($user_id,$page, $limit,$keywords,$status,$activity_id,$has_evaluate,$server_status,$params);
// if($user_id =='670153'){
// file_put_contents("ceshi66.txt",(new AppointmentOrder())->getLastSql());
// }
}catch (\Exception $e){
$this->error($e->getMessage());
}
$this->success('查询成功', $res);
}
/**
* @ApiTitle( 我的活动订单数量接口)
* @ApiSummary(返回订单各个数量)
* @ApiMethod(GET)
* @ApiParams(name = "activity_id", type = "int",required=false,description = "活动id非必填")
* @ApiReturn({
*
*})
*/
public function order_count(){
$user_id = 0;
$user = $this->auth->getUser();//登录用户
if($user)$user_id = $user['id'];
$activity_id = $this->request->get('activity_id/s', ''); //搜索关键字
try{
$res = $this->model::orderCount($user_id,$activity_id);
}catch (\Throwable $e){
$this->error($e->getMessage());
}
$this->success('查询成功', $res);
}
/**
* @ApiTitle( 订单确认/订单计算接口)
* @ApiSummary(订单确认/订单计算接口【有过期时间】)
* @ApiMethod(POST)
* @ApiParams(name = "activity_id", type = "int",required=true,description = "活动id")
* @ApiParams(name = "order_no", type = "string",required=false,description = "缓存key")
* @ApiParams(name = "num", type = "int",required=true,description = "购买人数")
* @ApiParams(name = "is_compute", type = "int",required=false,description = "是否重新计算并更新缓存 默认传1")
* @ApiReturn({
*
*})
*/
public function confirm(){
$user_id = 0;
$user = $this->auth->getUser();//登录用户
if($user)$user_id = $user['id'];
$activity_id = $this->request->post('activity_id/d', 0); //课程id
$num = $this->request->post('num/d', 0); //想同时约的课时id
// $param = urldecode($this->request->post('param/s', "{}")); //参数
$param = [];
//参数
$order_no = $this->request->post('order_no/s', ''); //订单号
$is_compute = $this->request->post('is_compute/d', 1); //是否重新计算并更新缓存
try{
//当前申请状态
$res = $this->model->confirm($user_id, $activity_id,$num,$order_no,$param, $is_compute);
}catch (\Exception $e){
// Log::log($e->getMessage());
$this->error($e->getMessage(),['errcode'=>$e->getCode()]);
}
$this->success('执行成功可用缓存key下单', $res);
}
/**
* @ApiTitle( 订单下单接口)
* @ApiSummary(订单下单接口)
* @ApiMethod(POST)
* @ApiParams(name = "order_no", type = "string",required=true,description = "缓存key")
* @ApiReturn({
*
*})
*/
public function create(){
$user_id = 0;
$user = $this->auth->getUser();//登录用户
if($user)$user_id = $user['id'];
$order_no = $this->request->post('order_no/s', ''); //订单号
$remark = $this->request->post('remark/s', ''); //下单备注
$this->setUrlLock("only");
// repeat_filter("appointment\order\create".$user_id, 2);
try{
//当前申请状态
$res = $this->model->cacheCreateOrder($order_no,$user_id,$remark,true);
}catch (\Throwable $e){
// file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
// Log::log($e->getMessage());
$this->error($e->getMessage(),['errcode'=>$e->getCode()]);;
}
$this->success('订单创建成功缓存key被消耗', $res);
}
/**
* @ApiTitle(免费单和未支付单取消接口)
* @ApiSummary(活动单取消接口(免费单和未支付单取消))
* @ApiMethod(POST)
* @ApiParams(name = "order_no", type = "string",required=true,description = "订单号")
* @ApiReturn({
*
*})
*/
public function freecancel(){
$user_id = 0;
$user = $this->auth->getUser();//登录用户
if($user)$user_id = $user['id'];
$order_no = $this->request->post('order_no/s', ''); //订单号
try{
//当前申请状态
$res = $this->model->freeCancel($order_no,$user_id,true,'user',$user_id,true);
}catch (\Throwable $e){
$this->error($e->getMessage());
}
$this->success('活动订单取消成功', $res);
}
/**
* @ApiTitle(付费活动支付后取消接口)
* @ApiSummary(付费活动支付后取消接口(支付后,活动开始前))
* @ApiMethod(POST)
* @ApiParams(name = "order_no", type = "string",required=true,description = "订单号")
* @ApiReturn({
*
*})
*/
public function paidcancel(){
$user_id = 0;
$user = $this->auth->getUser();//登录用户
if($user)$user_id = $user['id'];
$order_no = $this->request->post('order_no/s', ''); //订单号
try{
//当前申请状态
$res = $this->model->paidCancel($order_no,$user_id,true,'user',$user_id,false,true);
}catch (\Throwable $e){
$this->error($e->getMessage());
}
$this->success('活动订单取消成功', $res);
}
}