Files
douba_shop/app/controller/api/v1/system/UserApply.php
Karlcarlo c7f85ffbda feat: 添加阿里云短信服务支持并优化验证码逻辑
- 引入 alibabacloud/dysmsapi-20170525 依赖,集成阿里云短信服务
- 将短信验证码从6位改为4位,优化用户体验
- 添加聚水潭商品按时间范围同步功能,支持分页拉取
- 增强Cron任务异常处理,添加错误日志记录
- 修复系统附件服务中图片路径处理逻辑
- 更新阿里云SDK相关组件至最新版本
- 添加think-trace调试扩展,便于问题排查
- 优化跨域中间件,使用str_contains替代strpos
2026-04-30 15:19:40 +08:00

132 lines
4.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 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 UserApplyController
* @package app\controller\api\v1\system
*/
class UserApply
{
protected $services = NUll;
/**
* UserExtractController 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']);
if (sys_config('supplier_apply_phone_verify') == 1) {
//验证验证码
$verifyCode = CacheService::get('code_' . $data['phone']);
if (!$verifyCode)
return app('json')->fail('请先获取验证码');
$verifyCode = substr($verifyCode, 0, 4);
if ($verifyCode != $captcha) {
return app('json')->fail('验证码错误');
}
}
$res = $this->services->saveApply((int)$id, (int)$request->uid(), $data);
if ($res) {
CacheService::delete('code_' . $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()));
}
}