徐总多门店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
4.4 KiB

2 months ago
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\controller\api\v1\system;
use app\Request;
use app\services\supplier\SystemSupplierServices;
use app\services\system\admin\SystemAdminServices;
use app\services\system\SystemUserApplyServices;
use app\validate\api\user\UserApplyValidate;
use crmeb\services\CacheService;
use think\exception\ValidateException;
/**
* 用户申请类
* Class UserApply
* @package app\controller\api\v1\system
*/
class UserApply
{
protected $services = NUll;
/**
* UserExtract constructor.
* @param SystemUserApplyServices $services
*/
public function __construct(SystemUserApplyServices $services)
{
$this->services = $services;
}
/**
* 获取单个申请详情
* @param Request $request
* @param SystemSupplierServices $supplierServices
* @param SystemAdminServices $adminServices
* @param $id
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getInfo(Request $request, SystemSupplierServices $supplierServices, SystemAdminServices $adminServices, $id)
{
if (!$id) {
return app('json')->fail('缺少参数');
}
$info = $this->services->get((int)$id);
if (!$info || $info['uid'] != $request->uid()) {
return app('json')->fail('数据不存在');
}
$info = $info->toArray();
$data = ['url' => sys_config('site_url') . '/'. config('admin.supplier_prefix'), 'account' => '', 'pwd' => ''];
if ($info['status'] == 1 && $info['relation_id']) {//审核通过
$data['account'] = $info['phone'];
$supplierInfo = $supplierServices->get(['id' => $info['relation_id']], ['id', 'admin_id']);
if ($supplierInfo) {
$adminInfo = $adminServices->get(['id' => $supplierInfo['admin_id']], ['id', 'account']);
if ($adminInfo) $data['account'] = $adminInfo['account'] ?? '';
}
$data['pwd'] = substr($info['phone'], -6);
}
$info['add_time'] = $info['add_time'] ? date('Y-m-d H:i', $info['add_time']) : '';
$info['status_time'] = $info['status_time'] ? date('Y-m-d H:i', $info['status_time']) : '';
$info = array_merge($info, $data);
return app('json')->success($info);
}
/**
* 申请供应商
* @param Request $request
* @param $id
* @return \think\Response
*/
public function userApply(Request $request, $id)
{
$data = $request->postMore([
['name', ''],//用户名称
['phone', ''],//手机号
['system_name', ''],//供应商名称
['captcha', ''],//验证码
['images', []],//资质图片
]);
//验证手机号
try {
validate(UserApplyValidate::class)->check($data);
} catch (ValidateException $e) {
return app('json')->fail($e->getError());
}
$captcha = $data['captcha'];
unset($data['captcha']);
//验证验证码
$verifyCode = CacheService::get('code_' . $data['phone']);
if (!$verifyCode)
return app('json')->fail('请先获取验证码');
$verifyError = (int)CacheService::get('code_error_' . $data['phone']);
if ($verifyError >= 10) {
return app('json')->fail('请稍后在获取');
}
$verifyCode = substr($verifyCode, 0, 6);
if ($verifyCode != $captcha) {
CacheService::set('code_error_' . $data['phone'], $verifyError + 1, 180);
return app('json')->fail('验证码错误');
}
$res = $this->services->saveApply((int)$id, (int)$request->uid(), $data);
if ($res) {
CacheService::delete('code_' . $data['phone']);
CacheService::delete('code_error_' . $data['phone']);
return app('json')->successful('申请成功!', ['id' => $res]);
}
return app('json')->fail('申请失败!');
}
/**
* 获取申请记录
* @param Request $request
* @return \think\Response
*/
public function userApplyRecord(Request $request)
{
return app('json')->success($this->services->getUserApply((int)$request->uid()));
}
}