mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-05-22 06:49:15 +08:00
添加管理奖
This commit is contained in:
parent
fa47f17415
commit
7c9b52de8e
@ -272,12 +272,56 @@ class RebateCurrentService extends Service
|
|||||||
/**
|
/**
|
||||||
* 管理奖励发放
|
* 管理奖励发放
|
||||||
* @return boolean
|
* @return boolean
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
*/
|
*/
|
||||||
private function _prize06(): bool
|
private function _prize06(): bool
|
||||||
{
|
{
|
||||||
|
$puids = array_reverse(explode('-', trim($this->user['path'], '-')));
|
||||||
|
if (empty($puids) || $this->order['amount_total'] <= 0) return false;
|
||||||
|
// 记录原始等级
|
||||||
|
$prevLevel = $this->user['vip_code'];
|
||||||
|
// 获取可以参与奖励的代理
|
||||||
|
$subsql = $this->app->db->name('DataUserUpgrade')->field('number')->whereLike('rebate_rule', '%,' . self::PRIZE_06 . ',%')->buildSql(true);
|
||||||
|
foreach ($this->app->db->name('DataUser')->where("vip_code in {$subsql}")->whereIn('id', $puids)->orderField('id', $puids)->cursor() as $user) {
|
||||||
|
if ($user['vip_code'] > $prevLevel) {
|
||||||
|
if (($amount = $this->_prize06amount($prevLevel, $user['vip_code'])) > 0) {
|
||||||
|
$map = ['type' => self::PRIZE_06, 'order_no' => $this->order['order_no'], 'order_uid' => $this->order['uid']];
|
||||||
|
$name = "{$this->name(self::PRIZE_06)},[ {$prevLevel} > {$user['vip_code']} ]每单 {$amount} 元";
|
||||||
|
$this->app->db->name($this->table)->insert(array_merge($map, [
|
||||||
|
'uid' => $this->from2['id'], 'name' => $name, 'amount' => $amount, 'order_amount' => $this->order['amount_total'],
|
||||||
|
]));
|
||||||
|
UserUpgradeService::instance()->syncLevel($this->from2['id']);
|
||||||
|
}
|
||||||
|
$prevLevel = $user['vip_code'];
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算两等级之间的管理奖差异
|
||||||
|
* @param int $prevLevel
|
||||||
|
* @param int $nextLevel
|
||||||
|
* @return float
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
*/
|
||||||
|
private function _prize06amount(int $prevLevel, int $nextLevel): float
|
||||||
|
{
|
||||||
|
$amount = 0.00;
|
||||||
|
foreach (range($prevLevel, $nextLevel) as $level) {
|
||||||
|
[$state, $value] = [
|
||||||
|
$this->config("manage_state_vip_{$level}"),
|
||||||
|
$this->config("manage_value_vip_{$level}"),
|
||||||
|
];
|
||||||
|
if ($state && $value > 0) $amount += $value;
|
||||||
|
}
|
||||||
|
return floatval($amount);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 升级奖励发放
|
* 升级奖励发放
|
||||||
*/
|
*/
|
||||||
|
@ -95,7 +95,7 @@ class UserUpgradeService extends Service
|
|||||||
{
|
{
|
||||||
$user = $this->app->db->name('DataUser')->where(['id' => $uid])->find();
|
$user = $this->app->db->name('DataUser')->where(['id' => $uid])->find();
|
||||||
if (empty($user)) return true;
|
if (empty($user)) return true;
|
||||||
[$vipName, $vipNumber] = ['普通用户', 0];
|
[$vipName, $vipCode] = ['普通用户', 0];
|
||||||
// 统计历史数据
|
// 统计历史数据
|
||||||
$teamsDirect = $this->app->db->name('DataUser')->where(['pid1' => $uid])->count();
|
$teamsDirect = $this->app->db->name('DataUser')->where(['pid1' => $uid])->count();
|
||||||
$teamsIndirect = $this->app->db->name('DataUser')->where(['pid2' => $uid])->count();
|
$teamsIndirect = $this->app->db->name('DataUser')->where(['pid2' => $uid])->count();
|
||||||
@ -113,17 +113,17 @@ class UserUpgradeService extends Service
|
|||||||
||
|
||
|
||||||
($item['upgrade_type'] == 1 && ($l1 && $l2 && $l3 && $l4 && $l5)) /* 满足所有条件可以等级 */
|
($item['upgrade_type'] == 1 && ($l1 && $l2 && $l3 && $l4 && $l5)) /* 满足所有条件可以等级 */
|
||||||
) {
|
) {
|
||||||
[$vipName, $vipNumber] = [$item['name'], $item['number']];
|
[$vipName, $vipCode] = [$item['name'], $item['number']];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 购买商品升级
|
// 购买商品升级
|
||||||
$query = $this->app->db->name('ShopOrderItem')->alias('b')->join('shop_order a', 'b.order_no=a.order_no');
|
$query = $this->app->db->name('ShopOrderItem')->alias('b')->join('shop_order a', 'b.order_no=a.order_no');
|
||||||
$tmpNumber = $query->whereRaw("a.uid={$uid} and a.payment_status=1 and a.status>=4 and b.vip_entry=1")->max('b.vip_code');
|
$tmpNumber = $query->whereRaw("a.uid={$uid} and a.payment_status=1 and a.status>=4 and b.vip_entry=1")->max('b.vip_code');
|
||||||
if ($tmpNumber > $vipNumber) {
|
if ($tmpNumber > $vipCode) {
|
||||||
$map = ['status' => 1, 'number' => $tmpNumber];
|
$map = ['status' => 1, 'number' => $tmpNumber];
|
||||||
$upgrade = $this->app->db->name('DataUserUpgrade')->where($map)->find();
|
$upgrade = $this->app->db->name('DataUserUpgrade')->where($map)->find();
|
||||||
if (!empty($upgrade)) [$vipName, $vipNumber] = [$upgrade['name'], $upgrade['number']];
|
if (!empty($upgrade)) [$vipName, $vipCode] = [$upgrade['name'], $upgrade['number']];
|
||||||
}
|
}
|
||||||
// 统计订单金额
|
// 统计订单金额
|
||||||
$orderAmountTotal = $this->app->db->name('ShopOrder')->whereRaw("uid={$uid} and status>=4")->sum('amount_goods');
|
$orderAmountTotal = $this->app->db->name('ShopOrder')->whereRaw("uid={$uid} and status>=4")->sum('amount_goods');
|
||||||
@ -132,7 +132,7 @@ class UserUpgradeService extends Service
|
|||||||
// 更新用户数据
|
// 更新用户数据
|
||||||
$data = [
|
$data = [
|
||||||
'vip_name' => $vipName,
|
'vip_name' => $vipName,
|
||||||
'vip_code' => $vipNumber,
|
'vip_code' => $vipCode,
|
||||||
'teams_users_total' => $teamsUsers,
|
'teams_users_total' => $teamsUsers,
|
||||||
'teams_users_direct' => $teamsDirect,
|
'teams_users_direct' => $teamsDirect,
|
||||||
'teams_users_indirect' => $teamsIndirect,
|
'teams_users_indirect' => $teamsIndirect,
|
||||||
@ -145,6 +145,12 @@ class UserUpgradeService extends Service
|
|||||||
$data['vip_datetime'] = date('Y-m-d H:i:s');
|
$data['vip_datetime'] = date('Y-m-d H:i:s');
|
||||||
}
|
}
|
||||||
$this->app->db->name('DataUser')->where(['id' => $uid])->update($data);
|
$this->app->db->name('DataUser')->where(['id' => $uid])->update($data);
|
||||||
|
if ($user['vip_code'] < $vipCode) {
|
||||||
|
// 用户升级事件
|
||||||
|
$this->app->event->trigger('UserUpgradeLevel', [
|
||||||
|
'uid' => $user['uid'], 'vip_code_old' => $user['vip_code'], 'vip_code_new' => $vipCode,
|
||||||
|
]);
|
||||||
|
}
|
||||||
return ($parent && $user['pid2'] > 0) ? $this->syncLevel($user['pid2'], false) : true;
|
return ($parent && $user['pid2'] > 0) ? $this->syncLevel($user['pid2'], false) : true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -236,6 +236,28 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="layui-col-xs4">
|
||||||
|
<fieldset class="block">
|
||||||
|
<legend>
|
||||||
|
{php} $key = 'manage_state_vip_'.$level['number']; {/php}
|
||||||
|
<input type="hidden" name="{$key}" value="0">
|
||||||
|
{php} $data[$key] = $data[$key] ?? 0; {/php}
|
||||||
|
{if isset($data[$key]) and $data[$key] eq 1}
|
||||||
|
<input checked type="checkbox" name="{$key}" lay-skin="switch" value="1" lay-text="已启用用户 {$level.name} 管理奖励|已停用用户 {$level.name} 管理奖励">
|
||||||
|
{else}
|
||||||
|
<input type="checkbox" name="{$key}" lay-skin="switch" value="1" lay-text="已启用用户 {$level.name} 管理奖励|已停用用户 {$level.name} 管理奖励">
|
||||||
|
{/if}
|
||||||
|
</legend>
|
||||||
|
<div class="layui-form-item nowrap">
|
||||||
|
{php} $key = 'manage_value_vip_'.$level['number']; {/php}
|
||||||
|
<input class="layui-input" type="hidden" name="upgrade_type_vip_{$level.number}" value="2">
|
||||||
|
<label class="block">
|
||||||
|
<span class="color-blue"><b>请输入固定奖励金额</b>( 如:比例填写 10.00 表示 10.00 元 )</span>
|
||||||
|
<input class="layui-input" type="text" name="{$key}" data-blur-number="4" placeholder="请输入奖励金额或订单比例" value="{$data[$key]??'0.0000'}">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user