Skip to content

Commit 39dbda2

Browse files
committed
升级:发布9.0.0
1 parent 22a9726 commit 39dbda2

70 files changed

Lines changed: 762 additions & 247 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

module/Cms/View/pc/cms/form/default.blade.php

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -36,57 +36,60 @@
3636

3737
<div class="ub-container margin-bottom">
3838
<div class="ub-content-bg tw-p-3 tw-rounded-lg">
39-
<form action="?" method="post" data-ajax-form>
40-
<div class="ub-form">
41-
@if(!empty($cat['_model']['_customFields']))
42-
@foreach($cat['_model']['_customFields'] as $customField)
43-
<div class="line">
44-
<div class="label">
45-
@if($customField['isRequired'])
46-
<span>*</span>
47-
@endif
48-
{{$customField['title']}}
39+
@if(!MCms::canVisitCat($cat))
40+
<div class="ub-alert danger margin-bottom-remove">
41+
<i class="iconfont icon-warning tw-text-xl"></i>
42+
您没有权限访问该栏目
43+
</div>
44+
@else
45+
<form action="?" method="post" data-ajax-form>
46+
<div class="ub-form">
47+
@if(!empty($cat['_model']['_customFields']))
48+
@foreach($cat['_model']['_customFields'] as $customField)
49+
<div class="line">
50+
<div class="label">
51+
@if($customField['isRequired'])
52+
<span>*</span>
53+
@endif
54+
{{$customField['title']}}
55+
</div>
56+
<div class="field">
57+
<?php $f = \Module\Cms\Field\CmsField::getByNameOrFail($customField['fieldType']); ?>
58+
{!! $f->renderForUserInput($customField) !!}
59+
</div>
4960
</div>
61+
@endforeach
62+
@endif
63+
<div class="line">
64+
<div class="label">
65+
<span>*</span>
66+
内容:
67+
</div>
68+
<div class="field">
69+
<textarea class="form" style="height:3rem;" name="content"></textarea>
70+
</div>
71+
</div>
72+
@if(!empty($cat['captchaProvider']))
73+
<div class="line">
74+
<div class="label">&nbsp;</div>
5075
<div class="field">
51-
<?php $f = \Module\Cms\Field\CmsField::getByNameOrFail($customField['fieldType']); ?>
52-
{!! $f->renderForUserInput($customField) !!}
76+
<div class="tw-w-96">
77+
{!! \Module\Vendor\Provider\Captcha\CaptchaProvider::get($cat['captchaProvider'])->render() !!}
78+
</div>
5379
</div>
5480
</div>
55-
@endforeach
56-
@endif
57-
<div class="line">
58-
<div class="label">
59-
<span>*</span>
60-
内容:
61-
</div>
62-
<div class="field">
63-
<textarea class="form" style="height:3rem;" name="content"></textarea>
64-
</div>
65-
</div>
66-
@if(!empty($cat['captchaProvider']))
81+
@endif
6782
<div class="line">
6883
<div class="label">&nbsp;</div>
6984
<div class="field">
70-
<div class="tw-w-96">
71-
{!! \Module\Vendor\Provider\Captcha\CaptchaProvider::get($cat['captchaProvider'])->render() !!}
72-
</div>
85+
<button type="submit" class="btn btn-primary">提交</button>
7386
</div>
7487
</div>
75-
@endif
76-
<div class="line">
77-
<div class="label">&nbsp;</div>
78-
<div class="field">
79-
<button type="submit" class="btn btn-primary">提交</button>
80-
</div>
8188
</div>
82-
</div>
83-
</form>
89+
</form>
90+
@endif
8491
</div>
8592
</div>
8693

8794
@endsection
8895

89-
90-
91-
92-

module/Member/Admin/Controller/MemberController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ protected function crud(AdminCRUDBuilder $builder)
146146
$builder->datetime('vipExpire', 'VIP过期');
147147
}
148148
$builder->display('registerIp', '注册IP');
149+
$builder->display('registerIpName', '注册IP定位');
149150
$builder->display('created_at', '注册时间');
150151
$builder->canBatchSelect(true);
151152
$builder->batchOperatePrepend('<button class="btn" data-batch-confirm="确认禁用 %d 个用户?" data-batch-operate="' . modstart_admin_url('member/status_forbidden') . '"><i class="iconfont icon-warning"></i> 禁用</button>');

module/Member/Core/ModuleServiceProvider.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use ModStart\Admin\Widget\DashboardItem;
1010
use ModStart\Admin\Widget\DashboardItemA;
1111
use ModStart\Core\Util\ColorUtil;
12+
use ModStart\Core\Util\StrUtil;
1213
use ModStart\Data\Event\DataDeletedEvent;
1314
use ModStart\Data\Event\DataUploadedEvent;
1415
use ModStart\Data\Event\DataUploadingEvent;
@@ -33,6 +34,7 @@
3334
use Module\Vendor\Admin\Widget\AdminWidgetDashboard;
3435
use Module\Vendor\Admin\Widget\AdminWidgetLink;
3536
use Module\Vendor\Job\MailSendJob;
37+
use Module\Vendor\Provider\LBS\IpProvider;
3638
use Module\Vendor\Provider\Schedule\ScheduleBiz;
3739
use Module\Vendor\Provider\SmsTemplate\SmsTemplateProvider;
3840
use Module\Voucher\Biz\VoucherBiz;
@@ -226,9 +228,9 @@ public function boot(Dispatcher $events)
226228
}
227229

228230
Event::listen(MemberUserRegisteredEvent::class, function (MemberUserRegisteredEvent $e) {
231+
$memberUser = MemberUtil::getCached($e->memberUserId);
229232
// VIP赠送积分
230233
if (ModuleManager::getModuleConfig('Member', 'creditEnable', false)) {
231-
$memberUser = MemberUtil::getCached($e->memberUserId);
232234
$vipSet = MemberVipUtil::get($memberUser['vipId']);
233235
if ($vipSet['creditPresentEnable']) {
234236
if ($vipSet['creditPresentValue']) {
@@ -239,20 +241,33 @@ public function boot(Dispatcher $events)
239241
// 注册发送邮件
240242
$message = modstart_config('Member_Registered_Message', '');
241243
if ($message) {
242-
$memberUser = MemberUtil::getCached($e->memberUserId);
243244
$message = MemberParamUtil::replaceParam($message, $memberUser);
244245
MemberMessageUtil::send($e->memberUserId, MemberParamUtil::replaceParam($message, $memberUser));
245246
}
246247
$emailContent = modstart_config('Member_Registered_Email', '');
247248
$emailTitle = modstart_config('Member_Registered_EmailTitle', '');
248249
if ($emailTitle && $emailContent) {
249-
$memberUser = MemberUtil::getCached($e->memberUserId);
250250
if (!empty($memberUser['email'])) {
251251
$emailTitle = MemberParamUtil::replaceParam($emailTitle, $memberUser);
252252
$emailContent = MemberParamUtil::replaceParam($emailContent, $memberUser);
253253
MailSendJob::createHtml($memberUser['email'], $emailTitle, $emailContent);
254254
}
255255
}
256+
// 注册信息更新
257+
$registerIpNameRes = IpProvider::firstResponse($memberUser['registerIp']);
258+
if (!empty($registerIpNameRes)) {
259+
$name = join('', array_filter([
260+
$registerIpNameRes->country,
261+
$registerIpNameRes->province,
262+
$registerIpNameRes->city,
263+
$registerIpNameRes->district,
264+
]));
265+
if (!empty($name)) {
266+
MemberUtil::update($memberUser['id'], [
267+
'registerIpName' => StrUtil::mbLimit($name, 30),
268+
]);
269+
}
270+
}
256271
});
257272

258273
AdminMenu::register(function () {

module/Member/Docs/release.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
- 新增:VIP 优惠券功能集成,支持折扣券
44
- 新增:可完全自定义上传功能定制的特性 UploadScript Hook
55
- 新增:用户登录传输用户密码加密
6+
- 新增:用户注册增加注册IP定位,支持用户注册地理位置记录
67
- 优化:VIP 开通页面交互形式优化
78

89
---

module/Member/Lang/en.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
return [
3+
"ChangeAvatar" => "ChangeAvatar",
4+
"ChangePassword" => "ChangePassword",
5+
"Credit" => "Credit",
6+
"MenuAccount" => "MenuAccount",
7+
"MenuLogout" => "MenuLogout",
8+
"MenuMessage" => "MenuMessage",
9+
"MenuSecurity" => "MenuSecurity",
10+
"MenuWallet" => "MenuWallet",
11+
"My" => "My"
12+
];
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
use Illuminate\Database\Schema\Blueprint;
4+
use Illuminate\Database\Migrations\Migration;
5+
6+
class MemberUserRegisterIpNameModify extends Migration
7+
{
8+
/**
9+
* Run the migrations.
10+
*
11+
* @return void
12+
*/
13+
public function up()
14+
{
15+
Schema::table('member_user', function (Blueprint $table) {
16+
$table->string('registerIpName', 30)->nullable()->comment('注册IP定位');
17+
});
18+
}
19+
20+
/**
21+
* Reverse the migrations.
22+
*
23+
* @return void
24+
*/
25+
public function down()
26+
{
27+
28+
}
29+
}

module/Member/View/pc/memberVip/indexDialog.blade.php

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@
1111
@section('headAppend')
1212
@parent
1313
<style>
14-
.vip-list .item .item-active-show{ display:none; }
15-
.vip-list .item.active .item-active-show{ display:block; }
14+
.vip-list .item .item-active-show {
15+
display: none;
16+
}
17+
18+
.vip-list .item.active .item-active-show {
19+
display: block;
20+
}
1621
</style>
1722
@endsection
1823

@@ -42,17 +47,13 @@
4247
</div>
4348
<div class="tw-mt-1">
4449
@if(empty($_memberUser))
45-
<a href="{{modstart_web_url('login',['redirect'=>\ModStart\Core\Input\Request::currentPageUrl()])}}"
50+
<a href="{{modstart_web_url('login',['dialog'=>1,'redirect'=>\ModStart\Core\Input\Request::currentPageUrl()])}}"
4651
class="vip-button">
4752
注册/登录
4853
</a>
4954
@else
50-
<a href="{{modstart_web_url('member')}}"
51-
class="vip-button">
52-
用户中心
53-
</a>
5455
@if(!empty(\Module\Member\Auth\MemberVip::get()))
55-
<div class="tw-inline-block tw-ml-3">
56+
<div class="tw-inline-block">
5657
您当前是
5758
<span class="vip-text ub-text-bold">
5859
{{\Module\Member\Auth\MemberVip::get('title')}}
@@ -67,23 +68,29 @@ class="vip-button">
6768
</div>
6869
</div>
6970
<div class="tw-text-right tw-flex-grow">
70-
&nbsp;
71+
@if(\Module\Member\Auth\MemberUser::isLogin())
72+
<a href="{{modstart_web_url('member')}}"
73+
class="vip-button tw-mr-3">
74+
用户中心
75+
</a>
76+
@endif
7177
</div>
7278
</div>
7379
</div>
7480
</div>
7581
<div class="body">
7682
<div class="pb-member-vip">
7783
<form action="{{$__msRoot}}api/member_vip/buy" method="post" data-ajax-form>
78-
<input type="hidden" name="redirect" value="{{\ModStart\Core\Input\Request::currentPageUrl()}}" />
79-
<input type="hidden" name="vipId" value="0" />
80-
<input type="hidden" name="voucherId" value="0" />
84+
<input type="hidden" name="redirect" value="{{\ModStart\Core\Input\Request::currentPageUrl()}}"/>
85+
<input type="hidden" name="vipId" value="0"/>
86+
<input type="hidden" name="voucherId" value="0"/>
8187
<div class="vip-list-container-box margin-bottom">
8288
<div class="vip-list-container">
8389
<div class="vip-list vip-bg tw-rounded">
8490
@foreach($memberVips as $memberVip)
8591
@if(!$memberVip['isDefault'])
86-
<div class="item tw-relative" data-vip-id="{{$memberVip['id']}}" style="padding:1rem 5px;">
92+
<div class="item tw-relative" data-vip-id="{{$memberVip['id']}}"
93+
style="padding:1rem 5px;">
8794
<div class="tw-text-xl tw-font-bold margin-bottom tw-pt-2">
8895
{{$memberVip['title']}}
8996
</div>
@@ -100,7 +107,8 @@ class="vip-button">
100107
{{$memberVip['desc']?$memberVip['desc']:'[会员简要说明]'}}
101108
</div>
102109
@if($memberVip['priceMarket']>$memberVip['price'])
103-
<div class="item-active-show tw-absolute tw-left-0 tw-top-0 tw-p-1 tw-text-sm tw-bg-red-500 tw-rounded-tl-lg tw-rounded-br-lg tw-text-white">
110+
<div
111+
class="item-active-show tw-absolute tw-left-0 tw-top-0 tw-p-1 tw-text-sm tw-bg-red-500 tw-rounded-tl-lg tw-rounded-br-lg tw-text-white">
104112
限时立减 {{bcsub($memberVip['priceMarket'],$memberVip['price'],2)}}
105113
</div>
106114
@endif
@@ -115,7 +123,7 @@ class="btn btn-block btn-lg btn-vip btn-round">
115123
@else
116124
<a class="btn btn-block btn-lg btn-vip btn-round"
117125
target="_parent"
118-
href="{{modstart_web_url('login',['redirect'=>\ModStart\Core\Input\Request::currentPageUrl()])}}">
126+
href="{{modstart_web_url('login',['dialog'=>1,'redirect'=>\ModStart\Core\Input\Request::currentPageUrl()])}}">
119127
<i class="iconfont icon-vip"></i>
120128
登录后开通
121129
</a>
@@ -133,16 +141,19 @@ class="btn btn-block btn-lg btn-vip btn-round">
133141
</a>
134142
</div>
135143
</div>
136-
<div class="lg:tw-px-12 lg:tw-text-left tw-text-center tw-py-4 vip-bg tw-rounded margin-bottom tw-flex lg:tw-flex-row tw-flex-col tw-items-center">
144+
<div
145+
class="lg:tw-px-12 lg:tw-text-left tw-text-center tw-py-4 vip-bg tw-rounded margin-bottom tw-flex lg:tw-flex-row tw-flex-col tw-items-center">
137146
<div class="tw-flex-grow">
138147
@if(!empty($memberVipRights))
139148
<div class="vip-bg tw-py-3 margin-bottom tw-rounded-lg" data-vip-right-list>
140149
<div class="row">
141150
@foreach($memberVipRights as $r)
142-
<div class="col-md-4 col-6" style="display:none;" data-vip-right="{{join(',',$r['vipIds'])}}">
151+
<div class="col-md-4 col-6" style="display:none;"
152+
data-vip-right="{{join(',',$r['vipIds'])}}">
143153
<div class="tw-flex tw-items-center ub-text-sm margin-bottom">
144154
<div class="tw-pr-2">
145-
<img class="tw-w-8 tw-h-8 tw-object-cover tw-rounded-full" src="{{$r['image']}}" />
155+
<img class="tw-w-8 tw-h-8 tw-object-cover tw-rounded-full"
156+
src="{{$r['image']}}"/>
146157
</div>
147158
<div>
148159
<div class="vip-text">{{$r['title']}}</div>
@@ -157,12 +168,16 @@ class="btn btn-block btn-lg btn-vip btn-round">
157168
</div>
158169
<div>
159170
<div class="tw-inline-block tw-py-1 tw-px-3">
160-
<div data-vip-open-list class="swiper tw-overflow-hidden tw-h-48 tw-w-64 tw--mb-3" style="overflow:hidden;">
171+
<div data-vip-open-list class="swiper tw-overflow-hidden tw-h-48 tw-w-64 tw--mb-3"
172+
style="overflow:hidden;">
161173
<div class="swiper-wrapper">
162174
@foreach(modstart_config('Member_VipOpenUsers',[]) as $u)
163175
<div class="swiper-slide">
164-
<div class="tw-flex tw-items-center tw-bg-white tw-rounded-full tw-px-3 tw-py-1">
165-
<div class="tw-w-20 tw-text-left">{{mb_substr($u['name'],0,2)}}******</div>
176+
<div
177+
class="tw-flex tw-items-center tw-bg-white tw-rounded-full tw-px-3 tw-py-1">
178+
<div class="tw-w-20 tw-text-left">{{mb_substr($u['name'],0,2)}}
179+
******
180+
</div>
166181
<div class="tw-w-8 tw-text-yellow-400">{{$u['time']}}</div>
167182
<div class="tw-w-32 tw-text-right">购买了 {{$u['title']}}</div>
168183
</div>

module/Member/View/pc/memberVip/openDialog.blade.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
}
1515
$('[data-open-dialog]').addClass('ub-open');
1616
};
17+
window.__closeVip = function(){
18+
$('[data-open-dialog]').removeClass('ub-open');
19+
window.__payCenterQuick.close();
20+
};
1721
window.__refreshMemberVipPay = function (vipId) {
1822
window.__payCenterQuick.empty();
1923
window.__payCenterQuick.registerUnsupported(function (type) {
@@ -45,7 +49,7 @@
4549
<div class="ub-modal-dialog tw-top-10"
4650
style="background-image: linear-gradient(180deg, #ffe1b2, #fff9ed);">
4751
<a href="javascript:" class="ub-modal-close"
48-
onclick="$(this).closest('.ub-modal').removeClass('ub-open');">
52+
onclick="window.__closeVip();">
4953
<i class="icon-close iconfont tw-text-lx tw-text-yellow-800"></i>
5054
</a>
5155
<div class="ub-modal-body">

0 commit comments

Comments
 (0)