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