220 lines
8.3 KiB
PHP
220 lines
8.3 KiB
PHP
<?php
|
|
|
|
namespace app\controller\api;
|
|
|
|
|
|
use app\common\model\system\merchant\Merchant;
|
|
use app\common\repositories\marketing\AgentApplyRepository;
|
|
use app\common\repositories\marketing\AgentBrokerageRepository;
|
|
use app\common\repositories\marketing\AgentRepository;
|
|
use crmeb\basic\BaseController;
|
|
use think\App;
|
|
use think\exception\ValidateException;
|
|
|
|
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','pid']);
|
|
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(){
|
|
// 参数获取
|
|
$params = $this->request->params(['agent_id','type','level']);
|
|
$qrcode = $this->repository->createQrCode($params);
|
|
|
|
return app('json')->success(['qr_code' => $qrcode]);
|
|
}
|
|
/**
|
|
* 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);
|
|
}
|
|
/**
|
|
* Common: 获取配置信息
|
|
* Author: wu-hui
|
|
* Time: 2024/01/31 15:49
|
|
* @return mixed
|
|
*/
|
|
public function getConfig(){
|
|
$config = app()->make(AgentRepository::class)->getConfig();
|
|
|
|
return app('json')->success($config);
|
|
}
|
|
/**
|
|
* Common: 申请成为代理
|
|
* Author: wu-hui
|
|
* Time: 2024/02/01 15:14
|
|
* @return mixed
|
|
*/
|
|
public function apply(){
|
|
// 获取申请参数
|
|
$params = $this->applyCheckParams();
|
|
// 处理数据
|
|
$params['user_info'] = $this->request->userInfo();
|
|
$params['is_app'] = $this->request->isApp();
|
|
|
|
$res = app()->make(AgentApplyRepository::class)->editApplyInfo($params);
|
|
|
|
if($res) return $res;
|
|
else return app('json')->success("操作成功");
|
|
}
|
|
/**
|
|
* Common: 申请参数获取 & 参数校验
|
|
* Author: wu-hui
|
|
* Time: 2024/02/01 13:41
|
|
* @return array
|
|
*/
|
|
public function applyCheckParams():array{
|
|
// 参数获取
|
|
$agentApplyId = (int)$this->request->param('id');
|
|
$data = $this->request->params([
|
|
['pid',0],
|
|
['agent_type',0],
|
|
'contact_name',
|
|
'contact_phone',
|
|
['province_id',0],
|
|
['city_id', 0],
|
|
['area_id', 0],
|
|
['street_id', 0],
|
|
'address',
|
|
['mer_name', ''],
|
|
['enterprise_name', ''],
|
|
['mer_class_id', 0],
|
|
['mer_type_id', 0],
|
|
['mer_images', []],
|
|
// 支付相关
|
|
'pay_type',
|
|
'return_url'
|
|
]);
|
|
$data['uid'] = $this->request->uid();
|
|
// 信息验证
|
|
if((int)$data['pid'] <= 0) throw new ValidateException('非法请求,无邀请信息!');
|
|
if(!in_array((int)$data['agent_type'], [2,3,4,5,6,7,8])) throw new ValidateException('非法请求,代理类型错误!');
|
|
if(empty($data['contact_name'])) throw new ValidateException('请输入联系人姓名!');
|
|
if(empty($data['contact_phone'])) throw new ValidateException('请输入联系人电话!');
|
|
if((int)$data['province_id'] <= 0) throw new ValidateException('请选择地区!');
|
|
if(in_array((int)$data['agent_type'], [5,6,7])){
|
|
if((int)$data['city_id'] <= 0) throw new ValidateException('请选择地区!');
|
|
if((int)$data['area_id'] <= 0) throw new ValidateException('请选择地区!');
|
|
}
|
|
if((int)$data['agent_type'] == 7){
|
|
if((int)$data['street_id'] <= 0) throw new ValidateException('请选择地区!');
|
|
if(empty($data['address'])) throw new ValidateException('请输入详细地址!');
|
|
if(empty($data['mer_name'])) throw new ValidateException('请输入商户名称!');
|
|
if((int)$data['mer_class_id'] <= 0) throw new ValidateException('请选择商户分类!');
|
|
if((int)$data['mer_type_id'] <= 0) throw new ValidateException('请选择商户类型!');
|
|
if(count($data['mer_images']) <= 0) throw new ValidateException('请上传资质证明图片!');
|
|
// 判断:商户名称是否重复
|
|
$merHas = Merchant::where('mer_name',$data['mer_name'])->count();
|
|
if($merHas > 0) throw new ValidateException('商户已经存在!');
|
|
// 判断:商户名称是否重复
|
|
$isHas = app()->make(AgentApplyRepository::class)
|
|
->getSearchModel([])
|
|
->where('mer_name', $data['mer_name'])
|
|
->when($agentApplyId > 0,function($query) use ($agentApplyId){
|
|
$query->where('id','<>',$agentApplyId);
|
|
})
|
|
->count();
|
|
if($isHas > 0) throw new ValidateException('商户已经存在,请勿重复申请!');
|
|
}
|
|
// 信息是否重复
|
|
$isHas = (int)app()->make(AgentApplyRepository::class)
|
|
->getSearchModel(['contact_phone'=>$data['contact_phone']])
|
|
->when($agentApplyId > 0,function($query) use ($agentApplyId){
|
|
$query->where('id','<>',$agentApplyId);
|
|
})->count();
|
|
if($isHas > 0) throw new ValidateException('联系人电话已经存在,请勿重复申请!');
|
|
$isHas = (int)$this->repository
|
|
->getSearchModel(['contact_phone'=>$data['contact_phone']])
|
|
->count();
|
|
if($isHas > 0) throw new ValidateException('联系人电话已经存在,请勿重复申请!');
|
|
// 不能 重复成为当前等级的用户
|
|
$isHas = (int)$this->repository
|
|
->getSearchModel(['agent_type'=>$data['agent_type'],'uid'=>$data['uid']])
|
|
->count();
|
|
if($isHas > 0) throw new ValidateException('代理身份信息已经存在!');
|
|
$isHas = (int)app()->make(AgentApplyRepository::class)
|
|
->getSearchModel(['agent_type'=>$data['agent_type'],'uid'=>$data['uid']])
|
|
->when($agentApplyId > 0,function($query) use ($agentApplyId){
|
|
$query->where('id','<>',$agentApplyId);
|
|
})->count();
|
|
if($isHas > 0) throw new ValidateException('代理身份信息已经存在,请勿重复申请!');
|
|
|
|
|
|
return compact("agentApplyId", "data");
|
|
}
|
|
/**
|
|
* Common: 获取申请记录
|
|
* Author: wu-hui
|
|
* Time: 2024/02/01 18:02
|
|
* @return mixed
|
|
*/
|
|
public function applyRecord(){
|
|
[$page, $limit] = $this->getPage();
|
|
$params = $this->request->params([]);
|
|
$params['uid'] = $this->request->uid();
|
|
$data = app()->make(AgentApplyRepository::class)->getList((array)$params,(int)$page,(int)$limit);
|
|
|
|
return app('json')->success($data);
|
|
}
|
|
/**
|
|
* Common: 单条申请信息
|
|
* Author: wu-hui
|
|
* Time: 2024/02/01 18:27
|
|
* @return mixed
|
|
*/
|
|
public function applyInfo(){
|
|
$applyId = $this->request->param('apply_id');
|
|
$data = app()->make(AgentApplyRepository::class)->getSearchModel(['id'=>$applyId])->findOrEmpty()->toArray();
|
|
|
|
return app('json')->success($data);
|
|
}
|
|
/**
|
|
* Common: 佣金列表获取
|
|
* Author: wu-hui
|
|
* Time: 2024/02/02 17:22
|
|
* @return mixed
|
|
*/
|
|
public function commissionList(){
|
|
[$page, $limit] = $this->getPage();
|
|
$agentId = $this->request->param('agent_id');
|
|
$data = app()->make(AgentBrokerageRepository::class)->getAgentCommissionList((int)$agentId,(int)$page,(int)$limit);
|
|
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
|
|
}
|