From 009d62d6dd11169731984f929f5c9c901e134d9a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=82=B9=E6=99=AF=E7=AB=8B?= <zoujingli@qq.com>
Date: Thu, 8 Apr 2021 10:10:59 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7=E7=AD=89?=
 =?UTF-8?q?=E7=BA=A7=E8=AE=A1=E6=95=B0=E8=A7=84=E5=88=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 SQL01-数据表结构.sql                    |  3 +-
 app/data/service/UserUpgradeService.php | 15 +++++----
 app/data/view/base/upgrade/form.html    | 44 +++++++++++++++++--------
 app/data/view/base/upgrade/index.html   |  2 ++
 app/data/view/user/balance/form.html    |  4 +--
 vendor/services.php                     |  2 +-
 6 files changed, 47 insertions(+), 23 deletions(-)

diff --git a/SQL01-数据表结构.sql b/SQL01-数据表结构.sql
index f680d6ec0..10d895c21 100644
--- a/SQL01-数据表结构.sql
+++ b/SQL01-数据表结构.sql
@@ -11,7 +11,7 @@
  Target Server Version : 80018
  File Encoding         : 65001
 
- Date: 07/04/2021 14:40:56
+ Date: 08/04/2021 10:07:25
 */
 
 SET NAMES utf8mb4;
@@ -152,6 +152,7 @@ CREATE TABLE `base_user_upgrade`  (
   `number` tinyint(2) NULL DEFAULT 0 COMMENT '用户级别序号',
   `rebate_rule` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户奖利规则',
   `upgrade_type` tinyint(1) NULL DEFAULT 0 COMMENT '会员升级规则(0单个,1同时)',
+  `upgrade_team` tinyint(1) NULL DEFAULT 1 COMMENT '团队人数统计(0不计,1累计)',
   `goods_vip_status` tinyint(1) NULL DEFAULT 0 COMMENT '入会礼包状态',
   `order_amount_status` tinyint(1) NULL DEFAULT 0 COMMENT '订单金额状态',
   `order_amount_number` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '订单金额累计',
diff --git a/app/data/service/UserUpgradeService.php b/app/data/service/UserUpgradeService.php
index ee00c7170..bfc464445 100644
--- a/app/data/service/UserUpgradeService.php
+++ b/app/data/service/UserUpgradeService.php
@@ -74,13 +74,16 @@ class UserUpgradeService extends Service
         $user = $this->app->db->name('DataUser')->where(['id' => $uid])->find();
         if (empty($user)) return true;
         // 开始处理等级
-        [$vipName, $vipCode] = ['普通用户', 0];
-        // 统计历史数据
+        $query = $this->app->db->name('BaseUserUpgrade')->where(['number' => 0]);
+        [$vipName, $vipCode] = [$query->value('name') ?: '普通用户', 0];
+        // 统计个人订单金额
         $orderAmount = $this->app->db->name('ShopOrder')->where("uid={$uid} and status>=4")->sum('amount_total');
-        $teamsDirect = $this->app->db->name('DataUser')->where(['pid1' => $uid])->whereRaw('vip_code>0')->count();
-        $teamsIndirect = $this->app->db->name('DataUser')->where(['pid2' => $uid])->whereRaw('vip_code>0')->count();
-        $teamsUsers = $this->app->db->name('DataUser')->where(['pid1|pid2' => $uid])->whereRaw('vip_code>0')->count();
-        // 计算用户等级
+        // 统计下属团队人数
+        $vips = $this->app->db->name('BaseUserUpgrade')->where(['status' => 1, 'upgrade_team' => 1])->column('number');
+        $teamsDirect = $this->app->db->name('DataUser')->where(['pid1' => $uid])->whereIn('vip_code', $vips)->count();
+        $teamsIndirect = $this->app->db->name('DataUser')->where(['pid2' => $uid])->whereIn('vip_code', $vips)->count();
+        $teamsUsers = $this->app->db->name('DataUser')->where(['pid1|pid2' => $uid])->whereIn('vip_code', $vips)->count();
+        // 动态计算用户等级
         foreach ($this->app->db->name('BaseUserUpgrade')->where(['status' => 1])->order('number desc')->cursor() as $item) {
             $l1 = empty($item['goods_vip_status']) || $user['buy_vip_entry'] > 0;
             $l2 = empty($item['teams_users_status']) || $item['teams_users_number'] <= $teamsUsers;
diff --git a/app/data/view/base/upgrade/form.html b/app/data/view/base/upgrade/form.html
index a68829b74..8cebda4ba 100644
--- a/app/data/view/base/upgrade/form.html
+++ b/app/data/view/base/upgrade/form.html
@@ -5,7 +5,7 @@
             <legend><span class="layui-badge layui-bg-cyan">用户等级</span></legend>
             <div class="layui-form-item layui-row layui-col-space15">
                 <div class="layui-col-xs3 block relative">
-                    <span class="color-green label-required-prev">等级序号</span><span class="margin-left-5 color-desc">Number</span>
+                    <b class="color-green label-required-prev">等级序号</b><span class="margin-left-5 color-desc">Serial</span>
                     <select class="layui-select" name="number">
                         {for start="0" end="10" name="i"}{if isset($vo.number) and $vo.number eq $i}
                         <option selected value="{$i}">当前 VIP {$vo.number} 等级</option>
@@ -15,24 +15,42 @@
                     </select>
                 </div>
                 <label class="layui-col-xs9 block relative">
-                    <span class="color-green label-required-prev">等级名称</span><span class="margin-left-5 color-desc">Name</span>
+                    <b class="color-green label-required-prev">等级名称</b><span class="margin-left-5 color-desc">Name</span>
                     <input class="layui-input" name="name" placeholder="请输入等级名称" required value="{$vo.name|default=''}">
                 </label>
             </div>
         </fieldset>
 
-        <fieldset class="layui-form-item">
-            <legend><span class="layui-badge layui-bg-cyan">升级规则</span></legend>
-            <div class="layui-form-item">
-                {php}$vo['upgrade_type'] = $vo['upgrade_type'] ?? 1;{/php}
-                {foreach [1=>'达成所有条件',0=>'达成任何条件'] as $k => $v}
-                {if isset($vo.upgrade_type) and $vo.upgrade_type eq $k}
-                <label class="think-radio"><input checked lay-ignore name="upgrade_type" type="radio" value="{$k}"> {$v}</label>
-                {else}
-                <label class="think-radio"><input lay-ignore name="upgrade_type" type="radio" value="{$k}"> {$v}</label>
-                {/if}{/foreach}
+        <div class="layui-row layui-col-space15">
+            <div class="layui-col-xs6">
+                <fieldset class="layui-form-item">
+                    <legend><span class="layui-badge layui-bg-cyan">升级规则</span></legend>
+                    <div class="layui-form-item notselect">
+                        {php}$vo['upgrade_type'] = $vo['upgrade_type'] ?? 1;{/php}
+                        {foreach [1=>'达成所有升级条件',0=>'达成任何升级条件'] as $k => $v}
+                        {if isset($vo.upgrade_type) and $vo.upgrade_type eq $k}
+                        <label class="think-radio"><input checked lay-ignore name="upgrade_type" type="radio" value="{$k}"> {$v}</label>
+                        {else}
+                        <label class="think-radio"><input lay-ignore name="upgrade_type" type="radio" value="{$k}"> {$v}</label>
+                        {/if}{/foreach}
+                    </div>
+                </fieldset>
             </div>
-        </fieldset>
+            <div class="layui-col-xs6">
+                <fieldset class="layui-form-item">
+                    <legend><span class="layui-badge layui-bg-cyan">团队计数</span></legend>
+                    <div class="layui-form-item notselect">
+                        {php}$vo['upgrade_team'] = $vo['upgrade_team'] ?? 1;{/php}
+                        {foreach [1=>'参与团队人数统计',0=>'不参与团队人数统计'] as $k => $v}
+                        {if isset($vo.upgrade_team) and $vo.upgrade_team eq $k}
+                        <label class="think-radio"><input checked lay-ignore name="upgrade_team" type="radio" value="{$k}"> {$v}</label>
+                        {else}
+                        <label class="think-radio"><input lay-ignore name="upgrade_team" type="radio" value="{$k}"> {$v}</label>
+                        {/if}{/foreach}
+                    </div>
+                </fieldset>
+            </div>
+        </div>
 
         <fieldset class="layui-form-item">
             <legend><span class="layui-badge layui-bg-cyan">升级条件</span></legend>
diff --git a/app/data/view/base/upgrade/index.html b/app/data/view/base/upgrade/index.html
index 6210f0eb8..290fbed60 100644
--- a/app/data/view/base/upgrade/index.html
+++ b/app/data/view/base/upgrade/index.html
@@ -26,6 +26,7 @@
             <th class="text-left nowrap">用户等级</th>
             <th class="text-left nowrap">升级规则</th>
             <th class="text-center nowrap">入会礼包</th>
+            <th class="text-center nowrap">团队计数</th>
             <th class="text-center nowrap">团队总数</th>
             <th class="text-center nowrap">直属团队</th>
             <th class="text-center nowrap">间接团队</th>
@@ -45,6 +46,7 @@
             <td class="text-left nowrap"> [ <span class="color-blue">{$vo.number}</span> ] {$vo.name|default=''}</td>
             <td class="text-left nowrap">{if $vo.upgrade_type eq 1}<span class="color-green">全部完成</span>{else}<span class="color-blue">任何条件</span>{/if}</td>
             <td class="text-center nowrap">{if $vo.goods_vip_status>0}<b class="layui-icon layui-icon-ok-circle color-green"></b> {else} - {/if}</td>
+            <td class="text-center nowrap">{if $vo.upgrade_team>0}<b class="layui-icon layui-icon-ok-circle color-green"></b> {else} - {/if}</td>
             <td class="text-center nowrap">{if $vo.teams_users_status>0} <b class="color-green">{$vo.teams_users_number}</b> 人 {else} - {/if}</td>
             <td class="text-center nowrap">{if $vo.teams_direct_status>0} <b class="color-green">{$vo.teams_direct_number}</b> 人 {else} - {/if}</td>
             <td class="text-center nowrap">{if $vo.teams_indirect_status>0} <b class="color-green">{$vo.teams_indirect_number}</b> 人 {else} - {/if}</td>
diff --git a/app/data/view/user/balance/form.html b/app/data/view/user/balance/form.html
index fcc8abdc2..ce32b2810 100644
--- a/app/data/view/user/balance/form.html
+++ b/app/data/view/user/balance/form.html
@@ -49,9 +49,9 @@
             <select class="layui-select" lay-filter="upgrade" name="upgrade">
                 <option value="0">-- 不升级 --</option>
                 {foreach $upgrades as $upgrade}{if isset($vo.upgrade) and $vo.upgrade eq $upgrade.number}
-                <option selected value="{$upgrade.number|default=0}">升级到 [ {$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
+                <option selected value="{$upgrade.number|default=0}">升级到 [ VIP{$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
                 {else}
-                <option value="{$upgrade.number|default=0}">升级到 [ {$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
+                <option value="{$upgrade.number|default=0}">升级到 [ VIP{$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
                 {/if}{/foreach}
             </select>
             <span class="help-block">请选择目标升级等级,当用户低于当前等级时会进行用户升级操作</span>
diff --git a/vendor/services.php b/vendor/services.php
index 23fd37f64..d2e76b129 100644
--- a/vendor/services.php
+++ b/vendor/services.php
@@ -1,5 +1,5 @@
 <?php 
-// This file is automatically generated at:2021-04-07 15:26:53
+// This file is automatically generated at:2021-04-08 10:10:24
 declare (strict_types = 1);
 return array (
   0 => 'think\\admin\\Library',