Skip to content

Commit 7fb6fc4

Browse files
committed
feat: release 9.8.0
1 parent d6a76d3 commit 7fb6fc4

179 files changed

Lines changed: 1780 additions & 637 deletions

File tree

Some content is hidden

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

app/Constant/AppConstant.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ class AppConstant
66
{
77
const APP = 'cms9';
88
const APP_NAME = 'ModStartCMS9';
9-
const VERSION = '9.7.0';
9+
const VERSION = '9.8.0';
1010

1111
}

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/Controller/MemberMoneyCashController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ protected function crud(AdminCRUDBuilder $builder)
4343
$builder->type('type', '账号类型')->type(MemberMoneyCashType::class);
4444
$builder->text('realname', '姓名');
4545
$builder->text('account', '账号');
46+
$builder->jsonKeyValue('param', '参数');
4647
$builder->display('created_at', L('Created At'));
4748
})
4849
->gridFilter(function (GridFilter $filter) {

module/Member/Admin/Controller/MemberMoneyChargeOrderController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ protected function crud(AdminCRUDBuilder $builder)
2424
->init('member_money_charge_order')
2525
->field(function ($builder) {
2626
/** @var HasFields $builder */
27-
$builder->display('id', '业务订单ID');
27+
$builder->display('id', '业务ID');
2828
$builder->datetime('created_at', '创建时间');
2929
$builder->display('memberUserId', '用户')->hookRendering(function (AbstractField $field, $item, $index) {
3030
return MemberCmsUtil::showFromId($item->memberUserId);
@@ -33,7 +33,7 @@ protected function crud(AdminCRUDBuilder $builder)
3333
$builder->type('status', '状态')->type(OrderStatus::class);
3434
})
3535
->gridFilter(function (GridFilter $filter) {
36-
$filter->eq('id', '业务订单ID');
36+
$filter->eq('id', '业务ID');
3737
$filter->eq('memberUserId', '用户ID');
3838
$filter->eq('status', '状态')->select([
3939
OrderStatus::WAIT_PAY => TypeUtil::name(OrderStatus::class, OrderStatus::WAIT_PAY),

module/Member/Admin/Controller/MemberVipOrderController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ protected function crud(AdminCRUDBuilder $builder)
2626
->init(MemberVipOrder::with(['payOrder']))
2727
->field(function ($builder) {
2828
/** @var HasFields $builder */
29-
$builder->id('id', '业务订单ID');
29+
$builder->id('id', '业务ID');
3030
$builder->display('payOrder.id', '结算ID');
3131
$builder->datetime('created_at', '创建时间');
3232
$builder->display('memberUserId', '用户')->hookRendering(function (AbstractField $field, $item, $index) {
@@ -41,7 +41,7 @@ protected function crud(AdminCRUDBuilder $builder)
4141
$builder->display('expire', '执行后会员过期时间')->width(200);
4242
})
4343
->gridFilter(function (GridFilter $filter) {
44-
$filter->eq('id', '业务订单ID');
44+
$filter->eq('id', '业务ID');
4545
$filter->eq('memberUserId', '用户ID');
4646
$filter->eq('vipId', 'VIP')->select(MemberVipUtil::mapTitle());
4747
$filter->eq('status', '状态')->select([

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/Controller/MemberMoneyCashController.php

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Illuminate\Routing\Controller;
88
use ModStart\Core\Dao\ModelUtil;
9+
use ModStart\Core\Exception\BizException;
910
use ModStart\Core\Input\InputPackage;
1011
use ModStart\Core\Input\Response;
1112
use ModStart\Core\Type\TypeUtil;
@@ -87,16 +88,31 @@ public function submit()
8788
return Response::generate(-1, '提现金额至少为' . modstart_config('Member_MoneyCashMin', 100));
8889
}
8990
$type = $input->getType('type', MemberMoneyCashType::class);
91+
$remark = '余额提现';
92+
$realname = null;
93+
$account = null;
94+
$param = [];
9095
switch ($type) {
9196
case MemberMoneyCashType::ALIPAY:
92-
$alipayRealname = $input->getTrimString('alipayRealname');
93-
$alipayAccount = $input->getTrimString('alipayAccount');
94-
if (empty($alipayRealname)) {
95-
return Response::generate(-1, '支付宝姓名不能为空');
96-
}
97-
if (empty($alipayAccount)) {
98-
return Response::generate(-1, '支付宝账号不能为空');
99-
}
97+
$realname = $input->getTrimString('alipayRealname');
98+
$account = $input->getTrimString('alipayAccount');
99+
BizException::throwsIfEmpty($realname, '支付宝姓名不能为空');
100+
BizException::throwsIfEmpty($account, '支付宝账号不能为空');
101+
break;
102+
case MemberMoneyCashType::WECHAT:
103+
$realname = $input->getTrimString('wechatRealname');
104+
$account = $input->getTrimString('wechatAccount');
105+
BizException::throwsIfEmpty($realname, '微信姓名不能为空');
106+
BizException::throwsIfEmpty($account, '微信账号不能为空');
107+
break;
108+
case MemberMoneyCashType::BANK:
109+
$realname = $input->getTrimString('bankRealname');
110+
$account = $input->getTrimString('bankAccount');
111+
$bankName = $input->getTrimString('bankName');
112+
BizException::throwsIfEmpty($realname, '银行姓名不能为空');
113+
BizException::throwsIfEmpty($account, '银行账号不能为空');
114+
BizException::throwsIfEmpty($bankName, '银行名称不能为空');
115+
$param['bankName'] = $bankName;
100116
break;
101117
default:
102118
return Response::generateError('支付类型错误');
@@ -110,7 +126,7 @@ public function submit()
110126
$moneyAfterTax = bcdiv(bcmul($money, $rate, 2), 100, 2);
111127
try {
112128
ModelUtil::transactionBegin();
113-
MemberMoneyUtil::cash(MemberUser::id(), $money, $moneyAfterTax, MemberMoneyCashType::ALIPAY, $alipayRealname, $alipayAccount);
129+
MemberMoneyUtil::cash(MemberUser::id(), $money, $moneyAfterTax, $type, $realname, $account, $remark, $param);
114130
ModelUtil::transactionCommit();
115131
} catch (\Exception $e) {
116132
ModelUtil::transactionRollback();

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/Core/MemberMoneyChargePayCenterBiz.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use ModStart\Core\Dao\ModelUtil;
88
use ModStart\Core\Exception\BizException;
99
use ModStart\Core\Input\Response;
10+
use ModStart\Core\Util\CRUDUtil;
1011
use Module\Member\Util\MemberMoneyUtil;
1112
use Module\Member\Util\MemberUtil;
1213
use Module\PayCenter\Biz\AbstractPayCenterBiz;
@@ -28,6 +29,11 @@ public function title()
2829
return '用户钱包充值';
2930
}
3031

32+
public function adminViewUrl($bizId)
33+
{
34+
return $this->adminViewUrlGridWithSearchId('member/money_charge_order', $bizId);
35+
}
36+
3137
public function disabledPayTypes()
3238
{
3339
return [

0 commit comments

Comments
 (0)