332 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			332 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						||
 | 
						||
namespace addons\xilufitness\controller;
 | 
						||
 | 
						||
use addons\xilufitness\model\TimesCardShare;
 | 
						||
use addons\xilufitness\model\UserCard;
 | 
						||
use addons\xilufitness\services\CardService;
 | 
						||
use think\exception\DbException;
 | 
						||
use think\Log;
 | 
						||
 | 
						||
/**
 | 
						||
 * @ApiSector(会员卡控制器)
 | 
						||
 * @ApiRoute(addons/xilufitness/card)
 | 
						||
 * @ApiWeigh(1)
 | 
						||
 * @package addons\xilufitness\controller
 | 
						||
 */
 | 
						||
class Card extends Base
 | 
						||
{
 | 
						||
 | 
						||
    protected $noNeedRight = '*';
 | 
						||
    protected $noNeedLogin = 'getCardTypeList';
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(获取用户会员卡)
 | 
						||
     * @ApiSummary(获取用户会员卡)
 | 
						||
     * @ApiRoute(/index)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiParams(name="card_type",type="string", require=false,description="会员卡类别 1:次卡 2:时长卡 3:单次卡")
 | 
						||
     * @ApiParams(name="user_card_id",type="string", require=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 index(){
 | 
						||
        $card_type = $this->request->param('card_type/s');
 | 
						||
        $result = CardService::getInstance()->getUserCardList($card_type);
 | 
						||
        $this->success('',$result);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(购买会员卡)
 | 
						||
     * @ApiSummary(购买会员卡)
 | 
						||
     * @ApiRoute(/buyUserCard)
 | 
						||
     * @ApiMethod(POST)
 | 
						||
     * @ApiParams(name="card_category_id",type="integer", require=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 buyUserCard()
 | 
						||
    {
 | 
						||
        $card_category_id = $this->request->param('card_category_id/d');
 | 
						||
        $result = CardService::getInstance()->buyUserCard($card_category_id);
 | 
						||
        return $result;
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(获取会员卡核销码)
 | 
						||
     * @ApiSummary(获取会员卡核销码)
 | 
						||
     * @ApiRoute(/getUserCardCodeInfo)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiParams(name="user_card_id",type="string",required=true,description="会员卡ID")
 | 
						||
     * @ApiParams(name="share_id",type="integer", require=false,description="分享ID")
 | 
						||
     * @ApiParams(name="check_type",type="integer", require=true,description="核销码类型 1:会员卡 2:单次卡")
 | 
						||
     * @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" => {}
 | 
						||
     *})
 | 
						||
     * @throws DbException
 | 
						||
     */
 | 
						||
    public function getUserCardCodeInfo(){
 | 
						||
        $user_card_id = $this->request->param('user_card_id/s');
 | 
						||
        $share_id = $this->request->param('share_id/s');
 | 
						||
        $check_type = $this->request->param('check_type/s') ?? 1;
 | 
						||
        if ($check_type==1) {
 | 
						||
            Log::log($user_card_id);
 | 
						||
            $user_card = new UserCard();
 | 
						||
            $result = $user_card->get($user_card_id);
 | 
						||
            $info['user_card_id'] = $result->id;
 | 
						||
            $info['brand_id'] = $result->brand_id;
 | 
						||
            $info['user_id'] = $result->user_id;
 | 
						||
            $info['card_type'] = $result->card_type;
 | 
						||
            //失效时间当前时间加30s
 | 
						||
            $info['expire_time'] = time() + 30;
 | 
						||
        }
 | 
						||
 | 
						||
        if ($check_type==2) {
 | 
						||
            Log::log($share_id);
 | 
						||
            $share_card = new TimesCardShare();
 | 
						||
            $result = $share_card->get($share_id);
 | 
						||
            $info['share_id'] = $result->id;
 | 
						||
            $info['brand_id'] = $this->brand_id;
 | 
						||
            $info['user_id'] = $result->to_user_id;
 | 
						||
            $info['user_card_id'] = $result->user_card_id;
 | 
						||
            $info['card_type'] = 3;
 | 
						||
            $info['expire_time'] = time() + 30;
 | 
						||
        }
 | 
						||
 | 
						||
        $qrCode = new \QRcode();
 | 
						||
        ob_start(); // 开启输出缓冲
 | 
						||
        $errorLevel = "L";
 | 
						||
        $size = 10;
 | 
						||
        $qrCode::png(json_encode($info), false, $errorLevel, $size);
 | 
						||
        $imageString = ob_get_contents(); // 获取缓冲区内容
 | 
						||
        ob_end_clean(); // 清空并关闭输出缓冲
 | 
						||
        $base64Image = 'data:image/png;base64,' . base64_encode($imageString); // 转换为Base64编码
 | 
						||
        return json(['qrcode' => $base64Image]); // 返回Base64编码的图片
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(获取会员卡类别列表)
 | 
						||
     * @ApiSummary(获取会员卡类别列表)
 | 
						||
     * @ApiRoute(/getCardTypeList)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						||
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						||
     * @ApiParams(name="card_type",type="string", require=false,description="会员卡类别 1:次卡 2:时长卡")
 | 
						||
     * @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 getCardTypeList(){
 | 
						||
        $card_type = $this->request->param('card_type/s');
 | 
						||
        $result = CardService::getInstance()->getCardTypeList($card_type);
 | 
						||
        $this->success('',$result);
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(获取会员卡详细信息)
 | 
						||
     * @ApiSummary(获取会员卡详细信息)
 | 
						||
     * @ApiRoute(/getCardTypeInfo)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						||
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						||
     * @ApiParams(name="card_category_id",type="integer", require=true,description="会员卡类别ID")
 | 
						||
     * @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 getCardTypeInfo(){
 | 
						||
        $card_category_id = $this->request->param('card_category_id/s');
 | 
						||
        $result = CardService::getInstance()->getCardTypeInfo($card_category_id);
 | 
						||
        $this->success('',$result);
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(次卡分享)
 | 
						||
     * @ApiSummary(次卡分享)
 | 
						||
     * @ApiRoute(/timesCardShare)
 | 
						||
     * @ApiMethod(POST)
 | 
						||
     * @ApiParams(name="user_card_id",type="integer", require=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 timesCardShare()
 | 
						||
    {
 | 
						||
        $user_card_id = $this->request->param('user_card_id/s');
 | 
						||
        $result = CardService::getInstance()->timesCardShare($user_card_id);
 | 
						||
        $this->success('次卡分享成功',$result);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(核销会员卡)
 | 
						||
     * @ApiSummary(核销会员卡)
 | 
						||
     * @ApiRoute(/userCardVerification)
 | 
						||
     * @ApiMethod(POST)
 | 
						||
     * @ApiParams(name="brand_id",type="integer", require=true,description="商户ID")
 | 
						||
     * @ApiParams(name="user_card_id",type="String", require=false,description="会员卡ID")
 | 
						||
     * @ApiParams(name="share_id",type="integer", require=false,description="分享ID")
 | 
						||
     * @ApiParams(name="user_id",type="integer", require=true,description="用户iD")
 | 
						||
     * @ApiParams(name="card_type",type="integer", require=true,description="核销类型 1:次卡 2:时长卡 3:单次卡")
 | 
						||
     * @ApiParams(name="expire_time",type="integer", require=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 userCardVerification()
 | 
						||
    {
 | 
						||
        $user_card_id = $this->request->param('user_card_id/s',0,'xilufitness_get_id_value');
 | 
						||
        $share_id = $this->request->param('share_id/s');
 | 
						||
        $user_id = $this->request->param('user_id/s');
 | 
						||
        $card_type = $this->request->param('card_type/s');
 | 
						||
        $brand_id = $this->request->param('brand_id/s');
 | 
						||
        $expire_time = $this->request->param('expire_time/s');
 | 
						||
        if (empty($expire_time) || $expire_time < time()) {
 | 
						||
            $this->error('核销失败-二维码已失效');
 | 
						||
        }
 | 
						||
        if ($brand_id != $this->brand_id) {
 | 
						||
            $this->error('二维码无效-商家信息不匹配');
 | 
						||
        }
 | 
						||
        if (in_array($card_type,[1,2])) {
 | 
						||
            CardService::getInstance()->userCardVerification($user_card_id,$user_id);
 | 
						||
        }else if ($card_type == 3) {
 | 
						||
            CardService::getInstance()->onceCardVerification($share_id,$user_id);
 | 
						||
        } else {
 | 
						||
            $this->error('核销失败');
 | 
						||
        }
 | 
						||
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(获取核销记录)
 | 
						||
     * @ApiSummary(获取核销记录)
 | 
						||
     * @ApiRoute(/getCardVerificationRecords)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						||
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						||
     * @ApiParams(name="user_card_id",type="integer", require=false,description="会员卡ID(用户端)")
 | 
						||
     * @ApiParams   (name="page_index", type="integer", required=false, description="分页页码")
 | 
						||
     * @ApiParams   (name="page_size", type="integer", required=false, description="每页条数")
 | 
						||
     * @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 getCardVerificationRecords()
 | 
						||
    {
 | 
						||
        $user_card_id = $this->request->param('user_card_id/s',0,'xilufitness_get_id_value');
 | 
						||
        $params['page_index'] = $this->request->post("page_index");
 | 
						||
        $params['page_size'] = $this->request->post("page_size");
 | 
						||
        $page_index = empty($params['page_index']) ? 1 : $params['page_index'];
 | 
						||
        $page_size = empty($params['page_size']) ? 10 : $params['page_size'];
 | 
						||
        $result = CardService::getInstance()->getCardVerificationRecords($user_card_id,$page_index,$page_size);
 | 
						||
        $this->success('',$result);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(获取次卡分享记录)
 | 
						||
     * @ApiSummary(获取次卡分享记录)
 | 
						||
     * @ApiRoute(/getTimesCardShare)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						||
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						||
     * @ApiParams(name="user_card_id",type="string", require=false,description="会员卡ID")
 | 
						||
     * @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 getTimesCardShare()
 | 
						||
    {
 | 
						||
        $user_card_id = $this->request->param('user_card_id/s',0,'xilufitness_get_id_value');
 | 
						||
        $result = CardService::getInstance()->getTimesCardShare($user_card_id);
 | 
						||
        $this->success('',$result);
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(领取次卡分享)
 | 
						||
     * @ApiSummary(领取次卡分享)
 | 
						||
     * @ApiRoute(/receiveTimesCardShare)
 | 
						||
     * @ApiMethod(POST)
 | 
						||
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						||
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						||
     * @ApiParams(name="share_id",type="integer", require=true,description="分享ID")
 | 
						||
     * @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 receiveTimesCardShare()
 | 
						||
    {
 | 
						||
        $share_id = $this->request->param('share_id/s');
 | 
						||
        CardService::getInstance()->receiveTimesCardShare($share_id);
 | 
						||
        $this->success('',[]);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
} |