feat(邀新海报): 添加邀新海报背景图配置,优化海报获取逻辑

This commit is contained in:
吴昊天 2026-10-24 18:16:52 +08:00
parent c47b11928b
commit d93db7f9a3
2 changed files with 46 additions and 123 deletions

View File

@ -17,7 +17,6 @@ use app\services\other\QrcodeServices;
use app\services\system\attachment\SystemAttachmentServices;
use app\services\system\config\SystemConfigServices;
use app\services\user\UserBillServices;
use app\services\user\UserBrokerageServices;
use app\services\user\UserMoneyServices;
use app\services\driver\upload\UploadService;
@ -42,16 +41,6 @@ class UserBillController
$this->services = $services;
}
/**
* 推广数据 昨天的佣金 累计提现金额 当前佣金
* @param Request $request
* @return mixed
*/
public function commission(Request $request)
{
$uid = (int)$request->uid();
return app('json')->success($this->services->commission($uid));
}
/**
* 推广订单
@ -70,45 +59,7 @@ class UserBillController
return app('json')->success($this->services->spread_order($uid, $orderInfo));
}
/**
* 推广佣金明细
* @param Request $request
* @param $type 0 全部 1 消费 2 充值 3 返佣 4 提现
* @return mixed
*/
public function spreadCommission(Request $request, $type)
{
$uid = (int)$request->uid();
$data = [];
switch ($type) {
case 0:
case 1:
case 2:
/** @var UserMoneyServices $moneyService */
$moneyService = app()->make(UserMoneyServices::class);
$data = $moneyService->getMoneyList($uid, $type);
break;
case 3:
case 4:
/** @var UserBrokerageServices $brokerageService */
$brokerageService = app()->make(UserBrokerageServices::class);
$data = $brokerageService->getBrokerageList($uid, $type);
break;
}
return app('json')->success($data);
}
/**
* 推广 佣金/提现 总和
* @param Request $request
* @param $type 3 佣金 4 提现
* @return mixed
*/
public function spreadCount(Request $request, $type)
{
$uid = (int)$request->uid();
return app('json')->success(['count' => $this->services->spread_count($uid, $type)]);
}
/**
@ -133,9 +84,9 @@ class UserBillController
$routineSpreadBanner[] = ['pic' => $item];
}
if ($type == 1) {
$poster = $user['uid'] . '_' . $user['is_promoter'] . '_user_routine_poster_';
$poster = $user['uid'] . '_user_routine_poster_';
} else {
$poster = $user['uid'] . '_' . $user['is_promoter'] . '_user_wap_poster_';
$poster = $user['uid'] . '_user_wap_poster_';
}
/** @var SystemAttachmentServices $systemAttachment */
$systemAttachment = app()->make(SystemAttachmentServices::class);
@ -173,7 +124,7 @@ class UserBillController
$siteUrl = sys_config('site_url');
if ($type == 1) {
//小程序
$name = $user['uid'] . '_' . $user['is_promoter'] . '_user_routine.jpg';
$name = $user['uid'] . '_user_routine.jpg';
$imageInfo = $systemAttachment->getInfo(['real_name' => $name, 'module_type' => 2]);
//检测远程文件是否存在
if (isset($imageInfo['att_dir']) && strstr($imageInfo['att_dir'], 'http') !== false && curl_file_exist($imageInfo['att_dir']) === false) {
@ -248,7 +199,7 @@ class UserBillController
),
'background' => $item['pic']
);
$resRoutine = $resRoutine && $posterInfo = PosterServices::setSharePoster($config, 'routine/spread/poster', $user['uid'] . '_' . $user['is_promoter'] . '_user_routine_poster_' . $key . '.jpg');
$resRoutine = $resRoutine && $posterInfo = PosterServices::setSharePoster($config, 'routine/spread/poster', $user['uid'] . '_user_routine_poster_' . $key . '.jpg');
if (!is_array($posterInfo)) return app('json')->fail($posterInfo);
$systemAttachment->attachmentAdd($posterInfo['name'], $posterInfo['size'], $posterInfo['type'], $posterInfo['dir'], $posterInfo['thumb_path'], 1, $posterInfo['image_type'], $posterInfo['time'], 2);
if ($resRoutine) {
@ -261,7 +212,7 @@ class UserBillController
}
} else if ($type == 2) {
//公众号
$name = $user['uid'] . '_' . $user['is_promoter'] . '_user_wap.jpg';
$name = $user['uid'] . '_user_wap.jpg';
$imageInfo = $systemAttachment->getInfo(['real_name' => $name, 'module_type' => 2]);
//检测远程文件是否存在
if (isset($imageInfo['att_dir']) && strstr($imageInfo['att_dir'], 'http') !== false && curl_file_exist($imageInfo['att_dir']) === false) {
@ -321,7 +272,7 @@ class UserBillController
),
'background' => $item['pic']
);
$resWap = $resWap && $posterInfo = PosterServices::setSharePoster($config, 'wap/spread/poster', $user['uid'] . '_' . $user['is_promoter'] . '_user_wap_poster_' . $key . '.jpg');
$resWap = $resWap && $posterInfo = PosterServices::setSharePoster($config, 'wap/spread/poster', $user['uid'] . '_user_wap_poster_' . $key . '.jpg');
if (!is_array($posterInfo)) return app('json')->fail($posterInfo);
$systemAttachment->attachmentAdd($posterInfo['name'], $posterInfo['size'], $posterInfo['type'], $posterInfo['dir'], $posterInfo['thumb_path'], 1, $posterInfo['image_type'], $posterInfo['time'], 2);
if ($resWap) {
@ -339,6 +290,43 @@ class UserBillController
}
}
/**
* 分享邀新海报素材
* 分享邀新只需要海报背景与邀请二维码,不涉及佣金/分销结算数据
* @param Request $request
* @return mixed
*/
public function getSpreadInfo(Request $request)
{
/** @var SystemConfigServices $systemConfigServices */
$systemConfigServices = app()->make(SystemConfigServices::class);
// 底图优先取「用户注册设置 - 邀新海报背景图」;未配置时回退组合数据里的海报组
$posterBg = trim((string)sys_config('invite_poster_bg', ''));
if ($posterBg !== '') {
$spreadBanner = [set_file_url($posterBg, sys_config('site_url'))];
} else {
$spreadBanner = $systemConfigServices->getSpreadBanner() ?? [];
}
$routineSpreadBanner = [];
foreach ($spreadBanner as $item) {
$routineSpreadBanner[] = ['pic' => $item];
}
//公众号环境返回带邀请人标识的临时二维码,其它端由前端自行生成(?spid=uid)
if (sys_config('share_qrcode', 0) && $request->isWechat()) {
/** @var QrcodeServices $qrcodeService */
$qrcodeService = app()->make(QrcodeServices::class);
$qrcode = $qrcodeService->getTemporaryQrcode('spread', (int)$request->uid())->url;
} else {
$qrcode = '';
}
return app('json')->success([
'spread' => $routineSpreadBanner,
'qrcode' => $qrcode,
'nickname' => $request->user('nickname'),
'site_name' => sys_config('site_name'),
]);
}
/**
* 获取小程序二维码
* @param Request $request
@ -354,7 +342,7 @@ class UserBillController
/** @var SystemAttachmentServices $systemAttachment */
$systemAttachment = app()->make(SystemAttachmentServices::class);
//小程序
$name = $user['uid'] . '_' . $user['is_promoter'] . '_user_routine.jpg';
$name = $user['uid'] . '_user_routine.jpg';
$imageInfo = $systemAttachment->getInfo(['real_name' => $name, 'module_type' => 2]);
//检测远程文件是否存在
if (isset($imageInfo['att_dir']) && strstr($imageInfo['att_dir'], 'http') !== false && curl_file_exist($imageInfo['att_dir']) === false) {
@ -390,42 +378,6 @@ class UserBillController
return app('json')->success(['url' => $urlCode]);
}
/**
* 获取海报详细信息
* @param Request $request
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getSpreadInfo(Request $request)
{
/** @var SystemConfigServices $systemConfigServices */
$systemConfigServices = app()->make(SystemConfigServices::class);
$spreadBanner = $systemConfigServices->getSpreadBanner() ?? [];
$bannerCount = count($spreadBanner);
$routineSpreadBanner = [];
if ($bannerCount) {
foreach ($spreadBanner as $item) {
$routineSpreadBanner[] = ['pic' => $item];
}
}
if (sys_config('share_qrcode', 0) && request()->isWechat()) {
/** @var QrcodeServices $qrcodeService */
$qrcodeService = app()->make(QrcodeServices::class);
$qrcode = $qrcodeService->getTemporaryQrcode('spread', $request->uid())->url;
} else {
$qrcode = '';
}
return app('json')->success([
'spread' => $routineSpreadBanner,
'qrcode' => $qrcode,
'nickname' => $request->user('nickname'),
'site_name' => sys_config('site_name')
]);
}
/**
* 积分记录
@ -442,36 +394,6 @@ class UserBillController
return app('json')->success($data['list'] ?? []);
}
/**
* 佣金排行
* @param Request $request
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function brokerageRank(Request $request)
{
$data = $request->getMore([
['page', ''],
['limit'],
['type']
]);
$uid = (int)$request->uid();
return app('json')->success($this->services->brokerage_rank($uid, $data['type']));
}
/**
* 事业部/代理商推广订单
* @param Request $request
* @return mixed
*/
public function divisionOrder(Request $request)
{
$uid = (int)$request->uid();
return app('json')->success($this->services->divisionOrder($uid));
}
/**
* 资金明细(0=全部, 1=消费, 2=充值)
* @param Request $request

View File

@ -69,4 +69,5 @@ INSERT INTO `eb_system_config` (`id`, `menu_name`, `type`, `input_type`, `config
(471,'elec_invoice_tax_rate','text','input',50,'',1,'{\"required\":false}',13,0,'\"0\"','电子发票税率','请填写电子发票的税率,填写0-100直接的整数,如:13%的税率请填写13',0,1,0,0,0),
(472,'elec_invoice_cate_name','text','input',50,'',1,'{\"required\":false}',13,0,'\"\"','发票分类名称','电子发票分类对应的名称,用于回显',0,1,0,0,0),
(187,'copy_product_apikey','text','input',136,'',1,'',0,0,'\"\"','99Api apiKey','注册99api采集接口在个人中心复制key',0,1,1,292,2),
(292,'system_product_copy_type','radio','input',136,'1=>一号通\n2=>99Api',1,'',0,0,'1','商品采集接口','采集商品接口选择,一号通快速注册开通使用不用配置apikey,或者去99api网址:https://www.99api.com/注册帐号,推荐一号通方便快捷',999,1,0,0,0);
(292,'system_product_copy_type','radio','input',136,'1=>一号通\n2=>99Api',1,'',0,0,'1','商品采集接口','采集商品接口选择,一号通快速注册开通使用不用配置apikey,或者去99api网址:https://www.99api.com/注册帐号,推荐一号通方便快捷',999,1,0,0,0),
(520,'invite_poster_bg','upload','input',105,'',1,'',0,0,'\"\"','邀新海报背景图','分享邀新海报的底图,建议尺寸 750*1334(9:16);未配置时回退「组合数据-个人中心分销海报」,两者都没有则邀新页无海报',99,1,0,0,0);