添加:分销商申请转正及审核

This commit is contained in:
wuhui_zzw 2024-03-27 18:08:00 +08:00
parent 2f94fd4fc2
commit 3e32334381
9 changed files with 225 additions and 5 deletions

View File

@ -0,0 +1,33 @@
<?php
namespace app\common\dao\user;
use app\common\dao\BaseDao;
use app\common\model\user\UserBrokerageApplyFormal;
class UserBrokerageApplyFormalDao extends BaseDao{
protected function getModel(): string{
return UserBrokerageApplyFormal::class;
}
// 公共搜索模型
public function searchModel(array $search){
return (new UserBrokerageApplyFormal())
->when(isset($search['id']) && $search['id'] !== '',function($query) use ($search){
$query->where('id',$search['id']);
})
->when(isset($search['uid']) && $search['uid'] !== '',function($query) use ($search){
$query->where('uid',$search['uid']);
})
->with([
'user' => function($query){
$query->field('uid,nickname,avatar');
}
]);
}
}

View File

@ -163,6 +163,11 @@ class User extends BaseModel
return $this->hasOne(UserBrokerage::class, 'brokerage_level', 'brokerage_level')->where('type',0);
}
public function brokerageApplyFormal(){
return $this->hasOne(UserBrokerageApplyFormal::class, 'uid', 'uid');
}
public function member()
{
return $this->hasOne(UserBrokerage::class, 'brokerage_level', 'member_level')->where('type',1);

View File

@ -0,0 +1,24 @@
<?php
namespace app\common\model\user;
use app\common\model\BaseModel;
class UserBrokerageApplyFormal extends BaseModel{
public static function tablePk():?string{
return 'id';
}
public static function tableName():string{
return 'user_brokerage_apply_formal';
}
public function user(){
return $this->hasOne(User::class, 'uid', 'uid');
}
}

View File

@ -0,0 +1,50 @@
<?php
namespace app\common\repositories\user;
use app\common\dao\user\UserBrokerageApplyFormalDao;
use app\common\repositories\BaseRepository;
class UserBrokerageApplyFormalRepository extends BaseRepository{
public function __construct(UserBrokerageApplyFormalDao $dao){
$this->dao = $dao;
}
/**
* Common: 查询模型
* Author: wu-hui
* Time: 2024/03/27 17:55
* @param $where
* @return \app\common\model\user\UserBrokerageApplyFormal
*/
public function searchModel($where){
return $this->dao->searchModel($where);
}
/**
* Common: 列表获取
* Author: wu-hui
* Time: 2024/03/27 17:56
* @param $search
* @param $page
* @param $limit
* @param string $field
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getList($search, $page, $limit, $field = '*'){
$query = $this->dao->searchModel($search);
$list = $query
->field($field)
->order('create_time desc,id desc')
->page($page, $limit)
->select();
$count = $query->count();
return compact('count', 'list');
}
}

View File

@ -234,11 +234,18 @@ class UserRepository extends BaseRepository
public function promoterList(array $where, $page, $limit)
{
$where['is_promoter'] = 1;
$query = $this->dao->search($where)->with(['spread' => function ($query) {
$query->field('uid,nickname,spread_uid');
}, 'brokerage' => function ($query) {
$query->field('brokerage_level,brokerage_name,brokerage_icon');
}]);
$query = $this->dao->search($where)
->with([
'spread' => function($query){
$query->field('uid,nickname,spread_uid');
},
'brokerage' => function($query){
$query->field('brokerage_level,brokerage_name,brokerage_icon');
},
'brokerageApplyFormal' => function($query){
$query->field('id,uid,status');
}
]);
$count = $query->count($this->dao->getPk());
$list = $query->page($page, $limit)->select()->toArray();
if (count($list)) {

View File

@ -7,6 +7,7 @@ namespace app\controller\admin\user;
use app\common\repositories\store\ExcelRepository;
use app\common\repositories\user\UserBrokerageApplyFormalRepository;
use app\common\repositories\user\UserHistoryRepository;
use app\common\repositories\user\UserSignRepository;
use app\common\repositories\user\UserSpreadLogRepository;
@ -29,6 +30,7 @@ use think\App;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
use think\exception\ValidateException;
use think\facade\Db;
/**
@ -623,4 +625,40 @@ class User extends BaseController
[$page, $limit] = $this->getPage();
return app('json')->success($repository->getList( $page, $limit, $id, 1));
}
/**
* Common: 转正申请 - 列表
* Author: wu-hui
* Time: 2024/03/27 17:56
* @return mixed
*/
public function formalList(){
$search = $this->request->params(['uid']);
[$page, $limit] = $this->getPage();
$data = app()->make(UserBrokerageApplyFormalRepository::class)->getList($search, $page, $limit);
return app('json')->success($data);
}
/**
* Common: 转正申请 - 审核
* Author: wu-hui
* Time: 2024/03/27 18:01
* @return mixed
*/
public function formalExamine(){
// 参数获取
$params = $this->request->params(['id','status','reason']);
if($params['id'] <= 0) throw new ValidateException('方法请求,信息不明确!');
// 审核
if((int)$params['status'] === 1){
// 审核通过
app()->make(UserBrokerageApplyFormalRepository::class)->update($params['id'],['status'=>1]);
}else{
// 驳回
app()->make(UserBrokerageApplyFormalRepository::class)->update($params['id'],['status'=>2,'reject_reason'=>$params['reason']]);
}
return app('json')->success('操作成功');
}
}

View File

@ -6,6 +6,7 @@
namespace app\controller\api\user;
use app\common\model\user\UserBrokerageApplyFormal;
use app\common\repositories\store\IntegralRepository;
use app\common\repositories\store\service\StoreServiceRepository;
use app\common\repositories\system\CacheRepository;
@ -25,6 +26,7 @@ use think\App;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
use think\exception\ValidateException;
use think\facade\Db;
class User extends BaseController
@ -93,6 +95,10 @@ class User extends BaseController
'broken_day' => (int)systemConfig('lock_brokerage_timer'),
'user_extract_min' => (int)systemConfig('user_extract_min'),
];
// 获取用户分销商 申请转正信息
$data['is_formal'] = (int)UserBrokerageApplyFormal::where('uid', $user->uid)->value('status');
return app('json')->success($data);
}
@ -621,5 +627,47 @@ class User extends BaseController
$this->repository->updateBaseInfo($data,$user);
return app('json')->success('修改成功');
}
/**
* Common: 分销商申请转正
* Author: wu-hui
* Time: 2024/03/27 17:36
* @return mixed
*/
public function brokerageFormalInfo(){
$voucherImage = $this->request->param('voucher_image','');
$uid = $this->request->uid();
if(empty($voucherImage)) throw new ValidateException('请上传凭证!');
// 判断:是否已经申请
$info = UserBrokerageApplyFormal::where('uid', $uid)->findOrEmpty()->toArray();
if($info){
// 已申请
if($info['status'] == 0) throw new ValidateException('审核中,请勿重复申请!');
if($info['status'] == 1) throw new ValidateException('已通过,请勿重复申请!');
UserBrokerageApplyFormal::update(['voucher_image'=>$voucherImage,'status'=>0],['uid'=>$uid]);
}else{
// 未申请
UserBrokerageApplyFormal::insert([
'uid' => $uid,
'voucher_image' => $voucherImage,
]);
}
return app('json')->success('提交成功');
}
/**
* Common: 获取用户转正申请信息
* Author: wu-hui
* Time: 2024/03/27 16:59
* @return mixed
*/
public function brokerageFormalInfoGet(){
$uid = $this->request->uid();
$info = UserBrokerageApplyFormal::where('uid', $uid)->findOrEmpty()->toArray();
$info['voucher_image'] = $info['voucher_image'] ?? '';
return app('json')->success($info);
}
}

View File

@ -24,6 +24,15 @@ Route::group(function () {
Route::post('/spread/:id/save', '/spreadLevelSave')->name('systemUserSpreadSave')->option([
'_alias' => '修改分销员等级',
]);
// 转正申请
Route::get('promoter/formal_list', '/formalList')->name('systemPromoterFormalList')->option([
'_alias' => '转正申请列表',
]);
Route::get('promoter/formal_examine', '/formalExamine')->name('systemPromoterFormalExamine')->option([
'_alias' => '转正申请列表',
]);
})->prefix('admin.user.User')->option([
'_path' => '/promoter/user',
'_auth' => true,

View File

@ -156,6 +156,12 @@ Route::group('api/', function () {
Route::get('brokerage_top', 'User/brokerage_top');
Route::get('spread_info', 'User/spread_info');
Route::get('spread_level', 'User/spread_info');
// 分销商 - 转正信息
Route::post('brokerage_formal_info', 'User/brokerageFormalInfo');
Route::get('brokerage_formal_info', 'User/brokerageFormalInfoGet');
Route::get('brokerage/info', 'User/brokerage_info');
Route::get('brokerage/all', 'User/brokerage_all');