|
@@ -14,6 +14,7 @@ namespace app\services\agent;
|
|
|
use app\dao\agent\AgentLevelDao;
|
|
|
use app\services\BaseServices;
|
|
|
use app\services\order\StoreOrderServices;
|
|
|
+use app\services\user\UserAwardIntegralServices;
|
|
|
use app\services\user\UserBrokerageServices;
|
|
|
use app\services\user\UserExtractServices;
|
|
|
use app\services\user\UserServices;
|
|
@@ -69,19 +70,19 @@ class AgentLevelServices extends BaseServices
|
|
|
{
|
|
|
$where['is_del'] = 0;
|
|
|
[$page, $limit] = $this->getPageValue();
|
|
|
- $count = $this->dao->count($where);
|
|
|
- $list = [];
|
|
|
- if ($count) {
|
|
|
- $list = $this->dao->getList($where, '*', ['task' => function ($query) {
|
|
|
- $query->field('count(*) as sum');
|
|
|
- }], $page, $limit);
|
|
|
- $store_brokerage_ratio = sys_config('store_brokerage_ratio');
|
|
|
- $store_brokerage_two = sys_config('store_brokerage_two');
|
|
|
- foreach ($list as &$item) {
|
|
|
- $item['one_brokerage_ratio'] = $this->compoteBrokerage($store_brokerage_ratio, $item['one_brokerage']);
|
|
|
- $item['two_brokerage_ratio'] = $this->compoteBrokerage($store_brokerage_two, $item['two_brokerage']);
|
|
|
- }
|
|
|
- }
|
|
|
+ $count = $this->dao->count($where);
|
|
|
+ $list = [];
|
|
|
+ if ($count) {
|
|
|
+ $list = $this->dao->getList($where, '*', ['task' => function ($query) {
|
|
|
+ $query->field('count(*) as sum');
|
|
|
+ }], $page, $limit);
|
|
|
+ $store_brokerage_ratio = sys_config('store_brokerage_ratio');
|
|
|
+ $store_brokerage_two = sys_config('store_brokerage_two');
|
|
|
+ foreach ($list as &$item) {
|
|
|
+ $item['one_brokerage_ratio'] = $this->compoteBrokerage($store_brokerage_ratio, $item['one_brokerage']);
|
|
|
+ $item['two_brokerage_ratio'] = $this->compoteBrokerage($store_brokerage_two, $item['two_brokerage']);
|
|
|
+ }
|
|
|
+ }
|
|
|
return compact('count', 'list');
|
|
|
}
|
|
|
|
|
@@ -143,10 +144,10 @@ class AgentLevelServices extends BaseServices
|
|
|
//推广人排行
|
|
|
$startTime = strtotime('this week Monday');
|
|
|
$endTime = time();
|
|
|
- $field = 'spread_uid,count(uid) AS count,spread_time';
|
|
|
- /** @var UserSpreadServices $userSpreadServices */
|
|
|
- $userSpreadServices = app()->make(UserSpreadServices::class);
|
|
|
- $rankList = $userSpreadServices->getAgentRankList([$startTime, $endTime], $field);
|
|
|
+ $field = 'spread_uid,count(uid) AS count,spread_time';
|
|
|
+ /** @var UserSpreadServices $userSpreadServices */
|
|
|
+ $userSpreadServices = app()->make(UserSpreadServices::class);
|
|
|
+ $rankList = $userSpreadServices->getAgentRankList([$startTime, $endTime], $field);
|
|
|
$rank = 0;
|
|
|
foreach ($rankList as $key => $item) {
|
|
|
if ($item['spread_uid'] == $uid) $rank = $key + 1;
|
|
@@ -156,7 +157,16 @@ class AgentLevelServices extends BaseServices
|
|
|
/** @var UserExtractServices $extractService */
|
|
|
$extractService = app()->make(UserExtractServices::class);
|
|
|
$user['extract_price'] = $extractService->sum(['uid' => $uid, 'status' => 1], 'extract_price');
|
|
|
- return ['user' => $user, 'level_list' => $list, 'level_info' => $levelInfo];
|
|
|
+
|
|
|
+ $award_integral_service = app()->make(UserAwardIntegralServices::class);
|
|
|
+ $award_lack = $award_integral_service->getLake();
|
|
|
+ $integral_price = $award_integral_service->getPrice();
|
|
|
+ $static_integral = $award_integral_service->getIntegralSum(['status' => 0, 'type' => 0, 'uid' => $user['uid']]);
|
|
|
+ $action_integral = $award_integral_service->getIntegralSum(['status' => 0, 'type' => 1, 'uid' => $user['uid']]);
|
|
|
+ $user['is_default_avatar'] = $user['avatar'] == sys_config('h5_avatar') ? 1 : 0;
|
|
|
+ $user['achievement'] = $award_integral_service->getAchievement($user['uid']);
|
|
|
+
|
|
|
+ return ['user' => array_merge($user, compact('award_lack', 'integral_price', 'static_integral', 'action_integral')), 'level_list' => $list, 'level_info' => $levelInfo];
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -279,69 +289,69 @@ class AgentLevelServices extends BaseServices
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 计算一二级返佣比率上浮
|
|
|
- * @param $ratio
|
|
|
- * @param $brokerage
|
|
|
- * @return int|string
|
|
|
- */
|
|
|
- public function compoteBrokerage($ratio, $brokerage)
|
|
|
- {
|
|
|
- if (!$ratio) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
- $brokerage = bcdiv((string)$brokerage, '100', 4);
|
|
|
- if ($brokerage) {
|
|
|
- return bcmul((string)$ratio, bcadd('1', (string)$brokerage, 4), 2);
|
|
|
- }
|
|
|
- return $brokerage;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 计算一二级返佣比率上浮
|
|
|
+ * @param $ratio
|
|
|
+ * @param $brokerage
|
|
|
+ * @return int|string
|
|
|
+ */
|
|
|
+ public function compoteBrokerage($ratio, $brokerage)
|
|
|
+ {
|
|
|
+ if (!$ratio) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ $brokerage = bcdiv((string)$brokerage, '100', 4);
|
|
|
+ if ($brokerage) {
|
|
|
+ return bcmul((string)$ratio, bcadd('1', (string)$brokerage, 4), 2);
|
|
|
+ }
|
|
|
+ return $brokerage;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 添加等级表单
|
|
|
- * @param int $id
|
|
|
- * @return array
|
|
|
- * @throws \FormBuilder\Exception\FormBuilderException
|
|
|
- */
|
|
|
- public function createForm()
|
|
|
- {
|
|
|
- $store_brokerage_ratio = sys_config('store_brokerage_ratio');
|
|
|
- $store_brokerage_two = sys_config('store_brokerage_two');
|
|
|
+ /**
|
|
|
+ * 添加等级表单
|
|
|
+ * @param int $id
|
|
|
+ * @return array
|
|
|
+ * @throws \FormBuilder\Exception\FormBuilderException
|
|
|
+ */
|
|
|
+ public function createForm()
|
|
|
+ {
|
|
|
+ $store_brokerage_ratio = sys_config('store_brokerage_ratio');
|
|
|
+ $store_brokerage_two = sys_config('store_brokerage_two');
|
|
|
|
|
|
- $field[] = Form::input('name', '等级名称')->col(24);
|
|
|
- $field[] = Form::number('grade', '等级', 0)->min(0)->precision(0);
|
|
|
- $field[] = Form::frameImage('image', '背景图', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'image')))->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择背景图'));
|
|
|
- $field[] = Form::number('one_brokerage', '一级上浮', 0)->info('在分销一级佣金基础上浮(0-1000之间整数)百分比,目前一级返佣比率:'. $store_brokerage_ratio . '%,例如上浮10%,则返佣比率:一级返佣比率 * (1 + 一级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_ratio, 10) .'%')->min(0)->max(1000);
|
|
|
- $field[] = Form::number('two_brokerage', '二级上浮', 0)->info('在分销二级佣金基础上浮(0-1000之间整数)百分比,目前二级返佣比率:'. $store_brokerage_two . '%,例如上浮10%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_two, 10). '%')->min(0)->max(1000);
|
|
|
- $field[] = Form::radio('status', '是否显示', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 0, 'label' => '隐藏']]);
|
|
|
- return create_form('添加分销员等级', $field, Url::buildUrl('/agent/level'), 'POST');
|
|
|
- }
|
|
|
+ $field[] = Form::input('name', '等级名称')->col(24);
|
|
|
+ $field[] = Form::number('grade', '等级', 0)->min(0)->precision(0);
|
|
|
+ $field[] = Form::frameImage('image', '背景图', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'image')))->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择背景图'));
|
|
|
+ $field[] = Form::number('one_brokerage', '一级上浮', 0)->info('在分销一级佣金基础上浮(0-1000之间整数)百分比,目前一级返佣比率:' . $store_brokerage_ratio . '%,例如上浮10%,则返佣比率:一级返佣比率 * (1 + 一级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_ratio, 10) . '%')->min(0)->max(1000);
|
|
|
+ $field[] = Form::number('two_brokerage', '二级上浮', 0)->info('在分销二级佣金基础上浮(0-1000之间整数)百分比,目前二级返佣比率:' . $store_brokerage_two . '%,例如上浮10%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_two, 10) . '%')->min(0)->max(1000);
|
|
|
+ $field[] = Form::radio('status', '是否显示', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 0, 'label' => '隐藏']]);
|
|
|
+ return create_form('添加分销员等级', $field, Url::buildUrl('/agent/level'), 'POST');
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 获取修改等级表单
|
|
|
- * @param int $id
|
|
|
- * @return array
|
|
|
- * @throws \FormBuilder\Exception\FormBuilderException
|
|
|
- */
|
|
|
- public function editForm(int $id)
|
|
|
- {
|
|
|
- $store_brokerage_ratio = sys_config('store_brokerage_ratio');
|
|
|
- $store_brokerage_two = sys_config('store_brokerage_two');
|
|
|
- $levelInfo = $this->getLevelInfo($id);
|
|
|
- if (!$levelInfo)
|
|
|
- throw new AdminException('数据不存在');
|
|
|
- $field = [];
|
|
|
- $field[] = Form::hidden('id', $id);
|
|
|
- $field[] = Form::input('name', '等级名称', $levelInfo['name'])->col(24);
|
|
|
- $field[] = Form::number('grade', '等级', $levelInfo['grade'])->min(0)->precision(0);
|
|
|
- $field[] = Form::frameImage('image', '背景图', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'image')), $levelInfo['image'])->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择背景图'));
|
|
|
- $field[] = Form::number('one_brokerage', '一级上浮', $levelInfo['one_brokerage'])->info('在分销一级佣金基础上浮(0-1000之间整数)百分比,目前一级返佣比率:'. $store_brokerage_ratio . '%,上浮'. $levelInfo['one_brokerage'] . '%,则返佣比率:一级返佣比率 * (1 + 一级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_ratio, $levelInfo['one_brokerage']) .'%')->min(0)->max(1000);
|
|
|
- $field[] = Form::number('two_brokerage', '二级上浮', $levelInfo['two_brokerage'])->info('在分销二级佣金基础上浮(0-1000之间整数)百分比,目前二级返佣比率:'. $store_brokerage_two . '%,上浮' . $levelInfo['two_brokerage'] . '%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_two, $levelInfo['two_brokerage']). '%')->min(0)->max(1000);
|
|
|
- $field[] = Form::radio('status', '是否显示', $levelInfo['status'])->options([['value' => 1, 'label' => '显示'], ['value' => 0, 'label' => '隐藏']]);
|
|
|
+ /**
|
|
|
+ * 获取修改等级表单
|
|
|
+ * @param int $id
|
|
|
+ * @return array
|
|
|
+ * @throws \FormBuilder\Exception\FormBuilderException
|
|
|
+ */
|
|
|
+ public function editForm(int $id)
|
|
|
+ {
|
|
|
+ $store_brokerage_ratio = sys_config('store_brokerage_ratio');
|
|
|
+ $store_brokerage_two = sys_config('store_brokerage_two');
|
|
|
+ $levelInfo = $this->getLevelInfo($id);
|
|
|
+ if (!$levelInfo)
|
|
|
+ throw new AdminException('数据不存在');
|
|
|
+ $field = [];
|
|
|
+ $field[] = Form::hidden('id', $id);
|
|
|
+ $field[] = Form::input('name', '等级名称', $levelInfo['name'])->col(24);
|
|
|
+ $field[] = Form::number('grade', '等级', $levelInfo['grade'])->min(0)->precision(0);
|
|
|
+ $field[] = Form::frameImage('image', '背景图', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'image')), $levelInfo['image'])->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择背景图'));
|
|
|
+ $field[] = Form::number('one_brokerage', '一级上浮', $levelInfo['one_brokerage'])->info('在分销一级佣金基础上浮(0-1000之间整数)百分比,目前一级返佣比率:' . $store_brokerage_ratio . '%,上浮' . $levelInfo['one_brokerage'] . '%,则返佣比率:一级返佣比率 * (1 + 一级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_ratio, $levelInfo['one_brokerage']) . '%')->min(0)->max(1000);
|
|
|
+ $field[] = Form::number('two_brokerage', '二级上浮', $levelInfo['two_brokerage'])->info('在分销二级佣金基础上浮(0-1000之间整数)百分比,目前二级返佣比率:' . $store_brokerage_two . '%,上浮' . $levelInfo['two_brokerage'] . '%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = ' . $this->compoteBrokerage($store_brokerage_two, $levelInfo['two_brokerage']) . '%')->min(0)->max(1000);
|
|
|
+ $field[] = Form::radio('status', '是否显示', $levelInfo['status'])->options([['value' => 1, 'label' => '显示'], ['value' => 0, 'label' => '隐藏']]);
|
|
|
|
|
|
- return create_form('编辑分销员等级', $field, Url::buildUrl('/agent/level/' . $id), 'PUT');
|
|
|
- }
|
|
|
+ return create_form('编辑分销员等级', $field, Url::buildUrl('/agent/level/' . $id), 'PUT');
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 赠送分销等级表单
|