Browse Source
			
			
			Merge branch 'develop' of ssh://8.134.10.79:222/Leadfyy.co/hainan into develop
			
			
				develop
			
			
		
		Merge branch 'develop' of ssh://8.134.10.79:222/Leadfyy.co/hainan into develop
	
		
	
			
			
				develop
			
			
		
				 20 changed files with 259 additions and 80 deletions
			
			
		- 
					34MySQL_change.sql
 - 
					6app/Admin/Controllers/AgentController.php
 - 
					3app/Admin/Controllers/MiniProgramDraftController.php
 - 
					11app/Admin/Controllers/MiniProgramTemplateController.php
 - 
					2app/Admin/Extensions/Grid/AuditAgent.php
 - 
					2app/Admin/Extensions/Grid/AuditAgentProduct.php
 - 
					2app/Admin/Extensions/Grid/AuditDemandProduct.php
 - 
					2app/Admin/Extensions/Grid/AuditGuide.php
 - 
					2app/Admin/Extensions/Grid/AuditProduct.php
 - 
					56app/Admin/Extensions/Grid/PullTemplateList.php
 - 
					89app/Admin/Extensions/Grid/UploadMiniProgram.php
 - 
					2app/Admin/Repositories/MiniProgramDraft.php
 - 
					2app/Admin/Repositories/MiniProgramList.php
 - 
					60app/Admin/Repositories/MiniProgramTemplate.php
 - 
					21app/Admin/Repositories/MiniProgramTemplateList.php
 - 
					18app/AdminSettled/Controllers/AgentController.php
 - 
					2app/AdminSupplier/Controllers/ProductController.php
 - 
					11app/Models/MiniProgramTemplateList.php
 - 
					11app/Models/MiniProgramUploadLog.php
 - 
					3resources/lang/zh_CN/mini-program.php
 
@ -0,0 +1,56 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Admin\Extensions\Grid; | 
				
			|||
use App\Models\AdminSetting; | 
				
			|||
use App\Models\MiniProgramTemplateList; | 
				
			|||
use Dcat\Admin\Grid\RowAction; | 
				
			|||
use EasyWeChat\Factory; | 
				
			|||
use Illuminate\Http\Request; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 上传(注册)小程序 | 
				
			|||
 * Class UploadMiniProgram | 
				
			|||
 * @package App\Admin\Extensions\Grid | 
				
			|||
 */ | 
				
			|||
class PullTemplateList extends RowAction | 
				
			|||
{ | 
				
			|||
	protected $title = '更新列表'; | 
				
			|||
 | 
				
			|||
	protected function html() | 
				
			|||
	{ | 
				
			|||
		$this->appendHtmlAttribute('class', 'btn btn-primary'); | 
				
			|||
		$this->defaultHtmlAttribute('href', 'javascript:;'); | 
				
			|||
 | 
				
			|||
		return "<a {$this->formatHtmlAttributes()}>{$this->title}</a>"; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	public function handle(Request $request) | 
				
			|||
	{ | 
				
			|||
		try { | 
				
			|||
			$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); | 
				
			|||
			$config = [ | 
				
			|||
				'app_id'   => $setting['service_appid'], | 
				
			|||
				'secret'   => $setting['service_appsecret'], | 
				
			|||
				'token'    => $setting['service_token'], | 
				
			|||
				'aes_key'  => $setting['service_aeskey'], | 
				
			|||
			]; | 
				
			|||
 | 
				
			|||
			$openPlatform = Factory::openPlatform($config); | 
				
			|||
			$codeTemplate = $openPlatform['code_template']; | 
				
			|||
			$list = $codeTemplate->list(); | 
				
			|||
 | 
				
			|||
			MiniProgramTemplateList::insertOrIgnore($list['template_list']); | 
				
			|||
			//删除不存在的数据
 | 
				
			|||
			MiniProgramTemplateList::whereNotIn('template_id', array_column($list['template_list'], 'template_id'))->delete(); | 
				
			|||
 | 
				
			|||
			return $this->response()->success("操作成功")->refresh(); | 
				
			|||
		} catch (\Exception $e) { | 
				
			|||
			return $this->response()->error($e->getMessage()); | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	public function confirm() | 
				
			|||
	{ | 
				
			|||
		return ['此操作将数据与腾讯服务器数据同步,是否继续?', '']; | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
@ -0,0 +1,89 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Admin\Extensions\Grid; | 
				
			|||
use App\Common\UserStatus; | 
				
			|||
use App\Models\AdminSetting; | 
				
			|||
use App\Models\Agent; | 
				
			|||
use App\Models\Category; | 
				
			|||
use App\Models\Channel; | 
				
			|||
use App\Models\Advertising; | 
				
			|||
use App\Models\MiniProgramTemplateList; | 
				
			|||
use App\Models\MiniProgramUploadLog; | 
				
			|||
use Dcat\Admin\Admin; | 
				
			|||
use Dcat\Admin\Grid\RowAction; | 
				
			|||
use Illuminate\Http\Request; | 
				
			|||
use Illuminate\Support\Facades\DB; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 上传(注册)小程序 | 
				
			|||
 * Class UploadMiniProgram | 
				
			|||
 * @package App\Admin\Extensions\Grid | 
				
			|||
 */ | 
				
			|||
class UploadMiniProgram extends RowAction | 
				
			|||
{ | 
				
			|||
	protected $title = '上传小程序'; | 
				
			|||
 | 
				
			|||
	protected function html() | 
				
			|||
	{ | 
				
			|||
		$this->appendHtmlAttribute('class', 'btn btn-sm btn-primary'); | 
				
			|||
		$this->defaultHtmlAttribute('href', 'javascript:;'); | 
				
			|||
 | 
				
			|||
		return "<a {$this->formatHtmlAttributes()}>{$this->title}</a>"; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	public function handle(Request $request) | 
				
			|||
	{ | 
				
			|||
		$template = MiniProgramTemplateList::orderBy('template_id', 'desc')->first(); | 
				
			|||
		if (MiniProgramUploadLog::query()->where(['agent_id' => $this->getKey(), 'template_id' => $template->template_id])->exists()) { | 
				
			|||
			return $this->response()->error('该代理商已经上传过小程序,无需重复上传'); | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		$agent = Agent::find($this->getKey()); | 
				
			|||
		if (empty($agent->appid)) { | 
				
			|||
			return $this->response()->error('该代理商未注册过小程序,请先注册'); | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		try { | 
				
			|||
			$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); | 
				
			|||
			$config = [ | 
				
			|||
				'app_id'   => $setting['service_appid'], | 
				
			|||
				'secret'   => $setting['service_appsecret'], | 
				
			|||
				'token'    => $setting['service_token'], | 
				
			|||
				'aes_key'  => $setting['service_aeskey'], | 
				
			|||
			]; | 
				
			|||
 | 
				
			|||
			$openPlatform = \EasyWeChat\Factory::openPlatform($config); | 
				
			|||
			$refreshToken = $openPlatform->getAuthorizer($agent->appid)['authorization_info']['authorizer_refresh_token'] ?? null; | 
				
			|||
			if (!$refreshToken) { | 
				
			|||
				return $this->response()->error('获取refresh_token失败'); | 
				
			|||
			} | 
				
			|||
			$code = $openPlatform->miniProgram($agent->appid, $refreshToken)['code']; | 
				
			|||
 | 
				
			|||
			$templateId = $template->template_id; | 
				
			|||
			$extJson = json_encode(['extAppid' => $agent->appid]); | 
				
			|||
			$version = $template->user_version; | 
				
			|||
			$description = $agent->company_name; | 
				
			|||
 | 
				
			|||
			$commit = $code->commit($templateId, $extJson, $version, $description); | 
				
			|||
//			$qrcode = $code->getQrCode();
 | 
				
			|||
 | 
				
			|||
			if (isset($commit['errcode'], $commit['errmsg']) && $commit['errcode'] == 0 && $commit['errmsg'] == 'ok') { | 
				
			|||
				MiniProgramUploadLog::insert([ | 
				
			|||
					'agent_id' => $agent->id, | 
				
			|||
					'appid' => $agent->appid, | 
				
			|||
					'template_id' => $templateId, | 
				
			|||
				]); | 
				
			|||
				return $this->response()->success("上传成功")->refresh(); | 
				
			|||
			} else { | 
				
			|||
				throw new \Exception(join(',', $commit)); | 
				
			|||
			} | 
				
			|||
		} catch (\Exception $e) { | 
				
			|||
			return $this->response()->error($e->getMessage()); | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	public function confirm() | 
				
			|||
	{ | 
				
			|||
		return ['确定要上传小程序吗?', '']; | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
@ -1,60 +0,0 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Admin\Repositories; | 
				
			|||
use App\Models\AdminSetting; | 
				
			|||
use Dcat\Admin\Grid; | 
				
			|||
use Dcat\Admin\Repositories\Repository; | 
				
			|||
use EasyWeChat\Factory; | 
				
			|||
use GuzzleHttp\Exception\GuzzleException; | 
				
			|||
use Illuminate\Pagination\LengthAwarePaginator; | 
				
			|||
use Illuminate\Support\Facades\Cache; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 小程序模板 | 
				
			|||
 * Class MiniProgramDraft | 
				
			|||
 * @package App\Admin\Repositories | 
				
			|||
 */ | 
				
			|||
class MiniProgramTemplate extends Repository | 
				
			|||
{ | 
				
			|||
	protected $keyName = 'template_id'; | 
				
			|||
 | 
				
			|||
	/** | 
				
			|||
	 * 查询表格数据 | 
				
			|||
	 * | 
				
			|||
	 * @param Grid\Model $model | 
				
			|||
	 * @return LengthAwarePaginator | 
				
			|||
	 * @throws GuzzleException | 
				
			|||
	 */ | 
				
			|||
	public function get(Grid\Model $model): LengthAwarePaginator | 
				
			|||
	{ | 
				
			|||
		$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); | 
				
			|||
		$config = [ | 
				
			|||
			'app_id'   => $setting['service_appid'], | 
				
			|||
			'secret'   => $setting['service_appsecret'], | 
				
			|||
			'token'    => $setting['service_token'], | 
				
			|||
			'aes_key'  => $setting['service_aeskey'], | 
				
			|||
		]; | 
				
			|||
 | 
				
			|||
		$cache_key = 'mini_program:template_list'; | 
				
			|||
		if ($data['subjects'] = Cache::get($cache_key)) { | 
				
			|||
			$data['total'] = count($data['subjects']); | 
				
			|||
		} else { | 
				
			|||
			$openPlatform = Factory::openPlatform($config); | 
				
			|||
			$codeTemplate = $openPlatform['code_template']; | 
				
			|||
 | 
				
			|||
			if (empty($codeTemplate) || (!$list = $codeTemplate->list())) { | 
				
			|||
				$data['total'] = 0; | 
				
			|||
				$data['subjects'] = []; | 
				
			|||
			} else { | 
				
			|||
				$data['total'] = count($list['template_list']); | 
				
			|||
				$data['subjects'] = $list['template_list'] ?? []; | 
				
			|||
				Cache::put($cache_key, $list['template_list'], 120); | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		return $model->makePaginator( | 
				
			|||
			$data['total'] ?? 0, // 传入总记录数
 | 
				
			|||
			$data['subjects'] ?? [] // 传入数据二维数组
 | 
				
			|||
		); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
@ -0,0 +1,21 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Admin\Repositories; | 
				
			|||
use App\Models\MiniProgramTemplateList as Model; | 
				
			|||
use Dcat\Admin\Repositories\EloquentRepository; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 小程序模板 | 
				
			|||
 * Class MiniProgramDraft | 
				
			|||
 * @package App\Admin\Repositories | 
				
			|||
 */ | 
				
			|||
class MiniProgramTemplateList extends EloquentRepository | 
				
			|||
{ | 
				
			|||
	protected $eloquentClass = Model::class; | 
				
			|||
 | 
				
			|||
	public function __construct() | 
				
			|||
	{ | 
				
			|||
		parent::__construct(); | 
				
			|||
		$this->setKeyName('template_id'); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
@ -0,0 +1,11 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Models; | 
				
			|||
 | 
				
			|||
use Illuminate\Database\Eloquent\Factories\HasFactory; | 
				
			|||
use Illuminate\Database\Eloquent\Model; | 
				
			|||
 | 
				
			|||
class MiniProgramTemplateList extends Model | 
				
			|||
{ | 
				
			|||
    use HasFactory; | 
				
			|||
} | 
				
			|||
@ -0,0 +1,11 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Models; | 
				
			|||
 | 
				
			|||
use Illuminate\Database\Eloquent\Factories\HasFactory; | 
				
			|||
use Illuminate\Database\Eloquent\Model; | 
				
			|||
 | 
				
			|||
class MiniProgramUploadLog extends Model | 
				
			|||
{ | 
				
			|||
    use HasFactory; | 
				
			|||
} | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue