formUserInviteTempCodeBgTrait.php 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxInviteTraits;
  3. use App\Admin\Renderable\UsersRender;
  4. use App\Models\User\WxUser;
  5. use App\Wen\Utils\AdminUtils;
  6. use App\Wen\Utils\FieldUtils;
  7. use App\Wen\Utils\GatewayUtils;
  8. use App\Wen\Utils\Settings;
  9. use Dcat\Admin\Form\NestedForm;
  10. use Dcat\Admin\Layout\Content;
  11. use Dcat\Admin\Widgets\Form;
  12. use Dcat\Admin\Widgets\Tooltip;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\Cache;
  15. use Intervention\Image\Facades\Image;
  16. trait formUserInviteTempCodeBgTrait{
  17. public function index_userinvite_itc_bg(Content $content)
  18. {
  19. return $content->title('背景图配置')
  20. // ->body($this->buildPreviewButton())
  21. // ->body($this->newline())
  22. ->body(
  23. <<<HTML
  24. <div class="card">{$this->form_userinvite_itc_bg()->render()}</div>
  25. HTML
  26. );
  27. }
  28. protected function form_userinvite_itc_bg(){
  29. $form = new Form();
  30. $form->confirm('您确定要提交表单吗?', 'content');
  31. $form->disableResetButton();
  32. $form->html(function () {
  33. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">你当前想使用哪个,就把哪个顶到最上面</div>';
  34. }, '');
  35. $form->html(function () {
  36. return '<a style="color: #5b92e1;font-weight: bold;" target="_blank" href="'.admin_url('invite_benefit/action/itc_bg_config_test').'">生成效果图</a>';
  37. }, '');
  38. $form->table('app_user_invite_temp_code_bg','背景图', function (NestedForm $table) {
  39. $table->image('img', '图片')->url('files/uploads')->autoUpload()->uniqueName();
  40. $table->rate('x_rate', 'x轴偏移');
  41. $table->rate('y_rate', 'y轴偏移');
  42. $table->rate('c_rate', '推广码放缩')->default(1.0);
  43. })->default(Settings::get('app_user_invite_temp_code_bg', ''));
  44. $form->action('invite_benefit/action/itc_bg_config');
  45. return $form;
  46. }
  47. public function userinvite_itc_bg_test(Request $request){
  48. $temp_code_bg = Settings::get('app_user_invite_temp_code_bg', []);
  49. if(_empty_($temp_code_bg)){
  50. exit('<h1>您没有配置背景图,无法查看效果</h1>');
  51. }
  52. $the_bg = $temp_code_bg[0];
  53. $imageUrl = $the_bg['img'];
  54. $qrCodeUrl = 'https://img.mini.minisns.cn/2024/09/30/0/f733a4ce05d21085e19e4b867626377b.png';
  55. $xPercent = round(($the_bg['x_rate'] ?? 0)/100, 2); // 默认值为0.5
  56. $yPercent = round(($the_bg['y_rate'] ?? 0)/100, 2); // 默认值为0.5
  57. $scale = $the_bg['c_rate'] ?? 1; // 默认值为1
  58. // 加载主图像
  59. $image = Image::make($imageUrl);
  60. // 加载二维码图像
  61. $qrCode = Image::make($qrCodeUrl);
  62. // 调整二维码图像大小
  63. $qrCode->resize($qrCode->width() * $scale, $qrCode->height() * $scale);
  64. // 计算二维码图像在主图像中的位置
  65. $x = $image->width() * $xPercent - ($qrCode->width() / 2);
  66. $y = $image->height() * $yPercent - ($qrCode->height() / 2);
  67. // 将二维码图像粘贴到主图像上
  68. $image->insert($qrCode, 'top-left', intval($x), intval($y));
  69. // 输出图像到屏幕
  70. return $image->response('jpg');
  71. }
  72. public function userinvite_itc_bg(Request $request){
  73. Settings::set('app_user_invite_temp_code_bg', AdminUtils::_table_data($request->input('app_user_invite_temp_code_bg')), true);
  74. return $this->response()->success('成功!');
  75. }
  76. }