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');
 | |
| 
 | |
|     }
 | |
| } |