formUserInviteTrait.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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 App\Wen\Utils\SiteUtils;
  10. use Dcat\Admin\Form\NestedForm;
  11. use Dcat\Admin\Layout\Content;
  12. use Dcat\Admin\Widgets\Form;
  13. use Dcat\Admin\Widgets\Tooltip;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Facades\Cache;
  16. trait formUserInviteTrait{
  17. public function index_userinvite(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()->render()}</div>
  25. HTML
  26. );
  27. }
  28. protected function form_userinvite(){
  29. $form = new Form();
  30. $form->confirm('您确定要提交表单吗?', 'content');
  31. $form->disableResetButton();
  32. $form->tab('基本', function (Form $form) {
  33. $form->html(function () {
  34. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block">
  35. 场景:假设A邀请B,B邀请C,C邀请D<br/>问题一:什么时候会有这个分成? 答:D所有发生了<b>微信/支付宝</b>进行支付的情景,比如充值余额,充电,购买商品,开通会员等,A,B和C都能收到对应的奖励,该奖励由系统发放,所以不影响其他人的收益。
  36. <br/>问题二:C为D的一层上级用户,B为D的一层上级用户,A为D的三层上级用户,这种关系会破裂吗?答:永远不会,即使B注销了账号,A还是D的三层上级用户
  37. <br/>问题二:如何才能建立这种关系?答:很简单,<b>分享小程序等任意内容以及二维码都自动带上了你的推广标识</b>,别人点击你的分享并进行了注册,则你们就建立了永久的绑定关系。</div>';
  38. }, '');
  39. $res20 = __system__paycode__tip__(20);
  40. Tooltip::make('.mini_global_admin_open_not_support_tip')
  41. ->bottom()
  42. ->title($res20['tip']);
  43. $form->radio('user_invite_benefit_status', '总开关')->options([0=>'关闭', 1=>'开启'])->help($res20['text'])->default(Settings::get('user_invite_benefit_status', 0));
  44. $form->html(function () {
  45. return '';
  46. }, '<b>一、层级限制</b>');
  47. $form->radio('user_invite_benefit_max_layer', '最大层级')->options([1=>'一层', 2=>'两层', 3=>'三层'])->default(Settings::get('user_invite_benefit_max_layer', 3));
  48. $form->html(function () {
  49. return '';
  50. }, '<b>二、等级限制</b>');
  51. $form->radio('app_user_lv_invite_benefit', '我的团队')->options([1=>'lv1', 2=>'lv2', 3=>'lv3', 4=>'lv4', 5=>'lv5', 6=>'lv6'])->help('未达到该等级时,则不能进入该界面,其他不影响')->default(Settings::get('app_user_lv_invite_benefit', 2));
  52. $form->html(function () {
  53. return '';
  54. }, '<b>三、页面公告</b>');
  55. $form->text('user_invite_page_notice', '公告')->default(Settings::get('user_invite_page_notice', ''));
  56. $form->html(function () {
  57. return '';
  58. }, '<b>四、不显示 我的团队 ?</b>');
  59. $form->html(function () {
  60. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block">有且仅有这几种原因,不用怀疑是不是bug。<br /> 1、开启了审核模式<br /> 2、[后台-移动端-我的-左侧栏]未添加 我的团队<br /> 3、等级限制<br /> 4、模块未启用<br /> 5、删除缓存,重新登录试一下</div>';
  61. }, '');
  62. });
  63. $form->tab('邀请即时收益', function (Form $form) {
  64. $form->html(function () {
  65. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block">即时收益只有你直接邀请的人才有奖励,且需要你在白名单,才会获得即时到账</div>';
  66. }, '');
  67. $form->checkbox('user_invite_immediately_benefit_white_list', '邀请人白名单')->options(FieldUtils::userPermissions('', true))->when('in', 10, function (Form $form){
  68. $form->multipleSelectTable('user_invite_immediately_benefit_white_list_users', '自定义用户列表')
  69. ->title('用户')
  70. ->max(10000)
  71. ->from(UsersRender::make())
  72. ->model(WxUser::class, 'id', 'user_name', 'selectTable:formUserInviteTrait:white_list_users2')
  73. ->default(Settings::get('user_invite_immediately_benefit_white_list_users', ''));
  74. })->default(Settings::get('user_invite_immediately_benefit_white_list', ''));
  75. $form->divider();
  76. $form->number('user_invite_immediately_benefit_coins', '金币奖励 / 位')->default(Settings::get('user_invite_immediately_benefit_coins', 0));
  77. $form->decimal('user_invite_immediately_benefit_blance', '余额奖励 / 位')->default(Settings::get('user_invite_immediately_benefit_blance', 0.0));
  78. $form->switch('user_invite_immediately_benefit_auto_withdrawal', '自动微信打款')->help('请先开启[全局配置-支付-微信-商户《微信转账到零钱》的开关]')->default(Settings::get('user_invite_immediately_benefit_auto_withdrawal', 0));
  79. });
  80. $form->tab('订单分成', function (Form $form) {
  81. $form->html(function () {
  82. return '';
  83. }, '<b>一、普通用户</b>');
  84. $form->html(function () {
  85. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block">注意:所有订单的分成,只有在微信,支付宝的钱流入系统才有效,余额支付这种站内流通是不会有收益的</div>';
  86. }, '');
  87. $form->table('user_invite_benefit_order_rate_1','普通类订单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', function (NestedForm $table) {
  88. $table->select('type', '订单类型')->options([1=>'会员订单', 2 =>'充电订单', 3=>'余额充值', 6=>'笔记推广',
  89. 7=>'加入付费圈子', 8=>'保证金充值', 10=>'自助解封解禁', 11=>'付费联系方式']);
  90. $table->decimal('lv1', '一层上级用户分成/%')->help('也就是直接邀请人,理应是最多的收益');
  91. $table->decimal('lv2', '二层上级用户分成/%');
  92. $table->decimal('lv3', '三层上级用户分成/%');
  93. })->default(Settings::get('user_invite_benefit_order_rate_1', ''));
  94. $form->table('user_invite_benefit_shop_order_rate_1','商城类订单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', function (NestedForm $table) {
  95. // todo:待细分:扫码核销,虚拟物品
  96. $table->select('type', '订单类型')->options([0=>'普通商城订单',
  97. 6=>'闲置买卖订单', 7=>'组局订单', ]);
  98. $table->decimal('lv1', '一层上级用户分成/%')->help('也就是直接邀请人,理应是最多的收益');
  99. $table->decimal('lv2', '二层上级用户分成/%');
  100. $table->decimal('lv3', '三层上级用户分成/%');
  101. })->default(Settings::get('user_invite_benefit_shop_order_rate_1', ''));
  102. $form->divider();
  103. $form->html(function () {
  104. return '';
  105. }, '<b>二、推广专员</b>');
  106. $form->html(function () {
  107. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block">注意:所有订单的分成,只有在微信,支付宝的钱流入系统才有效,余额支付这种站内流通是不会有收益的</div>';
  108. }, '');
  109. $form->table('user_invite_benefit_order_rate_2','普通类订单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', function (NestedForm $table) {
  110. $table->select('type', '订单类型')->options([1=>'会员订单', 2 =>'充电订单', 3=>'余额充值', 6=>'笔记推广',
  111. 7=>'加入付费圈子', 8=>'保证金充值', 10=>'自助解封解禁', 11=>'付费联系方式']);
  112. $table->decimal('lv1', '一层上级用户分成/%')->help('也就是直接邀请人,理应是最多的收益');
  113. $table->decimal('lv2', '二层上级用户分成/%');
  114. $table->decimal('lv3', '三层上级用户分成/%');
  115. })->default(Settings::get('user_invite_benefit_order_rate_2', ''));
  116. $form->table('user_invite_benefit_shop_order_rate_2','商城类订单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', function (NestedForm $table) {
  117. // todo:待细分:扫码核销,虚拟物品
  118. $table->select('type', '订单类型')->options([0=>'普通商城订单',
  119. 6=>'闲置买卖订单', 7=>'组局订单', ]);
  120. $table->decimal('lv1', '一层上级用户分成/%')->help('也就是直接邀请人,理应是最多的收益');
  121. $table->decimal('lv2', '二层上级用户分成/%');
  122. $table->decimal('lv3', '三层上级用户分成/%');
  123. })->default(Settings::get('user_invite_benefit_shop_order_rate_2', ''));
  124. $form->divider();
  125. $form->html(function () {
  126. return '';
  127. }, '<b>三、合伙人</b>');
  128. $form->html(function () {
  129. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block">注意:所有订单的分成,只有在微信,支付宝的钱流入系统才有效,余额支付这种站内流通是不会有收益的</div>';
  130. }, '');
  131. $form->table('user_invite_benefit_order_rate_3','普通类订单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', function (NestedForm $table) {
  132. $table->select('type', '订单类型')->options([1=>'会员订单', 2 =>'充电订单', 3=>'余额充值', 6=>'笔记推广',
  133. 7=>'加入付费圈子', 8=>'保证金充值', 10=>'自助解封解禁', 11=>'付费联系方式']);
  134. $table->decimal('lv1', '一层上级用户分成/%')->help('也就是直接邀请人,理应是最多的收益');
  135. $table->decimal('lv2', '二层上级用户分成/%');
  136. $table->decimal('lv3', '三层上级用户分成/%');
  137. })->default(Settings::get('user_invite_benefit_order_rate_3', ''));
  138. $form->table('user_invite_benefit_shop_order_rate_3','商城类订单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', function (NestedForm $table) {
  139. // todo:待细分:扫码核销,虚拟物品
  140. $table->select('type', '订单类型')->options([0=>'普通商城订单',
  141. 6=>'闲置买卖订单', 7=>'组局订单', ]);
  142. $table->decimal('lv1', '一层上级用户分成/%')->help('也就是直接邀请人,理应是最多的收益');
  143. $table->decimal('lv2', '二层上级用户分成/%');
  144. $table->decimal('lv3', '三层上级用户分成/%');
  145. })->default(Settings::get('user_invite_benefit_shop_order_rate_3', ''));
  146. });
  147. $form->action('invite_benefit/action/config');
  148. return $form;
  149. }
  150. public function userinvite(Request $request){
  151. if($request->input('user_invite_immediately_benefit_auto_withdrawal') == 1){
  152. if(Settings::get('mch_transfer_to_weChat', 0) != 1){
  153. return $this->response()->error('请先开启[全局配置-支付-微信-商户《微信转账到零钱》的开关]');
  154. }
  155. }
  156. SiteUtils::forget_config_data();
  157. $user_invite_immediately_benefit_white_list = $request->input('user_invite_immediately_benefit_white_list');
  158. $user_invite_immediately_benefit_white_list_ = [];
  159. if($user_invite_immediately_benefit_white_list){
  160. foreach ($user_invite_immediately_benefit_white_list as $i){
  161. if($i === null){
  162. continue;
  163. }
  164. $user_invite_immediately_benefit_white_list_[] = (int)$i;
  165. }
  166. }
  167. Settings::set('user_invite_immediately_benefit_white_list', $user_invite_immediately_benefit_white_list_, true);
  168. Settings::set('user_invite_immediately_benefit_white_list_users', $request->input('user_invite_immediately_benefit_white_list_users'), true);
  169. // Settings::set('user_invite_benefit_lv1_rate', _between_($request->input('user_invite_benefit_lv1_rate'), 0, 100), true);
  170. // Settings::set('user_invite_benefit_lv2_rate', _between_($request->input('user_invite_benefit_lv2_rate'), 0, 100), true);
  171. // Settings::set('user_invite_benefit_lv3_rate', _between_($request->input('user_invite_benefit_lv3_rate'), 0, 100), true);
  172. Settings::set('user_invite_benefit_order_rate_1', AdminUtils::_table_data($request->input('user_invite_benefit_order_rate_1')), true);
  173. Settings::set('user_invite_benefit_shop_order_rate_1', AdminUtils::_table_data($request->input('user_invite_benefit_shop_order_rate_1')), true);
  174. Settings::set('user_invite_benefit_order_rate_2', AdminUtils::_table_data($request->input('user_invite_benefit_order_rate_2')), true);
  175. Settings::set('user_invite_benefit_shop_order_rate_2', AdminUtils::_table_data($request->input('user_invite_benefit_shop_order_rate_2')), true);
  176. Settings::set('user_invite_benefit_order_rate_3', AdminUtils::_table_data($request->input('user_invite_benefit_order_rate_3')), true);
  177. Settings::set('user_invite_benefit_shop_order_rate_3', AdminUtils::_table_data($request->input('user_invite_benefit_shop_order_rate_3')), true);
  178. Settings::set('user_invite_benefit_status', _between_((int)($request->input('user_invite_benefit_status')), 0, 100), true);
  179. Settings::set('app_user_lv_invite_benefit', $request->input('app_user_lv_invite_benefit'), true);
  180. Settings::set('user_invite_benefit_max_layer', $request->input('user_invite_benefit_max_layer'), true);
  181. Settings::set('user_invite_immediately_benefit_auto_withdrawal', $request->input('user_invite_immediately_benefit_auto_withdrawal') == 1 ? 1 : 0, true);
  182. Settings::set('user_invite_immediately_benefit_coins', _between_((int)($request->input('user_invite_immediately_benefit_coins')), 0, 1000000), true);
  183. Settings::set('user_invite_immediately_benefit_blance', _between_($request->input('user_invite_immediately_benefit_blance'), 0, 1000000), true);
  184. Settings::set('user_invite_page_notice', $request->input('user_invite_page_notice'), true);
  185. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  186. Settings::set('__global_config_version__', $__global_config_version__);
  187. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  188. return $this->response()->success('成功!');
  189. }
  190. }