223 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace addons\xilufitness\controller;
 | 
						|
 | 
						|
 | 
						|
use addons\xilufitness\services\OrderService;
 | 
						|
/**
 | 
						|
 * @ApiSector(订单中心)
 | 
						|
 * @ApiRoute(addons/xilufitness/order)
 | 
						|
 * @ApiWeigh(1)
 | 
						|
 * @package addons\xilufitness\controller
 | 
						|
 */
 | 
						|
class Order extends Base
 | 
						|
{
 | 
						|
 | 
						|
    protected $noNeedRight = '*';
 | 
						|
 | 
						|
    protected $noNeedLogin = ['getCodeInfo'];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(课程/活动/购买会员卡/充值/下单)
 | 
						|
     * @ApiSummary(课程/活动/购买会员卡/充值/下单)
 | 
						|
     * @ApiRoute(/createOrder)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="id",type="integer",required=true,description="课程/活动/id")
 | 
						|
     * @ApiParams(name="is_type",type="integer",required=true,description="类型 1 团课 2 私教 3 活动 4 购买会员卡 0 充值")
 | 
						|
     * @ApiParams(name="num",type="integer",required=true,description="报名人数")
 | 
						|
     * @ApiParams(name="pay_type",type="integer",required=true,description="支付方式")
 | 
						|
     * @ApiParams(name="user_coupon_id",type="string",required=false,description="优惠券id")
 | 
						|
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						|
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function createOrder(){
 | 
						|
        $id = $this->request->param('id/d',0,'xilufitness_get_id_value');
 | 
						|
        $coupon_id = $this->request->param('user_coupon_id/d',0);
 | 
						|
        $is_type = $this->request->param('is_type/d',1);
 | 
						|
        $pay_type = $this->request->param('pay_type/d',1);
 | 
						|
        $num = $this->request->param('num/d',1);
 | 
						|
        $result = OrderService::getInstance()->createOrder($id,$is_type,$num,$pay_type,$coupon_id);
 | 
						|
        $result['timestamp'] = time() + 60;
 | 
						|
        $result['sign'] = $this->paySign($result['order_id'],$result['order_type'],$result['timestamp']);
 | 
						|
        $this->success('',$result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(订单列表")
 | 
						|
     * @ApiSummary(课程/活动/下单)
 | 
						|
     * @ApiRoute(/getOrderList)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="order_type",type="integer",required=true,description="类型 1 团课 2 私教 3 活动 0 充值")
 | 
						|
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						|
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function getOrderList(){
 | 
						|
        $order_type = $this->request->param('order_type/d',0);
 | 
						|
        $result = OrderService::getInstance()->getOrderList($order_type);
 | 
						|
        $this->success('',$result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(订单详情)
 | 
						|
     * @ApiSummary(订单详情数据)
 | 
						|
     * @ApiRoute(/getDetail)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="id",type="string",required=true,description="订单id")
 | 
						|
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						|
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function getDetail(){
 | 
						|
        $id = $this->request->param('id/s',0,'xilufitness_get_id_value');
 | 
						|
        $result = OrderService::getInstance()->getOrderDetail($id);
 | 
						|
        $this->success('',$result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(获取核销码)
 | 
						|
     * @ApiSummary(获取核销码)
 | 
						|
     * @ApiRoute(/getCodeInfo)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="id",type="string",required=true,description="订单id")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function getCodeInfo(){
 | 
						|
        $urls = $this->request->url(true);
 | 
						|
        $qrCode = new \QRcode();
 | 
						|
        ob_clean();
 | 
						|
        header('Content-Type: image/png');
 | 
						|
        $errorLevel = "L";//定义生成图片宽度和高度;默认为3
 | 
						|
        $size = "10";//定义生成内容
 | 
						|
        $qrCode::png($urls,false,$errorLevel,$size);
 | 
						|
        exit();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(取消订单)
 | 
						|
     * @ApiSummary(取消订单)
 | 
						|
     * @ApiRoute(/cancelOrder)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="id",type="string",required=true,description="订单id")
 | 
						|
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						|
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function cancelOrder(){
 | 
						|
        $id = $this->request->param('id',0,'xilufitness_get_id_value');
 | 
						|
        $result =  OrderService::getInstance(['mini_config' => $this->miniConfig])->cancelOrder($id ?? 0);
 | 
						|
        if($result['code'] == 1){
 | 
						|
            $this->success('取消成功');
 | 
						|
        } else {
 | 
						|
            $this->error($result['msg'] ?? '取消失败');
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(订单核销)
 | 
						|
     * @ApiSummary(订单核销)
 | 
						|
     * @ApiRoute(/confirmOrder)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="urls",type="string",required=true,description="二维码内容")
 | 
						|
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						|
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function confirmOrder(){
 | 
						|
        $url = $this->request->param('urls','','urldecode');
 | 
						|
        preg_match('/\d+/i',$url,$ids);
 | 
						|
        if(empty($url)){
 | 
						|
            $this->error('二维码内容获取失败');
 | 
						|
        }
 | 
						|
        if(empty($ids)){
 | 
						|
            $this->error('二维码内容解析失败');
 | 
						|
        }
 | 
						|
        $result = OrderService::getInstance()->confirmOrder($ids[0] ?? 0);
 | 
						|
        if($result['code'] == 1){
 | 
						|
            $this->success('核销成功');
 | 
						|
        } else {
 | 
						|
            $this->error('核销失败');
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(订单评论)
 | 
						|
     * @ApiSummary(订单评论)
 | 
						|
     * @ApiRoute(/commentOrder)
 | 
						|
     * @ApiMethod(post)
 | 
						|
     * @ApiParams(name="order_id",type="integer",required=true,description="订单id")
 | 
						|
     * @ApiParams(name="profession_star",type="integer",required=true,description="专业度")
 | 
						|
     * @ApiParams(name="affinity_star",type="integer",required=true,description="亲和力")
 | 
						|
     * @ApiParams(name="impression_star",type="integer",required=true,description="印象")
 | 
						|
     * @ApiParams(name="content",type="string",required=true,description="评论内容")
 | 
						|
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						|
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function commentOrder(){
 | 
						|
        $order_id = $this->request->param('order_id',0,'xilufitness_get_id_value');
 | 
						|
        $profession_star = $this->request->param('profession_star/d',0);
 | 
						|
        $affinity_star = $this->request->param('affinity_star/d',0);
 | 
						|
        $impression_star = $this->request->param('impression_star/d',0);
 | 
						|
        $content = $this->request->param('content/s');
 | 
						|
        $result = OrderService::getInstance()->addOrderComment($order_id,$profession_star,$affinity_star,$impression_star,$content);
 | 
						|
        if($result['code'] == 1){
 | 
						|
            $this->success('评论成功');
 | 
						|
        } else {
 | 
						|
            $this->error($result['msg'] ?? '评论失败');
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
} |