Browse Source

社区点用户绑定,修改内容:用户只绑定最新的

master
weigang 5 years ago
parent
commit
b2b021c80b
  1. 10
      app/Controller/CommunityController.php
  2. 6
      app/Model/UserRelationBind.php
  3. 1
      app/Request/CommunityBindRequest.php
  4. 30
      app/Service/CommunityService.php
  5. 9
      app/Service/CommunityServiceInterface.php
  6. 35
      app/Service/UserCommunityBindService.php
  7. 48
      app/Service/UserRelationBindServiceInterface.php
  8. 2
      config/autoload/dependencies.php
  9. 1
      config/routes.php

10
app/Controller/CommunityController.php

@ -4,8 +4,9 @@ declare(strict_types=1);
namespace App\Controller;
use App\Model\UserRelationBind;
use App\Request\CommunityBindRequest;
use App\Service\CommunityServiceInterface;
use App\Service\UserRelationBindServiceInterface;
use Hyperf\Di\Annotation\Inject;
class CommunityController extends BaseController
@ -13,13 +14,14 @@ class CommunityController extends BaseController
/**
* @Inject
* @var CommunityServiceInterface
* @var UserRelationBindServiceInterface
*/
protected $communityService;
protected $userCommunityService;
public function bind(CommunityBindRequest $request)
{
$res = $this->communityService->bind($request->validated());
$data = $request->validated();
$res = $this->userCommunityService->bindLimitByUser(UserRelationBind::BIND_TYPE_COMMUNITY, $data['source_id'], $data['user_id'], $data['json_data']);
return $this->success(['id' => $res->id]);
}

6
app/Model/UserRelationBind.php

@ -7,6 +7,12 @@ namespace App\Model;
*/
class UserRelationBind extends Model
{
/**
* 社区服务点类型
*/
const BIND_TYPE_COMMUNITY = 1;
/**
* The table associated with the model.
*

1
app/Request/CommunityBindRequest.php

@ -22,7 +22,6 @@ class CommunityBindRequest extends FormRequest
public function rules(): array
{
return [
'bind_type' => 'required|nonempty',
'source_id' => 'required|nonempty',
'user_id' => 'required|nonempty|exists_enable:ims_cjdc_user,id',
'json_data' => 'json',

30
app/Service/CommunityService.php

@ -1,30 +0,0 @@
<?php
namespace App\Service;
use App\Model\UserRelationBind;
class CommunityService implements CommunityServiceInterface
{
public function bind($data)
{
if ($res = $this->isBinded($data['bind_type'], $data['source_id'], $data['user_id'])) {
return $res;
}
return UserRelationBind::query()->updateOrCreate(
['bind_type' => $data['bind_type'], 'source_id' => $data['source_id'], 'user_id' => $data['user_id']],
['json_data' => $data['json_data']]
);
}
public function isBinded($bind_type, $source_id, $user_id)
{
return UserRelationBind::query()
->select('id')
->where(['bind_type' => $bind_type, 'source_id' => $source_id, 'user_id' => $user_id])
->first();
}
}

9
app/Service/CommunityServiceInterface.php

@ -1,9 +0,0 @@
<?php
namespace App\Service;
interface CommunityServiceInterface
{
public function isBinded($bind_type, $source_id, $user_id);
public function bind($data);
}

35
app/Service/UserCommunityBindService.php

@ -0,0 +1,35 @@
<?php
namespace App\Service;
use App\Model\UserRelationBind;
class UserCommunityBindService implements UserRelationBindServiceInterface
{
/**
* @inheritDoc
*/
public function bindLimitByUser($bind_type, $source_id, $user_id, $extra_data)
{
return UserRelationBind::query()->updateOrCreate(
['bind_type' => $bind_type, 'user_id' => $user_id],
['source_id' => $source_id, 'json_data' => $extra_data]
);
}
public function bindLimitBySource($bind_type, $source_id, $user_id, $extra_data)
{
// TODO: Implement bindLimitBySource() method.
}
public function bind($bind_type, $source_id, $user_id, $extra_data)
{
// TODO: Implement bind() method.
}
public function isBinded($bind_type, $source_id, $user_id)
{
// TODO: Implement isBinded() method.
}
}

48
app/Service/UserRelationBindServiceInterface.php

@ -0,0 +1,48 @@
<?php
namespace App\Service;
interface UserRelationBindServiceInterface
{
/**
* 绑定
* 依据用户绑定一个关系,即每次都是新的绑定关系,原来的绑定关系解除(user_id不变,更新其他)
* @param $bind_type
* @param $source_id
* @param $user_id
* @param $extra_data
* @return mixed
*/
public function bindLimitByUser($bind_type, $source_id, $user_id, $extra_data);
/**
* 绑定
* 依据绑定人(根据bind_type确定)绑定一个关系,即每次都是新的绑定关系,原来的绑定关系解除(source_id不变,更新其他)
* @param $bind_type
* @param $source_id
* @param $user_id
* @param $extra_data
* @return mixed
*/
public function bindLimitBySource($bind_type, $source_id, $user_id, $extra_data);
/**
* 绑定
* 始终绑定一个新的关系,如果这个关系(source_id=》user_id)存在则更新其他数据
* @param $bind_type
* @param $source_id
* @param $user_id
* @param $extra_data
* @return mixed
*/
public function bind($bind_type, $source_id, $user_id, $extra_data);
/**
* 是否已经存在绑定关系
* @param $bind_type
* @param $source_id
* @param $user_id
* @return mixed
*/
public function isBinded($bind_type, $source_id, $user_id);
}

2
config/autoload/dependencies.php

@ -26,5 +26,5 @@ return [
\App\Service\FeiePrintServiceInterface::class => \App\Service\FeiePrintService::class,
\App\Service\MiniprogramServiceInterface::class => \App\Service\MiniprogramService::class,
\App\Service\UserServiceInterface::class => \App\Service\UserService::class,
\App\Service\CommunityServiceInterface::class => \App\Service\CommunityService::class,
\App\Service\UserRelationBindServiceInterface::class => \App\Service\UserCommunityBindService::class,
];

1
config/routes.php

@ -54,7 +54,6 @@ Router::addGroup('/v1/',function (){
//小程序支付相关
Router::post('wxminipay/online', 'App\Controller\PaymentController@wxminiPayOnline');
Router::post('wxminipay/offline', 'App\Controller\PaymentController@wxminiPayOffline');
Router::post('Community/bind', 'App\Controller\CommunityController@bind');
},['middleware' => [\App\Middleware\Auth\ApiMiddleware::class]]);
Router::addGroup('/wechat/',function () {

Loading…
Cancel
Save