Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
8d34485be2
|
|
@ -6,6 +6,8 @@ use app\common\dao\marketing\AgentDao;
|
|||
use app\common\model\marketing\Agent;
|
||||
use app\common\model\system\merchant\Merchant;
|
||||
use app\common\repositories\BaseRepository;
|
||||
use crmeb\services\QrcodeService;
|
||||
use think\exception\ValidateException;
|
||||
use think\facade\Db;
|
||||
|
||||
class AgentRepository extends BaseRepository{
|
||||
|
|
@ -34,6 +36,50 @@ class AgentRepository extends BaseRepository{
|
|||
|
||||
return compact('count','list');
|
||||
}
|
||||
/**
|
||||
* Common: 获取全部信息列表
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/29 16:00
|
||||
* @param array $params
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function getAllList(array $params):array{
|
||||
$query = $this->dao->searchList($params);
|
||||
return $query->select()->toArray();
|
||||
}
|
||||
/**
|
||||
* Common: 获取单条代理人员信息
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 9:27
|
||||
* @param $id
|
||||
* @return array
|
||||
*/
|
||||
public function getSingleInfo($id){
|
||||
return $this->dao->searchList(['id'=>$id])->findOrEmpty()->toArray();
|
||||
}
|
||||
/**
|
||||
* Common: 生成对应的二维码
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/29 17:40
|
||||
* @param array $data
|
||||
* @param string $type
|
||||
* @return mixed
|
||||
*/
|
||||
public function createQrCode(array $data,string $type = 'inviteSupplier'){
|
||||
// 参数获取
|
||||
switch($type){
|
||||
case 'inviteSupplier':
|
||||
$valueData = 'agent_id=' . $data['agent_id'];
|
||||
$path = 'pages/supplier/apply_join';
|
||||
return app()->make(QrcodeService::class)->createQrCode($valueData,$path);
|
||||
break;
|
||||
}
|
||||
|
||||
throw new ValidateException('小程序码生成失败!');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -197,10 +243,4 @@ class AgentRepository extends BaseRepository{
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
namespace app\controller\admin\supplier;
|
||||
|
||||
|
||||
use app\services\supplier\SystemSupplierApplyServices;
|
||||
use crmeb\basic\BaseController;
|
||||
use think\App;
|
||||
use think\exception\ValidateException;
|
||||
|
||||
class Apply extends BaseController{
|
||||
|
||||
public function __construct(App $app, SystemSupplierApplyServices $services){
|
||||
parent::__construct($app);
|
||||
$this->services = $services;
|
||||
}
|
||||
/**
|
||||
* Common: 列表获取
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 15:13
|
||||
* @return mixed
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function applyList(){
|
||||
$search = $this->request->params(['winery_name','contacts_name','contacts_phone','invite_agent_id','status']);
|
||||
[$page, $limit] = $this->getPage();
|
||||
$data = $this->services->getList($search, $page, $limit);
|
||||
|
||||
return app('json')->success($data);
|
||||
}
|
||||
/**
|
||||
* Common: 审核
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 15:53
|
||||
* @return mixed
|
||||
*/
|
||||
public function toExamine(){
|
||||
// 参数获取
|
||||
$params = $this->request->params(['id','status','reason']);
|
||||
if($params['id'] <= 0) throw new ValidateException('方法请求,信息不明确!');
|
||||
// 审核通过 主动生成账号
|
||||
if((int)$params['status'] === 1){
|
||||
// 审核通过
|
||||
$this->services->toExaminePass((array)$params);
|
||||
}else{
|
||||
// 驳回
|
||||
$this->services->update($params['id'],['status'=>$params['status'],'reason'=>$params['reason']]);
|
||||
}
|
||||
|
||||
return app('json')->success('操作成功');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
namespace app\controller\api;
|
||||
|
||||
|
||||
use app\common\repositories\marketing\AgentRepository;
|
||||
use crmeb\basic\BaseController;
|
||||
use think\App;
|
||||
|
||||
|
||||
class Agent extends BaseController{
|
||||
|
||||
protected $repository;
|
||||
|
||||
public function __construct(App $app, AgentRepository $repository){
|
||||
parent::__construct($app);
|
||||
$this->repository = $repository;
|
||||
}
|
||||
/**
|
||||
* Common: 获取代理列表
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/29 16:00
|
||||
* @return mixed
|
||||
*/
|
||||
public function agentList(){
|
||||
// 参数处理
|
||||
[$page, $limit] = $this->getPage();
|
||||
$params = $this->request->params(['is_get_self','not_page']);
|
||||
if((int)$params['is_get_self'] > 0) $params['uid'] = $this->request->uid();
|
||||
// 信息列表获取
|
||||
if((int)$params['not_page'] > 0) $data = app()->make(AgentRepository::class)->getAllList((array)$params);
|
||||
else $data = app()->make(AgentRepository::class)->getList((array)$params,(int)$page,(int)$limit);
|
||||
|
||||
return app('json')->success($data);
|
||||
}
|
||||
/**
|
||||
* Common: 二维码 - 供应商入驻二维码
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/29 17:40
|
||||
* @return mixed
|
||||
*/
|
||||
public function qrCodeInviteSupplier(){
|
||||
// 参数获取
|
||||
$agentId = (int)$this->request->param('agent_id');
|
||||
if((int)$agentId > 0){
|
||||
$qrcode = $this->repository->createQrCode(['agent_id'=>$agentId]);
|
||||
|
||||
return app('json')->success(['qr_code' => $qrcode]);
|
||||
}
|
||||
|
||||
return app('json')->fail('小程序码生成失败!');
|
||||
}
|
||||
/**
|
||||
* Common: 获取单条代理人员信息
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 9:27
|
||||
* @param $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function singleAgentInfo($id){
|
||||
$res = $this->repository->getSingleInfo($id);
|
||||
|
||||
return app('json')->success($res);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
|
||||
namespace app\controller\api;
|
||||
|
||||
|
||||
use app\services\supplier\SystemSupplierApplyServices;
|
||||
use app\services\supplier\SystemSupplierServices;
|
||||
use crmeb\basic\BaseController;
|
||||
use think\App;
|
||||
use think\exception\ValidateException;
|
||||
|
||||
class Supplier extends BaseController{
|
||||
|
||||
protected $services;
|
||||
|
||||
public function __construct(App $app, SystemSupplierServices $services){
|
||||
parent::__construct($app);
|
||||
$this->services = $services;
|
||||
}
|
||||
|
||||
/**
|
||||
* Common: 申请入驻
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 14:28
|
||||
* @return mixed
|
||||
*/
|
||||
public function applyJoin(){
|
||||
// 参数获取
|
||||
$data = $this->checkParam();
|
||||
if((int)$data['supplierApplyId'] > 0){
|
||||
// 编辑账号信息
|
||||
app()->make(SystemSupplierApplyServices::class)->editInfo((array)$data);
|
||||
}else{
|
||||
// 添加账号
|
||||
app()->make(SystemSupplierApplyServices::class)->createApplyInfo((array)$data);
|
||||
}
|
||||
|
||||
return app('json')->success('操作成功');
|
||||
}
|
||||
/**
|
||||
* Common: 申请信息接收
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 14:18
|
||||
* @return array
|
||||
*/
|
||||
private function checkParam():array{
|
||||
// 接收表单参数
|
||||
$supplierApplyId = (int)$this->request->param('id');
|
||||
$applyInfo = $this->request->params([
|
||||
'invite_agent_id',
|
||||
'winery_name',
|
||||
'scale',
|
||||
'cellar_size',
|
||||
'corporation_name',
|
||||
'corporation_phone',
|
||||
['corporation_id_card',[]],
|
||||
'chairman_name',
|
||||
'chairman_phone',
|
||||
['chairman_id_card',[]],
|
||||
'contacts_name',
|
||||
'contacts_phone',
|
||||
'business_license',
|
||||
'production_icense',
|
||||
'circulative_license',
|
||||
]);
|
||||
// 数据校验
|
||||
if (empty($applyInfo['invite_agent_id'])) throw new ValidateException('非法请求,无有效邀请人!');
|
||||
if (empty($applyInfo['winery_name'])) throw new ValidateException('请输入酒厂名称!');
|
||||
if (empty($applyInfo['scale'])) throw new ValidateException('请输入年产量多少吨!');
|
||||
if (empty($applyInfo['cellar_size'])) throw new ValidateException('请输入窖池大小!');
|
||||
if (empty($applyInfo['corporation_name'])) throw new ValidateException('请输入法人姓名!');
|
||||
if (empty($applyInfo['corporation_phone'])) throw new ValidateException('请输入法人电话!');
|
||||
if (isPhone($applyInfo['corporation_phone'])) throw new ValidateException('请输入正确的法人电话!');
|
||||
if (empty($applyInfo['corporation_id_card'])) throw new ValidateException('请上传法人身份证正反面图片!');
|
||||
if (empty($applyInfo['chairman_name'])) throw new ValidateException('请输入董事长姓名!');
|
||||
if (empty($applyInfo['chairman_phone'])) throw new ValidateException('请输入董事长电话!');
|
||||
if (isPhone($applyInfo['chairman_phone'])) throw new ValidateException('请输入正确的董事长电话!');
|
||||
if (empty($applyInfo['chairman_id_card'])) throw new ValidateException('请上传董事长身份证正反面图片!');
|
||||
if (empty($applyInfo['contacts_name'])) throw new ValidateException('请输入联系人姓名!');
|
||||
if (empty($applyInfo['contacts_phone'])) throw new ValidateException('请输入联系人电话!');
|
||||
if (isPhone($applyInfo['contacts_phone'])) throw new ValidateException('请输入正确的联系人电话!');
|
||||
if (empty($applyInfo['business_license'])) throw new ValidateException('请上传营业执照!');
|
||||
if (empty($applyInfo['production_icense'])) throw new ValidateException('请上传生产许可证!');
|
||||
if (empty($applyInfo['circulative_license'])) throw new ValidateException('请上传流通许可证!');
|
||||
// 联系人及联系人手机号
|
||||
$isHas = app()->make(SystemSupplierApplyServices::class)->searchModel(['contacts_phone'=>$applyInfo['contacts_phone']])->count();
|
||||
if($isHas >= 1) throw new ValidateException('联系人已经存在,请勿重复申请!');
|
||||
// 酒厂是否已经存在
|
||||
$isHas = app()->make(SystemSupplierApplyServices::class)->searchModel(['winery_name'=>$applyInfo['winery_name']])->count();
|
||||
if($isHas >= 1) throw new ValidateException('酒厂已经存在,请勿重复申请!');
|
||||
$isHas = app()->make(SystemSupplierApplyServices::class)->searchModel(['winery_name'=>$applyInfo['winery_name']])->count();
|
||||
if($isHas >= 1) throw new ValidateException('酒厂已经存在,请勿重复申请!');
|
||||
$nameIsHave = $this->services->isHave('supplier_name',$applyInfo['winery_name']);
|
||||
if($nameIsHave) throw new ValidateException('该酒厂已经入驻,请勿重复申请!');
|
||||
|
||||
|
||||
return compact('supplierApplyId','applyInfo');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
namespace app\dao\supplier;
|
||||
|
||||
use app\dao\BaseDao;
|
||||
use app\model\supplier\SystemSupplierApply;
|
||||
|
||||
class SystemSupplierApplyDao extends BaseDao{
|
||||
|
||||
protected function setModel(): string{
|
||||
|
||||
return SystemSupplierApply::class;
|
||||
}
|
||||
|
||||
// 公共搜索模型
|
||||
public function searchModel(array $search){
|
||||
return $this->getModel()
|
||||
->when(isset($search['id']) && $search['id'] !== '',function($query) use ($search){
|
||||
$query->where('id',$search['id']);
|
||||
})
|
||||
->when(isset($search['contacts_phone']) && $search['contacts_phone'] !== '',function($query) use ($search){
|
||||
$query->where('contacts_phone',$search['contacts_phone']);
|
||||
})
|
||||
->when(isset($search['winery_name']) && $search['winery_name'] !== '',function($query) use ($search){
|
||||
$query->where('winery_name','like',"%{$search['winery_name']}%");
|
||||
})
|
||||
->when(isset($search['contacts_name']) && $search['contacts_name'] !== '',function($query) use ($search){
|
||||
$query->where('contacts_name','like',"%{$search['contacts_name']}%");
|
||||
})
|
||||
->when(isset($search['invite_agent_id']) && $search['invite_agent_id'] !== '',function($query) use ($search){
|
||||
$query->where('invite_agent_id',$search['invite_agent_id']);
|
||||
})
|
||||
->when(isset($search['status']) && $search['status'] !== '',function($query) use ($search){
|
||||
$query->where('status',$search['status']);
|
||||
})
|
||||
->with([
|
||||
'agent' => function($query){
|
||||
$query->field('id,uid')
|
||||
->with([
|
||||
'user' => function($query){
|
||||
$query->field('uid,nickname,avatar')->bind(['nickname','avatar']);
|
||||
}
|
||||
]);
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
namespace app\model\supplier;
|
||||
|
||||
use app\common\model\marketing\Agent;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
|
||||
class SystemSupplierApply extends BaseModel{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'system_supplier_apply';
|
||||
|
||||
|
||||
public function setCorporationIdCardAttr($value){
|
||||
return implode(',',$value);
|
||||
}
|
||||
public function setChairmanIdCardAttr($value){
|
||||
return implode(',',$value);
|
||||
}
|
||||
public function getCorporationIdCardAttr($value){
|
||||
return explode(',',$value);
|
||||
}
|
||||
public function getChairmanIdCardAttr($value){
|
||||
return explode(',',$value);
|
||||
}
|
||||
|
||||
|
||||
public function agent(){
|
||||
return $this->hasOne(Agent::class,'id','invite_agent_id');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
namespace app\services\supplier;
|
||||
|
||||
use app\dao\supplier\SystemSupplierApplyDao;
|
||||
use app\services\BaseServices;
|
||||
use crmeb\exceptions\AdminException;
|
||||
|
||||
class SystemSupplierApplyServices extends BaseServices{
|
||||
|
||||
public function __construct(SystemSupplierApplyDao $dao){
|
||||
$this->dao = $dao;
|
||||
}
|
||||
/**
|
||||
* Common: 查询模型
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 14:46
|
||||
* @param $where
|
||||
* @return \crmeb\basic\BaseModel
|
||||
*/
|
||||
public function searchModel($where){
|
||||
return $this->dao->searchModel($where);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Common: 获取列表信息
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 15:13
|
||||
* @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');
|
||||
}
|
||||
/**
|
||||
* Common: 添加申请信息
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 14:28
|
||||
* @param array $data
|
||||
* @return mixed
|
||||
*/
|
||||
public function createApplyInfo(array $data){
|
||||
return $this->transaction(function() use ($data){
|
||||
// 添加供应商信息
|
||||
$relation_id = $this->dao->save($data['applyInfo'])->id;
|
||||
if(!$relation_id) throw new AdminException('申请失败');
|
||||
|
||||
return $relation_id;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Common: 审核通过的操作
|
||||
* Author: wu-hui
|
||||
* Time: 2024/01/30 16:54
|
||||
* @param $params
|
||||
* @return mixed
|
||||
*/
|
||||
public function toExaminePass($params){
|
||||
return $this->transaction(function() use ($params){
|
||||
// 修改状态
|
||||
$this->update($params['id'],['status'=>$params['status']]);
|
||||
// 自动生成账号信息
|
||||
$applyInfo = $this->searchModel(['id'=>$params['id']])->findOrEmpty()->toArray();
|
||||
app()->make(SystemSupplierServices::class)->create([
|
||||
'accountInfo' => [
|
||||
'supplier_name' => $applyInfo['winery_name'],
|
||||
'detailed_address' => '',
|
||||
'name' => $applyInfo['contacts_name'],
|
||||
'phone' => $applyInfo['contacts_phone'],
|
||||
'is_show' => 1,
|
||||
'invite_agent_id' => $applyInfo['agent']['id'] ?? 0,
|
||||
'invite_uid' => $applyInfo['agent']['uid'] ?? 0,
|
||||
],
|
||||
'accountPassword' => [
|
||||
'supplier_account' => $applyInfo['contacts_phone'],
|
||||
'supplier_password' => substr($applyInfo['contacts_phone'],-6),
|
||||
],
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -9,19 +9,29 @@ use app\common\middleware\LogMiddleware;
|
|||
Route::group(function () {
|
||||
// 供应商
|
||||
Route::group('system/supplier', function () {
|
||||
Route::post('edit_info', '/editInfo')->name('systemSupplierCreate')->option([
|
||||
// 列表相关
|
||||
Route::post('edit_info', 'Supplier/editInfo')->name('systemSupplierCreate')->option([
|
||||
'_alias' => '添加供应商',
|
||||
]);
|
||||
Route::get('list', '/getList')->name('systemSupplierList')->option([
|
||||
Route::get('list', 'Supplier/getList')->name('systemSupplierList')->option([
|
||||
'_alias' => '供应商列表',
|
||||
]);
|
||||
Route::post('info/:id', '/supplierInfo')->name('systemSupplierInfo')->option([
|
||||
Route::post('info/:id', 'Supplier/supplierInfo')->name('systemSupplierInfo')->option([
|
||||
'_alias' => '获取信息',
|
||||
]);
|
||||
// 申请审核
|
||||
Route::get('apply_list', 'Apply/applyList')->name('systemSupplierApplyList')->option([
|
||||
'_alias' => '供应商申请列表',
|
||||
]);
|
||||
Route::post('apply_to_examine', 'Apply/toExamine')->name('systemSupplierApplyToExamine')->option([
|
||||
'_alias' => '供应商申请审核',
|
||||
]);
|
||||
|
||||
|
||||
|
||||
})->prefix('admin.supplier.Supplier')->option([
|
||||
|
||||
|
||||
})->prefix('admin.supplier.')->option([
|
||||
'_path' => '/supplier/supplier',
|
||||
'_auth' => true,
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -381,10 +381,33 @@ Route::group('api/', function () {
|
|||
Route::group('merchant', function () {
|
||||
Route::get('promote_qr_code', 'Merchant/promoteQrCode');// 推广二维码
|
||||
Route::get('online_payment_qr_code', 'Merchant/onlinePaymentQrCode');// 买单二维码
|
||||
|
||||
|
||||
|
||||
})->prefix('api.store.merchant.');
|
||||
// 代理中心相关
|
||||
Route::group('agent', function () {
|
||||
Route::get('agent_list', 'agentList');// 我的代理身份列表
|
||||
Route::get('qr_code_invite_supplier', 'qrCodeInviteSupplier');// 供应商邀请二维码
|
||||
Route::get('single_agent_info/:id', 'singleAgentInfo');// 获取单个代理人员信息
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})->prefix('api.Agent/');
|
||||
// 供应商相关
|
||||
Route::group('supplier', function () {
|
||||
Route::post('apply', 'applyJoin');// 申请成为供应商
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})->prefix('api.Supplier/');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})->middleware(UserTokenMiddleware::class, true);
|
||||
|
|
|
|||
Loading…
Reference in New Issue