feat: 管理端与用户端批量更新(订单/邀请双码/tabBar/审核与分销等)
- 管理端:用户详情、企业看板双小程序码、超管设置与用户列表等 - 后端:订单接口、邀请码企业版+个人版、分析与测试相关调整 - 微信小程序/抖音:自定义 tabBar 居中与拍摄钮上移、相机页与结果页、订单页、支付与统计 - 新增 faceResultDetail 工具与 mp 分析迁移脚本 Made-with: Cursor
This commit is contained in:
@@ -6,16 +6,16 @@ use app\common\service\WechatService;
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
* 管理端 - 小程序邀请二维码(带企业参数)
|
||||
* 管理端 - 小程序邀请二维码(企业版 + 个人版)
|
||||
*/
|
||||
class Invite extends BaseController
|
||||
{
|
||||
/**
|
||||
* 生成专属邀请小程序码,scene 带企业 ID,扫码进入 pages/enterprise/index 可解析
|
||||
* 一次生成两枚小程序码:企业测评入口 + 个人版首页入口
|
||||
* GET /api/v1/admin/invite/qrcode
|
||||
* 可选:?enterpriseId=1 仅普通管理员指定企业时传;企业管理员用自身 enterpriseId
|
||||
*
|
||||
* 返回 data:image/png;base64,... 形式的图片地址
|
||||
* 返回 enterprise / personal 各含 data:image/png;base64,... ;兼容旧字段 qrcode=企业版图
|
||||
*/
|
||||
public function qrcode()
|
||||
{
|
||||
@@ -38,26 +38,48 @@ class Invite extends BaseController
|
||||
return error('无法确定企业,仅企业管理员或指定 enterpriseId 可生成邀请码', 400);
|
||||
}
|
||||
|
||||
// 场景值:e_企业ID,小程序 onLoad(options.scene) 可解析
|
||||
$scene = 'e_' . $enterpriseId;
|
||||
$page = 'pages/enterprise/index';
|
||||
$sceneEnterprise = 'e_' . $enterpriseId;
|
||||
$pageEnterprise = 'pages/enterprise/index';
|
||||
|
||||
$result = WechatService::getWxacodeUnlimited($scene, $page, 430);
|
||||
if (isset($result['errcode'])) {
|
||||
return error('获取小程序码失败:' . ($result['errmsg'] ?? ''), 500);
|
||||
$resultEnt = WechatService::getWxacodeUnlimited($sceneEnterprise, $pageEnterprise, 430);
|
||||
if (isset($resultEnt['errcode'])) {
|
||||
return error('企业版小程序码失败:' . ($resultEnt['errmsg'] ?? ''), 500);
|
||||
}
|
||||
|
||||
$binary = $result['binary'] ?? '';
|
||||
if ($binary === '') {
|
||||
return error('小程序码生成失败', 500);
|
||||
$binEnt = $resultEnt['binary'] ?? '';
|
||||
if ($binEnt === '') {
|
||||
return error('企业版小程序码生成失败', 500);
|
||||
}
|
||||
$b64Ent = 'data:image/png;base64,' . base64_encode($binEnt);
|
||||
|
||||
$base64 = 'data:image/png;base64,' . base64_encode($binary);
|
||||
// 个人版:首页,scene 使用短串 p(index 无 eid 则留在个人版流程)
|
||||
$scenePersonal = 'p';
|
||||
$pagePersonal = 'pages/index/index';
|
||||
$resultPer = WechatService::getWxacodeUnlimited($scenePersonal, $pagePersonal, 430);
|
||||
if (isset($resultPer['errcode'])) {
|
||||
return error('个人版小程序码失败:' . ($resultPer['errmsg'] ?? ''), 500);
|
||||
}
|
||||
$binPer = $resultPer['binary'] ?? '';
|
||||
if ($binPer === '') {
|
||||
return error('个人版小程序码生成失败', 500);
|
||||
}
|
||||
$b64Per = 'data:image/png;base64,' . base64_encode($binPer);
|
||||
|
||||
return success([
|
||||
'qrcode' => $base64,
|
||||
'scene' => $scene,
|
||||
'page' => $page,
|
||||
'qrcode' => $b64Ent,
|
||||
'scene' => $sceneEnterprise,
|
||||
'page' => $pageEnterprise,
|
||||
'enterprise' => [
|
||||
'qrcode' => $b64Ent,
|
||||
'scene' => $sceneEnterprise,
|
||||
'page' => $pageEnterprise,
|
||||
'label' => '企业版',
|
||||
],
|
||||
'personal' => [
|
||||
'qrcode' => $b64Per,
|
||||
'scene' => $scenePersonal,
|
||||
'page' => $pagePersonal,
|
||||
'label' => '个人版',
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user