first commit

This commit is contained in:
2026-01-18 09:52:48 +08:00
commit 836bdc9409
584 changed files with 40891 additions and 0 deletions

View File

@@ -0,0 +1,299 @@
<?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\Events\MemberUpdate;
class MemberService {
/**
* @title 获取会员列表
*
* @param [type] $request
* @return void
*/
public function getDataList($request){
$map = [];
if ($request->filled('username')) {
$map[] = ['username', 'like', '%' . $request->input('username') . '%'];
}
if ($request->filled('mobile')) {
$map[] = ['mobile', 'like', '%' . $request->input('mobile') . '%'];
}
if ($request->filled('email')) {
$map[] = ['email', 'like', '%' . $request->input('email') . '%'];
}
$query = Member::with(['social', 'level'])->where($map)->orderBy('uid', 'desc');
if ($request->filled('title')) {
$query->whereAny(['nickname', 'username'], 'like', '%' . $request->input('title') . '%');
}
$data = [
'total' => $query->count(),
'page' => $request->input('page', 1),
'data' => $query->offset($request->input('offset', 0))->limit($request->input('limit', 10))->get(),
];
return $data;
}
public function getDetail($request){
$request->validate([
'id_card' => 'required',
], [
'id_card.required' => '身份证号不能为空!',
]);
$query = Member::with(['level', 'extend']);
if ($request->filled('id_card')) {
$query->whereHas('extend', function ($query) use ($request) {
$query->where('id_card', $request->input('id_card'));
});
}
if ($request->is('api/*')) {
$query->select(['nickname', 'uid', 'level_id']);
}
if ($query->exists()) {
return $query->first();
} else {
throw new \Exception("会员不存在!", 1);
}
}
/**
* @title 创建用户
*
* @param [type] $request
* @return void
*/
public function create($request){
$request->validate([
'username' => 'required|unique:member',
'nickname' => 'required',
'mobile' => 'required|unique:member',
'password' => 'required|min:6|max:16'
], [
'username.required' => '用户名不能为空!',
'username.unique' => '用户名已存在!',
'nickname.required' => '昵称不能为空!',
'mobile.required' => '手机号不能为空!',
'mobile.unique' => '手机号已存在!',
'password.required' => '密码不能为空!',
'password.min' => '密码长度不能小于6位',
'password.max' => '密码长度不能大于16位'
]);
$member = new Member;
if ($request->filled('username')) {
$member->username = $request->input('username');
}
if ($request->filled('nickname')) {
$member->nickname = $request->input('nickname');
}
if ($request->filled('avatar')) {
$member->avatar = $request->input('avatar');
}
if ($request->filled('email')) {
$member->email = $request->input('email');
}
if ($request->filled('gender')) {
$member->gender = $request->input('gender');
}
if ($request->filled('birthday')) {
$member->birthday = $request->input('birthday');
}
if ($request->filled('date_type')) {
$member->date_type = $request->input('date_type');
}
if ($request->filled('mobile')) {
$member->mobile = $request->input('mobile');
}
if ($request->filled('level_expire_time')) {
$member->level_expire_time = $request->input('level_expire_time');
}
if ($request->filled('password')) {
$member->password = $request->input('password');
}
if ($request->filled('status')) {
$member->status = $request->input('status');
}
$member->invite_uid = $request->input('invite_uid', '1890000001');
$member->pm_uid = $request->input('pm_uid', '1890000001');
$member->store_uid = $request->input('store_uid', '1890000001');
$member->level_id = $request->input('level_id', '1');
$member->save();
return $member;
}
/**
* @title 更新用户
*
* @param [type] $request
* @return void
*/
public function update($request){
$request->validate([
'username' => 'unique:member,username,'.$request->input('uid').',uid',
'mobile' => 'unique:member,mobile,'.$request->input('uid').',uid',
],[
'username.unique' => '用户名已存在!',
'mobile.unique' => '手机号已存在!',
]);
if ($request->filled('uid')) {
$members = Member::where('uid', $request->input('uid'))->first();
}
if ($request->is('api/*') && auth('api')->user()) {
$members = Member::where('uid', auth('api')->user()['uid'])->first();
}
if ($request->filled('username')) {
$members->username = $request->input('username');
}
if ($request->filled('nickname')) {
$members->nickname = $request->input('nickname');
}
if ($request->filled('avatar')) {
$members->avatar = $request->input('avatar');
}
if ($request->filled('email')) {
$members->email = $request->input('email');
}
if ($request->filled('gender')) {
$members->gender = $request->input('gender');
}
if ($request->filled('birthday')) {
$members->birthday = $request->input('birthday');
}
if ($request->filled('date_type')) {
$members->date_type = $request->input('date_type');
}
if ($request->filled('mobile')) {
$members->mobile = $request->input('mobile');
}
if ($request->filled('password')) {
$members->password = $request->input('password');
}
if ($request->filled('level_expire_time')) {
$members->level_expire_time = $request->input('level_expire_time');
}
$members->save();
MemberUpdate::dispatch($members);
return $members;
}
public function delete($request){
if(!$request->filled('uid')){
throw new \Exception("非法操作!", 1);
}
if (is_array($request->input('uid'))) {
// 批量删除
$mebers = Member::whereIn('uid', $request->input('uid'))->get();
if ($mebers->isEmpty()) {
throw new \Exception("会员不存在!", 1);
}
$member = Member::destroy(request()->input('uid'));
return $member;
}else{
// 单个删除
try {
$mebers = Member::findOrFail($request->input('uid'));
} catch (\Throwable $th) {
throw new \Exception("会员不存在!", 1);
}
$mebers->delete();
return $mebers;
}
}
public function updatePasswd($request){
$request->validate([
'password' => 'required|min:6|max:16'
], [
'password.required' => '密码不能为空!',
'password.min' => '密码长度不能小于6位',
'password.max' => '密码长度不能大于16位'
]);
if ($request->is('api/*')) {
$request->validate([
'old_password' => 'required',
'password' => 'confirmed'
], [
'old_password.required' => '旧密码不能为空!',
'password.confirmed' => '两次密码不一致!'
]);
}
if(!$request->filled('uid')){
throw new \Exception("非法操作!", 1);
}
try {
$mebers = Member::findOrFail($request->input('uid'));
} catch (\Throwable $th) {
throw new \Exception("会员不存在!", 1);
}
if(!$request->filled('password')){
throw new \Exception("密码不能为空!", 1);
}
$mebers->password = $request->input('password');
$mebers->save();
return $mebers;
}
public function import($request){
$file = $request->file('file');
if ($file->isValid()) {
$ext = $file->extension();
if (in_array($ext, ['csv', 'xlsx']) === false) {
throw new \Exception("请上传csv文件");
}
$path = $file->store('import/'.date('Ymd'), 'public');
$tasks = app()->tasks->create([
'title' => '会员数据导入',
'type' => 'import',
'file' => $path,
'params' => $request->except('file'),
'status' => 0,
]);
if ($tasks->id) {
\Modules\Member\Jobs\MemberImport::dispatch($path, $tasks);
}
}
}
public function export($request){
$tasks = app()->tasks->create([
'title' => '会员数据导出',
'type' => 'export',
'file' => 'export/' . $request->input('fileName', time().'xlsx'),
'status' => 0,
]);
if ($tasks->id) {
\Modules\Member\Jobs\MemberExport::dispatch($request->all(), $tasks);
}
}
}