Skip to content

Commit 46f9672

Browse files
committed
feat: asset update
1 parent 9cb6162 commit 46f9672

File tree

98 files changed

+415
-151
lines changed

Some content is hidden

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

98 files changed

+415
-151
lines changed

module/Member/Admin/Controller/MemberController.php

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ protected function crud(AdminCRUDBuilder $builder)
161161
$builder->display('loginLockTime', '登录锁定时间');
162162
}
163163
$builder->canBatchSelect(true);
164-
$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>');
164+
$builder->batchOperatePrepend('<button class="btn" data-batch-confirm="确认禁用 %d 个用户?" data-batch-operate="' . modstart_admin_url('member/update_status', ['status' => MemberStatus::FORBIDDEN]) . '"><i class="iconfont icon-warning"></i> 禁用</button>');
165165
})
166166
->repositoryFilter(function (RepositoryFilter $filter) {
167167
$filter->where(['isDeleted' => false]);
@@ -296,7 +296,7 @@ public function add(AdminDialogPage $page)
296296

297297
public function edit(AdminDialogPage $page)
298298
{
299-
$memberUser = ModelUtil::get('member_user', CRUDUtil::id());
299+
$memberUser = ModelUtil::get(MemberUser::class, CRUDUtil::id());
300300
BizException::throwsIfEmpty('用户不存在', $memberUser);
301301
if (Request::isPost()) {
302302
AdminPermission::demoCheck();
@@ -351,11 +351,13 @@ public function edit(AdminDialogPage $page)
351351
]);
352352
$ret = MemberUtil::updateBasicWithUniqueCheck($memberUser['id'], $basic);
353353
BizException::throwsIfResponseError($ret);
354-
if (isset($profile['vipExpire']) && TimeUtil::isDatetimeEmpty($profile['vipExpire'])) {
355-
$profile['vipExpire'] = null;
356-
}
357-
if ($memberUser['vipId'] != $profile['vipId']) {
358-
MemberUserVipChangeEvent::fire($memberUser['id'], $memberUser['vipId'], $profile['vipId']);
354+
if (ModuleManager::getModuleConfig('Member', 'vipEnable', false)) {
355+
if (isset($profile['vipExpire']) && TimeUtil::isDatetimeEmpty($profile['vipExpire'])) {
356+
$profile['vipExpire'] = null;
357+
}
358+
if ($memberUser['vipId'] != $profile['vipId']) {
359+
MemberUserVipChangeEvent::fire($memberUser['id'], $memberUser['vipId'], $profile['vipId']);
360+
}
359361
}
360362
MemberUtil::update($memberUser['id'], $profile);
361363
return Response::redirect(CRUDUtil::jsDialogCloseAndParentRefresh());
@@ -437,7 +439,7 @@ public function show()
437439
$record = MemberUtil::get(CRUDUtil::id());
438440
BizException::throwsIfEmpty('用户不存在', $record);
439441
$showPanelProviders = MemberAdminShowPanelProvider::listAll();
440-
return view('module::Member.View.admin.memberUser.show', [
442+
return view('module::Member.View.admin.member.show', [
441443
'record' => $record,
442444
'showPanelProviders' => $showPanelProviders,
443445
]);
@@ -450,13 +452,19 @@ public function delete()
450452
return Response::redirect(CRUDUtil::jsGridRefresh());
451453
}
452454

453-
public function statusForbidden()
455+
public function updateStatus()
454456
{
455457
AdminPermission::demoCheck();
456-
MemberUtil::updateStatus(CRUDUtil::ids(), MemberStatus::FORBIDDEN);
458+
$input = InputPackage::buildFromInput();
459+
$status = $input->getType('status', MemberStatus::class);
460+
MemberUtil::updateStatus(CRUDUtil::ids(), $status);
461+
if (str_contains(Request::headerReferer(), 'member/show')) {
462+
return Response::redirect('[reload]');
463+
}
457464
return Response::redirect(CRUDUtil::jsGridRefresh());
458465
}
459466

467+
460468
public function export(ExportHandle $handle)
461469
{
462470
$headTitles = [

module/Member/Admin/routes.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
$router->match(['get', 'post'], 'member/select_remote', 'MemberController@selectRemote');
2525
$router->match(['get', 'post'], 'member/reset_password', 'MemberController@resetPassword');
2626
$router->match(['get', 'post'], 'member/send_message', 'MemberController@sendMessage');
27-
$router->match(['get', 'post'], 'member/status_forbidden', 'MemberController@statusForbidden');
27+
$router->match(['post'], 'member/update_status', 'MemberController@updateStatus');
2828
$router->match(['get', 'post'], 'member/export', 'MemberController@export');
2929
$router->match(['get', 'post'], 'member/oauth', 'MemberController@oauth');
3030
$router->match(['get', 'post'], 'member/login', 'MemberController@login');

module/Member/Api/Controller/MemberDataController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
namespace Module\Member\Api\Controller;
55

66
use Illuminate\Routing\Controller;
7+
use ModStart\Data\DataStorageType;
78
use ModStart\Data\FileManager;
89
use Module\Member\Auth\MemberUser;
910
use Module\Member\Support\MemberLoginCheck;
@@ -23,14 +24,21 @@ class MemberDataController extends Controller implements MemberLoginCheck
2324
* @ApiBodyParam action string 动作,uploadDirect表示文件上传
2425
* @ApiBodyParam file File 文件对象
2526
*/
26-
public function fileManager($category)
27+
public function fileManager($category, $storageTypeConfig = null)
2728
{
29+
$option = [];
30+
if ($storageTypeConfig) {
31+
$storageType = modstart_config($storageTypeConfig, '');
32+
if ($storageType) {
33+
$option['driver'] = DataStorageType::toDriverName($storageType);
34+
}
35+
}
2836
return FileManager::handle(
2937
$category,
3038
'member_upload',
3139
'member_upload_category',
3240
MemberUser::id(),
33-
null,
41+
$option,
3442
null,
3543
[
3644
'eventOpt' => [

module/Member/Api/routes.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
$router->match(['post'], 'member_address/edit', 'MemberAddressController@edit');
7575
$router->match(['post'], 'member_address/delete', 'MemberAddressController@delete');
7676

77-
$router->match(['post'], 'member_data/file_manager/{category}', 'MemberDataController@fileManager');
77+
$router->match(['post'], 'member_data/file_manager/{category}/{storageTypeConfig?}', 'MemberDataController@fileManager');
7878

7979
$router->match(['post'], 'member_money/get', 'MemberMoneyController@get');
8080
$router->match(['post'], 'member_money/log', 'MemberMoneyController@log');

module/Member/Docs/release.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
## 5.1.2
22

3+
- 新增:用户上传支持多种驱动支持
4+
- 新增:用户信息查看界面支持禁用/启用用户操作
5+
- 新增:用户关联记录用户限制增加是否禁用标识
36
- 优化:会员永久VIP过期时间显示优化
47
- 优化:会员开通界面显示优化
8+
- 修复:后台会员编辑VIP字段异常问题
59

610
---
711

module/Member/Util/MemberCmsUtil.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use ModStart\Core\Dao\ModelUtil;
99
use ModStart\Field\AutoRenderedFieldValue;
1010
use Module\Member\Model\MemberUser;
11+
use Module\Member\Type\MemberStatus;
1112

1213
class MemberCmsUtil
1314
{
@@ -52,10 +53,16 @@ public static function show($memberUser, $field = null)
5253
}
5354
}
5455
}
56+
$status = '';
57+
if (!empty($memberUser['status'])) {
58+
if ($memberUser['status'] == MemberStatus::FORBIDDEN) {
59+
$status = ' <span class="ub-text-danger" data-tip-popover="已禁用"><i class="iconfont icon-warning"></i></span>';
60+
}
61+
}
5562
return AutoRenderedFieldValue::make('<a href="javascript:;" class="ub-icon-text" data-dialog-request="'
5663
. action('\\Module\\Member\\Admin\\Controller\\MemberController@show', ['_id' => $memberUser['id']]) . '">
5764
<img class="icon" src="' . AssetsUtil::fixOrDefault($memberUser['avatar'], 'asset/image/avatar.svg') . '" />
58-
<span class="text">' . htmlspecialchars($text) . '</span></a>');
65+
<span class="text">' . htmlspecialchars($text) . '</span>' . $status . '</a>');
5966
}
6067
return AutoRenderedFieldValue::make('');
6168
}

module/Member/View/admin/memberUser/show.blade.php renamed to module/Member/View/admin/member/show.blade.php

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,12 @@
5050
<div class="ub-pair">
5151
<div class="name">余额</div>
5252
<div class="value">
53-
<span class="tw-inline-block" style="min-width:4rem;">
53+
<div class="tw-inline-block tw-w-20">
5454
{{\Module\Member\Util\MemberMoneyUtil::getTotal($record['id'])}}
55-
</span>
56-
<a href="javascript:;" class="tw-ml-4" data-dialog-request="{{modstart_admin_url('member_money/charge',['memberUserId'=>$record['id']])}}">
57-
[余额变更]
55+
</div>
56+
<a href="javascript:;" class="btn btn-sm btn-round" data-dialog-request="{{modstart_admin_url('member_money/charge',['memberUserId'=>$record['id']])}}">
57+
<i class="iconfont icon-edit"></i>
58+
余额变更
5859
</a>
5960
</div>
6061
</div>
@@ -63,15 +64,37 @@
6364
<div class="ub-pair">
6465
<div class="name">{{modstart_module_config('Member', 'creditName', '积分')}}</div>
6566
<div class="value">
66-
<span class="tw-inline-block" style="min-width:4rem;">
67+
<div class="tw-inline-block tw-w-20">
6768
{{\Module\Member\Util\MemberCreditUtil::getTotal($record['id'])}}
68-
</span>
69-
<a href="javascript:;" class="tw-ml-4" data-dialog-request="{{modstart_admin_url('member_credit/charge',['memberUserId'=>$record['id']])}}">
70-
[{{modstart_module_config('Member', 'creditName', '积分')}}变更]
69+
</div>
70+
<a href="javascript:;" class="btn btn-sm btn-round" data-dialog-request="{{modstart_admin_url('member_credit/charge',['memberUserId'=>$record['id']])}}">
71+
{{modstart_module_config('Member', 'creditName', '积分')}}变更
7172
</a>
7273
</div>
7374
</div>
7475
@endif
76+
<div class="ub-pair">
77+
<div class="name">状态</div>
78+
<div class="value">
79+
@if($record['status']==\Module\Member\Type\MemberStatus::NORMAL)
80+
<span class="ub-text-success tw-inline-block" style="min-width:4rem;">
81+
{{\ModStart\Core\Type\TypeUtil::name(\Module\Member\Type\MemberStatus::class,$record['status'])}}
82+
</span>
83+
<a href="javascript:;" class="btn btn-sm btn-round" data-ajax-request="{{modstart_admin_url('member/update_status',['status'=>\Module\Member\Type\MemberStatus::FORBIDDEN,'_id'=>$record['id']])}}">
84+
<i class="iconfont icon-warning"></i>
85+
禁用
86+
</a>
87+
@elseif($record['status']==\Module\Member\Type\MemberStatus::FORBIDDEN)
88+
<span class="ub-text-danger tw-inline-block" style="min-width:4rem;">
89+
{{\ModStart\Core\Type\TypeUtil::name(\Module\Member\Type\MemberStatus::class,$record['status'])}}
90+
</span>
91+
<a href="javascript:;" class="btn btn-sm btn-round" data-ajax-request="{{modstart_admin_url('member/update_status',['status'=>\Module\Member\Type\MemberStatus::NORMAL,'_id'=>$record['id']])}}">
92+
<i class="iconfont icon-check"></i>
93+
启用
94+
</a>
95+
@endif
96+
</div>
97+
</div>
7598
<div class="tw-pt-4 tw-bg-white tw-rounded">
7699
<a href="javascript:;" class="btn"
77100
data-dialog-width="90%" data-dialog-height="90%"

module/Member/Web/Controller/MemberDataController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
use Illuminate\Routing\Controller;
77
use ModStart\Core\Input\Request;
8+
use ModStart\Data\DataStorageType;
89
use ModStart\Data\FileManager;
910
use ModStart\Data\UeditorManager;
1011
use Module\Member\Auth\MemberUser;
@@ -16,15 +17,22 @@ class MemberDataController extends Controller implements MemberLoginCheck
1617
'ueditorGuest'
1718
];
1819

19-
public function fileManager($category)
20+
public function fileManager($category, $storageTypeConfig = null)
2021
{
2122
if (Request::isPost()) {
23+
$option = [];
24+
if ($storageTypeConfig) {
25+
$storageType = modstart_config($storageTypeConfig, '');
26+
if ($storageType) {
27+
$option['driver'] = DataStorageType::toDriverName($storageType);
28+
}
29+
}
2230
return FileManager::handle(
2331
$category,
2432
'member_upload',
2533
'member_upload_category',
2634
MemberUser::id(),
27-
null,
35+
$option,
2836
null,
2937
[
3038
'eventOpt' => [

module/Member/Web/routes.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
$router->match(['get', 'post'], 'member_message/read', 'MemberMessageController@read');
7272
$router->match(['get', 'post'], 'member_message/read_all', 'MemberMessageController@readAll');
7373

74-
$router->match(['get', 'post'], 'member_data/file_manager/{category}', 'MemberDataController@fileManager');
74+
$router->match(['get', 'post'], 'member_data/file_manager/{category}/{storageTypeConfig?}', 'MemberDataController@fileManager');
7575
$router->match(['get', 'post'], 'member_data/ueditor', 'MemberDataController@ueditor');
7676
$router->match(['get', 'post'], 'member_data/ueditor_guest', 'MemberDataController@ueditorGuest');
7777

module/Partner/Docs/release.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 1.8.1 友情链接页面兼容Member模块中间件
2+
3+
- 修复:友情链接页面兼容Member模块中间件
4+
5+
---
6+
17
## 1.8.0 增加alt、title等SEO优化方式
28

39
- 新增:友情链接增加alt、title等SEO优化方式

0 commit comments

Comments
 (0)