Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jwhx
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sugar
jwhx
Commits
c0685f23
Commit
c0685f23
authored
Feb 24, 2025
by
wuxiaoli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
聚物通资金admin后台接口
parent
c0ba9dee
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
340 additions
and
0 deletions
+340
-0
modules/Member/app/Controllers/Admin/Polymer.php
modules/Member/app/Controllers/Admin/Polymer.php
+88
-0
modules/Member/app/Models/MemberPolymer.php
modules/Member/app/Models/MemberPolymer.php
+30
-0
modules/Member/app/Services/PolymerService.php
modules/Member/app/Services/PolymerService.php
+193
-0
modules/Member/database/migrations/2024_08_19_134001_member_extend.php
...r/database/migrations/2024_08_19_134001_member_extend.php
+21
-0
modules/Member/routes/admin.php
modules/Member/routes/admin.php
+6
-0
modules/Store/database/migrations/2024_09_04_220812_store_payment_table.php
...base/migrations/2024_09_04_220812_store_payment_table.php
+2
-0
No files found.
modules/Member/app/Controllers/Admin/Polymer.php
0 → 100644
View file @
c0685f23
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2024 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace
Modules\Member\Controllers\Admin
;
use
Illuminate\Http\Request
;
use
App\Http\Controllers\BaseController
;
use
Modules\Member\Services\PolymerService
;
class
Polymer
extends
BaseController
{
/**
* @title 积分列表
*
* @param Request $request
* @param PolymerService $service
* @return void
*/
public
function
index
(
Request
$request
,
PolymerService
$service
){
try
{
$this
->
data
[
'data'
]
=
$service
->
getDataList
(
$request
);
}
catch
(
\Exception
$e
)
{
$this
->
data
[
'code'
]
=
0
;
$this
->
data
[
'message'
]
=
$e
->
getMessage
();
}
return
response
()
->
json
(
$this
->
data
);
}
/**
* @title 添加积分
*
* @param Request $request
* @param PolymerService $service
* @return void
*/
public
function
add
(
Request
$request
,
PolymerService
$service
){
try
{
$this
->
data
[
'data'
]
=
$service
->
createPolymer
(
store_id
:
0
,
order_id
:
0
,
member_id
:
$request
->
input
(
'member_id'
),
amount
:
$request
->
input
(
'amount'
),
type
:
$request
->
input
(
'type'
),
account_type
:
'system'
,
remark
:
$request
->
input
(
'remark'
));
}
catch
(
\Exception
$e
)
{
$this
->
data
[
'code'
]
=
0
;
$this
->
data
[
'message'
]
=
$e
->
getMessage
();
}
return
response
()
->
json
(
$this
->
data
);
}
/**
* @title 修改积分
*
* @param Request $request
* @param PolymerService $service
* @return void
*/
public
function
edit
(
Request
$request
,
PolymerService
$service
){
try
{
$this
->
data
[
'data'
]
=
$service
->
update
(
$request
);
}
catch
(
\Exception
$e
)
{
$this
->
data
[
'code'
]
=
0
;
$this
->
data
[
'message'
]
=
$e
->
getMessage
();
}
return
response
()
->
json
(
$this
->
data
);
}
/**
* @title 删除积分
*
* @param Request $request
* @param PolymerService $service
* @return void
*/
public
function
delete
(
Request
$request
,
PolymerService
$service
){
try
{
$this
->
data
[
'data'
]
=
$service
->
delete
(
$request
);
}
catch
(
\Exception
$e
)
{
$this
->
data
[
'code'
]
=
0
;
$this
->
data
[
'message'
]
=
$e
->
getMessage
();
}
return
response
()
->
json
(
$this
->
data
);
}
}
\ No newline at end of file
modules/Member/app/Models/MemberPolymer.php
0 → 100644
View file @
c0685f23
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2024 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace
Modules\Member\Models
;
use
App\Models\BaseModel
;
class
MemberPolymer
extends
BaseModel
{
protected
$table
=
'member_polymer'
;
protected
$fillable
=
[
'store_id'
,
'order_id'
,
'member_id'
,
'type'
,
'amount'
,
'bf_amount'
,
'af_amount'
,
'status'
,
'remark'
];
// protected $hidden = ['deleted_at'];
public
function
member
()
{
return
$this
->
belongsTo
(
Member
::
class
,
'member_id'
,
'uid'
);
}
public
function
admin
(){
return
$this
->
belongsTo
(
\Modules\Auth\Models\Admin
::
class
,
'member_id'
,
'uid'
);
}
public
function
order
(){
return
$this
->
belongsTo
(
\Modules\Order\Models\OrderItem
::
class
,
'order_id'
,
'id'
);
}
}
modules/Member/app/Services/PolymerService.php
0 → 100644
View file @
c0685f23
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2024 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace
Modules\Member\Services
;
use
Modules\Member\Models\Member
;
use
Modules\Member\Models\MemberPolymer
;
class
PolymerService
{
/**
* @title 获取会员列表
*
* @param [type] $request
* @return void
*/
public
function
getDataList
(
$request
){
$map
=
[];
$query
=
MemberPolymer
::
query
();
if
(
$request
->
filled
(
'store_id'
))
{
$map
[]
=
[
'store_id'
,
'='
,
$request
->
input
(
'store_id'
)];
}
if
(
$request
->
filled
(
'member_id'
))
{
$map
[]
=
[
'member_id'
,
'='
,
$request
->
input
(
'member_id'
)];
}
if
(
$request
->
filled
(
'is_user'
))
{
$map
[]
=
[
'member_id'
,
'='
,
auth
(
'api'
)
->
user
()[
'uid'
]];
$query
->
whereIn
(
'type'
,
[
'income'
,
'withdraw'
,
'transfer'
]);
}
$query
->
where
(
$map
)
->
orderBy
(
'id'
,
'desc'
);
if
(
$request
->
filled
(
'username'
))
{
$query
->
whereHas
(
'member'
,
function
(
$query
)
use
(
$request
){
$query
->
where
(
'username'
,
'like'
,
'%'
.
$request
->
input
(
'username'
)
.
'%'
);
});
}
if
(
$request
->
filled
(
'mobile'
))
{
$query
->
whereHas
(
'member'
,
function
(
$query
)
use
(
$request
){
$query
->
where
(
'mobile'
,
'like'
,
'%'
.
$request
->
input
(
'mobile'
)
.
'%'
);
});
}
if
(
$request
->
filled
(
'store_title'
))
{
$query
->
whereHas
(
'store'
,
function
(
$query
)
use
(
$request
){
$query
->
where
(
'title'
,
'like'
,
'%'
.
$request
->
input
(
'store_title'
)
.
'%'
);
});
}
if
(
$request
->
filled
(
'is_admin'
)
&&
auth
(
'admin'
)
->
user
())
{
$map
[]
=
[
'member_id'
,
'='
,
auth
(
'admin'
)
->
user
()[
'uid'
]];
$query
->
whereIn
(
'type'
,
[
'service_income'
,
'service_withdraw'
,
'service_transfer'
]);
}
else
{
$query
->
whereIn
(
'type'
,
[
'income'
,
'withdraw'
,
'transfer'
]);
}
if
(
$request
->
filled
(
'type'
))
{
if
(
is_string
(
$request
->
input
(
'type'
))){
$map
[]
=
[
'type'
,
'='
,
$request
->
input
(
'type'
)];
}
else
if
(
is_array
(
$request
->
input
(
'type'
))){
$query
->
whereIn
(
'type'
,
$request
->
input
(
'type'
));
}
}
$query
->
where
(
$map
);
if
(
$request
->
filled
(
'page'
)){
$data
=
[
'total'
=>
$query
->
count
(),
'page'
=>
$request
->
input
(
'page'
,
1
),
'data'
=>
$query
->
offset
(
$request
->
input
(
'offset'
,
0
))
->
limit
(
$request
->
input
(
'limit'
,
30
))
->
get
()
->
each
(
function
(
$item
){
if
(
in_array
(
$item
->
type
,
[
'income'
,
'withdraw'
])){
$item
->
member
=
$item
->
member
()
->
select
([
'uid'
,
'username'
,
'nickname'
,
'avatar'
])
->
first
();
}
else
if
(
in_array
(
$item
->
type
,
[
'service_income'
,
'service_withdraw'
])){
$item
->
member
=
$item
->
admin
()
->
select
([
'uid'
,
'username'
,
'nickname'
,
'avatar'
])
->
first
();
}
else
{
$item
->
member
=
$item
->
member
()
->
select
([
'uid'
,
'username'
,
'nickname'
,
'avatar'
])
->
first
();
}
}),
];
}
else
{
$data
=
$query
->
limit
(
$request
->
input
(
'limit'
,
30
))
->
get
();
}
return
$data
;
}
/**
* @title 添加会员
*
* @param Request $request
* @param MemberService $service
* @return void
*/
public
function
createPolymer
(
$store_id
,
$order_id
,
$member_id
,
$amount
,
$type
,
$account_type
,
$remark
){
if
(
$order_id
!=
0
){
$polymer
=
MemberPolymer
::
where
(
'order_id'
,
'='
,
$order_id
)
->
where
(
'member_id'
,
'='
,
$member_id
)
->
where
(
'type'
,
'='
,
$type
)
->
where
(
'account_type'
,
'='
,
$account_type
)
->
first
();
if
(
$polymer
){
return
$polymer
;
}
}
$member
=
Member
::
where
(
'uid'
,
$member_id
)
->
first
();
if
(
!
$member
){
return
false
;
}
$af_amount
=
$member
[
'polymer_money'
]
?
(
in_array
(
$type
,
[
'pay'
,
'transfer'
])
?
bcsub
(
$member
[
'polymer_money'
],
$amount
)
:
bcadd
(
$member
[
'polymer_money'
],
$amount
))
:
$amount
;
$bf_amount
=
$member
[
'polymer_money'
]
?
$member
[
'polymer_money'
]
:
0
;
$data
=
[
'store_id'
=>
$store_id
,
'order_id'
=>
$order_id
,
'member_id'
=>
$member_id
,
'type'
=>
$type
,
'account_type'
=>
$account_type
,
'amount'
=>
$amount
,
'bf_amount'
=>
$bf_amount
,
'af_amount'
=>
$af_amount
,
'status'
=>
0
,
'remark'
=>
$remark
,
];
if
(
$af_amount
<
0
){
throw
new
\Exception
(
"会员积分余额不足!"
,
0
);
}
if
(
in_array
(
$type
,
[
'pay'
,
'transfer'
])){
$member
->
polymer_money
=
bcsub
(
$member
->
polymer_money
,
$amount
,
2
);
}
else
{
$member
->
polymer_money
=
bcadd
(
$member
->
polymer_money
,
$amount
,
2
);
}
$member
->
save
();
$polymer
=
MemberPolymer
::
create
(
$data
);
return
$polymer
;
}
/**
* @title 修改会员
*
* @param Request $request
* @param MemberService $service
* @return void
*/
public
function
update
(
$request
){
$request
->
validate
([
'title'
=>
'required|max:255'
,
'name'
=>
'required|max:255|alpha_dash:ascii|unique:member_level,name,'
.
$request
->
input
(
'id'
),
]);
try
{
$polymer
=
MemberPolymer
::
findOrFail
(
$request
->
input
(
'id'
));
}
catch
(
\Throwable
$th
)
{
throw
new
\Exception
(
"会员不存在!"
,
1
);
}
$data
=
[
'title'
=>
$request
->
input
(
'title'
,
''
),
'name'
=>
$request
->
input
(
'name'
,
''
),
'icon'
=>
$request
->
input
(
'icon'
,
''
),
'sort'
=>
$request
->
input
(
'sort'
,
0
),
'status'
=>
$request
->
input
(
'status'
,
1
),
'remark'
=>
$request
->
input
(
'remark'
,
''
),
];
$polymer
->
update
(
$data
);
return
$polymer
;
}
public
function
delete
(
$request
){
if
(
$request
->
filled
(
'id'
)){
try
{
$polymer
=
MemberPolymer
::
findOrFail
(
$request
->
input
(
'id'
));
}
catch
(
\Throwable
$th
)
{
throw
new
\Exception
(
"会员等级不存在!"
,
1
);
}
$polymer
->
delete
();
}
if
(
$request
->
filled
(
'ids'
)){
try
{
$polymer
=
MemberPolymer
::
whereIn
(
'id'
,
$request
->
input
(
'ids'
));
$polymer
->
delete
();
}
catch
(
\Throwable
$th
)
{
throw
new
\Exception
(
$th
->
getMessage
(),
1
);
}
}
return
$polymer
;
}
}
modules/Member/database/migrations/2024_08_19_134001_member_extend.php
View file @
c0685f23
...
...
@@ -95,6 +95,26 @@ return new class extends Migration {
$table
->
collation
=
'utf8mb4_unicode_ci'
;
$table
->
comment
(
'会员积分表'
);
});
Schema
::
create
(
'member_polymer'
,
function
(
Blueprint
$table
)
{
$table
->
id
()
->
uniqid
()
->
comment
(
'主键id'
);
$table
->
unsignedBigInteger
(
'member_id'
)
->
comment
(
'会员id'
);
$table
->
unsignedBigInteger
(
'order_id'
)
->
comment
(
'订单ID'
);
$table
->
unsignedBigInteger
(
'store_id'
)
->
comment
(
'店铺ID'
);
$table
->
string
(
'type'
,
'20'
)
->
nullable
()
->
comment
(
'类型'
);
$table
->
string
(
'account_type'
,
'20'
)
->
nullable
()
->
comment
(
'账单类型'
);
$table
->
decimal
(
'amount'
,
total
:
10
,
places
:
2
)
->
default
(
0
)
->
comment
(
'数量'
);
$table
->
decimal
(
'bf_amount'
,
total
:
10
,
places
:
2
)
->
default
(
0
)
->
comment
(
'前数量'
);
$table
->
decimal
(
'af_amount'
,
total
:
10
,
places
:
2
)
->
default
(
0
)
->
comment
(
'后数量'
);
$table
->
string
(
'remark'
,
255
)
->
nullable
()
->
comment
(
'备注'
);
$table
->
tinyInteger
(
'status'
)
->
default
(
1
)
->
comment
(
'状态 0未用,1已核销'
);
$table
->
timestamp
(
'created_at'
)
->
nullable
()
->
comment
(
'创建时间'
);
$table
->
timestamp
(
'updated_at'
)
->
nullable
()
->
comment
(
'更新时间'
);
$table
->
engine
=
'InnoDB'
;
$table
->
charset
=
'utf8mb4'
;
$table
->
collation
=
'utf8mb4_unicode_ci'
;
$table
->
comment
(
'会员聚物通表'
);
});
Schema
::
create
(
'member_bank'
,
function
(
Blueprint
$table
)
{
$table
->
id
()
->
uniqid
()
->
comment
(
'主键id'
);
$table
->
unsignedBigInteger
(
'member_id'
)
->
comment
(
'会员id'
);
...
...
@@ -124,6 +144,7 @@ return new class extends Migration {
Schema
::
dropIfExists
(
'member_address'
);
Schema
::
dropIfExists
(
'member_account'
);
Schema
::
dropIfExists
(
'member_score'
);
Schema
::
dropIfExists
(
'member_polymer'
);
Schema
::
dropIfExists
(
'member_bank'
);
}
};
modules/Member/routes/admin.php
View file @
c0685f23
...
...
@@ -36,6 +36,12 @@ Route::name('member.')->prefix('member')->middleware(['auth.check:admin'])->grou
Route
::
put
(
'/edit'
,
'edit'
)
->
name
(
'edit'
);
Route
::
delete
(
'/delete'
,
'delete'
)
->
name
(
'delete'
);
});
Route
::
controller
(
Modules\Member\Controllers\Admin\Polymer
::
class
)
->
prefix
(
'polymer'
)
->
name
(
'polymer.'
)
->
group
(
function
()
{
Route
::
get
(
'/index'
,
'index'
)
->
name
(
'index'
);
Route
::
post
(
'/add'
,
'add'
)
->
name
(
'add'
);
Route
::
put
(
'/edit'
,
'edit'
)
->
name
(
'edit'
);
Route
::
delete
(
'/delete'
,
'delete'
)
->
name
(
'delete'
);
});
Route
::
controller
(
Modules\Member\Controllers\Admin\Promoter
::
class
)
->
prefix
(
'promoter'
)
->
name
(
'promoter.'
)
->
group
(
function
()
{
Route
::
get
(
'/index'
,
'index'
)
->
name
(
'index'
);
Route
::
put
(
'/audit'
,
'audit'
)
->
name
(
'audit'
);
...
...
modules/Store/database/migrations/2024_09_04_220812_store_payment_table.php
View file @
c0685f23
...
...
@@ -21,6 +21,8 @@ return new class extends Migration {
$table
->
string
(
'payment_remark'
)
->
nullable
()
->
comment
(
'收款备注'
);
$table
->
timestamp
(
'created_at'
)
->
nullable
()
->
comment
(
'创建时间'
);
$table
->
timestamp
(
'updated_at'
)
->
nullable
()
->
comment
(
'更新时间'
);
$table
->
decimal
(
'polymer_money'
,
total
:
10
,
places
:
2
)
->
default
(
0
)
->
comment
(
'聚物通'
);
$table
->
string
(
'pay_way'
)
->
nullable
()
->
comment
(
'付款方式'
);
$table
->
engine
=
'InnoDB'
;
$table
->
charset
=
'utf8mb4'
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment