200 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			200 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\api\logic;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use app\common\basics\Logic;
							 | 
						||
| 
								 | 
							
								use app\common\logic\QrCodeLogic;
							 | 
						||
| 
								 | 
							
								use app\common\model\user\User;
							 | 
						||
| 
								 | 
							
								use app\common\model\Client_;
							 | 
						||
| 
								 | 
							
								use app\common\server\JsonServer;
							 | 
						||
| 
								 | 
							
								use app\common\server\QrCodeServer;
							 | 
						||
| 
								 | 
							
								use app\common\server\UrlServer;
							 | 
						||
| 
								 | 
							
								use think\facade\Db;
							 | 
						||
| 
								 | 
							
								use app\common\model\bargain\BargainLaunch;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Class ShareLogic
							 | 
						||
| 
								 | 
							
								 * @package app\api\logic
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class ShareLogic extends Logic
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @notes 分享商品海报
							 | 
						||
| 
								 | 
							
								     * @param $user_id
							 | 
						||
| 
								 | 
							
								     * @param $goods_id
							 | 
						||
| 
								 | 
							
								     * @param $url
							 | 
						||
| 
								 | 
							
								     * @param $client
							 | 
						||
| 
								 | 
							
								     * @return array|string|\think\response\Json
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\DataNotFoundException
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\DbException
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\ModelNotFoundException
							 | 
						||
| 
								 | 
							
								     * @throws \think\exception\DbException
							 | 
						||
| 
								 | 
							
								     * @author suny
							 | 
						||
| 
								 | 
							
								     * @date 2021/7/13 6:25 下午
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function shareGoods($user_id, $goods_id, $url, $client)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $qr_code_logic = new QrCodeLogic();
							 | 
						||
| 
								 | 
							
								        $goods = Db::name('goods')->where(['id' => $goods_id])->find();
							 | 
						||
| 
								 | 
							
								        $result = '';
							 | 
						||
| 
								 | 
							
								        if ($goods) {
							 | 
						||
| 
								 | 
							
								            $user = User::where(['id' => $user_id])->find();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            switch ($client) {
							 | 
						||
| 
								 | 
							
								                case Client_::mnp: //小程序
							 | 
						||
| 
								 | 
							
								                    $url_type = 'path';
							 | 
						||
| 
								 | 
							
								                    break;
							 | 
						||
| 
								 | 
							
								                case Client_::oa: //公众号.
							 | 
						||
| 
								 | 
							
								                case Client_::h5: //H5.
							 | 
						||
| 
								 | 
							
								                    $url_type = 'url';
							 | 
						||
| 
								 | 
							
								                    $url = url($url, [], '', true) . '?' . http_build_query(['id' => $goods_id, 'invite_code' => $user['distribution_code']]);
							 | 
						||
| 
								 | 
							
								                    break;
							 | 
						||
| 
								 | 
							
								                case Client_::android:
							 | 
						||
| 
								 | 
							
								                case Client_::ios:
							 | 
						||
| 
								 | 
							
								                    $url_type = 'url';
							 | 
						||
| 
								 | 
							
								                    $url = url($url, [], '', true) . '?' . http_build_query(['id' => $goods_id, 'invite_code' => $user['distribution_code'], 'isapp' => 1]);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            $result = $qr_code_logic->makeGoodsPoster($user, $goods, $url, $url_type);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @notes 分销用户海报
							 | 
						||
| 
								 | 
							
								     * @param $user_id
							 | 
						||
| 
								 | 
							
								     * @param $url
							 | 
						||
| 
								 | 
							
								     * @param $client
							 | 
						||
| 
								 | 
							
								     * @return \think\response\Json
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\DataNotFoundException
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\DbException
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\ModelNotFoundException
							 | 
						||
| 
								 | 
							
								     * @author suny
							 | 
						||
| 
								 | 
							
								     * @date 2021/7/13 6:25 下午
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function getUserPoster($user_id, $url, $client)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //判断用户是否已有生成二维码分享海报
							 | 
						||
| 
								 | 
							
								        $user = User::where(['id' => $user_id])->find();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $url_type = 'url';
							 | 
						||
| 
								 | 
							
								        $invite_code_text = 'distribution_app_qr_code';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($client == Client_::mnp || $client == Client_::oa) {
							 | 
						||
| 
								 | 
							
								            if (empty($url)) {
							 | 
						||
| 
								 | 
							
								                return JsonServer::error('参数缺失');
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        switch ($client) {
							 | 
						||
| 
								 | 
							
								            case Client_::mnp:
							 | 
						||
| 
								 | 
							
								                $url_type = 'path';
							 | 
						||
| 
								 | 
							
								                $invite_code_text = 'distribution_mnp_qr_code';
							 | 
						||
| 
								 | 
							
								                $content = $url;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								            case Client_::oa:
							 | 
						||
| 
								 | 
							
								            case Client_::h5:
							 | 
						||
| 
								 | 
							
								                $invite_code_text = 'distribution_h5_qr_code';
							 | 
						||
| 
								 | 
							
								                $url = request()->domain() . $url;
							 | 
						||
| 
								 | 
							
								                $content = $url . '?invite_code=' . $user['distribution_code'];
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								            case Client_::ios:
							 | 
						||
| 
								 | 
							
								            case Client_::android:
							 | 
						||
| 
								 | 
							
								                $content = url('index/index/app', '', '', true);
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								            default:
							 | 
						||
| 
								 | 
							
								                return JsonServer::error('系统错误');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //是否存在
							 | 
						||
| 
								 | 
							
								        if (file_exists($user[$invite_code_text])) {
							 | 
						||
| 
								 | 
							
								            $poster_url = $user[$invite_code_text];
							 | 
						||
| 
								 | 
							
								            return JsonServer::success('', ['url' => UrlServer::getFileUrl($poster_url)]);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $qr_code_logic = new QrCodeLogic();
							 | 
						||
| 
								 | 
							
								        $poster = $qr_code_logic->makeUserPoster($user, $content, $url_type, $client);
							 | 
						||
| 
								 | 
							
								        if ($poster['status'] != 1) {
							 | 
						||
| 
								 | 
							
								            return JsonServer::error($poster['msg']);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $poster_url = $poster['data'];
							 | 
						||
| 
								 | 
							
								        //更新user表
							 | 
						||
| 
								 | 
							
								        User::where(['id' => $user_id])->update([$invite_code_text => $poster_url]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return JsonServer::success('', ['url' => UrlServer::getFileUrl($poster_url)]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @notes 砍价分享海报
							 | 
						||
| 
								 | 
							
								     * @param $user_id
							 | 
						||
| 
								 | 
							
								     * @param $id
							 | 
						||
| 
								 | 
							
								     * @param $url
							 | 
						||
| 
								 | 
							
								     * @param $client
							 | 
						||
| 
								 | 
							
								     * @return array|\think\response\Json
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\DataNotFoundException
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\DbException
							 | 
						||
| 
								 | 
							
								     * @throws \think\db\exception\ModelNotFoundException
							 | 
						||
| 
								 | 
							
								     * @throws \think\exception\DbException
							 | 
						||
| 
								 | 
							
								     * @author suny
							 | 
						||
| 
								 | 
							
								     * @date 2021/7/13 6:25 下午
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function shareBargain($user_id, $id, $url, $client)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $user = Db::name('user')->where(['id' => $user_id])->find();
							 | 
						||
| 
								 | 
							
								        $client = Client_::h5;
							 | 
						||
| 
								 | 
							
								        switch ($client) {
							 | 
						||
| 
								 | 
							
								            case Client_::mnp: //小程序
							 | 
						||
| 
								 | 
							
								                $url_type = 'path';
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								            case Client_::h5: //H5.
							 | 
						||
| 
								 | 
							
								            case Client_::oa: //公众号.
							 | 
						||
| 
								 | 
							
								                $url_type = 'url';
							 | 
						||
| 
								 | 
							
								                $url = url($url, [], '', true) . '?' . 'id=' . $id;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								            case Client_::android:
							 | 
						||
| 
								 | 
							
								            case Client_::ios:
							 | 
						||
| 
								 | 
							
								                $url_type = 'url';
							 | 
						||
| 
								 | 
							
								                $url = url($url, [], '', true) . '?' . http_build_query(['id' => $id, 'isapp' => 1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $bargain_launch = new BargainLaunch();
							 | 
						||
| 
								 | 
							
								        $bargain_launch = $bargain_launch->where(['id' => $id])->find()->toarray();
							 | 
						||
| 
								 | 
							
								        $qr_code_logic = new QrCodeLogic();
							 | 
						||
| 
								 | 
							
								        $result = $qr_code_logic->makeBargainPoster($user, $bargain_launch, $url, $url_type);
							 | 
						||
| 
								 | 
							
								        return $result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @notes 获取小程序码
							 | 
						||
| 
								 | 
							
								     * @param $user_id
							 | 
						||
| 
								 | 
							
								     * @param $get
							 | 
						||
| 
								 | 
							
								     * @return mixed|string
							 | 
						||
| 
								 | 
							
								     * @author cjhao
							 | 
						||
| 
								 | 
							
								     * @date 2021/11/27 15:35
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function getMnQrcode($user_id,$get)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $type = $get['type'] ?? 0;
							 | 
						||
| 
								 | 
							
								        if(2 != $type){
							 | 
						||
| 
								 | 
							
								            //用户分销码
							 | 
						||
| 
								 | 
							
								            $distribution_code = User::where(['id' => $user_id])->value('distribution_code');
							 | 
						||
| 
								 | 
							
								            $scene = 'invite_code='.$distribution_code;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if(1 == $type){
							 | 
						||
| 
								 | 
							
								                $scene .= '&id='.$get['id'];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $param = [
							 | 
						||
| 
								 | 
							
								            'page'      => $get['url'],
							 | 
						||
| 
								 | 
							
								            'scene'     => $scene
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return QrCodeServer::makeMpWechatQrcode($param,'base64');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |