Browse Source

Merge branch 'phoenix' of http://120.24.33.109:11081/hyzjshwo/lanzu_api_hyperf into phoenix

# Conflicts:
#	config/routes.php
master
Lemon 5 years ago
parent
commit
c5c768d43c
  1. 11
      app/Constants/v3/ErrorCode.php
  2. 8
      app/Controller/v3/CategoryController.php
  3. 36
      app/Controller/v3/LoginController.php
  4. 32
      app/Controller/v3/UserController.php
  5. 12
      app/Model/v3/User.php
  6. 45
      app/Request/v3/UserUpdateRequest.php
  7. 38
      app/Request/v3/WxLoginRequest.php
  8. 2
      app/Service/MiniprogramService.php
  9. 2
      app/Service/v3/Implementations/CategoryService.php
  10. 40
      app/Service/v3/Implementations/UserInfoService.php
  11. 43
      app/Service/v3/Implementations/WxLoginService.php
  12. 10
      app/Service/v3/Interfaces/UserInfoServiceInterface.php
  13. 10
      app/Service/v3/Interfaces/WxLoginServiceInterface.php
  14. 2
      config/autoload/dependencies.php
  15. 2
      config/config.php
  16. 2
      config/routes.php

11
app/Constants/v3/ErrorCode.php

@ -55,6 +55,17 @@ class ErrorCode extends AbstractConstants
*/
const NOT_BIND_TEL_ERROR = 704;
/**
* 微信登录失败:无效的code
* @Message("微信登录失败:无效的code")
*/
const WXLOGIN_INVALID_CODE = 704;
/**
* 更新失败
* @Message("更新失败")
*/
const USER_INFO_UPDATE_ERROR = 705;
/************************************/
/* 定位相关 751-800 */
/************************************/

8
app/Controller/v3/CategoryController.php

@ -14,8 +14,14 @@ class CategoryController extends BaseController
*/
protected $categoryService;
/**
* 获取分类页所有分类
* 1、无参数
* 2、远程关联获取所有分类信息
* @return \Psr\Http\Message\ResponseInterface
*/
public function all()
{
return $this->success($this->categoryService->all());
return $this->success(['category' => $this->categoryService->all()]);
}
}

36
app/Controller/v3/LoginController.php

@ -0,0 +1,36 @@
<?php
namespace App\Controller\v3;
use App\Controller\BaseController;
use App\Request\v3\WxLoginRequest;
use App\Service\v3\Interfaces\WxLoginServiceInterface;
use Hyperf\Di\Annotation\Inject;
/**
* 登录控制器
* Class LoginController
* @package App\Controller\v3
*/
class LoginController extends BaseController
{
/**
* @Inject
* @var WxLoginServiceInterface
*/
protected $wxLoginService;
/**
* 用户微信登录
* 1、前端上传code
* 2、后端处理登录获取信息并生成或更新用户登录然后返回用户信息
* @param WxLoginRequest $request
*/
public function wxLogin(WxLoginRequest $request)
{
$code = $request->validated()['code'];
$result = $this->wxLoginService->do($code);
return $this->success(['user' => $result]);
}
}

32
app/Controller/v3/UserController.php

@ -2,10 +2,11 @@
namespace App\Controller\v3;
use App\Constants\v3\ErrorCode;
use App\Controller\BaseController;
use App\Request\v3\UserBindTelRequest;
use App\Request\v3\UserUpdateRequest;
use App\Service\v3\Interfaces\UserBindTelServiceInterface;
use App\Service\v3\Interfaces\UserInfoServiceInterface;
use App\Service\v3\Interfaces\VerifyCodeServiceInterface;
use Hyperf\Di\Annotation\Inject;
@ -29,9 +30,22 @@ class UserController extends BaseController
*/
protected $userBindTelService;
/**
* @Inject
* @var UserInfoServiceInterface
*/
protected $userInfoService;
/**
* 用户绑定手机号
* 1、获取参数,tel、user_id、verify_code
* 2、校验用户和验证码
* 3、执行绑定
* @param UserBindTelRequest $request
* @return \Psr\Http\Message\ResponseInterface
*/
public function bindTel(UserBindTelRequest $request)
{
// 获取参数
$params = $request->validated();
// 校验验证码
@ -41,4 +55,18 @@ class UserController extends BaseController
return $this->success([]);
}
/**
* 更新用户信息,上传保存unionid等
* 1、wxlogin成功后,会有user_id,传上来,同时传一些其他的参数
* 2、更新用户数据,头像、昵称、unionid、国家、省份、城市、性别、语言等
*/
public function updateInfo(UserUpdateRequest $request)
{
$data = $request->validated();
$userId = $data['user_id'];
unset($data['user_id']);
$this->userInfoService->do($userId, $data);
return $this->success([]);
}
}

12
app/Model/v3/User.php

@ -7,4 +7,16 @@ use App\Model\Model;
class User extends Model
{
protected $table = 'lanzu_user';
protected $fillable = [
'nick_name',
'avatar',
'openid',
'unionid',
'country',
'province',
'city',
'gender',
'language',
];
}

45
app/Request/v3/UserUpdateRequest.php

@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace App\Request\v3;
use App\Request\BaseFormRequest;
class UserUpdateRequest extends BaseFormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'user_id' => 'required|nonempty',
'nick_name' => 'required|nonempty',
'avatar' => 'required|nonempty',
'openid' => 'required|nonempty',
'unionid' => 'required|nonempty',
'country' => 'string',
'province' => 'string',
'city' => 'string',
'gender' => 'string',
'language' => 'string',
];
}
/**
* @return array
*/
public function messages(): array
{
return [
'*.*' => ':attribute无效',
];
}
public function attributes(): array
{
return parent::attributes();
}
}

38
app/Request/v3/WxLoginRequest.php

@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
namespace App\Request\v3;
use App\Request\BaseFormRequest;
class WxLoginRequest extends BaseFormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'code' => 'required|nonempty',
];
}
/**
* @return array
*/
public function messages(): array
{
return [
'code.*' => ':attribute无效',
];
}
public function attributes(): array
{
return [
'code' => 'CODE',
];
}
}

2
app/Service/MiniprogramService.php

@ -205,7 +205,7 @@ class MiniprogramService implements MiniprogramServiceInterface
$template['mp_template_msg']['data']['remark']['value'] = $data['remark'];
}
$app = Factory::miniProgram(config('wxtempmsg'));
$app = Factory::miniProgram(config('applet'));
$app['guzzle_handler'] = CoroutineHandler::class;
$app->uniform_message->send($template);
}

2
app/Service/v3/Implementations/CategoryService.php

@ -27,6 +27,8 @@ class CategoryService implements CategoryServiceInterface
{
return StoreType::query()
->with('goodsTypes')
->orderBy('sort', 'DESC')
->orderBy('id', 'DESC')
->get()
->toArray();
}

40
app/Service/v3/Implementations/UserInfoService.php

@ -0,0 +1,40 @@
<?php
namespace App\Service\v3\Implementations;
use App\Constants\v3\ErrorCode;
use App\Exception\ErrorCodeException;
use App\Model\v3\User;
use App\Service\v3\Interfaces\UserInfoServiceInterface;
class UserInfoService implements UserInfoServiceInterface
{
/**
* 更新
* @param $userId
* @param $data
* @return int
*/
public function do($userId, $data)
{
$user = User::query()->find($userId);
$res = $user->fill($data)->save();
if (!$res) {
throw new ErrorCodeException(ErrorCode::USER_INFO_UPDATE_ERROR);
}
return $res;
}
public function check($userId)
{
// TODO: Implement check() method.
}
public function undo($userId)
{
// TODO: Implement undo() method.
}
}

43
app/Service/v3/Implementations/WxLoginService.php

@ -0,0 +1,43 @@
<?php
namespace App\Service\v3\Implementations;
use App\Constants\v3\ErrorCode;
use App\Exception\ErrorCodeException;
use App\Model\v3\User;
use EasyWeChat\Factory;
use Hyperf\Guzzle\CoroutineHandler;
class WxLoginService implements \App\Service\v3\Interfaces\WxLoginServiceInterface
{
public function do($code)
{
// 微信登录
$config = config('applet');
$app = Factory::miniProgram($config);
$app['guzzle_handler'] = CoroutineHandler::class;
$result = $app->auth->session($code);
if (isset($result['errcode'])&&$result['errcode'] != 0) {
throw new ErrorCodeException(ErrorCode::WXLOGIN_INVALID_CODE);
}
// 更新或者插入用户数据
return User::query()->firstOrCreate(
['openid' => $result['openid']],
['unionid' => $result['unionid']]
);
}
public function check($userId)
{
// TODO: Implement check() method.
}
public function undo($userId)
{
// TODO: Implement undo() method.
}
}

10
app/Service/v3/Interfaces/UserInfoServiceInterface.php

@ -0,0 +1,10 @@
<?php
namespace App\Service\v3\Interfaces;
interface UserInfoServiceInterface
{
public function do($userId, $data);
public function check($userId);
public function undo($userId);
}

10
app/Service/v3/Interfaces/WxLoginServiceInterface.php

@ -0,0 +1,10 @@
<?php
namespace App\Service\v3\Interfaces;
interface WxLoginServiceInterface
{
public function do($code);
public function check($userId);
public function undo($userId);
}

2
config/autoload/dependencies.php

@ -46,4 +46,6 @@ return [
\App\Service\v3\Interfaces\CategoryServiceInterface::class => \App\Service\v3\Implementations\CategoryService::class,
\App\Service\v3\Interfaces\UpdateShopCartServiceInterface::class => \App\Service\v3\Implementations\UpdateShopCartService::class,
\App\Service\v3\Interfaces\ShopCartServiceInterface::class => \App\Service\v3\Implementations\ShopCartService::class,
\App\Service\v3\Interfaces\WxLoginServiceInterface::class => \App\Service\v3\Implementations\WxLoginService::class,
\App\Service\v3\Interfaces\UserInfoServiceInterface::class => \App\Service\v3\Implementations\UserInfoService::class,
];

2
config/config.php

@ -37,7 +37,7 @@ return [
'key_path' => env('KEY_PATH',''),
'notify_url' => env('NOTIFY_URL',''),
],
'wxtempmsg' => [
'applet' => [
'app_id' => env('APP_ID',''),
'secret' => env('APP_SECRET',''),
],

2
config/routes.php

@ -86,10 +86,12 @@ Router::addGroup('/v3/', function () {
Router::post('category/all', 'App\Controller\v3\CategoryController@all');
Router::post('updateShopCart/update', 'App\Controller\v3\UpdateShopCartController@update');
Router::post('shopCart/detail', 'App\Controller\v3\ShopCartController@detail');
Router::post('login/wxLogin', 'App\Controller\v3\LoginController@wxLogin');
},['middleware' => [\App\Middleware\Auth\ApiMiddleware::class]]);
// 需要登录的路由
Router::addGroup('/v3/', function () {
Router::post('sms/getVerifyCode', 'App\Controller\v3\SmsController@getVerifyCode');
Router::post('user/bindTel', 'App\Controller\v3\UserController@bindTel');
Router::post('user/updateInfo', 'App\Controller\v3\UserController@updateInfo');
},['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]);
Loading…
Cancel
Save