插件测试站 http://all.zkdygl.com/course/3
<?php
namespace RewardPointPlugin\Controller\Admin;
use AppBundle\Common\ArrayToolkit;
use AppBundle\Controller\Admin\BaseController;
use RewardPointPlugin\Biz\RewardPoint\Service\AccountFlowService;
use RewardPointPlugin\Biz\RewardPoint\Service\AccountService;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Common\Paginator;
class RewardPointController extends BaseController
{
public function indexAction(Request $request)
{
if (!$this->getAccountService()->hasRewardPointPermission()) {
$this->setFlashMessage('danger', '积分没有开启,开启后才能使用相关功能!');
return $this->redirect($this->generateUrl('admin_reward_point_set'));
}
$fields = $request->query->all();
$conditions = array(
'keyword' => '',
'keywordType' => '',
);
$conditions = array_merge($conditions, $fields);
$userProfiles = $this->findMatchedProfilesAndFilterConditions($conditions);
if ($conditions['keywordType'] == 'truename' && empty($userProfiles)) {
$paginator = new Paginator(
$this->get('request'),
0,
20
);
goto response;
}
$userCount = $this->getUserService()->countUsers($conditions);
$paginator = new Paginator(
$this->get('request'),
$userCount,
20
);
$users = $this->getUserService()->searchUsers(
$conditions,
array('createdTime' => 'DESC'),
$paginator->getOffsetCount(),
$paginator->getPerPageCount()
);
if (!empty($users)) {
$userIds = ArrayToolkit::column($users, 'id');
if (empty($userProfiles)) {
$userProfiles = $this->getUserService()->searchUserProfiles(
array('ids' => $userIds),
array(),
0,
PHP_INT_MAX,
array('id', 'mobile', 'truename')
);
}
$conditions['userIds'] = $userIds;
$accounts = $this->getAccountService()->searchAccounts(
$conditions,
array(),
0,
PHP_INT_MAX
);
$accounts = ArrayToolkit::index($accounts, 'userId');
}
response:
return $this->render('RewardPointPlugin::admin/reward-point/index.html.twig', array(
'users' => empty($userProfiles) ? array() : $users,
'userProfiles' => empty($userProfiles) ? array() : $userProfiles,
'accounts' => empty($accounts) ? array() : $accounts,
'paginator' => $paginator,
));
}
public function grantAction(Request $request, $id)
{
$user = $this->getUserService()->getUser($id);
$account = $this->getAccountService()->getAccountByUserId($id);
if ($request->getMethod() === 'POST') {
$profile = $request->request->all();
$this->getAccountService()->grantRewardPoint($id, $profile);
return $this->redirect($this->generateUrl('admin_reward_point_account'));
}
return $this->render(
'RewardPointPlugin::admin/reward-point/grant-modal.html.twig',
array(
'user' => $user,
'account' => $account,
)
);
}
public function detailAction($id)
{
$conditions['userId'] = $id;
$user = $this->getUserService()->getUser($id);
$accountFlowCount = $this->getAccountFlowService()->countAccountFlows($conditions);
$paginator = new Paginator(
$this->get('request'),
$accountFlowCount,
10
);
$accountFlows = $this->getAccountFlowService()->searchAccountFlows(
$conditions,
array('createdTime' => 'DESC'),
$paginator->getOffsetCount(),
$paginator->getPerPageCount()
);
return $this->render(
'RewardPointPlugin::admin/reward-point/detail-modal.html.twig',
array(
'accountFlows' => $accountFlows,
'user' => $user,
'paginator' => $paginator,
)
);
}
public function deductionAction(Request $request, $id)
{
$user = $this->getUserService()->getUser($id);
$account = $this->getAccountService()->getAccountByUserId($id);
if ($request->getMethod() === 'POST') {
$profile = $request->request->all();
$this->getAccountService()->deductionRewardPoint($id, $profile);
return $this->redirect($this->generateUrl('admin_reward_point_account'));
}
return $this->render(
'RewardPointPlugin::admin/reward-point/deduction-modal.html.twig',
array(
'user' => $user,
'account' => $account,
)
);
}
public function logsAction(Request $request)
{
if (!$this->getAccountService()->hasRewardPointPermission()) {
$this->setFlashMessage('danger', '积分没有开启,开启后才能使用相关功能!');
return $this->redirect($this->generateUrl('admin_reward_point_set'));
}
$conditions = $request->query->all();
$conditions['module'] = 'admin_reward_point_account_flow';
$paginator = new Paginator(
$request,
$this->getLogService()->searchLogCount($conditions),
20
);
$logs = $this->getLogService()->searchLogs(
$conditions,
array('createdTime' => 'DESC'),
$paginator->getOffsetCount(),
$paginator->getPerPageCount()
);
$operators = $this->getUserService()->findUsersByIds(ArrayToolkit::column($logs, 'userId'));
$datas = ArrayToolkit::column($logs, 'data');
$users = $this->getUserService()->findUsersByIds(ArrayToolkit::column($datas, 'userId'));
return $this->render('RewardPointPlugin::admin/reward-point/logs.html.twig', array(
'logs' => $logs,
'paginator' => $paginator,
'operators' => $operators,
'users' => $users,
));
}
private function findMatchedProfilesAndFilterConditions(&$conditions)
{
$userProfiles = array();
if (!empty($conditions['keywordType']) && in_array($conditions['keywordType'], array('truename', 'idcard'))) {
$userProfiles = $this->getUserService()->searchUserProfiles(
$conditions,
array(),
0,
PHP_INT_MAX,
array('id', 'mobile', 'truename')
);
if (!empty($userProfiles)) {
$userIds = ArrayToolkit::column($userProfiles, 'id');
$conditions['userIds'] = $userIds;
}
$userProfiles = ArrayToolkit::index($userProfiles, 'id');
}
return $userProfiles;
}
/**
* @return AccountService
*/
protected function getAccountService()
{
return $this->createService('RewardPointPlugin:RewardPoint:AccountService');
}
/**
* @return AccountFlowService
*/
protected function getAccountFlowService()
{
return $this->createService('RewardPointPlugin:RewardPoint:AccountFlowService');
}
}
应用介绍
可以使用积分发放功能插件,对于网校内学员的一些基础操作行为发放积分,促使学员为了获得积分而去进行登录、提问等等。
更新简介
1.1.0 (2019-12-12)
- 优化:适配新后台
1.0.2 (2018-04-12)
优化:积分账户访问速度
1.0.1 (2018-03-28)
优化:导航头像积分模块
优化:适配积分抵现插件
新增:用户登录、发表话题等行为获取积分功能
1、后台用户积分设置规则:
2、用户获取的积分情况