Просмотр исходного кода

Merge branch 'master' into zx-dev

brook 3 лет назад
Родитель
Сommit
3e027e21d5
75 измененных файлов с 6950 добавлено и 2451 удалено
  1. 1 0
      backendApi/config/menu.php
  2. 1 0
      backendApi/config/urlManagerRules.php
  3. 1 1
      backendApi/modules/v1/controllers/AdminController.php
  4. 2 2
      backendApi/modules/v1/controllers/AtlasController.php
  5. 21 0
      backendApi/modules/v1/controllers/BonusController.php
  6. 3 1
      backendApi/modules/v1/controllers/FinanceController.php
  7. 2 2
      backendApi/modules/v1/controllers/UserController.php
  8. 1 1
      backendApi/modules/v1/models/AdminForm.php
  9. 12 22
      backendApi/modules/v1/models/lists/atlas/NetworkList.php
  10. 12 16
      backendApi/modules/v1/models/lists/atlas/RelationList.php
  11. 22 277
      backendApi/modules/v1/models/lists/bonus/BalanceList.php
  12. 37 70
      backendApi/modules/v1/models/lists/bonus/FlowBonusList.php
  13. 29 51
      backendApi/modules/v1/models/lists/bonus/PerfMonthList.php
  14. 25 25
      backendApi/modules/v1/models/lists/bonus/PerfOrderList.php
  15. 39 114
      backendApi/modules/v1/models/lists/bonus/PerfPeriodList.php
  16. 41 519
      backendApi/modules/v1/models/lists/bonus/PeriodBonusList.php
  17. 9 9
      backendApi/modules/v1/models/lists/bonus/ScoreMonthList.php
  18. 7 84
      backendApi/modules/v1/models/lists/bonus/UserPerfList.php
  19. 29 32
      backendApi/modules/v1/models/lists/finance/BalanceAuditList.php
  20. 40 156
      backendApi/modules/v1/models/lists/finance/HistoryBonusList.php
  21. 4 28
      backendApi/modules/v1/models/lists/finance/TransferList.php
  22. 6 39
      backendApi/modules/v1/models/lists/finance/WithdrawList.php
  23. 21 21
      backendApi/modules/v1/models/lists/log/UserHandleList.php
  24. 17 17
      backendApi/modules/v1/models/lists/log/UserLoginList.php
  25. 37 37
      backendApi/modules/v1/models/lists/shop/DecOrderList.php
  26. 13 23
      backendApi/modules/v1/models/lists/shop/GoodsList.php
  27. 27 25
      backendApi/modules/v1/models/lists/shop/OrderDecList.php
  28. 34 57
      backendApi/modules/v1/models/lists/shop/OrderList.php
  29. 29 27
      backendApi/modules/v1/models/lists/shop/OrderShopList.php
  30. 15 15
      backendApi/modules/v1/models/lists/shop/OrderStandardList.php
  31. 15 15
      backendApi/modules/v1/models/lists/shop/PackageList.php
  32. 8 8
      backendApi/modules/v1/models/lists/user/DecLevelList.php
  33. 43 281
      backendApi/modules/v1/models/lists/user/IndexList.php
  34. 30 34
      backendApi/modules/v1/models/lists/user/MoveList.php
  35. 3 3
      backendEle/src/utils/config_trial.js
  36. 6 7
      backendEle/src/views/admin/edit.vue
  37. 1 1
      backendEle/src/views/article/category-add.vue
  38. 2 2
      backendEle/src/views/article/category.vue
  39. 1 1
      backendEle/src/views/article/index.vue
  40. 10 11
      backendEle/src/views/atlas/network-opt.vue
  41. 11 26
      backendEle/src/views/atlas/relation-opt.vue
  42. 1 4
      backendEle/src/views/bonus/perf-order.vue
  43. 177 156
      backendEle/src/views/bonus/period.vue
  44. 10 10
      backendEle/src/views/file/export.vue
  45. 4 10
      backendEle/src/views/user/change-user-dec-level.vue
  46. 3 3
      backendEle/src/views/user/change-user-dec-role.vue
  47. 17 0
      common/helpers/Cache.php
  48. 2 2
      common/helpers/bonus/BonusCalc.php
  49. 14 14
      common/libs/export/BaseExport.php
  50. 2 2
      common/models/UserNetwork.php
  51. 2 2
      common/models/UserRelation.php
  52. 17 0
      common/models/forms/DeclarationForm.php
  53. 26 74
      common/models/forms/DeclarationLoopForm.php
  54. 28 32
      common/models/forms/DeclarationUpgradeForm.php
  55. 2 2
      common/models/forms/OrderForm.php
  56. 1 1
      common/models/forms/UploadForm.php
  57. 59 0
      common/models/forms/UserBonusForm.php
  58. 65 0
      common/models/forms/WithdrawForm.php
  59. 13 0
      console/controllers/BonusController.php
  60. 1 0
      frontendApi/config/menu.php
  61. 2 0
      frontendApi/config/urlManagerRules.php
  62. 70 5
      frontendApi/modules/v1/controllers/AtlasController.php
  63. 1 0
      frontendApi/modules/v1/controllers/FinanceController.php
  64. 1 1
      frontendApi/modules/v1/controllers/OauthController.php
  65. 13 13
      frontendApi/modules/v1/controllers/ShopController.php
  66. 1 1
      frontendApi/modules/v1/controllers/UserController.php
  67. 31 19
      frontendEle/src/router/index.js
  68. 2 2
      frontendEle/src/utils/config_trial.js
  69. 8 8
      frontendEle/src/views/atlas/network.vue
  70. 251 0
      frontendEle/src/views/atlas/relation.vue
  71. 1 1
      frontendEle/src/views/layout/layout.vue
  72. 2 1
      frontendEle/src/views/user/dec.vue
  73. 2715 0
      sql/StoredProcedure-NG.sql
  74. 2715 0
      sql/coco_milk_0524_fc.sql
  75. 26 28
      sql/upgrade/1988.sql

+ 1 - 0
backendApi/config/menu.php

@@ -280,6 +280,7 @@ return [
             ['name'=>'月业绩导出', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'perf-month-export', 'routePath'=>'bonus/perf-month-export', 'show'=>0,],
 //            ['name'=>'Score-month', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'score-month', 'routePath'=>'bonus/score-month', 'show'=>1,],//月积分
             ['name'=>'月积分导出', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'score-month-export', 'routePath'=>'bonus/score-month-export', 'show'=>0,],
+            ['name'=>'自动提现', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'auto-withdraw', 'routePath'=>'bonus/auto-withdraw', 'show'=>0,],
         ]
     ],
     /*'report'=>[

+ 1 - 0
backendApi/config/urlManagerRules.php

@@ -406,6 +406,7 @@ return [
             'GET yc-perf' => 'yc-perf',
             'GET period-perf' => 'period-perf',
             'GET period-perf-export' => 'period-perf-export',
+            'GET,POST auto-withdraw' => 'auto-withdraw'
         ],
     ],
     [

+ 1 - 1
backendApi/modules/v1/controllers/AdminController.php

@@ -116,7 +116,7 @@ class AdminController extends BaseController
         $form->scenario = 'changePassword';
         if(Yii::$app->request->isPost && $form->load(Yii::$app->request->post(), '') && $result = $form->edit()){
             // Log::adminHandle('管理员'.$result->ADMIN_NAME.'重置密码');
-            return static::notice('重置密码成功');
+            return static::notice('Password change succeeded'); // 重置密码成功
         } else {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }

+ 2 - 2
backendApi/modules/v1/controllers/AtlasController.php

@@ -91,8 +91,8 @@ class AtlasController extends BaseController {
                 'REAL_NAME' => $baseInfo['REAL_NAME'],
                 'PERIOD_AT' => $baseInfo['PERIOD_AT'],
                 'DEC_LV_NAME' => $decLevelConfig[$baseInfo['DEC_LV']]['LEVEL_NAME'],
-                'EMP_LV_NAME' => isset($empLevelConfig[$baseInfo['EMP_LV']])?$empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME']:'',
-                'CROWN_LV_NAME' => isset($crownLevelConfig[$baseInfo['CROWN_LV']])?$crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME']:'',
+                'EMP_LV_NAME' => isset($empLevelConfig[$baseInfo['EMP_LV']])?$empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME']:'0-Star Director',
+                'CROWN_LV_NAME' => isset($crownLevelConfig[$baseInfo['CROWN_LV']])?$crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME']:'0-Star Crown',
                 'leaf' => false,
                 'icon' => 'el-icon-user-solid',
                 'children' => null,

+ 21 - 0
backendApi/modules/v1/controllers/BonusController.php

@@ -62,6 +62,7 @@ use common\models\Config;
 use common\models\FlowBonus;
 use common\models\FlowExchangePoints;
 use common\models\forms\PeriodForm;
+use common\models\forms\UserBonusForm;
 use common\models\Period;
 use Exception;
 
@@ -2770,4 +2771,24 @@ class BonusController extends BaseController {
         }
         return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
+
+    /**
+     * 自动提现(奖金)
+     *
+     */
+    public function actionAutoWithdraw() {
+        $withdrawLock = Cache::getWithdrawLock();
+        if ($withdrawLock!=0){
+            return static::notice(Form::formatErrorsForApi('已有进程在生成'), 400);
+        }else{
+            $formModel = new UserBonusForm();
+            $formModel->scenario = 'autoWithdraw';
+            if ($formModel->autoWithdrawWebToAsync()) {
+                return static::notice('生成提现单 已开始处理,请等待');
+            } else {
+                return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
+            }
+        }
+    }
+
 }

+ 3 - 1
backendApi/modules/v1/controllers/FinanceController.php

@@ -324,11 +324,12 @@ class FinanceController extends BaseController {
         $filter = $this->filterCondition([
             'SN' => 'W.SN',
             'WITHDRAW_PERIOD_NUM' => 'W.WITHDRAW_PERIOD_NUM',
-            'ID_CARD' => 'W.ID_CARD',
+//            'ID_CARD' => 'W.ID_CARD',
             'filterStatus' => 'W.AUDIT_STATUS',
             'CREATED_AT' => 'W.CREATED_AT',
             //'AUDIT_STATUS_NAME' => 'W.AUDIT_STATUS',
             'USER_NAME' => 'U.USER_NAME',
+            'REAL_AMOUNT' => 'W.REAL_AMOUNT'
         ]);
         $condition = $filter['condition'];
         $params = $filter['params'];
@@ -452,6 +453,7 @@ class FinanceController extends BaseController {
             'AUDIT_STATUS_NAME' => 'W.AUDIT_STATUS',
             'USER_NAME' => 'U.USER_NAME',
             'WITHDRAW_PERIOD_NUM' => 'W.WITHDRAW_PERIOD_NUM',
+            'REAL_AMOUNT' => 'W.REAL_AMOUNT'
         ]);
 //        $selectedIds = \Yii::$app->request->get('selectedIds', []);
 //        if ($selectedIds) {

+ 2 - 2
backendApi/modules/v1/controllers/UserController.php

@@ -1123,7 +1123,7 @@ class UserController extends BaseController
         $form = new UserBasicForm();
         $form->scenario = 'modifyPassword';
         if(Yii::$app->request->isPost && $form->load(Yii::$app->request->post(), '') && $result = $form->edit()){
-            return static::notice('Password modified successfully');//密码修改成功
+            return static::notice('Password modified successfully'); // 密码修改成功
         } else {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
@@ -1429,7 +1429,7 @@ class UserController extends BaseController
     public function actionChangeUserDecLevel()
     {
         if (Yii::$app->request->isPost) {
-            return parent::edit(DecLevelLogForm::class, 'Member level modified successfully', 'adminChange', [//修改会员级别成功
+            return parent::edit(DecLevelLogForm::class, 'Member Level Modified Successfully', 'adminChange', [ // 修改会员级别成功
                 'adminChange',
             ], null, function ($form, $result) {
                 //$userName = Info::getUserNameByUserId($result['ID']);

+ 1 - 1
backendApi/modules/v1/models/AdminForm.php

@@ -40,7 +40,7 @@ class AdminForm extends Model
             [['password', 'surePassword'], 'required', 'on'=>['add', 'changePassword', 'noLoginModifyPassword']],
             [['adminName', 'oldPassword'], 'required', 'on'=>['noLoginModifyPassword']],
             [['adminName'], 'unique', 'targetClass'=>Admin::class, 'targetAttribute'=>'ADMIN_NAME', 'on'=>['add']],
-            ['surePassword', 'compare', 'compareAttribute'=>'password', 'message' => '两次密码必须一致'],
+            ['surePassword', 'compare', 'compareAttribute'=>'password', 'message' => 'The two passwords must be the same'], // 两次密码必须一致
         ];
     }
 

+ 12 - 22
backendApi/modules/v1/models/lists/atlas/NetworkList.php

@@ -72,40 +72,30 @@ class NetworkList extends \common\libs\dataList\DataList implements DataListInte
                 'USER_ID' => null, // 这种传输方式主要是用于索引,因为过滤后的字段可能没有这种ID,但是一些功能的操作还需要用这种ID去关联,例如前台会员列表中的勾选批量状态管理,这里需要的就是USER_ID
                 'SEE_USER_NAME' => null,
                 'COUNT_DEEP' => [
-                    'header' => 'Number of layers',//层数
-                    'headerOther' => ['width' => '100'],
+                    'header' => 'Number Of Layers', // 层数
+                    'headerOther' => ['width' => '140'],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Placement member number',//安置会员编号
+                    'header' => 'Placement Member Number', // 安置会员编号
 //                    'headerOther' => ['width' => '150'],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Placement member name',//安置会员姓名
-//                    'headerOther' => [
-//                        'width' => '120',
-//                    ],
+                    'header' => 'Placement Member Name', // 安置会员姓名
                 ],
-//                'LOCATION' => [
-//                    'header' => '区位',
-//                    'value' => function($row) {
-//                        return 'A'.$row['LOCATION'];
-//                    },
-//                    'headerOther' => ['width' => '110'],
-//                ],
                 'DEC_LV_NAME' => [
-                    'header' => 'Recommended member level',//推荐会员级别
+                    'header' => 'Recommended Member Level', // 推荐会员级别
                     'headerOther' => [
-                        'width' => '110',
+                        'width' => '210',
                     ],
                 ],
                 'EMP_LV_NAME' => [
-                    'header' => 'Recommended member Rank',//推荐会员聘级
+                    'header' => 'Recommended Member Rank', // 推荐会员聘级
                     'headerOther' => [
-                        'width' => '130',
+                        'width' => '210',
                     ],
                 ],
                 'PERIOD_AT' => [
-                    'header' => 'Joining Period',//加入期数
+                    'header' => 'Joining Period', // 加入期数
                     'headerOther' => ['width' => '110'],
                 ],
             ];
@@ -120,9 +110,9 @@ class NetworkList extends \common\libs\dataList\DataList implements DataListInte
     public function getFilterTypes() {
         if (!$this->filterTypes) {
             $this->filterTypes = [
-                'userName' => ['isUserTable' => false, 'name' => 'Member code'],//会员编号
-                'deep' => ['isUserTable' => false, 'name' => 'depth'],//深度
-                'periodNum' => ['isUserTable' => false, 'name' => 'Number of periods'],//期数
+                'userName' => ['isUserTable' => false, 'name' => 'Member Code'], // 会员编号
+                'deep' => ['isUserTable' => false, 'name' => 'Depth'], // 深度
+                'periodNum' => ['isUserTable' => false, 'name' => 'Number Of Periods'], // 期数
             ];
         }
         return $this->filterTypes;

+ 12 - 16
backendApi/modules/v1/models/lists/atlas/RelationList.php

@@ -68,38 +68,34 @@ class RelationList extends \common\libs\dataList\DataList implements DataListInt
             $this->columns = [
                 'USER_ID' => null, // 这种传输方式主要是用于索引,因为过滤后的字段可能没有这种ID,但是一些功能的操作还需要用这种ID去关联,例如前台会员列表中的勾选批量状态管理,这里需要的就是USER_ID
                 'SEE_USER_NAME' => null,
-//                'LIST_PERIOD_NUM' => [
-//                    'header' => '期数',
-//                    'headerOther' => ['width' => '110'],
-//                ],
                 'COUNT_DEEP' => [
-                    'header' => 'Number of layers',//层数
-                    'headerOther' => ['width' => '100'],
+                    'header' => 'Number Of Layers', // 层数
+                    'headerOther' => ['width' => '140'],
                 ],
                 'USER_NAME' => [
-                        'header' => 'Recommended member No',//推荐会员编号
+                        'header' => 'Recommended Member No', // 推荐会员编号
 //                    'headerOther' => ['width' => '150'],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Name of recommended member',//推荐会员姓名
+                    'header' => 'Name Of Recommended Member', // 推荐会员姓名
 //                    'headerOther' => [
 //                        'width' => '120',
 //                    ],
                 ],
                 'DEC_LV_NAME' => [
-                    'header' => 'Recommended member level',//推荐会员级别
+                    'header' => 'Recommended Member Level', // 推荐会员级别
                     'headerOther' => [
-                        'width' => '110',
+                        'width' => '210',
                     ],
                 ],
                 'EMP_LV_NAME' => [
-                    'header' => 'Recommended member Rank',//推荐会员聘级
+                    'header' => 'Recommended Member Rank', // 推荐会员聘级
                     'headerOther' => [
-                        'width' => '130',
+                        'width' => '210',
                     ],
                 ],
                 'PERIOD_AT' => [
-                    'header' => 'Joining Period',//加入期数
+                    'header' => 'Joining Period', // 加入期数
                     'headerOther' => ['width' => '110'],
                 ],
             ];
@@ -114,9 +110,9 @@ class RelationList extends \common\libs\dataList\DataList implements DataListInt
     public function getFilterTypes() {
         if (!$this->filterTypes) {
             $this->filterTypes = [
-                'userName' => ['isUserTable' => false, 'name' => 'Member code'],//会员编号
-                'deep' => ['isUserTable' => false, 'name' => 'depth'],//深度
-                'periodNum' => ['isUserTable' => false, 'name' => 'Number of periods'],//期数
+                'userName' => ['isUserTable' => false, 'name' => 'Member Code'], // 会员编号
+                'deep' => ['isUserTable' => false, 'name' => 'Depth'], // 深度
+                'periodNum' => ['isUserTable' => false, 'name' => 'Number Of Periods'], // 期数
             ];
         }
         return $this->filterTypes;

+ 22 - 277
backendApi/modules/v1/models/lists/bonus/BalanceList.php

@@ -45,21 +45,6 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
             'page' => $this->page,
             'pageSize' => $this->pageSize,
         ]);
-
-//        foreach ($this->listData['list'] as $key => $value) {
-//            $userInfo = Info::baseInfo($value['USER_ID']);
-//            $this->listData['list'][$key] = array_merge($value, $userInfo);
-//            $this->listData['list'][$key]['WITHDRAW_WAIT'] = Withdraw::getWithdrawTotal($value['USER_ID'], Withdraw::STATUS_WAIT_PAID);
-//            $this->listData['list'][$key]['WITHDRAW_FAIL'] = Withdraw::getWithdrawTotal($value['USER_ID'], Withdraw::STATUS_PAID_FALSE);
-//        }
-        //总计
-//        $sumData = UserBonus::find()->select('SUM(BONUS) AS SUM_BONUS,SUM(CF) AS SUM_CF,SUM(LX) AS SUM_LX')
-//            ->from(UserBonus::tableName() . ' AS UB')
-//            ->leftJoin(UserInfo::tableName() . ' AS UI', 'UI.USER_ID=UB.USER_ID')
-//            ->where('1=1 ' . $this->condition, $this->params)->asArray()->one();
-//        $sumData['SUM_WITHDRAW_WAIT'] = Withdraw::getAllWithdrawTotal(Withdraw::STATUS_WAIT_PAID);
-//        $sumData['SUM_WITHDRAW_FAIL'] = Withdraw::getAllWithdrawTotal(Withdraw::STATUS_PAID_FALSE);
-//        $this->listData['sumData'] = $sumData;
     }
 
     /**
@@ -71,7 +56,7 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
             $this->columns = [
                 'USER_ID' => null, // 这种传输方式主要是用于索引,因为过滤后的字段可能没有这种ID,但是一些功能的操作还需要用这种ID去关联,例如前台会员列表中的勾选批量状态管理,这里需要的就是USER_ID
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -80,7 +65,7 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                     ],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
@@ -88,26 +73,8 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                         'tag'=>['type'=>'success', 'size' => 'small', 'class'=>'no-border']
                     ],
                 ],
-//                'DEC_LV_NAME' => [
-//                    'header' => '会员级别',
-//                    'headerOther' => [
-//                        'width' => '110',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border']
-//                    ],
-//                ],
-//                'EMP_LV_NAME' => [
-//                    'header' => '聘级',
-//                    'headerOther' => [
-//                        'width' => '130',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border']
-//                    ],
-//                ],
                 'IS_DEC' => [
-                    'header' => 'Declaration center or not',//是否报单中心
+                    'header' => 'Whether Declaration Center', // 是否报单中心
                     'value' => function($row) {
                         return (new YesNo([
                             'value' => $row['IS_DEC'],
@@ -115,7 +82,7 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                     },
                     'headerOther' => function($row) {
                         return [
-                            'width' => '120',
+                            'width' => '200',
                         ];
                     },
                     'valueOther' => function($row) {
@@ -124,16 +91,8 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                         ];
                     },
                 ],
-//                'DEC_ROLE_NAME' => [
-//                    'header' => '报单中心级别',
-//                    'headerOther' => ['width' => '110'],
-//                ],
-//                'SYSTEM_NAME' => [
-//                    'header' => '体系名称',
-//                    'headerOther' => ['width' => '150'],
-//                ],
                 'BONUS' => [
-                    'header' => 'Member bonus',//会员奖金余额
+                    'header' => 'Member Bonus', // 会员奖金余额
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS'],
@@ -147,23 +106,8 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                         'tag'=>['type'=>'danger', 'size' => 'small', 'class'=>'no-border'],
                     ],
                 ],
-//                'RECONSUME_POINTS' => [
-//                    'header' => '会员复消积分',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['RECONSUME_POINTS'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'BONUS',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'danger', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
                 'CASH' => [
-                    'header' => 'Member Ecoin',//会员余额
+                    'header' => 'Member Ecoin', // 会员余额
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['CASH'],
@@ -177,148 +121,8 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                         'tag'=>['type'=>'danger', 'size' => 'small', 'class'=>'no-border'],
                     ],
                 ],
-                // 'EXCHANGE_POINTS' => [
-                //     'header' => 'Redeem points',//兑换积分
-                //     'value' => function($row) {
-                //         return (new Price([
-                //             'value' => $row['EXCHANGE_POINTS'],
-                //         ]))->result();
-                //     },
-                //     'headerOther' => [
-                //         'width' => '150',
-                //         'prop'=>'BONUS',
-                //     ],
-                //     'valueOther' => [
-                //         'tag'=>['type'=>'danger', 'size' => 'small', 'class'=>'no-border'],
-                //     ],
-                // ],
-//                'CF' => [
-//                    'header' => '车房养老余额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['CF'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'CF',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'danger', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
-//                'LX' => [
-//                    'header' => '领袖分红余额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['LX'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'LX',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'danger', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
-//                'WITHDRAW_WAIT' => [
-//                    'header' => '提现金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['WITHDRAW_WAIT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'WITHDRAW_WAIT',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
-//                'TAX' => [
-//                    'header' => '个税',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['WITHDRAW_WAIT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'TAX',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
-//                'DEDUCT' => [
-//                    'header' => '扣款',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['WITHDRAW_WAIT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'DEDUCT',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
-//                'REAL_PAID' => [
-//                    'header' => '实付金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['WITHDRAW_WAIT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'REAL_PAID',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
-//                'WITHDRAW_FAIL' => [
-//                    'header' => '实付失败金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['WITHDRAW_FAIL'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '150',
-//                        'prop'=>'WITHDRAW_FAIL',
-//                    ],
-//                    'valueOther' => [
-//                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border'],
-//                    ],
-//                ],
-//                'STATUS' => [
-//                    'header' => '会员状态',
-//                    'value' => function($row){
-//                        return Yii::$app->params['userStatus'][$row['STATUS']]['label'];
-//                    },
-//                    'headerOther' => ['width' => '110'],
-//                ],
-//                'STATUS_AT' => [
-//                    'header' => '会员状态变更时间',
-//                    'value' => function($row) {
-//                        return (new DateTime([
-//                            'value' => $row['STATUS_AT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => ['width' => '170'],
-//                ],
-//                'HIGHEST_EMP_LV_NAME' => [
-//                    'header' => '历史最高聘级',
-//                    'headerOther' => ['width' => '130'],
-//                ],
                 'TOURISM_POINTS' => [
-                    'header' => 'Travel incentive',//旅游积分
+                    'header' => 'Travel Incentive', // 旅游积分
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['TOURISM_POINTS'],
@@ -333,7 +137,7 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                     ],
                 ],
                 'GARAGE_POINTS' => [
-                    'header' => 'Car incentive',// 车积分
+                    'header' => 'Car Incentive', // 车积分
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['GARAGE_POINTS'],
@@ -348,7 +152,7 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                     ],
                 ],
                 'VILLA_POINTS' => [
-                    'header' => 'Villa incentive',// 房积分
+                    'header' => 'Villa Incentive', // 房积分
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['VILLA_POINTS'],
@@ -362,19 +166,10 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                         'tag'=>['type'=>'danger', 'size' => 'small', 'class'=>'no-border'],
                     ],
                 ],
-                'PERIOD_AT' => 'Joining Period',//加入期数
-//                'DEC_DEC_ROLE_NAME' => [
-//                    'header' => '所属报单中心级别',
-//                    'headerOther' => ['width' => '150'],
-//                ],
-//                'DEC_USER_NAME' => [
-//                    'header' => '所属报单中心编号',
-//                    'headerOther' => ['width' => '150'],
-//                ],
-//                'DEC_REAL_NAME' => [
-//                    'header' => '所属报单中心姓名',
-//                    'headerOther' => ['width' => '150'],
-//                ],
+                'PERIOD_AT' => [
+                    'header' => 'Joining Period', // 加入期数
+                    'headerOther' => ['width' => '110'],
+                ],
                 'MOBILE' => [
                     'header' => 'Phone Number', // 手机号码
                     'value' => function($row) {
@@ -387,42 +182,8 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                     'value' => function($row) {
                         return "\t".$row['TEL'];
                     },
-                    'headerOther' => ['width' => '120'],
+                    'headerOther' => ['width' => '180'],
                 ],
-//                'AREA' => [
-//                    'header' => '常用地址',
-//                    'value' => function($row) {
-//                        return $row['PROVINCE_NAME'].$row['CITY_NAME'].$row['COUNTY_NAME'];
-//                    },
-//                    'showValue' => function($row) {
-//                        return '<div class="addr" :title='.$row['PROVINCE_NAME'].$row['CITY_NAME'].$row['COUNTY_NAME'].'>'.$row['PROVINCE_NAME'].$row['CITY_NAME'].$row['COUNTY_NAME'].'</div>';
-//                    },
-//                    'headerOther' => [
-//                        'width' => '200'
-//                    ],
-//                ],
-//                'SUB_COM_NAME' => [
-//                    'header' => '所属分公司',
-//                    'headerOther' => ['width' => '100'],
-//                ],
-//                'IS_DIRECT_SELLER' => [
-//                    'header' => '是否直销员',
-//                    'value' => function($row) {
-//                        return (new YesNo([
-//                            'value' => $row['IS_DIRECT_SELLER'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['IS_DIRECT_SELLER']) && $row['IS_DIRECT_SELLER']) ? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
             ];
         }
         return $this->columns;
@@ -436,30 +197,14 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'],//会员编号
-                'REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Member name'],//会员姓名
-//                'DEC_LV_NAME'=> ['isUserTable'=> true, 'name'=> '会员级别', 'other'=> 'decLevel'],
-//                'EMP_LV_NAME'=> ['isUserTable'=> true, 'name'=> '聘级', 'other'=> 'empLevel'],
-                'IS_DEC'=> ['isUserTable'=> false, 'name'=> 'Declaration center or not', 'other'=> 'yesOrNo'],//是否报单中心
-//                'DEC_ROLE_NAME'=> ['isUserTable'=> true, 'name'=> '报单中心级别', 'other'=> 'decRole'],
-//                'SYSTEM_NAME'=> ['isUserTable'=> false, 'name'=> '体系名称', 'other'=> 'systems'],
-                'BONUS'=> ['isUserTable'=> false, 'name'=> 'Member bonus'],//会员奖金余额
-//                'RECONSUME_POINTS'=> ['isUserTable'=> false, 'name'=> '会员复消积分'],
-                'CASH'=> ['isUserTable'=> false, 'name'=> 'Member Ecoin'],//会员余额
-//                'CF'=> ['isUserTable'=> false, 'name'=> '车房养老余额'],
-//                'LX'=> ['isUserTable'=> false, 'name'=> '领袖分红余额'],
-//                'STATUS'=> ['isUserTable'=> true, 'name'=> '会员状态', 'other'=> 'status'],
-//                'STATUS_AT'=> ['isUserTable'=> true, 'name'=> '会员状态变更时间', 'other'=> 'date'],
-//                'HIGHEST_EMP_LV_NAME'=> ['isUserTable'=> false, 'name'=> '历史最高聘级', 'other'=> 'empLevel'],
-                'PERIOD_AT'=> ['isUserTable'=> false, 'name'=> 'Joining Period'],//加入期数
-//                'DEC_DEC_ROLE_NAME'=> ['isUserTable'=> true, 'name'=> '所属报单中心级别', 'other'=> 'decRole'],
-//                'DEC_USER_NAME'=> ['isUserTable'=> true, 'name'=> '所属报单中心编号'],
-//                'DEC_REAL_NAME'=> ['isUserTable'=> true, 'name'=> '所属报单中心姓名'],
-                'MOBILE'=> ['isUserTable'=> false, 'name'=> 'Phone Number'],//手机号码
-                'TEL'=> ['isUserTable'=> false, 'name'=> 'Alternate Phone Number'],//备用手机号码
-//                'AREA'=> ['isUserTable'=> true, 'name'=> '常用地址', 'other'=> 'area'],
-//                'SUB_COM_NAME'=> ['isUserTable'=> true, 'name'=> '所属分公司', 'other'=> 'subCompany'],
-//                'IS_DIRECT_SELLER'=> ['isUserTable'=> true, 'name'=> '是否直销员', 'other'=> 'yesOrNo'],
+                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Code'], // 会员编号
+                'REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Name'], // 会员姓名
+                'IS_DEC'=> ['isUserTable'=> false, 'name'=> 'Whether Declaration Center', 'other'=> 'yesOrNo'], // 是否报单中心
+                'BONUS'=> ['isUserTable'=> false, 'name'=> 'Member Bonus'], // 会员奖金余额
+                'CASH'=> ['isUserTable'=> false, 'name'=> 'Member Ecoin'], // 会员余额
+                'PERIOD_AT'=> ['isUserTable'=> false, 'name'=> 'Joining Period'], // 加入期数
+                'MOBILE'=> ['isUserTable'=> false, 'name'=> 'Phone Number'], // 手机号码
+                'TEL'=> ['isUserTable'=> false, 'name'=> 'Alternate Phone Number'], // 备用手机号码
             ];
         }
         return $this->filterTypes;

+ 37 - 70
backendApi/modules/v1/models/lists/bonus/FlowBonusList.php

@@ -56,7 +56,7 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
             $this->columns = [
                 'ID' => null,
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -64,16 +64,26 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                     },
                     'headerOther' => ['width' => '170'],
                 ],
-                'PERIOD_NUM' => 'Period Number', // 期数
-                'CALC_MONTH' => 'Bonus Month', // 结算月
+                'PERIOD_NUM' => [
+                    'header' => 'Period Number', // 期数
+                    'headerOther' => [
+                        'width' => '120',
+                    ],
+                ],
+                'CALC_MONTH' => [
+                    'header' => 'Bonus Month', // 结算月
+                    'headerOther' => [
+                        'width' => '120',
+                    ],
+                ],
                 'DEAL_TYPE_NAME' => [
-                    'header' => 'Transaction type',//交易类型
+                    'header' => 'Transaction Type', // 交易类型
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -82,7 +92,7 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
@@ -91,7 +101,7 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'LAST_DEC_LV_NAME' => [
-                    'header' => 'Member level',//会员级别
+                    'header' => 'Member Level', // 会员级别
                     'headerOther' => [
                         'width' => '110',
                     ],
@@ -99,25 +109,8 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                         'tag' => ['type' => 'warning', 'size' => 'small', 'class' => 'no-border']
                     ],
                 ],
-//                'LAST_EMP_LV_NAME' => [
-//                    'header' => 'Rank',//聘级
-//                    'headerOther' => [
-//                        'width' => '130',
-//                    ],
-//                    'valueOther' => [
-//                        'tag' => ['type' => 'warning', 'size' => 'small', 'class' => 'no-border']
-//                    ],
-//                ],
-//                'LAST_STATUS_NAME' => [
-//                    'header' => '会员状态',
-//                    'headerOther' => ['width' => '110'],
-//                ],
-//                'SYSTEM_NAME' => [
-//                    'header' => '体系',
-//                    'headerOther' => ['width' => '200'],
-//                ],
                 'IS_DEC' => [
-                    'header' => 'Declaration center or not',//是否报单中心
+                    'header' => 'Whether Declaration Center', // 是否报单中心
                     'value' => function ($row) {
                         return (new YesNo([
                             'value' => $row['IS_DEC'],
@@ -125,7 +118,7 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                     },
                     'headerOther' => function ($row) {
                         return [
-                            'width' => '120',
+                            'width' => '200',
                         ];
                     },
                     'valueOther' => function ($row) {
@@ -134,37 +127,15 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                         ];
                     },
                 ],
-//                'DEC_ROLE_NAME' => [
-//                    'header' => '报单中心级别',
-//                    'headerOther' => ['width' => '110'],
-//                ],
-//                'IS_DIRECT_SELLER' => [
-//                    'header' => '是否直销员',
-//                    'value' => function ($row) {
-//                        return (new YesNo([
-//                            'value' => $row['IS_DIRECT_SELLER'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function ($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function ($row) {
-//                        return [
-//                            'tag' => ['type' => (isset($row['IS_DIRECT_SELLER']) && $row['IS_DIRECT_SELLER']) ? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
                 'BEFORE_BALANCE' => [
-                    'header' => 'Balance before transaction',//交易前余额
+                    'header' => 'Balance Before Transaction', // 交易前余额
                     'value' => function ($row) {
                         return (new Price([
                             'value' => $row['TOTAL'] - $row['AMOUNT'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '200',
                     ],
                 ],
                 'AMOUNT' => [
@@ -204,15 +175,15 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'ADMIN_NAME' => [
-                    'header' => 'Operator',//操作人
+                    'header' => 'Operator', // 操作人
                     'headerOther' => ['width' => '110'],
                 ],
                 'REMARK' => [
-                    'header' => 'Remark',//备注
+                    'header' => 'Remark', // 备注
                     'headerOther' => ['width' => '250'],
                 ],
                 'TRANSFER_SN' => [
-                    'header' => 'Serial number',//流水号
+                    'header' => 'Serial Number', // 流水号
                     'headerOther' => ['width' => '250'],
                 ],
             ];
@@ -227,24 +198,20 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
     public function getFilterTypes() {
         if (!$this->filterTypes) {
             $this->filterTypes = [
-                'CREATED_AT' => ['isUserTable' => false, 'name' => 'Creation time', 'other' => 'date'],//创建时间
-                'PERIOD_NUM' => ['isUserTable' => false, 'name' => 'Period Number'],//期数
-                'CALC_MONTH' => ['isUserTable' => false, 'name' => 'Bonus Month', 'other' => 'month'],//结算月
-                'DEAL_TYPE_NAME' => ['isUserTable' => false, 'name' => 'Transaction Type', 'other' => 'dealTypes'],//交易类型
-                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member Code'],//会员编号
-                'REAL_NAME' => ['isUserTable' => false, 'name' => 'Member Name'],//会员姓名
-                'LAST_DEC_LV_NAME' => ['isUserTable' => false, 'name' => 'Member Level', 'other' => 'decLevel'],//会员等级
-                'LAST_EMP_LV_NAME' => ['isUserTable' => false, 'name' => 'Rank', 'other' => 'empLevel'],//聘级
-//                'LAST_STATUS_NAME' => ['isUserTable' => false, 'name' => '会员状态', 'other' => 'status'],
-//                'SYSTEM_NAME' => ['isUserTable' => true, 'name' => '体系', 'other' => 'systems'],
-                'IS_DEC' => ['isUserTable' => false, 'name' => 'Declaration center or not', 'other' => 'yesOrNo'],//是否报单中心
-//                'DEC_ROLE_NAME' => ['isUserTable' => true, 'name' => '报单中心级别', 'other' => 'decRole'],
-//                'IS_DIRECT_SELLER' => ['isUserTable' => true, 'name' => '是否直销员', 'other' => 'yesOrNo'],
-                'AMOUNT' => ['isUserTable' => false, 'name' => 'Debit/Credit'],//交易额
+                'CREATED_AT' => ['isUserTable' => false, 'name' => 'Creation Time', 'other' => 'date'], // 创建时间
+                'PERIOD_NUM' => ['isUserTable' => false, 'name' => 'Period Number'], // 期数
+                'CALC_MONTH' => ['isUserTable' => false, 'name' => 'Bonus Month', 'other' => 'month'], // 结算月
+                'DEAL_TYPE_NAME' => ['isUserTable' => false, 'name' => 'Transaction Type', 'other' => 'dealTypes'], // 交易类型
+                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member Code'], // 会员编号
+                'REAL_NAME' => ['isUserTable' => false, 'name' => 'Member Name'], // 会员姓名
+                'LAST_DEC_LV_NAME' => ['isUserTable' => false, 'name' => 'Member Level', 'other' => 'decLevel'], // 会员等级
+                'LAST_EMP_LV_NAME' => ['isUserTable' => false, 'name' => 'Rank', 'other' => 'empLevel'], // 聘级
+                'IS_DEC' => ['isUserTable' => false, 'name' => 'Whether Declaration Center', 'other' => 'yesOrNo'], // 是否报单中心
+                'AMOUNT' => ['isUserTable' => false, 'name' => 'Debit/Credit'], // 交易额
                 'TOTAL' => ['isUserTable' => false, 'name' => 'New Balance'], // 交易后余额
-                'ADMIN_NAME' => ['isUserTable' => false, 'name' => 'Operator'],//操作人
-                'REMARK' => ['isUserTable' => false, 'name' => 'Remark'],//备注
-                'TRANSFER_SN' => ['isUserTable' => false, 'name' => 'Serial number'],//流水号
+                'ADMIN_NAME' => ['isUserTable' => false, 'name' => 'Operator'], // 操作人
+                'REMARK' => ['isUserTable' => false, 'name' => 'Remark'], // 备注
+                'TRANSFER_SN' => ['isUserTable' => false, 'name' => 'Serial Number'], // 流水号
             ];
         }
         return $this->filterTypes;

+ 29 - 51
backendApi/modules/v1/models/lists/bonus/PerfMonthList.php

@@ -56,51 +56,51 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
         if(!$this->columns){
             $this->columns = [
                 'CALC_MONTH' => [
-                    'header' => 'Bonus Month',//结算月
+                    'header' => 'Bonus Month', // 结算月
                     'headerOther' => [
-                        'width' => '100',
+                        'width' => '110',
                     ],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'REC_USER_NAME' => [
-                    'header' => 'Recommender No',//推荐人编号
+                    'header' => 'Recommender No', // 推荐人编号
                     'headerOther' => [
-                        'width' => '110',
+                        'width' => '140',
                     ],
                 ],
                 'REC_REAL_NAME' => [
-                    'header' => 'Recommender name',//推荐人姓名
+                    'header' => 'Recommender Name', // 推荐人姓名
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '160',
                     ],
                 ],
                 'LAST_DEC_LV_NAME' => [
-                    'header' => 'Member level at settlement',//结算时会员级别
+                    'header' => 'PC Member Level', // 结算时会员级别
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'LAST_EMP_LV_NAME' => [
-                    'header' => 'Member employment rank at settlement',//结算时会员聘级
+                    'header' => 'Director Rank', // 结算时会员聘级
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'PV_PCS' => [
-                    'header' => 'Personal performance',//个人业绩
+                    'header' => 'Personal Performance', // 个人业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '170',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -109,9 +109,9 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'VIP_PV_1L_ZC' => [
-                    'header' => 'L. new market entry performance',//一市场新增报单业绩
+                    'header' => 'L. New Market Entry Performance', // 一市场新增报单业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '240',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -120,9 +120,9 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'VIP_PV_2L_ZC' => [
-                    'header' => 'R. New market entry performance',//二市场新增报单业绩
+                    'header' => 'R. New Market Entry Performance', // 二市场新增报单业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '240',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -130,21 +130,10 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                         ]))->result();
                     },
                 ],
-//                'VIP_PV_3L_ZC' => [
-//                    'header' => '三市场新增报单业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['VIP_PV_3L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
                 'VIP_SURPLUS_1L_ZC' => [
-                    'header' => 'L. Market Monthly remaining declaration performance',//一市场月剩余报单业绩
+                    'header' => 'L. Market Monthly Remaining Declaration Performance', // 一市场月剩余报单业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '370',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -153,9 +142,9 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'VIP_SURPLUS_2L_ZC' => [
-                    'header' => 'R. Market Monthly remaining declaration performance',//二市场月剩余报单业绩
+                    'header' => 'R. Market Monthly Remaining Declaration Performance', // 二市场月剩余报单业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '370',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -163,21 +152,10 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                         ]))->result();
                     },
                 ],
-//                'VIP_SURPLUS_3L_ZC' => [
-//                    'header' => '三市场月剩余报单业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['VIP_SURPLUS_3L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
                 'PV_PSS' => [
-                    'header' => 'Monthly new team performance',//月新增团队业绩
+                    'header' => 'Monthly New Team Performance', // 月新增团队业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '230',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -186,9 +164,9 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'PV_PSS_TOTAL' => [
-                    'header' => 'Monthly cumulative team performance',//月累计团队业绩
+                    'header' => 'Monthly Cumulative Team Performance', // 月累计团队业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '270',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -197,7 +175,7 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -218,10 +196,10 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'CALC_MONTH'=> ['isUserTable'=> false, 'name'=> 'Bonus Month'],//结算月
-                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'],//会员编号
-                'REC_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Recommender No'],//推荐人编号
-                'CREATED_AT'=> ['isUserTable'=> false, 'name'=> 'Creation time', 'other'=> 'date'],//创建时间
+                'CALC_MONTH'=> ['isUserTable'=> false, 'name'=> 'Bonus Month'], // 结算月
+                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Code'], // 会员编号
+                'REC_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Recommender No'], // 推荐人编号
+                'CREATED_AT'=> ['isUserTable'=> false, 'name'=> 'Creation Time', 'other'=> 'date'], // 创建时间
             ];
         }
         return $this->filterTypes;

+ 25 - 25
backendApi/modules/v1/models/lists/bonus/PerfOrderList.php

@@ -61,9 +61,9 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
         if(!$this->columns){
             $this->columns = [
                 'PERIOD_NUM' => [
-                    'header' => 'Pay Cycle(PC)',//结算期数
+                    'header' => 'Pay Cycle(PC)', // 结算期数
                     'headerOther' => [
-                        'width' => '100',
+                        'width' => '140',
                     ],
                 ],
                 'SN' => [
@@ -76,53 +76,53 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'DEC_TYPE' => [
-                    'header' => 'Type',//业绩单类型
+                    'header' => 'Type', // 业绩单类型
                     'headerOther' => [
                         'width' => '130',
                     ],
                     'value' => function($row){
                         $decTypes = [
-                            'ZC'=> 'Welcome Pack order',//首购单
-                            'YH'=> 'Coupon',//优惠单
-                            'ZG'=> 'Additional purchase order',//增购单
-                            'LS'=> 'Retail order',//零售单
-                            'FX'=> 'Re sales order',//复销单
+                            'ZC'=> 'Welcome Pack Order', // 首购单
+                            'YH'=> 'Coupon', // 优惠单
+                            'ZG'=> 'Additional Purchase Order', // 增购单
+                            'LS'=> 'Retail Order', // 零售单
+                            'FX'=> 'Re Sales Order', // 复销单
                         ];
                         return $decTypes[strtoupper($row['DEC_TYPE'])];
                     },
                 ],
                 'DEC_STATUS_NAME' => [
-                    'header' => 'Status',//业绩单状态
+                    'header' => 'Status', // 业绩单状态
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'LAST_REC_USER_NAME' => [
-                    'header' => 'Sponsor No. at settlement',//结算时开拓者编号
+                    'header' => 'Sponsor No. At Settlement', // 结算时开拓者编号
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '190',
                     ],
                 ],
                 'LAST_REC_REAL_NAME' => [
-                    'header' => 'Sponsor name at settlement',//结算时开拓者姓名
+                    'header' => 'Sponsor Name At Settlement', // 结算时开拓者姓名
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '210',
                     ],
                 ],
                 'PV' => [
-                    'header' => 'Entry BV',//报单BV
+                    'header' => 'Entry BV', // 报单BV
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -133,7 +133,7 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'DEC_AMOUNT' => [
-                    'header' => 'Entry amount',//报单金额
+                    'header' => 'Entry Amount', // 报单金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -144,7 +144,7 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'DEC_SN' => [
-                    'header' => 'Entry No',//报单编号
+                    'header' => 'Entry No', // 报单编号
                     'headerOther' => [
                         'width' => '250',
                     ],
@@ -156,7 +156,7 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -181,14 +181,14 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                 'SN'=> ['isUserTable'=> false, 'name'=> 'Sales No'], // 业绩单编号
                 'DEC_STATUS_NAME'=> ['isUserTable'=> false, 'name'=> 'Status','other'=> 'select',
                  'selectData'=> [['id'=> 1, 'name'=> 'Reviewed'], ['id'=> 2, 'name'=> 'Waste disposal']],], // 业绩单状态,已审核,置废
-                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'], // 会员编号
-                'REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Member name'], // 会员姓名
-                'LAST_REC_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor No. at settlement'], // 结算时开拓者编号
-                'LAST_REC_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor name at settlement'], // 结算时开拓者姓名
+                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Code'], // 会员编号
+                'REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Name'], // 会员姓名
+                'LAST_REC_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor No. At Settlement'], // 结算时开拓者编号
+                'LAST_REC_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor Name At Settlement'], // 结算时开拓者姓名
                 'PV'=> ['isUserTable'=> false, 'name'=> 'Entry BV'], // 报单BV
-                'DEC_AMOUNT'=> ['isUserTable'=> false, 'name'=> 'Entry amount'], // 报单金额
+                'DEC_AMOUNT'=> ['isUserTable'=> false, 'name'=> 'Entry Amount'], // 报单金额
                 'DEC_SN'=> ['isUserTable'=> false, 'name'=> 'Entry No'], // 报单编号
-                'CREATED_AT'=> ['isUserTable'=> true, 'name'=> 'Creation time', 'other'=> 'date'], // 创建时间
+                'CREATED_AT'=> ['isUserTable'=> true, 'name'=> 'Creation Time', 'other'=> 'date'], // 创建时间
             ];
         }
         return $this->filterTypes;

+ 39 - 114
backendApi/modules/v1/models/lists/bonus/PerfPeriodList.php

@@ -36,12 +36,6 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
             'page' => $this->page,
             'pageSize' => $this->pageSize,
         ]);
-//        if ($data['list']) {
-//            foreach ($data['list'] as $key => $value) {
-//                $data['list'][$key]['LAST_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$value['LAST_DEC_LV']]['LEVEL_NAME'] ?? '';
-//                $data['list'][$key]['LAST_EMP_LV_NAME'] = Cache::getEmpLevelConfig()[$value['LAST_EMP_LV']]['LEVEL_NAME'] ?? '';
-//            }
-//        }
         $this->listData = $data;
     }
 
@@ -53,27 +47,27 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
         if(!$this->columns){
             $this->columns = [
                 'PERIOD_NUM' => [
-                    'header' => 'Number of periods',//期数
+                    'header' => 'Number Of Periods', // 期数
                     'headerOther' => [
-                        'width' => '100',
+                        'width' => '140',
                     ],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'PV_PCS' => [
-                    'header' => 'Personal performance',//个人业绩
+                    'header' => 'Personal Performance', // 个人业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '160',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -82,9 +76,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_PCS_ZC' => [
-                    'header' => 'Declaration performance',//报单业绩
+                    'header' => 'Declaration Performance', // 报单业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '180',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -93,9 +87,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_PCS_FX' => [
-                    'header' => 'Cancellation performance',//复消业绩
+                    'header' => 'Cancellation Performance', // 复消业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '190',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -104,9 +98,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_1L' => [
-                    'header' => 'L. new market performance',//一市场新增业绩
+                    'header' => 'L. New Market Performance', // 一市场新增业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '200',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -115,9 +109,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_1L_ZC' => [
-                    'header' => 'L. new performance of market entry',//一市场报单新增业绩
+                    'header' => 'L. New Performance Of Market Entry', // 一市场报单新增业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '250',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -126,9 +120,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_1L_FX' => [
-                    'header' => 'L. new performance of market re cancellation',//一市场复消新增业绩
+                    'header' => 'L. New Performance Of Market Re Cancellation', // 一市场复消新增业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '320',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -137,9 +131,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_2L' => [
-                    'header' => 'R. New market performance',//二市场新增业绩
+                    'header' => 'R. New Market Performance', // 二市场新增业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '200',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -148,9 +142,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_2L_ZC' => [
-                    'header' => 'R. New performance of market entry',//二市场报单新增业绩
+                    'header' => 'R. New Performance Of Market Entry', // 二市场报单新增业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '260',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -159,9 +153,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'PV_2L_FX' => [
-                    'header' => 'R. New performance of market re cancellation',//二市场复消新增业绩
+                    'header' => 'R. New Performance Of Market Re Cancellation', // 二市场复消新增业绩
                     'headerOther' => [
-                        'width' => '150',
+                        'width' => '320',
                     ],
                     'value' => function($row) {
                         return (new Price([
@@ -169,149 +163,80 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                         ]))->result();
                     },
                 ],
-//                'PV_3L' => [
-//                    'header' => '三市场新增业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['PV_3L'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'PV_3L_ZC' => [
-//                    'header' => '三市场报单新增业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['PV_3L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'PV_3L_FX' => [
-//                    'header' => '三市场复消新增业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['PV_3L_FX'],
-//                        ]))->result();
-//                    },
-//                ],
                 'SURPLUS_1L' => [
-                    'header' => 'L. market balance performance',//一市场结余业绩
+                    'header' => 'L. Market Balance Performance', // 一市场结余业绩
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['SURPLUS_1L'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '220',
                         'prop'=>'SURPLUS_1L',
                     ],
                 ],
                 'SURPLUS_2L' => [
-                    'header' => 'R. Market balance performance',//二市场结余业绩
+                    'header' => 'R. Market Balance Performance', // 二市场结余业绩
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['SURPLUS_2L'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '220',
                         'prop'=>'SURPLUS_2L',
                     ],
                 ],
-//                'SURPLUS_3L' => [
-//                    'header' => '三市场结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_3L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'SURPLUS_3L',
-//                    ],
-//                ],
                 'SURPLUS_1L_ZC' => [
-                    'header' => 'L. market entry balance performance',//一市场报单结余业绩
+                    'header' => 'L. Market Entry Balance Performance', // 一市场报单结余业绩
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['SURPLUS_1L_ZC'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '260',
                         'prop'=>'SURPLUS_1L_ZC',
                     ],
                 ],
                 'SURPLUS_2L_ZC' => [
-                    'header' => 'R. Market entry balance performance',//二市场报单结余业绩
+                    'header' => 'R. Market Entry Balance Performance', // 二市场报单结余业绩
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['SURPLUS_2L_ZC'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '260',
                         'prop'=>'SURPLUS_2L_ZC',
                     ],
                 ],
-//                'SURPLUS_3L_ZC' => [
-//                    'header' => '三市场报单结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_3L_ZC'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'SURPLUS_3L_ZC',
-//                    ],
-//                ],
                 'SURPLUS_1L_FX' => [
-                    'header' => 'L. market reconditioning balance performance',//一市场复消结余业绩
+                    'header' => 'L. Market Reconditioning Balance Performance', // 一市场复消结余业绩
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['SURPLUS_1L_FX'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '320',
                         'prop'=>'SURPLUS_1L_FX',
                     ],
                 ],
                 'SURPLUS_2L_FX' => [
-                    'header' => 'R. Market re cancellation balance performance',//二市场复消结余业绩
+                    'header' => 'R. Market Re Cancellation Balance Performance', // 二市场复消结余业绩
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['SURPLUS_2L_FX'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '330',
                         'prop'=>'SURPLUS_2L_FX',
                     ],
                 ],
-//                'SURPLUS_3L_FX' => [
-//                    'header' => '三市场复消结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_3L_FX'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'SURPLUS_3L_FX',
-//                    ],
-//                ],
                 'PV_PSS' => [
-                    'header' => 'Team performance',//团队业绩
+                    'header' => 'Team Performance', // 团队业绩
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -322,7 +247,7 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -343,9 +268,9 @@ class PerfPeriodList extends \common\libs\dataList\DataList implements DataListI
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'PERIOD_NUM'=> ['isUserTable'=> false, 'name'=> 'Number of periods'],//期数
-                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'],//会员编号
-                'CREATED_AT'=> ['isUserTable'=> false, 'name'=> 'Creation time', 'other'=> 'date'],//创建时间
+                'PERIOD_NUM'=> ['isUserTable'=> false, 'name'=> 'Number Of Periods'], // 期数
+                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Code'], // 会员编号
+                'CREATED_AT'=> ['isUserTable'=> false, 'name'=> 'Creation Time', 'other'=> 'date'], // 创建时间
             ];
         }
         return $this->filterTypes;

+ 41 - 519
backendApi/modules/v1/models/lists/bonus/PeriodBonusList.php

@@ -94,7 +94,7 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                     'headerOther' => ['width' => '170'],
                 ],
                 'LAST_USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -103,7 +103,7 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                     ],
                 ],
                 'LAST_REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
@@ -112,19 +112,19 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                     ],
                 ],
                 'LAST_DEC_LV_NAME' => [
-                    'header' => 'Member level at settlement',//结算时会员级别
+                    'header' => 'PC Member Level', // 结算时会员级别
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '140',
                     ],
                 ],
                 'LAST_EMP_LV_NAME' => [
-                    'header' => 'Member rank at settlement',//结算时会员聘级
+                    'header' => 'Director Rank', // 结算时会员聘级
                     'headerOther' => [
                         'width' => '140',
                     ],
                 ],
                 'LAST_CROWN_LV_NAME' => [
-                    'header' => 'Member star at settlement',//结算时会员聘级
+                    'header' => 'Crown Rank',//结算时会员聘级
                     'headerOther' => [
                         'width' => '140',
                     ],
@@ -138,7 +138,7 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                 'LAST_PERIOD_AT' => [
                     'header' => 'Joining Period', // 加入期数
                     'headerOther' => [
-                        'width' => '100',
+                        'width' => '110',
                     ],
                 ],
                 'LAST_CREATED_AT' => [
@@ -151,139 +151,31 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                     'headerOther' => ['width' => '170'],
                 ],
                 'LAST_REC_USER_NAME' => [
-                    'header' => 'Sponsor No',//开拓者编号
+                    'header' => 'Sponsor No', // 开拓者编号
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'LAST_REC_REAL_NAME' => [
-                    'header' => 'Sponsor Name',//开拓者姓名
+                    'header' => 'Sponsor Name', // 开拓者姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
                 ],
                 'LAST_CON_USER_NAME' => [
-                    'header' => 'Superior code',//上级编号
+                    'header' => 'Superior Code', // 上级编号
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'LAST_CON_REAL_NAME' => [
-                    'header' => 'Superior name',//上级姓名
+                    'header' => 'Superior Name', // 上级姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
                 ],
-//                'PV_1L' => [
-//                    'header' => '一市场新增业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['PV_1L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'PV_1L',
-//                    ],
-//                ],
-//                'SURPLUS_1L' => [
-//                    'header' => '一市场结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_1L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'SURPLUS_1L',
-//                    ],
-//                ],
-//                'UP_SURPLUS_1L' => [
-//                    'header' => '当前一市场结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['UP_SURPLUS_1L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'UP_SURPLUS_1L',
-//                    ],
-//                ],
-//                'PV_2L' => [
-//                    'header' => '二市场新增业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['PV_2L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'PV_2L',
-//                    ],
-//                ],
-//                'SURPLUS_2L' => [
-//                    'header' => '二市场结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_2L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'SURPLUS_2L',
-//                    ],
-//                ],
-//                'UP_SURPLUS_2L' => [
-//                    'header' => '当前二市场结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['UP_SURPLUS_2L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'UP_SURPLUS_2L',
-//                    ],
-//                ],
-//                'PV_3L' => [
-//                    'header' => '三市场新增业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['PV_3L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'PV_3L',
-//                    ],
-//                ],
-//                'SURPLUS_3L' => [
-//                    'header' => '三市场结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_3L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'SURPLUS_3L',
-//                    ],
-//                ],
-//                'UP_SURPLUS_3L' => [
-//                    'header' => '当前三市场结余业绩',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['UP_SURPLUS_3L'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'UP_SURPLUS_3L',
-//                    ],
-//                ],
                 'BONUS_TG' => [
-                    'header' => 'Welcome Bonus',//销售奖金
+                    'header' => 'Welcome Bonus', // 销售奖金
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS_TG'],
@@ -294,20 +186,8 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_TG',
                     ],
                 ],
-//                'ORI_BONUS_TG' => [
-//                    'header' => 'Original amount of Welcome Bonus',//销售奖金原金额
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_TG'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_TG',
-//                    ],
-//                ],
                 'BONUS_QY' => [
-                    'header' => 'Team Bonus',//绩效奖金
+                    'header' => 'Team Bonus', // 绩效奖金
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS_QY'],
@@ -318,42 +198,18 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_QY',
                     ],
                 ],
-//                'ORI_BONUS_QY' => [
-//                    'header' => 'Original amount of Team Bonus',//绩效奖金原金额
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_QY'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_QY',
-//                    ],
-//                ],
                 'ORI_CAPPED_BONUS_QY' => [
-                    'header' => 'Uncapped amount of Team Award',//绩效奖未封顶金额
+                    'header' => 'Uncapped Team Bonus', // 绩效奖未封顶金额
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['ORI_CAPPED_BONUS_QY'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '170',
                         'prop'=>'ORI_CAPPED_BONUS_QY',
                     ],
                 ],
-//                'ORI_BONUS_QY_BD' => [
-//                    'header' => 'Original amount of declaration Team Award',//报单团队奖原金额
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_QY_BD'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_QY_BD',
-//                    ],
-//                ],
                 'BONUS_BS' => [
                     'header' => 'Director Bonus',// 管理奖/蓝星奖
                     'value' => function($row) {
@@ -366,164 +222,32 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_BS',
                     ],
                 ],
-//                'ORI_BONUS_BS' => [
-//                    'header' => 'Original amount of Director Bonus',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_BS'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_BS',
-//                    ],
-//                ],
-                // 'REAL_BONUS_BS' => [
-                //     'header' => '实发蓝星管理奖',
-                //     'value' => function($row) {
-                //         return (new Price([
-                //             'value' => $row['REAL_BONUS_BS'],
-                //         ]))->result();
-                //     },
-                //     'headerOther' => [
-                //         'width' => '120',
-                //         'prop'=>'REAL_BONUS_BS',
-                //     ],
-                // ],
-//                'BONUS_BS_MNT' => [
-//                    'header' => 'Bluestar Management Award',//蓝星管理奖
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_BS_MNT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop' => 'BONUS_BS_MNT',
-//                    ],
-//                ],
-//                'ORI_BONUS_BS_MNT' => [
-//                    'header' => 'Original amount of Bluestar Management Award',//蓝星管理奖原金额
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_BS_MNT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop' => 'ORI_BONUS_BS_MNT',
-//                    ],
-//                ],
-//                'BONUS_BS_ABBR' => [
-//                    'header' => 'Blue star performance award',//蓝星业绩奖
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_BS_ABBR'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop' => 'BONUS_BS_ABBR',
-//                    ],
-//                ],
-//                'ORI_BONUS_BS_ABBR' => [
-//                    'header' => 'Original amount of blue star performance award',//蓝星业绩奖原金额
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_BS_ABBR'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop' => 'ORI_BONUS_BS_ABBR',
-//                    ],
-//                ],
-//                'BONUS_GX' => [
-//                    'header' => '共享奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_GX'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'BONUS_GX',
-//                    ],
-//                ],
-//                'ORI_BONUS_GX' => [
-//                    'header' => '共享奖原金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_GX'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_GX',
-//                    ],
-//                ],
-//                'REAL_BONUS_GX' => [
-//                    'header' => '实发共享奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['REAL_BONUS_GX'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'REAL_BONUS_GX',
-//                    ],
-//                ],
                 'BONUS_BD' => [
-                    'header' => 'Stockist Commission',// 服务奖
+                    'header' => 'Stockist Commission', // 服务奖
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS_BD'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '150',
                         'prop'=>'BONUS_BD',
                     ],
                 ],
-//                'ORI_BONUS_BD' => [
-//                    'header' => 'Original amount of Stockist Commission',//服务奖原金额
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_BD'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_BD',
-//                    ],
-//                ],
                 'BONUS_QUARTER' => [
-                    'header' => 'Quarterly Bonus',// 季度分红
+                    'header' => 'Quarterly Bonus', // 季度分红
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS_QUARTER'],
                         ]))->result();
                     },
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '130',
                         'prop'=>'BONUS_QUARTER',
                     ],
                 ],
-//                'ORI_BONUS_QUARTER' => [
-//                    'header' => 'Original amount of Quarterly Bonus',//季度分红原金额
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_QUARTER'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_QUARTER',
-//                    ],
-//                ],
                 'BONUS_REAL' => [
-                    'header' => 'Actual Bonus',//实发奖金
+                    'header' => 'Actual Bonus', // 实发奖金
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS_REAL'],
@@ -535,7 +259,7 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                     ],
                 ],
                 'BONUS_TOTAL' => [
-                    'header' => 'Total Bonus',//总奖金
+                    'header' => 'Total Bonus', // 总奖金
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS_TOTAL'],
@@ -546,32 +270,8 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_TOTAL',
                     ],
                 ],
-//                'MANAGE_TAX' => [
-//                    'header' => 'Management Expense',//管理费
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['MANAGE_TAX'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'MANAGE_TAX',
-//                    ],
-//                ],
-//                'RECONSUME_POINTS' => [
-//                    'header' => '复销积分',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['RECONSUME_POINTS'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'RECONSUME_POINTS',
-//                    ],
-//                ],
                 'BONUS_INCOME' => [
-                    'header' => 'Total revenue',//总收入
+                    'header' => 'Total Revenue', // 总收入
                     'value' => function($row) {
                         return (new Price([
                             'value' => $row['BONUS_INCOME'],
@@ -582,182 +282,12 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_INCOME',
                     ],
                 ],
-//                'ORI_BONUS_STANDARD' => [
-//                    'header' => '团队成长奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_STANDARD'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_STANDARD',
-//                    ],
-//                ],
                 'CALC_MONTH' => [
-                    'header' => 'Bonus Month',//结算月
+                    'header' => 'Bonus Month', // 结算月
                     'headerOther' => [
-                        'width' => '100',
+                        'width' => '110',
                     ],
                 ],
-//                'BONUS_XF' => [
-//                    'header' => '消费奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_XF'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'BONUS_XF',
-//                    ],
-//                ],
-//                'ORI_BONUS_XF' => [
-//                    'header' => '消费奖原金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_XF'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_XF',
-//                    ],
-//                ],
-//                'BONUS_YJ' => [
-//                    'header' => '业绩奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_YJ'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'BONUS_YJ',
-//                    ],
-//                ],
-//                'ORI_BONUS_YJ' => [
-//                    'header' => '业绩奖原金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_YJ'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_YJ',
-//                    ],
-//                ],
-//                'BONUS_YC' => [
-//                    'header' => '荣衔奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_YC'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'BONUS_YC',
-//                    ],
-//                ],
-//                'ORI_BONUS_YC' => [
-//                    'header' => '荣衔奖原金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_YC'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_YC',
-//                    ],
-//                ],
-//                'BONUS_VIP' => [
-//                    'header' => 'VIP奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_VIP'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'BONUS_VIP',
-//                    ],
-//                ],
-//                'ORI_BONUS_VIP' => [
-//                    'header' => 'VIP奖原金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_VIP'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_VIP',
-//                    ],
-//                ],
-//                'BONUS_GL' => [
-//                    'header' => '管理奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_GL'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'BONUS_GL',
-//                    ],
-//                ],
-//                'ORI_BONUS_GL' => [
-//                    'header' => '管理奖原金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_GL'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_GL',
-//                    ],
-//                ],
-//                'REAL_BONUS_GL' => [
-//                    'header' => '实发管理奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['REAL_BONUS_GL'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'REAL_BONUS_GL',
-//                    ],
-//                ],
-//                'BONUS_FW' => [
-//                    'header' => '服务奖',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['BONUS_FW'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'BONUS_FW',
-//                    ],
-//                ],
-//                'ORI_BONUS_FW' => [
-//                    'header' => '服务奖原金额',
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['ORI_BONUS_FW'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => [
-//                        'width' => '120',
-//                        'prop'=>'ORI_BONUS_FW',
-//                    ],
-//                ],
-
-
             ];
         }
         return $this->columns;
@@ -771,34 +301,26 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'LAST_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'],//会员编号
-                'LAST_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Member name'],//会员姓名
-                'LAST_DEC_LV_NAME'=> ['isUserTable'=> false, 'name'=> 'Member level at settlement', 'other'=> 'decLevel'],//结算时会员级别
-                'LAST_EMP_LV_NAME'=> ['isUserTable'=> false, 'name'=> 'Member rank at settlement', 'other'=> 'empLevel'],//结算时会员聘级
-                'LAST_MOBILE'=> ['isUserTable'=> false, 'name'=> 'Phone Number'],//手机号
+                'LAST_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Code'], // 会员编号
+                'LAST_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Name'], // 会员姓名
+                'LAST_DEC_LV_NAME'=> ['isUserTable'=> false, 'name'=> 'PC Member Level', 'other'=> 'decLevel'], // 结算时会员级别
+                'LAST_EMP_LV_NAME'=> ['isUserTable'=> false, 'name'=> 'Director Rank', 'other'=> 'empLevel'], // 结算时会员聘级
+                'LAST_MOBILE'=> ['isUserTable'=> false, 'name'=> 'Phone Number'], // 手机号
                 'LAST_PERIOD_AT'=> ['isUserTable'=> false, 'name'=> 'Joining Period'], // 加入期数
                 'LAST_CREATED_AT'=> ['isUserTable'=> false, 'name'=> 'Joining Date', 'other'=> 'date'], // 加入时间
                 'CALCULATED_AT'=> ['isUserTable'=> false, 'name'=> 'Date', 'other'=> 'date'], // 备份时间
-                'LAST_REC_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor No'],//开拓者编号
-                'LAST_REC_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor Name'],//开拓者姓名
-                'LAST_CON_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Superior Number'],//上级编号
-                'LAST_CON_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Name of superior'],//上级姓名
-                'PV_1L'=> ['isUserTable'=> false, 'name'=> 'I. new market performance'],//一市场新增业绩
-                'SURPLUS_1L'=> ['isUserTable'=> false, 'name'=> 'I. market balance performance'],//一市场结余业绩
-                'PV_2L'=> ['isUserTable'=> false, 'name'=> 'II. new market performance'],//二市场新增业绩
-                'SURPLUS_2L'=> ['isUserTable'=> false, 'name'=> 'II. market balance performance'],//二市场结余业绩
-//                'PV_3L'=> ['isUserTable'=> false, 'name'=> 'III. new market performance'],//三市场新增业绩
-//                'SURPLUS_3L'=> ['isUserTable'=> false, 'name'=> 'III. market balance performance'],//三市场结余业绩
-                'BONUS_BD'=> ['isUserTable'=> false, 'name'=> 'Stockist Commission'],//服务奖
-//                'BONUS_TG'=> ['isUserTable'=> false, 'name'=> 'Promotion Award'],//推广奖
-//                'BONUS_XF'=> ['isUserTable'=> false, 'name'=> 'Consumption Award'],//消费奖
-//                'BONUS_YJ'=> ['isUserTable'=> false, 'name'=> 'Performance Award'],//业绩奖
-//                'BONUS_GX'=> ['isUserTable'=> false, 'name'=> 'Sharing Award'],//共享奖
-                'BONUS_GL'=> ['isUserTable'=> false, 'name'=> 'Management Award'],//管理奖
-                'BONUS_QY'=> ['isUserTable'=> false, 'name'=> 'Team award'],//团队奖
-//                'BONUS_YC'=> ['isUserTable'=> false, 'name'=> 'Honor Award'],//荣衔奖
-//                'ORI_BONUS_STANDARD'=> ['isUserTable'=> false, 'name'=> 'Team growth Award'],//团队成长奖
-                'CALC_MONTH'=> ['isUserTable'=> false, 'name'=> 'Bonus Month'],//结算月
+                'LAST_REC_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor No'], // 开拓者编号
+                'LAST_REC_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Sponsor Name'], // 开拓者姓名
+                'LAST_CON_USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Superior Number'], // 上级编号
+                'LAST_CON_REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Superior Name'], // 上级姓名
+                'PV_1L'=> ['isUserTable'=> false, 'name'=> 'I. new market performance'], // 一市场新增业绩
+                'SURPLUS_1L'=> ['isUserTable'=> false, 'name'=> 'I. market balance performance'], // 一市场结余业绩
+                'PV_2L'=> ['isUserTable'=> false, 'name'=> 'II. new market performance'], // 二市场新增业绩
+                'SURPLUS_2L'=> ['isUserTable'=> false, 'name'=> 'II. market balance performance'], // 二市场结余业绩
+                'BONUS_BD'=> ['isUserTable'=> false, 'name'=> 'Stockist Commission'], // 服务奖
+                'BONUS_GL'=> ['isUserTable'=> false, 'name'=> 'Management Award'], // 管理奖
+                'BONUS_QY'=> ['isUserTable'=> false, 'name'=> 'Team Bonus'], // 团队奖
+                'CALC_MONTH'=> ['isUserTable'=> false, 'name'=> 'Bonus Month'], // 结算月
             ];
         }
         return $this->filterTypes;

+ 9 - 9
backendApi/modules/v1/models/lists/bonus/ScoreMonthList.php

@@ -53,19 +53,19 @@ class ScoreMonthList extends \common\libs\dataList\DataList implements DataListI
                     ],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code',//会员编号
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员名字
+                    'header' => 'Member Name',//会员名字
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'BASE_SCORE' => [
-                    'header' => 'Basic integral',//基础积分
+                    'header' => 'Basic Integral',//基础积分
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -76,7 +76,7 @@ class ScoreMonthList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'LEVEL_SCORE' => [
-                    'header' => 'Level integral',//级别积分
+                    'header' => 'Level Integral',//级别积分
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -87,7 +87,7 @@ class ScoreMonthList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'UPGRADE_SCORE' => [
-                    'header' => 'Upgrade integral',//升级积分
+                    'header' => 'Upgrade Integral',//升级积分
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -98,7 +98,7 @@ class ScoreMonthList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'TOTAL_SCORE' => [
-                    'header' => 'Total points',//总积分
+                    'header' => 'Total Points',//总积分
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -109,7 +109,7 @@ class ScoreMonthList extends \common\libs\dataList\DataList implements DataListI
                     },
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -131,8 +131,8 @@ class ScoreMonthList extends \common\libs\dataList\DataList implements DataListI
         if(!$this->filterTypes){
             $this->filterTypes = [
                 'CALC_MONTH'=> ['isUserTable'=> false, 'name'=> 'Bonus Month'],//结算月
-                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'],//会员编号
-                'CREATED_AT'=> ['isUserTable'=> false, 'name'=> 'Creation time', 'other'=> 'date'],//创建时间
+                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Code'],//会员编号
+                'CREATED_AT'=> ['isUserTable'=> false, 'name'=> 'Creation Time', 'other'=> 'date'],//创建时间
             ];
         }
         return $this->filterTypes;

+ 7 - 84
backendApi/modules/v1/models/lists/bonus/UserPerfList.php

@@ -49,19 +49,19 @@ class UserPerfList extends \common\libs\dataList\DataList implements DataListInt
         if(!$this->columns){
             $this->columns = [
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => [
                         'width' => '200',
                     ],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '200',
                     ],
                 ],
                 'PV_PCS' => [
-                    'header' => 'Personal performance',//个人业绩
+                    'header' => 'Personal Performance', // 个人业绩
                     'headerOther' => [
                         'width' => '180',
                     ],
@@ -72,7 +72,7 @@ class UserPerfList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'SURPLUS_1L' => [
-                    'header' => 'Remainder@Left Leg',//一市场剩余业绩
+                    'header' => 'Remainder@Left Leg', // 一市场剩余业绩
                     'headerOther' => [
                         'width' => '240',
                     ],
@@ -83,7 +83,7 @@ class UserPerfList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'SURPLUS_2L' => [
-                    'header' => 'Remainder@Right Leg',//二市场剩余业绩
+                    'header' => 'Remainder@Right Leg', // 二市场剩余业绩
                     'headerOther' => [
                         'width' => '240',
                     ],
@@ -93,85 +93,8 @@ class UserPerfList extends \common\libs\dataList\DataList implements DataListInt
                         ]))->result();
                     },
                 ],
-//                'SURPLUS_3L' => [
-//                    'header' => '三市场剩余业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_3L'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'SURPLUS_1L_ZC' => [
-//                    'header' => 'I. remaining performance of market declaration',//一市场报单剩余业绩
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_1L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'SURPLUS_2L_ZC' => [
-//                    'header' => 'II. remaining performance of market declaration',//二市场报单剩余业绩
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_2L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'SURPLUS_3L_ZC' => [
-//                    'header' => '三市场报单剩余业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['SURPLUS_3L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'VIP_SURPLUS_1L_ZC' => [
-//                    'header' => 'I. remaining performance of VIP declaration in the market',//一市场VIP报单剩余业绩
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['VIP_SURPLUS_1L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'VIP_SURPLUS_2L_ZC' => [
-//                    'header' => 'II. remaining performance of VIP declaration in the market',//二市场VIP报单剩余业绩
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['VIP_SURPLUS_2L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
-//                'VIP_SURPLUS_3L_ZC' => [
-//                    'header' => '三市场VIP报单剩余业绩',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                    'value' => function($row) {
-//                        return (new Price([
-//                            'value' => $row['VIP_SURPLUS_3L_ZC'],
-//                        ]))->result();
-//                    },
-//                ],
                 'PV_PSS_TOTAL' => [
-                    'header' => 'Cumulative team performance',//累计团队业绩
+                    'header' => 'Cumulative Team Performance', // 累计团队业绩
                     'headerOther' => [
                         'width' => '250',
                     ],
@@ -194,7 +117,7 @@ class UserPerfList extends \common\libs\dataList\DataList implements DataListInt
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'],//会员编号
+                'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member Code'], // 会员编号
             ];
         }
         return $this->filterTypes;

+ 29 - 32
backendApi/modules/v1/models/lists/finance/BalanceAuditList.php

@@ -51,9 +51,6 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
         $auditStatus = array_column(\Yii::$app->params['auditStatus'], null, 'value');
         $dealTypes = DealType::getAllTypesForShow();
         foreach ($this->listData['list'] as $key => $value) {
-//            $userInfo = Info::baseInfoZh($value['USER_ID']);
-//            $this->listData['list'][$key]['USER_NAME'] = $userInfo['USER_NAME'];
-//            $this->listData['list'][$key]['REAL_NAME'] = $userInfo['REAL_NAME'];
             $this->listData['list'][$key]['LAST_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$value['LAST_DEC_LV']]['LEVEL_NAME'] ?? '';
             $this->listData['list'][$key]['LAST_EMP_LV_NAME'] = Cache::getEmpLevelConfig()[$value['LAST_EMP_LV']]['LEVEL_NAME'] ?? '';
             $this->listData['list'][$key]['LAST_DEC_ROLE_NAME'] = DecRole::getRoleNameId($value['LAST_DEC_ROLE_ID']);
@@ -74,25 +71,25 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                 'ID' => null, // 这种传输方式主要是用于索引,因为过滤后的字段可能没有这种ID,但是一些功能的操作还需要用这种ID去关联,例如前台会员列表中的勾选批量状态管理,这里需要的就是USER_ID
                 'AUDIT_STATUS' => null,
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member name', //会员姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
                 ],
                 'LAST_DEC_LV_NAME' => [
-                    'header' => 'Member level',//会员级别
+                    'header' => 'Member level', // 会员级别
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'LAST_DEC_ROLE_NAME' => [
-                    'header' => 'Declaration center level',//报单中心级别
+                    'header' => 'Declaration center level', // 报单中心级别
                     'headerOther' => [
-                        'width' => '110',
+                        'width' => '170',
                     ],
                 ],
                 'LAST_EMP_LV_NAME' => [
@@ -102,7 +99,7 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                     ],
                 ],
                 'TYPE_NAME' => [
-                    'header' => 'Account type',//账户类型
+                    'header' => 'Account type', // 账户类型
                     'headerOther' => [
                         'width' => '140',
                     ],
@@ -113,7 +110,7 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                     },
                 ],
                 'DEAL_TYPE_NAME' => [
-                    'header' => 'Transaction type',//交易类型
+                    'header' => 'Transaction type', // 交易类型
                     'headerOther' => [
                         'width' => '200',
                     ],
@@ -124,7 +121,7 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                     },
                 ],
                 'AMOUNT' => [
-                    'header' => 'Adjustment amount',//调整金额
+                    'header' => 'Adjustment amount', // 调整金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -138,13 +135,13 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                     },
                 ],
                 'CREATE_REMARK' => [
-                    'header' => 'Remark',//备注
+                    'header' => 'Remark', // 备注
                     'headerOther' => [
                         'width' => '180',
                     ],
                 ],
                 'REMARK_IS_SHOW' => [
-                    'header' => 'Whether the front desk displays comments',//前台是否显示备注
+                    'header' => 'Whether The Front Desk Displays Comments', // 前台是否显示备注
                     'value' => function ($row) {
                         return (new YesNo([
                             'value' => $row['REMARK_IS_SHOW'],
@@ -155,7 +152,7 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                     ],
                 ],
                 'AUDIT_STATUS_NAME' => [
-                    'header' => 'Audit status',//审核状态
+                    'header' => 'Audit status', // 审核状态
                     'headerOther' => [
                         'width' => '100',
                     ],
@@ -166,13 +163,13 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                     },
                 ],
                 'CREATE_ADMIN_NAME' => [
-                    'header' => 'applicant',//申请人
+                    'header' => 'applicant', // 申请人
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Application time',//申请时间
+                    'header' => 'Application time', // 申请时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -181,13 +178,13 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                     'headerOther' => ['width' => '190'],
                 ],
                 'AUDIT_ADMIN_NAME' => [
-                    'header' => 'Reviewed by',//审核人
+                    'header' => 'Reviewed by', // 审核人
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'AUDITED_AT' => [
-                    'header' => 'Audit time',//审核时间
+                    'header' => 'Audit time', // 审核时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['AUDITED_AT'],
@@ -207,20 +204,20 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
     public function getFilterTypes() {
         if (!$this->filterTypes) {
             $this->filterTypes = [
-                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member code'],//会员编号
-                'REAL_NAME' => ['isUserTable' => false, 'name' => 'Member name'],//会员姓名
-                'LAST_DEC_LV_NAME' => ['isUserTable' => false, 'name' => 'Member level', 'other' => 'decLevel'],//会员级别
-                'LAST_DEC_ROLE_NAME' => ['isUserTable' => false, 'name' => 'Declaration center level', 'other' => 'decRole'],//报单中心级别
-                'LAST_EMP_LV_NAME' => ['isUserTable' => false, 'name' => 'rank', 'other' => 'empLevel'],//聘级
-                'TYPE_NAME' => ['isUserTable' => false, 'name' => 'Account type', 'other' => 'select', 'selectData' => Tool::formatFilter(BalanceAudit::TYPE, 'name', 'label')],//账户类型
-                'DEAL_TYPE_NAME' => ['isUserTable' => false, 'name' => 'Transaction type', 'other' => 'select', 'selectData' => Tool::formatFilter(DealType::getAllTypesForShow(), 'ID', 'TYPE_NAME')],//交易类型
-                'AMOUNT' => ['isUserTable' => false, 'name' => 'Adjustment amount'],//调整金额
-                'CREATE_REMARK' => ['isUserTable' => false, 'name' => 'Remark'],//备注
-                'REMARK_IS_SHOW' => ['isUserTable' => false, 'name' => 'Whether the front desk displays comments', 'other' => 'yesOrNo'],//前台是否显示备注
-                'CREATE_ADMIN_NAME' => ['isUserTable' => false, 'name' => 'applicant'],//申请人
-                'CREATED_AT' => ['isUserTable' => false, 'name' => 'Application time', 'other' => 'date'],//申请时间
-                'AUDIT_ADMIN_NAME' => ['isUserTable' => false, 'name' => 'Reviewed by'],//审核人
-                'AUDITED_AT' => ['isUserTable' => false, 'name' => 'Audit time', 'other' => 'date'],//审核时间
+                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member code'], //会员编号
+                'REAL_NAME' => ['isUserTable' => false, 'name' => 'Member name'], //会员姓名
+                'LAST_DEC_LV_NAME' => ['isUserTable' => false, 'name' => 'Member level', 'other' => 'decLevel'], // 会员级别
+                'LAST_DEC_ROLE_NAME' => ['isUserTable' => false, 'name' => 'Declaration center level', 'other' => 'decRole'], // 报单中心级别
+                'LAST_EMP_LV_NAME' => ['isUserTable' => false, 'name' => 'rank', 'other' => 'empLevel'], // 聘级
+                'TYPE_NAME' => ['isUserTable' => false, 'name' => 'Account type', 'other' => 'select', 'selectData' => Tool::formatFilter(BalanceAudit::TYPE, 'name', 'label')], // 账户类型
+                'DEAL_TYPE_NAME' => ['isUserTable' => false, 'name' => 'Transaction type', 'other' => 'select', 'selectData' => Tool::formatFilter(DealType::getAllTypesForShow(), 'ID', 'TYPE_NAME')], // 交易类型
+                'AMOUNT' => ['isUserTable' => false, 'name' => 'Adjustment amount'], // 调整金额
+                'CREATE_REMARK' => ['isUserTable' => false, 'name' => 'Remark'], // 备注
+                'REMARK_IS_SHOW' => ['isUserTable' => false, 'name' => 'Whether the front desk displays comments', 'other' => 'yesOrNo'], // 前台是否显示备注
+                'CREATE_ADMIN_NAME' => ['isUserTable' => false, 'name' => 'applicant'], // 申请人
+                'CREATED_AT' => ['isUserTable' => false, 'name' => 'Application time', 'other' => 'date'], // 申请时间
+                'AUDIT_ADMIN_NAME' => ['isUserTable' => false, 'name' => 'Reviewed by'], // 审核人
+                'AUDITED_AT' => ['isUserTable' => false, 'name' => 'Audit time', 'other' => 'date'], // 审核时间
             ];
         }
         return $this->filterTypes;

+ 40 - 156
backendApi/modules/v1/models/lists/finance/HistoryBonusList.php

@@ -69,29 +69,29 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
             $this->columns = [
                 'ID' => null, // 这种传输方式主要是用于索引,因为过滤后的字段可能没有这种ID,但是一些功能的操作还需要用这种ID去关联,例如前台会员列表中的勾选批量状态管理,这里需要的就是USER_ID
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
                 ],
                 'DEC_LV_NAME' => [
-                    'header' => 'Member level',//会员级别
+                    'header' => 'Member Level', // 会员级别
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'EMP_LV_NAME' => [
-                    'header' => 'Rank',//聘级
+                    'header' => 'Rank', // 聘级
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'IS_DEC' => [
-                    'header' => 'Whether distributor',//是否报单中心
+                    'header' => 'Whether Distributor', // 是否报单中心
                     'value' => function ($row) {
                         return (new YesNo([
                             'value' => $row['IS_DEC'],
@@ -99,7 +99,7 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
                     },
                     'headerOther' => function ($row) {
                         return [
-                            'width' => '120',
+                            'width' => '150',
                         ];
                     },
                     'valueOther' => function ($row) {
@@ -108,20 +108,8 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
                         ];
                     },
                 ],
-//                'DEC_ROLE_NAME' => [
-//                    'header' => '报单中心级别',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                ],
-//                'SYSTEM_NAME' => [
-//                    'header' => '体系名称',
-//                    'headerOther' => [
-//                        'width' => '200',
-//                    ],
-//                ],
                 'BONUS' => [
-                    'header' => 'Member bonus',//会员账户余额
+                    'header' => 'Member Bonus', // 会员账户余额
                     'value' => function ($row) {
                         return Tool::formatPrice($row['BONUS']);
                     },
@@ -136,40 +124,8 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
                         ];
                     },
                 ],
-//                'CF' => [
-//                    'header' => '车房养老余额',
-//                    'value' => function ($row) {
-//                        return Tool::formatPrice($row['CF']);
-//                    },
-//                    'headerOther' => function ($row) {
-//                        return [
-//                            'width' => '150',
-//                        ];
-//                    },
-//                    'valueOther' => function ($row) {
-//                        return [
-//                            'tag' => ['type' => 'danger', 'size' => 'small', 'class' => 'no-border']
-//                        ];
-//                    },
-//                ],
-//                'LX' => [
-//                    'header' => '领袖分红余额',
-//                    'value' => function ($row) {
-//                        return Tool::formatPrice($row['LX']);
-//                    },
-//                    'headerOther' => function ($row) {
-//                        return [
-//                            'width' => '150',
-//                        ];
-//                    },
-//                    'valueOther' => function ($row) {
-//                        return [
-//                            'tag' => ['type' => 'danger', 'size' => 'small', 'class' => 'no-border']
-//                        ];
-//                    },
-//                ],
                 'WITHDRAW' => [
-                    'header' => 'Withdrawal amount',//提现金额
+                    'header' => 'Withdrawal Amount', // 提现金额
                     'value' => function ($row) {
                         return Tool::formatPrice($row['WITHDRAW']);
                     },
@@ -184,40 +140,8 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
                         ];
                     },
                 ],
-//                'WITHDRAW_TAX' => [
-//                    'header' => '个税',
-//                    'value' => function ($row) {
-//                        return Tool::formatPrice($row['WITHDRAW_TAX']);
-//                    },
-//                    'headerOther' => function ($row) {
-//                        return [
-//                            'width' => '150',
-//                        ];
-//                    },
-//                    'valueOther' => function ($row) {
-//                        return [
-//                            'tag' => ['type' => 'warning', 'size' => 'small', 'class' => 'no-border']
-//                        ];
-//                    },
-//                ],
-//                'WITHDRAW_DEDUCT' => [
-//                    'header' => '扣款',
-//                    'value' => function ($row) {
-//                        return Tool::formatPrice($row['WITHDRAW_DEDUCT']);
-//                    },
-//                    'headerOther' => function ($row) {
-//                        return [
-//                            'width' => '150',
-//                        ];
-//                    },
-//                    'valueOther' => function ($row) {
-//                        return [
-//                            'tag' => ['type' => 'warning', 'size' => 'small', 'class' => 'no-border']
-//                        ];
-//                    },
-//                ],
                 'WITHDRAW_REAL' => [
-                    'header' => 'Real amount',//实付金额
+                    'header' => 'Real Amount', // 实付金额
                     'value' => function ($row) {
                         return Tool::formatPrice($row['WITHDRAW_REAL']);
                     },
@@ -233,13 +157,13 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
                     },
                 ],
                 'WITHDRAW_FAIL' => [
-                    'header' => 'Actual payment of failed amount',//实付失败金额
+                    'header' => 'Actual Payment Of Failed Amount', // 实付失败金额
                     'value' => function ($row) {
                         return Tool::formatPrice($row['WITHDRAW_FAIL']);
                     },
                     'headerOther' => function ($row) {
                         return [
-                            'width' => '150',
+                            'width' => '240',
                         ];
                     },
                     'valueOther' => function ($row) {
@@ -249,54 +173,46 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
                     },
                 ],
                 'USER_STATUS_NAME' => [
-                    'header' => 'Member status',//会员状态
+                    'header' => 'Member Status', // 会员状态
                     'headerOther' => ['width' => '150'],
                 ],
                 'USER_STATUS_AT' => [
-                    'header' => 'Member status change time',//会员状态变更时间
+                    'header' => 'Member Status Change Time', // 会员状态变更时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['USER_STATUS_AT'],
                         ]))->result();
                     },
-                    'headerOther' => ['width' => '190'],
+                    'headerOther' => ['width' => '210'],
                 ],
-//                'HIGHEST_EMP_LV_NAME' => [
-//                    'header' => '历史最高聘级',
-//                    'headerOther' => ['width' => '150'],
-//                ],
                 'PERIOD_AT' => [
-                    'header' => 'Join periods',//加入期数
+                    'header' => 'Join Periods', // 加入期数
                     'headerOther' => ['width' => '150'],
                 ],
-//                'DEC_DEC_ROLE_NAME' => [
-//                    'header' => '所属报单中心级别',
-//                    'headerOther' => ['width' => '150'],
-//                ],
                 'DEC_USER_NAME' => [
-                    'header' => 'Code of distributor',//所属报单中心编号
+                    'header' => 'Code Of Distributor', // 所属报单中心编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'DEC_REAL_NAME' => [
-                    'header' => 'Name of distributor',//所属报单中心姓名
+                    'header' => 'Name Of Distributor', // 所属报单中心姓名
                     'headerOther' => ['width' => '150'],
                 ],
                 'MOBILE' => [
-                    'header' => 'Phone Number',//手机号码
+                    'header' => 'Phone Number', // 手机号码
                     'value' => function($row) {
                         return "\t".$row['MOBILE'];
                     },
                     'headerOther' => ['width' => '150'],
                 ],
                 'TEL' => [
-                    'header' => 'Alternate Phone Number',//备用手机号码
+                    'header' => 'Alternate Phone Number', // 备用手机号码
                     'value' => function($row) {
                         return "\t".$row['TEL'];
                     },
-                    'headerOther' => ['width' => '150'],
+                    'headerOther' => ['width' => '190'],
                 ],
                 'AREA' => [
-                    'header' => 'Commonly used address',//常用地址
+                    'header' => 'Commonly Used Address', // 常用地址
                     'value' => function ($row) {
                         return $row['PROVINCE_NAME'] . $row['CITY_NAME'] . $row['COUNTY_NAME'];
                     },
@@ -307,30 +223,8 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
                         'width' => '200'
                     ],
                 ],
-//                'SUB_COM_NAME' => [
-//                    'header' => '所属分公司',
-//                    'headerOther' => ['width' => '150'],
-//                ],
-//                'IS_DIRECT_SELLER' => [
-//                    'header' => '是否直销员',
-//                    'value' => function ($row) {
-//                        return (new YesNo([
-//                            'value' => $row['IS_DIRECT_SELLER'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function ($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function ($row) {
-//                        return [
-//                            'tag' => ['type' => (isset($row['IS_DIRECT_SELLER']) && $row['IS_DIRECT_SELLER']) ? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
                 'BACKUP_AT' => [
-                    'header' => 'Backup time',//备份时间
+                    'header' => 'Backup Time', // 备份时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['BACKUP_AT'],
@@ -350,34 +244,24 @@ class HistoryBonusList extends \common\libs\dataList\DataList implements DataLis
     public function getFilterTypes() {
         if (!$this->filterTypes) {
             $this->filterTypes = [
-                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member code'],//会员编号
-                'REAL_NAME' => ['isUserTable' => false, 'name' => 'Member name'],//会员姓名
-                'DEC_LV_NAME' => ['isUserTable' => false, 'name' => 'Member level', 'other' => 'decLevel'],//会员级别
-                'EMP_LV_NAME' => ['isUserTable' => false, 'name' => 'Rank', 'other' => 'empLevel'],//聘级
-                'IS_DEC' => ['isUserTable' => false, 'name' => 'Whether distributor', 'other' => 'yesOrNo'],//是否报单中心
-//                'DEC_ROLE_NAME' => ['isUserTable' => false, 'name' => '报单中心级别', 'other' => 'decRole'],
-//                'SYSTEM_NAME' => ['isUserTable' => false, 'name' => '体系名称'],
-                'BONUS' => ['isUserTable' => false, 'name' => 'Member Bonus'],// 会员账户余额
-//                'CF' => ['isUserTable' => false, 'name' => '车房养老余额'],
-//                'LX' => ['isUserTable' => false, 'name' => '领袖分红余额'],
-                'WITHDRAW' => ['isUserTable' => false, 'name' => 'Withdrawal amount'],//提现金额
-//                'WITHDRAW_TAX' => ['isUserTable' => false, 'name' => '个税'],
-//                'WITHDRAW_DEDUCT' => ['isUserTable' => false, 'name' => '扣款'],
-                'WITHDRAW_REAL' => ['isUserTable' => false, 'name' => 'Real amount'],//实付金额
-                'WITHDRAW_FAIL' => ['isUserTable' => false, 'name' => 'Actual payment of failed amount'],//实付失败金额
-                'USER_STATUS_NAME' => ['isUserTable' => false, 'name' => 'Member status', 'other' => 'status'],//会员状态
-                'USER_STATUS_AT' => ['isUserTable' => false, 'name' => 'Member status change time', 'other' => 'date'],//会员状态变更时间
-//                'HIGHEST_EMP_LV_NAME' => ['isUserTable' => false, 'name' => '历史最高聘级', 'other' => 'empLevel'],
-                'PERIOD_AT' => ['isUserTable' => false, 'name' => 'Join periods'],//加入期数
-//                'DEC_DEC_ROLE_NAME' => ['isUserTable' => false, 'name' => '所属报单中心级别', 'other' => 'decRole'],
-                'DEC_USER_NAME' => ['isUserTable' => false, 'name' => 'Code of distributor'],//所属报单中心编号
-                'DEC_REAL_NAME' => ['isUserTable' => false, 'name' => 'Name of distributor'],//所属报单中心姓名
-                'MOBILE' => ['isUserTable' => false, 'name' => 'Phone Number'],//手机号码
-                'TEL' => ['isUserTable' => false, 'name' => 'Alternate Phone Number'],//备用手机号码
-                'AREA' => ['isUserTable' => false, 'name' => 'Commonly Used Address', 'other' => 'area'],//常用地址
-//                'SUB_COM_NAME' => ['isUserTable' => false, 'name' => '所属分公司', 'other' => 'subCompany'],
-//                'IS_DIRECT_SELLER' => ['isUserTable' => false, 'name' => '是否直销员', 'other' => 'yesOrNo'],
-                'BACKUP_AT' => ['isUserTable' => false, 'name' => 'Backup time', 'other' => 'date'],//备份时间
+                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member Code'], // 会员编号
+                'REAL_NAME' => ['isUserTable' => false, 'name' => 'Member Name'], // 会员姓名
+                'DEC_LV_NAME' => ['isUserTable' => false, 'name' => 'Member Level', 'other' => 'decLevel'], // 会员级别
+                'EMP_LV_NAME' => ['isUserTable' => false, 'name' => 'Rank', 'other' => 'empLevel'], // 聘级
+                'IS_DEC' => ['isUserTable' => false, 'name' => 'Whether Distributor', 'other' => 'yesOrNo'], // 是否报单中心
+                'BONUS' => ['isUserTable' => false, 'name' => 'Member Bonus'], //  会员账户余额
+                'WITHDRAW' => ['isUserTable' => false, 'name' => 'Withdrawal Amount'], // 提现金额
+                'WITHDRAW_REAL' => ['isUserTable' => false, 'name' => 'Real Amount'], // 实付金额
+                'WITHDRAW_FAIL' => ['isUserTable' => false, 'name' => 'Actual Payment Of Failed Amount'], // 实付失败金额
+                'USER_STATUS_NAME' => ['isUserTable' => false, 'name' => 'Member Status', 'other' => 'status'], // 会员状态
+                'USER_STATUS_AT' => ['isUserTable' => false, 'name' => 'Member Status Change Time', 'other' => 'date'], // 会员状态变更时间
+                'PERIOD_AT' => ['isUserTable' => false, 'name' => 'Join Periods'], // 加入期数
+                'DEC_USER_NAME' => ['isUserTable' => false, 'name' => 'Code Of Distributor'], // 所属报单中心编号
+                'DEC_REAL_NAME' => ['isUserTable' => false, 'name' => 'Name Of Distributor'], // 所属报单中心姓名
+                'MOBILE' => ['isUserTable' => false, 'name' => 'Phone Number'], // 手机号码
+                'TEL' => ['isUserTable' => false, 'name' => 'Alternate Phone Number'], // 备用手机号码
+                'AREA' => ['isUserTable' => false, 'name' => 'Commonly Used Address', 'other' => 'area'], // 常用地址
+                'BACKUP_AT' => ['isUserTable' => false, 'name' => 'Backup Time', 'other' => 'date'], // 备份时间
             ];
         }
         return $this->filterTypes;

+ 4 - 28
backendApi/modules/v1/models/lists/finance/TransferList.php

@@ -45,11 +45,8 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
             'pageSize' => $this->pageSize,
         ]);
         foreach ($this->listData['list'] as $key => $value) {
-            $this->listData['list'][$key]['LAST_OUT_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$value['LAST_OUT_DEC_LV']]['LEVEL_NAME'] ?? '';
-//            $this->listData['list'][$key]['LAST_OUT_DEC_ROLE_NAME'] = DecRole::getRoleNameId($value['LAST_OUT_DEC_ROLE_ID']);
-//            $this->listData['list'][$key]['LAST_OUT_SYSTEM_NAME'] = UserSystem::getSystem($value['LAST_OUT_SYSTEM_ID'])['SYSTEM_NAME'] ?? '';
+            $this->listData['list'][$key]['LAST_OUT_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$value['LAST_OUT_DEC_LV']]['LEVEL_NAME'] ?? '';;
             $this->listData['list'][$key]['LAST_IN_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$value['LAST_IN_DEC_LV']]['LEVEL_NAME'] ?? '';
-//            $this->listData['list'][$key]['LAST_IN_SYSTEM_NAME'] = UserSystem::getSystem($value['LAST_IN_SYSTEM_ID'])['SYSTEM_NAME'] ?? '';
         }
     }
 
@@ -62,7 +59,7 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
             $this->columns = [
                 'ID' => null, // 这种传输方式主要是用于索引,因为过滤后的字段可能没有这种ID,但是一些功能的操作还需要用这种ID去关联,例如前台会员列表中的勾选批量状态管理,这里需要的就是USER_ID
                 'TRANSFER_SN' => [
-                    'header' => 'Transfer record serial number',//转账记录流水号
+                    'header' => 'Transfer record serial number', // 转账记录流水号
                     'headerOther' => [
                         'width' => '250',
                     ],
@@ -73,11 +70,11 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'LAST_OUT_USER_NAME' => [
-                    'header' => 'Transfer out Member No',//转出会员编号
+                    'header' => 'Transfer out Member No', // 转出会员编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'LAST_OUT_REAL_NAME' => [
-                    'header' => 'Name of transfer out member',//转出会员姓名
+                    'header' => 'Name of transfer out member', // 转出会员姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
@@ -88,12 +85,6 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
                         'width' => '150',
                     ],
                 ],
-//                'LAST_OUT_DEC_ROLE_NAME' => [
-//                    'header' => '转出主体报单中心级别',
-//                    'headerOther' => [
-//                        'width' => '170',
-//                    ],
-//                ],
                 'OUT_WALLET' => [
                     'header' => '转出账户',
                     'value' => function ($row) {
@@ -103,12 +94,6 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
                         'width' => '150',
                     ],
                 ],
-//                'LAST_OUT_SYSTEM_NAME' => [
-//                    'header' => '转出会员体系',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                ],
                 'LAST_IN_USER_NAME' => [
                     'header' => '转入会员编号',
                     'headerOther' => ['width' => '150'],
@@ -134,12 +119,6 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
                         'width' => '150',
                     ],
                 ],
-//                'LAST_IN_SYSTEM_NAME' => [
-//                    'header' => '转入会员体系',
-//                    'headerOther' => [
-//                        'width' => '150',
-//                    ],
-//                ],
                 'ORI_AMOUNT' => [
                     'header' => '转账金额',
                     'value' => function ($row) {
@@ -209,14 +188,11 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
                 'LAST_OUT_USER_NAME' => ['isUserTable' => false, 'name' => '转出会员编号'],
                 'LAST_OUT_REAL_NAME' => ['isUserTable' => false, 'name' => '转出会员姓名'],
                 'LAST_OUT_DEC_LV_NAME' => ['isUserTable' => false, 'name' => '转出主体会员级别', 'other' => 'decLevel'],
-//                'LAST_OUT_DEC_ROLE_NAME' => ['isUserTable' => false, 'name' => '转出主体报单中心级别', 'other' => 'decRole'],
                 'OUT_WALLET' => ['isUserTable' => false, 'name' => '转出账户', 'other' => 'select', 'selectData' => [['id' => 'bonus', 'name' => '会员账户'], ['id' => 'cash', 'name' => '现金钱包']]],
-//                'LAST_OUT_SYSTEM_NAME' => ['isUserTable' => false, 'name' => '转出会员体系', 'other' => 'systems'],
                 'LAST_IN_USER_NAME' => ['isUserTable' => false, 'name' => '转入会员编号'],
                 'LAST_IN_REAL_NAME' => ['isUserTable' => false, 'name' => '转入会员姓名'],
                 'LAST_IN_DEC_LV_NAME' => ['isUserTable' => false, 'name' => '转入主体级别', 'other' => 'decLevel'],
                 'IN_WALLET' => ['isUserTable' => false, 'name' => '转入账户', 'other' => 'select', 'selectData' => [['id' => 'bonus', 'name' => '会员账户'], ['id' => 'cash', 'name' => '现金钱包']]],
-//                'LAST_IN_SYSTEM_NAME' => ['isUserTable' => false, 'name' => '转入会员体系', 'other' => 'systems'],
                 'ORI_AMOUNT' => ['isUserTable' => false, 'name' => '转账金额'],
                 'FEE' => ['isUserTable' => false, 'name' => '手续费'],
                 'AMOUNT' => ['isUserTable' => false, 'name' => '实际转入金额'],

+ 6 - 39
backendApi/modules/v1/models/lists/finance/WithdrawList.php

@@ -88,13 +88,6 @@ class WithdrawList extends \common\libs\dataList\DataList implements DataListInt
                     'header' => 'Member name', // 会员姓名
                     'headerOther' => ['width' => '150'],
                 ],
-//                'ID_CARD' => [
-//                    'header' => '身份证号',
-//                    'headerOther' => ['width' => '150'],
-//                    'value' => function ($row) {
-//                        return $row['ID_CARD'].' /';
-//                    },
-//                ],
                 'AMOUNT' => [
                     'header' => 'Withdrawal amount', // 提现金额
                     'value' => function ($row) {
@@ -124,34 +117,9 @@ class WithdrawList extends \common\libs\dataList\DataList implements DataListInt
                         return $row['OPEN_BANK'] ? OpenBank::getCnName($row['OPEN_BANK']) : '';
                     },
                 ],
-//                'BANK_AREA' => [
-//                    'header' => '银行地区',
-//                    'value' => function($row) use($regionConfig) {
-//                        $province = $regionConfig[$row['BANK_PROVINCE']]['REGION_NAME'] ?? '';
-//                        $city = $regionConfig[$row['BANK_CITY']]['REGION_NAME'] ?? '';
-//                        $county = $regionConfig[$row['BANK_COUNTY']]['REGION_NAME'] ?? '';
-//                        return $province.$city.$county;
-//                    },
-//                    'showValue' => function($row) use($regionConfig) {
-//                        $province = $regionConfig[$row['BANK_PROVINCE']]['REGION_NAME'] ?? '';
-//                        $city = $regionConfig[$row['BANK_CITY']]['REGION_NAME'] ?? '';
-//                        $county = $regionConfig[$row['BANK_COUNTY']]['REGION_NAME'] ?? '';
-//                        return '<div class="addr" title='.$province.$city.$county.'>'.$province.$city.$county.'</div>';
-//                    },
-//                    'headerOther' => [
-//                        'width' => '200'
-//                    ],
-//                ],
-//                'BANK_ADDRESS' => [
-//                    'header' => '开户地址',
-//                    'headerOther' => ['width' => '250'],
-//                    'showValue' => function($row) {
-//                        return '<div class="addr" title='.$row['BANK_ADDRESS'].'>'.$row['BANK_ADDRESS'].'</div>';
-//                    },
-//                ],
                 'BANK_NO' => [
                     'header' => 'Bank account',
-                    'headerOther' => ['width' => '150'],
+                    'headerOther' => ['width' => '190'],
                     'value' => function ($row) {
                         return $row['BANK_NO'].' /';
                     },
@@ -162,7 +130,7 @@ class WithdrawList extends \common\libs\dataList\DataList implements DataListInt
                 ],
                 'UPDATE_ADMIN_NAME' => [
                     'header' => 'Operations administrator', // 操作管理员
-                    'headerOther' => ['width' => '150'],
+                    'headerOther' => ['width' => '200'],
                 ],
                 'REMARK' => [
                     'header' => 'Remark', // 备注
@@ -188,12 +156,11 @@ class WithdrawList extends \common\libs\dataList\DataList implements DataListInt
     public function getFilterTypes() {
         if (!$this->filterTypes) {
             $this->filterTypes = [
-                'SN' => ['isUserTable' => false, 'name' => 'Withdrawal serial number'],//提现流水号
-                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member code'],// 会员编号
-                'WITHDRAW_PERIOD_NUM' => ['isUserTable' => false, 'name' => 'Period'],// 提现期数
-//                'ID_CARD' => ['isUserTable' => false, 'name' => '身份证号'],
-                //'AUDIT_STATUS_NAME' => ['isUserTable' => false, 'name' => '审核状态', 'other' => 'select', 'selectData' => [['id' =>0, 'name' => '提现待审核'], ['id' => 2, 'name' => '提现已审核'], ['id' => 3, 'name' => '提现待付款'], ['id' => 4, 'name' => '付款失败'], ['id' => 5, 'name' => '已拒绝'], ['id' => 6, 'name' => '提现已付款'], ['id' => 7, 'name' => '已退回']]],
+                'SN' => ['isUserTable' => false, 'name' => 'Withdrawal serial number'], // 提现流水号
+                'USER_NAME' => ['isUserTable' => false, 'name' => 'Member code'], // 会员编号
+                'WITHDRAW_PERIOD_NUM' => ['isUserTable' => false, 'name' => 'Period'], // 提现期数
                 'CREATED_AT' => ['isUserTable' => false, 'name' => 'Withdrawal time', 'other' => 'date'],  // 申请时间
+                'REAL_AMOUNT' => ['isUserTable' => false, 'name' => 'Actual Amount']
             ];
         }
         return $this->filterTypes;

+ 21 - 21
backendApi/modules/v1/models/lists/log/UserHandleList.php

@@ -50,7 +50,7 @@ class UserHandleList extends \common\libs\dataList\DataList implements DataListI
                 'save_before_content' => null,
                 'save_after_content' => null,
                 'opt_type' => [
-                    'header' => 'Operation Type',//操作类型
+                    'header' => 'Operation Type', // 操作类型
                     'headerOther' => [
                         'width' => '200',
                     ],
@@ -89,27 +89,27 @@ class UserHandleList extends \common\libs\dataList\DataList implements DataListI
                     },
                     'headerOther' => ['width' => '180'],
                 ],
-                'period_num' => 'Number of periods',//期数
+                'period_num' => 'Number Of Periods', // 期数
                 'ip' => [
-                    'header' => 'IP address',//IP地址
+                    'header' => 'IP Address', // IP地址
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'device' => [
-                    'header' => 'client',//客户端
+                    'header' => 'Client', // 客户端
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'user_agent' => [
-                    'header' => 'operating system',//操作系统
+                    'header' => 'Operating System', // 操作系统
                     'headerOther' => [
                         'width' => '950',
                     ],
                 ],
                 'request_route' => [
-                    'header' => 'Request path',//请求路径
+                    'header' => 'Request Path', // 请求路径
                     'headerOther' => [
                         'width' => '250',
                     ],
@@ -127,24 +127,24 @@ class UserHandleList extends \common\libs\dataList\DataList implements DataListI
     {
         if(!$this->filterTypes){
             $selectData = [
-                ['id'=>'开启关闭自动提现','name'=>'Enable / disable automatic withdrawal'],//开启关闭自动提现
-                ['id'=>'开启关闭复销短信提醒','name'=>'Enable / disable re sales SMS reminder'],//开启关闭复销短信提醒
-                ['id'=>'会员转账','name'=>'Member transfer'],//会员转账
-                ['id'=>'会员提现申请','name'=>'Member withdrawal application'],//会员提现申请
-                ['id'=>'会员修改资料','name'=>'Member modification information'],//会员修改资料
-                ['id'=>'修改主点位','name'=>'Modify master point'],//修改主点位
+                ['id'=>'开启关闭自动提现','name'=>'Enable / Disable Automatic Withdrawal'], // 开启关闭自动提现
+                ['id'=>'开启关闭复销短信提醒','name'=>'Enable / Disable Re Sales SMS Reminder'], // 开启关闭复销短信提醒
+                ['id'=>'会员转账','name'=>'Member Transfer'], // 会员转账
+                ['id'=>'会员提现申请','name'=>'Member Withdrawal Application'], // 会员提现申请
+                ['id'=>'会员修改资料','name'=>'Member Modification Information'], // 会员修改资料
+                ['id'=>'修改主点位','name'=>'Modify Master Point'], // 修改主点位
             ];
             $this->filterTypes = [
-                'opt_type' => ['isUserTable'=>false, 'name'=>'Operation Type', 'other'=> 'select', 'selectData'=> $selectData],//操作类型
-                'opt_obj_name' => ['isUserTable'=>false, 'name'=>'Operation Object No'],//操作对象编号
+                'opt_type' => ['isUserTable'=>false, 'name'=>'Operation Type', 'other'=> 'select', 'selectData'=> $selectData], // 操作类型
+                'opt_obj_name' => ['isUserTable'=>false, 'name'=>'Operation Object No'], // 操作对象编号
                 'remark' => ['isUserTable'=>false, 'name'=>'Remark'], // 备注
-                'user_name' => ['isUserTable'=>false, 'name'=>'Operator'],//操作人
-                'created_at' => ['isUserTable'=>false, 'name'=>'Operation Time', 'other'=> 'date'],//操作时间
-                'period_num' => ['isUserTable'=>false, 'name'=>'Number of periods'],//操作时间
-                'ip' => ['isUserTable'=>false, 'name'=>'IP address'],//IP地址
-                'device' => ['isUserTable'=>false, 'name'=>'client'],//客户端
-                'user_agent' => ['isUserTable'=>false, 'name'=>'operating system'],//操作系统
-                'request_route' => ['isUserTable'=>false, 'name'=>'Request path'],//请求路径
+                'user_name' => ['isUserTable'=>false, 'name'=>'Operator'], // 操作人
+                'created_at' => ['isUserTable'=>false, 'name'=>'Operation Time', 'other'=> 'date'], // 操作时间
+                'period_num' => ['isUserTable'=>false, 'name'=>'Number Of Periods'], // 操作时间
+                'ip' => ['isUserTable'=>false, 'name'=>'IP Address'], // IP地址
+                'device' => ['isUserTable'=>false, 'name'=>'Client'], // 客户端
+                'user_agent' => ['isUserTable'=>false, 'name'=>'Operating System'], // 操作系统
+                'request_route' => ['isUserTable'=>false, 'name'=>'Request Path'], // 请求路径
             ];
         }
         return $this->filterTypes;

+ 17 - 17
backendApi/modules/v1/models/lists/log/UserLoginList.php

@@ -70,40 +70,40 @@ class UserLoginList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'opt_obj' => [
-                    'header' => 'Operation Object',//操作对象
+                    'header' => 'Operation Object', // 操作对象
                     'headerOther' => [
                         'width' => '120',
                     ],
                     'value' => function($row) {
-                        return 'member';//会员
+                        return 'member'; // 会员
                     },
                 ],
                 'user_name' => [
-                    'header' => 'Object number',//对象编号
+                    'header' => 'Object Number', // 对象编号
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'return_result' => [
-                    'header' => 'Return content',//返回内容
+                    'header' => 'Return Content', // 返回内容
                     'headerOther' => [
                         'width' => '250',
                     ],
                 ],
                 'success_times' => [
-                    'header' => 'Login success times',//登录成功次数
+                    'header' => 'Login Success Times', // 登录成功次数
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'fail_times' => [
-                    'header' => 'Number of login failures',//登录失败次数
+                    'header' => 'Number Of Login Failures', // 登录失败次数
                     'headerOther' => [
                         'width' => '110',
                     ],
                 ],
                 'created_at' => [
-                    'header' => 'Operation Time',//操作时间
+                    'header' => 'Operation Time', // 操作时间
                     'value' => function($row) {
                         return (new DateTime([
                             'value' => $row['created_at'],
@@ -111,27 +111,27 @@ class UserLoginList extends \common\libs\dataList\DataList implements DataListIn
                     },
                     'headerOther' => ['width' => '180'],
                 ],
-                'period_num' => 'Number of periods',//期数
+                'period_num' => 'Number Of Periods', // 期数
                 'ip' => [
-                    'header' => 'IP address',//IP地址
+                    'header' => 'IP Address', // IP地址
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'device' => [
-                    'header' => 'client',//客户端
+                    'header' => 'Client', // 客户端
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'user_agent' => [
-                    'header' => 'operating system',//操作系统
+                    'header' => 'Operating System', // 操作系统
                     'headerOther' => [
                         'width' => '950',
                     ],
                 ],
                 'request_route' => [
-                    'header' => 'Request path',//请求路径
+                    'header' => 'Request Path', // 请求路径
                     'headerOther' => [
                         'width' => '250',
                     ],
@@ -152,14 +152,14 @@ class UserLoginList extends \common\libs\dataList\DataList implements DataListIn
 //                'opt_type' => ['isUserTable'=>false, 'name'=>'操作类型', 'other'=> 'select', 'selectData'=> [['id'=> 1, 'name'=> '登录成功'], ['id'=> 0, 'name'=> '登录失败']]],
                 'opt_type' => ['isUserTable'=>false, 'name'=>'Operation Type', 'other'=> 'select', 'selectData'=> [['id'=> 1, 'name'=> 'login succeeded'], ['id'=> 0, 'name'=> 'login failed']]],
                 'user_name' => ['isUserTable'=>false, 'name'=>'Object Number'],//对象编号
-                'success_times' => ['isUserTable'=>false, 'name'=>'Login success times'],//登录成功次数
-                'fail_times' => ['isUserTable'=>false, 'name'=>'Number of login failures'],//登录失败次数
+                'success_times' => ['isUserTable'=>false, 'name'=>'Login Success Times'],//登录成功次数
+                'fail_times' => ['isUserTable'=>false, 'name'=>'Number Of Login Failures'],//登录失败次数
                 'created_at' => ['isUserTable'=>false, 'name'=>'Operation Time', 'other'=> 'date'],//操作时间
-                'period_num' => ['isUserTable'=>false, 'name'=>'Number of Periods'],//期数
+                'period_num' => ['isUserTable'=>false, 'name'=>'Number Of Periods'],//期数
                 'ip' => ['isUserTable'=>false, 'name'=>'IP Address'],//IP地址
                 'device' => ['isUserTable'=>false, 'name'=>'Client'],//客户端
-                'user_agent' => ['isUserTable'=>false, 'name'=>'operating system'],//操作系统
-                'request_route' => ['isUserTable'=>false, 'name'=>'Request path'],//请求路径
+                'user_agent' => ['isUserTable'=>false, 'name'=>'Operating System'],//操作系统
+                'request_route' => ['isUserTable'=>false, 'name'=>'Request Path'],//请求路径
             ];
         }
         return $this->filterTypes;

+ 37 - 37
backendApi/modules/v1/models/lists/shop/DecOrderList.php

@@ -54,35 +54,35 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
                 'DETAIL_TYPE' => null,
                 'UPGRADE_TYPE' => null,
                 'DEC_SN' => [
-                    'header' => 'Entry code',//报单编号
+                    'header' => 'Entry Code', // 报单编号
                     'headerOther' => ['width' => '200'],
                 ],
                 'ORDER_SN' => [
-                    'header' => 'Order code',//订单编号
+                    'header' => 'Order Code', // 订单编号
                     'headerOther' => ['width' => '200'],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//报单人
+                    'header' => 'Member Code', // 报单人
                     'headerOther' => ['width' => '150'],
                 ],
                 'TO_USER_NAME' => [
-                    'header' => 'Entry Member code',//被报单人
+                    'header' => 'Entry Member Code', // 被报单人
                     'headerOther' => ['width' => '150'],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => ['width' => '150'],
                 ],
                 'ID_CARD' => [
-                    'header' => 'Identity No.',//会员身份证号
+                    'header' => 'Identity No.', // 会员身份证号
                     'headerOther' => ['width' => '150'],
                 ],
                 'MOBILE' => [
-                    'header' => 'Member Phone Number',//会员手机号
+                    'header' => 'Member Phone Number', // 会员手机号
                     'headerOther' => ['width' => '150'],
                 ],
                 'DEC_LV_NAME' => [
-                    'header' => 'Member Levels',//会员级别
+                    'header' => 'Member Levels', // 会员级别
                     'headerOther' => [
                         'width' => '110',
                     ],
@@ -94,15 +94,15 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
                     ],
                 ],
                 'DEC_USER_NAME' => [
-                    'header' => 'Entry code',//报单中心编号
+                    'header' => 'Entry Code', // 报单中心编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'DEC_REAL_NAME' => [
-                    'header' => 'Entry name',//报单中心姓名
+                    'header' => 'Entry Name', // 报单中心姓名
                     'headerOther' => ['width' => '150'],
                 ],
                 'DEC_AMOUNT' => [
-                    'header' => 'Entry amount',//报单金额
+                    'header' => 'Entry Amount', // 报单金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -116,7 +116,7 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'DEC_PV' => [
-                    'header' => 'Entry BV',//报单BV
+                    'header' => 'Entry BV', // 报单BV
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -130,7 +130,7 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'PAID_WALLET' => [
-                    'header' => 'Payment wallet',//付款钱包
+                    'header' => 'Payment Wallet', // 付款钱包
                     'headerOther' => [
                         'width' => '110',
                     ],
@@ -151,19 +151,19 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'REC_USER_NAME' => [
-                    'header' => 'Entry Sponsor',//报单时开拓者
+                    'header' => 'Entry Sponsor', // 报单时开拓者
                     'headerOther' => ['width' => '150'],
                 ],
                 'REC_REAL_NAME' => [
-                    'header' => 'Entry Sponsor Name',//报单时开拓者姓名
+                    'header' => 'Entry Sponsor Name', // 报单时开拓者姓名
                     'headerOther' => ['width' => '150'],
                 ],
                 'CON_USER_NAME' => [
-                    'header' => 'Entry superior',//报单时上级
+                    'header' => 'Entry Superior', // 报单时上级
                     'headerOther' => ['width' => '150'],
                 ],
                 'CON_REAL_NAME' => [
-                    'header' => 'Entry superior name',//报单时上级姓名
+                    'header' => 'Entry Superior Name', // 报单时上级姓名
                     'headerOther' => ['width' => '150'],
                 ],
                 'PROVINCE' => [
@@ -188,23 +188,23 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'ADDRESS' => [
-                    'header' => 'detailed address',//详细地址
+                    'header' => 'Detailed Address', // 详细地址
                     'headerOther' => [
                         'width' => '300',
                     ],
                 ],
                 'EXPRESS_TYPE' => [
-                    'header' => 'delivery method',//发货方式
+                    'header' => 'Delivery Method', // 发货方式
                     'headerOther' => ['width' => '150'],
                     'value' => function ($row) {
                         return $row['EXPRESS_TYPE']==0 ? 'mail' : 'Self Pick-up';//邮寄:自提
                     },
                 ],
                 'PERIOD_NUM' => [
-                    'header' => 'Current Period',//期数
+                    'header' => 'Current Period', // 期数
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation Time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -213,7 +213,7 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
                     'headerOther' => ['width' => '190'],
                 ],
                 'UPDATED_AT' => [
-                    'header' => 'Update Time',//更新时间
+                    'header' => 'Update Time', // 更新时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['UPDATED_AT'],
@@ -245,21 +245,21 @@ class DecOrderList extends \common\libs\dataList\DataList implements DataListInt
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'DEC_SN'=> ['name'=> 'Entry code'],//报单编号
-                'ORDER_SN'=> ['name'=> 'Order code'],//订单编号
-                'USER_NAME'=> ['name'=> 'Member code'],//报单人
-                'TO_USER_NAME'=> ['name'=> 'Entry Member code'],//被报单人
-                'REAL_NAME'=> ['name'=> 'Member name'],//会员姓名
-                'DEC_REAL_NAME'=> ['name'=> 'Entry name'],//报单中心姓名
-                'ID_CARD'=> ['name'=> 'Identity No.'],//会员身份证号
-                'MOBILE'=> ['name'=> 'Member Phone Number'],//会员手机号
-                'DEC_LV_NAME'=> ['name'=> 'Member Levels', 'other'=> 'decLevel'],//会员级别
-                'DEC_AMOUNT'=> ['name'=> 'Entry amount'],//报单金额
-                'DEC_PV'=> ['name'=> 'Entry BV'],//报单BV
-                'PERIOD_NUM'=> ['name'=> 'Current Period'],//期数
-                'REC_USER_NAME'=> ['name'=> '报单时开拓者'],//报单时开拓者
-                'CREATED_AT'=> ['name'=> 'Creation Time', 'other'=> 'date'],//创建时间
-                'UPDATED_AT'=> ['name'=> 'Update Time', 'other'=> 'date'],//更新时间
+                'DEC_SN'=> ['name'=> 'Entry Code'], // 报单编号
+                'ORDER_SN'=> ['name'=> 'Order Code'], // 订单编号
+                'USER_NAME'=> ['name'=> 'Member Code'], // 报单人
+                'TO_USER_NAME'=> ['name'=> 'Entry Member Code'], // 被报单人
+                'REAL_NAME'=> ['name'=> 'Member Name'], // 会员姓名
+                'DEC_REAL_NAME'=> ['name'=> 'Entry Name'], // 报单中心姓名
+                'ID_CARD'=> ['name'=> 'Identity No.'], // 会员身份证号
+                'MOBILE'=> ['name'=> 'Member Phone Number'], // 会员手机号
+                'DEC_LV_NAME'=> ['name'=> 'Member Levels', 'other'=> 'decLevel'], // 会员级别
+                'DEC_AMOUNT'=> ['name'=> 'Entry Amount'], // 报单金额
+                'DEC_PV'=> ['name'=> 'Entry BV'], // 报单BV
+                'PERIOD_NUM'=> ['name'=> 'Current Period'], // 期数
+                'REC_USER_NAME'=> ['name'=> '报单时开拓者'], // 报单时开拓者
+                'CREATED_AT'=> ['name'=> 'Creation Time', 'other'=> 'date'], // 创建时间
+                'UPDATED_AT'=> ['name'=> 'Update Time', 'other'=> 'date'], // 更新时间
             ];
         }
         return $this->filterTypes;

+ 13 - 23
backendApi/modules/v1/models/lists/shop/GoodsList.php

@@ -42,18 +42,11 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '200'],
                 ],
                 'GOODS_NO' => [
-                    'header' => 'Products code',//商品编号
+                    'header' => 'Products Code', // 商品编号
                     'headerOther' => ['width' => '200'],
                 ],
-                // 'TYPE' => [
-                //     'header' => '商品来源',
-                //     'value' => function($row){
-                //         return ShopGoods::GOODS_TYPE[$row['TYPE']]['name'];
-                //     },
-                //     'headerOther' => ['width' => '150'],
-                // ],
                 'SELL_DISCOUNT' => [
-                    'header' => 'Discount Rate',//商品折扣
+                    'header' => 'Discount Rate', // 商品折扣
                     'value' => function($row) {
                         $discount = 0;
                         if ($row['TYPE'] == 1) {
@@ -69,7 +62,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '150'],
                 ],
                 'GIFT_TYPE' => [
-                    'header' => 'Products type',//商品类型
+                    'header' => 'Products Type', // 商品类型
                     'value' => function($row){
                         $giftType = ShopGoods::GIFT_TYPE;
                         $gift = explode(',',$row['GIFT_TYPE']);
@@ -83,7 +76,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '150'],
                 ],
                 'CATEGORY_TYPE' => [
-                    'header' => 'Product Category',//商品分类
+                    'header' => 'Product Category', // 商品分类
                     'value' => function($row) {
                         $categoryType = array_column(ShopGoods::CATEGORY_TYPE, NULL, 'id');
                         return $categoryType[$row['CATEGORY_TYPE']]['name'] ?? '';
@@ -91,7 +84,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '150'],
                 ],
                 'SELL_TYPE' => [
-                    'header' => 'Payment Mode',//购买方式
+                    'header' => 'Payment Mode', // 购买方式
                     'value' => function($row){
                         $sellType = ShopGoods::SALE_TYPE;
                         $sel = explode(',',$row['SELL_TYPE']);
@@ -104,7 +97,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '150'],
                 ],
                 'SELL_PRICE_STANDARD' => [
-                    'header' => 'US price($)',//标准价格($)
+                    'header' => 'US Price($)', // 标准价格($)
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -118,7 +111,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'SELL_PRICE' => [
-                    'header' => 'Sales Price(₦)',//商品价格
+                    'header' => 'Sales Price(₦)', // 商品价格
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -132,7 +125,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'PRICE_PV' => [
-                    'header' => 'Products BV',//产品BV
+                    'header' => 'Products BV', // 产品BV
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -146,7 +139,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'TAX_RATE' => [
-                    'header' => 'Tax Rate(%)',//税率
+                    'header' => 'Tax Rate(%)', // 税率
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -160,7 +153,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'TAX' => [
-                    'header' => 'Tax(₦)',//税额
+                    'header' => 'Tax(₦)', // 税额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -180,7 +173,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     ],
                 ],
                 'STATUS' => [
-                    'header' => 'Status',//状态
+                    'header' => 'Status', // 状态
                     'value' => function($row) {
                         return $row['STATUS'] == 1 ? 'On sale' : 'Sold out'; //已上架:已下架
                     },
@@ -189,7 +182,7 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     ],
                 ],
                 'UPDATED_AT' => [
-                    'header' => 'Update Time',//更新时间
+                    'header' => 'Update Time', // 更新时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['UPDATED_AT'],
@@ -210,13 +203,10 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                //'TYPE' => ['isUserTable' => false, 'name' => '商品来源', 'other' => 'select', 'selectData' => [['id' => 1, 'name' => '国内商品'], ['id' => 2, 'name' => '进口商品']]],
-                //'GIFT_TYPE' => ['isUserTable' => false, 'name' => '商品类型', 'other' => 'select', 'selectData' => [['id' => 1, 'name' => '报单区'], ['id' => 2, 'name' => '复消区'], ['id' => 3, 'name' => '工作室报单'], ['id' => 4, 'name' => '工作室复消']]],
-                'GIFT_TYPE' => ['isUserTable' => false, 'name' => 'Products type', 'other' => 'select', 'selectData' => [['id' => 1, 'name' => 'Entry area'], ['id' => 2, 'name' => 'Reselling area'], ['id' => 3, 'name' => 'Office Entry area'], ['id' => 4, 'name' => 'Office Reselling area']]],
+                'GIFT_TYPE' => ['isUserTable' => false, 'name' => 'Products Type', 'other' => 'select', 'selectData' => [['id' => 1, 'name' => 'Entry area'], ['id' => 2, 'name' => 'Reselling area'], ['id' => 3, 'name' => 'Office Entry area'], ['id' => 4, 'name' => 'Office Reselling area']]],
                 'STATUS'=> ['name'=> 'Status', 'other'=> 'select', 'selectData'=> [['id'=> 0, 'name'=> 'Sold out'],['id'=> 1, 'name'=> 'On sale']]], // 状态,已下架,已上架
                 'GOODS_NAME'=> ['name'=> 'Product Name'], // 商品名称
                 'GOODS_NO'=> ['name'=> 'Products Code'], // 商品编号
-//                'SELL_TYPE'=> ['name'=> '复消购买方式', 'other'=> 'select', 'selectData'=> [['id'=> 1, 'name'=> '余额购买'],['id'=> 2, 'name'=> '积分购买']]],
                 'SELL_PRICE'=> ['name'=> 'Products Price'], // 销售价格
                 'PRICE_PV'=> ['name'=> 'Products BV'], // 销售PV
                 'CATEGORY_TYPE' => ['name' => 'Product Category', 'other'=> 'select', 'selectData'=> ShopGoods::CATEGORY_TYPE], // 商品分类

+ 27 - 25
backendApi/modules/v1/models/lists/shop/OrderDecList.php

@@ -45,30 +45,31 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
         if(!$this->columns){
             $this->columns = [
                 'PERIOD_NUM' => [
-                    'header' => 'Number of periods',//期数
+                    'header' => 'Number Of Periods', // 期数
+                    'headerOther' => ['width' => '140'],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => ['width' => '120'],
                 ],
                 'SN' => [
-                    'header' => 'Order code',//订单号
+                    'header' => 'Order Code', // 订单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'CONSIGNEE' => [
-                    'header' => 'Recipient',//收货人
+                    'header' => 'Recipient', // 收货人
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'MOBILE' => [
-                    'header' => 'Contact 1',//联系方式1
+                    'header' => 'Contact 1', // 联系方式1
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'TEL' => [
-                    'header' => 'Contact 2',//联系方式2
+                    'header' => 'Contact 2', // 联系方式2
                 ],
                 'PROVINCE' => [
                     'header' => 'State', // 州
@@ -79,7 +80,7 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                 ],
                 'CITY' => [
                     'header' => 'Local Government Area', // 地方政府
-                    'headerOther' => ['width' => '120'],
+                    'headerOther' => ['width' => '170'],
                     'value' => function ($row) use($regionConfig) {
                         return $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
                     },
@@ -92,16 +93,17 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'ADDRESS' => [
-                    'header' => 'Detailed address',//详细地址
+                    'header' => 'Detailed Address', // 详细地址
                     'headerOther' => [
                         'width' => '300',
                     ],
                 ],
                 'WAREHOUSE' => [
-                    'header' => 'Delivery warehouse',//发货仓
+                    'header' => 'Delivery Warehouse', // 发货仓
+                    'headerOther' => ['width' => '150'],
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -110,7 +112,7 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_AMOUNT' => [
-                    'header' => 'Payment amount',//支付金额
+                    'header' => 'Payment Amount', // 支付金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -122,7 +124,7 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                     ],
                 ],
                 'PAY_PV' => [
-                    'header' => 'Pay BV',//支付BV
+                    'header' => 'Pay BV', // 支付BV
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -134,7 +136,7 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                     ],
                 ],
                 'PAY_AT' => [
-                    'header' => 'Payment time',//支付时间
+                    'header' => 'Payment Time', // 支付时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['PAY_AT'],
@@ -143,14 +145,14 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_TYPE' => [
-                    'header' => 'Pay type',// 支付方式
+                    'header' => 'Pay Type', // 支付方式
                     'value' => function ($row) {
                         return ShopGoods::payTypes()[$row['PAY_TYPE']]['name'] ?? ShopGoods::payTypes()['cash']['name'];
                     },
                     'headerOther' => ['width' => '190'],
                 ],
                 'DELIVERY_AT' => [
-                    'header' => 'Delivery time',//发货时间
+                    'header' => 'Delivery Time', // 发货时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['DELIVERY_AT'],
@@ -159,7 +161,7 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_FREIGHT' => [
-                    'header' => 'freight',//运费
+                    'header' => 'Freight', // 运费
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -173,22 +175,22 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
                     },
                 ],
                 'EXPRESS_COMPANY' => [
-                    'header' => 'Courier Services Company',//快递公司
-                    'headerOther' => ['width' => '150'],
+                    'header' => 'Courier Services Company', // 快递公司
+                    'headerOther' => ['width' => '190'],
                 ],
                 'ORDER_TRACK_NO' => [
-                    'header' => 'courier number',//快递单号
+                    'header' => 'Courier Number', // 快递单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'EXPRESS_TYPE' => [
-                    'header' => 'Shipping method',//发货方式
+                    'header' => 'Shipping Method', // 发货方式
                     'headerOther' => ['width' => '150'],
                     'value' => function ($row) {
-                        return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick ';//'邮寄' : '自提'
+                        return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick '; // '邮寄' : '自提'
                     },
                 ],
                 'FRONT_REMARK' => [
-                    'header' => 'Member notes',//会员备注
+                    'header' => 'Member Notes', // 会员备注
                     'headerOther' => [
                         'width' => '200',
                     ],
@@ -213,9 +215,9 @@ class OrderDecList extends \common\libs\dataList\DataList implements DataListInt
         if(!$this->filterTypes){
             $this->filterTypes = [
                 'SN'=> ['name'=> 'Order No'],//订单编号
-                'USER_NAME'=> ['name'=> 'Member code'],//会员编号
-                'PERIOD_NUM'=> ['name'=> 'Number of periods'],//期数
-                'CREATED_AT'=> ['name'=> 'Creation time', 'other'=>'date'],//创建时间
+                'USER_NAME'=> ['name'=> 'Member Code'],//会员编号
+                'PERIOD_NUM'=> ['name'=> 'Number Of Periods'],//期数
+                'CREATED_AT'=> ['name'=> 'Creation Time', 'other'=>'date'],//创建时间
             ];
         }
         return $this->filterTypes;

+ 34 - 57
backendApi/modules/v1/models/lists/shop/OrderList.php

@@ -86,7 +86,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                 'ID' => null,
                 'DEC_SN' => null,
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => ['width' => '120'],
                 ],
                 'DEC_USER_NAME' => [
@@ -94,20 +94,20 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '120'],
                 ],
                 'CREATE_USER' => [
-                    'header' => 'Creator No',//创建人编号
+                    'header' => 'Creator No', // 创建人编号
                     'headerOther' => ['width' => '120'],
                 ],
                 'CREATE_USER_NAME' => [
-                    'header' => 'Stockist Name',//创建人姓名
+                    'header' => 'Stockist Name', // 创建人姓名
                     'headerOther' => ['width' => '120'],
                 ],
                 'SN' => [
-                    'header' => 'Order code',//订单号
+                    'header' => 'Order Code', // 订单号
                     'headerOther' => ['width' => '200'],
                 ],
 //                'STATUS' => null,
                 'STATUS' => [
-                    'header' => 'Status',//订单状态
+                    'header' => 'Status', // 订单状态
                     'headerOther' => [
                         'width' => '110',
                     ],
@@ -116,7 +116,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'SKU_CODE' => [
-                    'header' => 'Product Code',//存货编码
+                    'header' => 'Product Code', // 存货编码
                     'headerOther' => ['width' => '150'],
                 ],
                 'GOODS_TITLE' => [
@@ -124,23 +124,23 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '200'],
                 ],
                 'BUY_NUMS' => [
-                    'header' => 'Qty',//数量
+                    'header' => 'Qty', // 数量
                     'headerOther' => ['width' => '100'],
                 ],
                 'CONSIGNEE' => [
-                    'header' => 'Recipient',//收货人
+                    'header' => 'Recipient', // 收货人
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'MOBILE' => [
-                    'header' => 'Contact 1',//联系方式1
+                    'header' => 'Contact 1', // 联系方式1
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'TEL' => [
-                    'header' => 'Contact 2',//联系方式2
+                    'header' => 'Contact 2', // 联系方式2
                 ],
                 'PROVINCE' => [
                     'header' => 'State', // 州
@@ -151,7 +151,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                 ],
                 'CITY' => [
                     'header' => 'Local Government Area', // 地方政府
-                    'headerOther' => ['width' => '120'],
+                    'headerOther' => ['width' => '170'],
                     'value' => function ($row) use($regionConfig) {
                         return $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
                     },
@@ -163,37 +163,17 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                         return $regionConfig[$row['COUNTY']]['REGION_NAME'] ?? '';
                     },
                 ],
-//                'AREA' => [
-//                    'header' => '地区',
-//                    // 用于导出
-//                    'value' => function($row) use($regionConfig) {
-//                        $province = $regionConfig[$row['PROVINCE']]['REGION_NAME'] ?? '';
-//                        $city = $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
-//                        $county = $regionConfig[$row['COUNTY']]['REGION_NAME'] ?? '';
-//                        return $province.$city.$county;
-//                    },
-//                    // 用于前台显示
-//                    'showValue' => function($row) {
-//                        $province = $regionConfig[$row['PROVINCE']]['REGION_NAME'] ?? '';
-//                        $city = $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
-//                        $county = $regionConfig[$row['COUNTY']]['REGION_NAME'] ?? '';
-//                        return '<div class="addr" title='.$province.$city.$county.'>'.$province.$city.$county.'</div>';
-//                    },
-//                    'headerOther' => [
-//                        'width' => '200'
-//                    ],
-//                ],
                 'ADDRESS' => [
-                    'header' => 'Detailed address',//详细地址
+                    'header' => 'Detailed Address', // 详细地址
                     'headerOther' => [
                         'width' => '300',
                     ],
                 ],
                 'PERIOD_NUM' => [
-                    'header' => 'Period',//期数
+                    'header' => 'Period', // 期数
                 ],
                 'ORDER_TYPE' => [
-                    'header' => 'Order type',//订单类型
+                    'header' => 'Order Type', // 订单类型
                     'headerOther' => ['width' => '120'],
                     'value' => function ($row) {
                         switch ($row['ORDER_TYPE']) {
@@ -204,11 +184,8 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                         }
                     },
                 ],
-//                'WAREHOUSE' => [
-//                    'header' => 'Delivery warehouse',//发货仓
-//                ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -217,14 +194,14 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_TYPE' => [
-                    'header' => 'Pay type',// 支付方式
+                    'header' => 'Pay Type', // 支付方式
                     'value' => function ($row) {
                         return ShopGoods::payTypes()[$row['PAY_TYPE']]['name'] ?? ShopGoods::payTypes()['cash']['name'];
                     },
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_AT' => [
-                    'header' => 'Payment time',//支付时间
+                    'header' => 'Payment Time', // 支付时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['PAY_AT'],
@@ -233,7 +210,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '190'],
                 ],
                 'DELIVERY_AT' => [
-                    'header' => 'Delivery time',//发货时间
+                    'header' => 'Delivery Time', // 发货时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['DELIVERY_AT'],
@@ -242,7 +219,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '190'],
                 ],
                 'REAL_PRICE' => [
-                    'header' => 'Item Pricing',//商品单价
+                    'header' => 'Item Pricing', // 商品单价
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -256,7 +233,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'REAL_PV' => [
-                    'header' => 'Commodity amount',//商品金额
+                    'header' => 'Commodity Amount', // 商品金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -270,7 +247,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'PAY_FREIGHT' => [
-                    'header' => 'Freight',//运费
+                    'header' => 'Freight', // 运费
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -284,7 +261,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'TAX_RATE' => [
-                    'header' => 'Tax Rate',//税率
+                    'header' => 'Tax Rate', // 税率
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -298,7 +275,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'TAX_AMOUNT' => [
-                    'header' => 'Tax',//税额
+                    'header' => 'Tax', // 税额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -312,22 +289,22 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'EXPRESS_COMPANY' => [
-                    'header' => 'Courier Services Company',//快递公司
-                    'headerOther' => ['width' => '150'],
+                    'header' => 'Courier Services Company', // 快递公司
+                    'headerOther' => ['width' => '190'],
                 ],
                 'ORDER_TRACK_NO' => [
-                    'header' => 'Courier Number',//快递单号
+                    'header' => 'Courier Number', // 快递单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'EXPRESS_TYPE' => [
-                    'header' => 'Shipping Method',//发货方式
+                    'header' => 'Shipping Method', // 发货方式
                     'headerOther' => ['width' => '150'],
                     'value' => function ($row) {
-                        return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick ';//'邮寄' : '自提'
+                        return $row['EXPRESS_TYPE']==0 ? 'Mailing ':' Auto pick '; // '邮寄' : '自提'
                     },
                 ],
                 'FRONT_REMARK' => [
-                    'header' => 'Member Notes',//会员备注
+                    'header' => 'Member Notes', // 会员备注
                     'headerOther' => [
                         'width' => '200',
                     ],
@@ -340,9 +317,9 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                 ],
                 'DELIVERY_STATUS' => null,
                 'DELIVERY_STATUS_NAME' => [
-                    'header' => 'Shipment Status',//发货状态
+                    'header' => 'Shipment Status', // 发货状态
                     'headerOther' => [
-                        'width' => '110',
+                        'width' => '130',
                     ],
                     'value' => function ($row) {
                         return \Yii::$app->params['deliveryStatus'][$row['DELIVERY_STATUS']]['label'] ?? '';
@@ -368,11 +345,11 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
         if(!$this->filterTypes){
             $this->filterTypes = [
                 'SN'=> ['name'=> 'Order No'],//订单编号
-                'USER_NAME'=> ['name'=> 'Member code'],//会员编号
+                'USER_NAME'=> ['name'=> 'Member Code'],//会员编号
                 'MOBILE'=> ['name'=> 'Contact 1'],//联系方式1
                 'ORDER_TYPE'=> ['name'=> 'Order Type'],
-                'PERIOD_NUM'=> ['name'=> 'Number of periods'],//期数
-                'CREATED_AT'=> ['name'=> 'Creation time', 'other'=>'date'],//创建时间
+                'PERIOD_NUM'=> ['name'=> 'Number Of Periods'],//期数
+                'CREATED_AT'=> ['name'=> 'Creation Time', 'other'=>'date'],//创建时间
                 'STATUS'=> [
                     'name'=> 'Status',
                     'other'=> 'select',

+ 29 - 27
backendApi/modules/v1/models/lists/shop/OrderShopList.php

@@ -47,37 +47,38 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
         if(!$this->columns){
             $this->columns = [
                 'PERIOD_NUM' => [
-                    'header' => 'Number of periods',//期数
+                    'header' => 'Number Of Periods', // 期数
+                    'headerOther' => ['width' => '140'],
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => ['width' => '120'],
                 ],
                 'SN' => [
-                    'header' => 'Order code',//订单号
+                    'header' => 'Order Code', // 订单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'PAY_TYPE' => [
-                    'header' => 'Order type',//订单类型
+                    'header' => 'Order Type', // 订单类型
                     'headerOther' => ['width' => '120'],
                     'value' => function ($row) {
-                        return $row['PAY_TYPE']=='cash' ? 'cancel order again': 'point order';//'重消订单' : '积分订单'
+                        return $row['PAY_TYPE']=='cash' ? 'cancel order again': 'point order'; // '重消订单' : '积分订单'
                     },
                 ],
                 'CONSIGNEE' => [
-                    'header' => 'Recipient',//收货人
+                    'header' => 'Recipient', // 收货人
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'MOBILE' => [
-                    'header' => 'Contact 1',//联系方式1
+                    'header' => 'Contact 1', // 联系方式1
                     'headerOther' => [
                         'width' => '150',
                     ],
                 ],
                 'TEL' => [
-                    'header' => 'Contact 2',//联系方式1
+                    'header' => 'Contact 2', // 联系方式1
                 ],
                 'PROVINCE' => [
                     'header' => 'State', // 州
@@ -88,7 +89,7 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                 ],
                 'CITY' => [
                     'header' => 'Local Government Area', // 地方政府
-                    'headerOther' => ['width' => '120'],
+                    'headerOther' => ['width' => '170'],
                     'value' => function ($row) use($regionConfig) {
                         return $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
                     },
@@ -101,16 +102,17 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'ADDRESS' => [
-                    'header' => 'Detailed address',//详细地址
+                    'header' => 'Detailed Address', // 详细地址
                     'headerOther' => [
                         'width' => '300',
                     ],
                 ],
                 'WAREHOUSE' => [
-                    'header' => 'Delivery warehouse',//发货仓
+                    'header' => 'Delivery Warehouse', // 发货仓
+                    'headerOther' => ['width' => '150'],
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -119,7 +121,7 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_AMOUNT' => [
-                    'header' => 'Payment amount',//支付金额
+                    'header' => 'Payment Amount', // 支付金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -131,7 +133,7 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'PAY_PV' => [
-                    'header' => 'Pay BV',//支付BV
+                    'header' => 'Pay BV', // 支付BV
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -143,7 +145,7 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'PAY_AT' => [
-                    'header' => 'Payment time',//支付时间
+                    'header' => 'Payment Time', // 支付时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['PAY_AT'],
@@ -152,7 +154,7 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                     'headerOther' => ['width' => '190'],
                 ],
                 'DELIVERY_AT' => [
-                    'header' => 'Delivery time',//发货时间
+                    'header' => 'Delivery Time', // 发货时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['DELIVERY_AT'],
@@ -161,7 +163,7 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_FREIGHT' => [
-                    'header' => 'freight',//运费
+                    'header' => 'Freight', // 运费
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -175,22 +177,22 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
                     },
                 ],
                 'EXPRESS_COMPANY' => [
-                    'header' => 'Courier Services Company',//快递公司
-                    'headerOther' => ['width' => '150'],
+                    'header' => 'Courier Services Company', // 快递公司
+                    'headerOther' => ['width' => '190'],
                 ],
                 'ORDER_TRACK_NO' => [
-                    'header' => 'courier number',//快递单号
+                    'header' => 'Courier Number', // 快递单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'EXPRESS_TYPE' => [
-                        'header' => 'Shipping method',//发货方式
+                        'header' => 'Shipping Method', // 发货方式
                     'headerOther' => ['width' => '150'],
                     'value' => function ($row) {
-                        return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick ' ;//'邮寄' : '自提'
+                        return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick '; // '邮寄' : '自提'
                     },
                 ],
                 'FRONT_REMARK' => [
-                    'header' => 'Member notes',//会员备注
+                    'header' => 'Member Notes', // 会员备注
                     'headerOther' => [
                         'width' => '200',
                     ],
@@ -214,10 +216,10 @@ class OrderShopList extends \common\libs\dataList\DataList implements DataListIn
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'SN'=> ['name'=> 'Order No'],//订单编号
-                'USER_NAME'=> ['name'=> 'Member number'],//会员编号
-                'PERIOD_NUM'=> ['name'=> 'Number of periods'],//期数
-                'CREATED_AT'=> ['name'=> 'Creation time', 'other'=>'date'],//创建时间
+                'SN'=> ['name'=> 'Order No'], // 订单编号
+                'USER_NAME'=> ['name'=> 'Member Number'], // 会员编号
+                'PERIOD_NUM'=> ['name'=> 'Number Of Periods'], // 期数
+                'CREATED_AT'=> ['name'=> 'Creation Time', 'other'=>'date'], // 创建时间
             ];
         }
         return $this->filterTypes;

+ 15 - 15
backendApi/modules/v1/models/lists/shop/OrderStandardList.php

@@ -51,11 +51,11 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
                     'header' => 'Bonus Month', // 结算月
                 ],
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code',//会员编号
                     'headerOther' => ['width' => '120'],
                 ],
                 'SN' => [
-                    'header' => 'Order code',//订单号
+                    'header' => 'Order Code',//订单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'PAY_TYPE' => [
@@ -102,16 +102,16 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
                     },
                 ],
                 'ADDRESS' => [
-                    'header' => 'Detailed address',//详细地址
+                    'header' => 'Detailed Address',//详细地址
                     'headerOther' => [
                         'width' => '300',
                     ],
                 ],
                 'WAREHOUSE' => [
-                    'header' => 'Delivery warehouse',//发货仓
+                    'header' => 'Delivery Warehouse',//发货仓
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time',//创建时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -120,7 +120,7 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_AMOUNT' => [
-                    'header' => 'Payment amount',//支付金额
+                    'header' => 'Payment Amount',//支付金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -144,7 +144,7 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
                     ],
                 ],
                 'PAY_AT' => [
-                    'header' => 'Payment time',//支付时间
+                    'header' => 'Payment Time',//支付时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['PAY_AT'],
@@ -153,7 +153,7 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
                     'headerOther' => ['width' => '190'],
                 ],
                 'DELIVERY_AT' => [
-                    'header' => 'Delivery time',//发货时间
+                    'header' => 'Delivery Time',//发货时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['DELIVERY_AT'],
@@ -162,7 +162,7 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
                     'headerOther' => ['width' => '190'],
                 ],
                 'PAY_FREIGHT' => [
-                    'header' => 'freight',//运费
+                    'header' => 'Freight',//运费
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -180,18 +180,18 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
                     'headerOther' => ['width' => '150'],
                 ],
                 'ORDER_TRACK_NO' => [
-                    'header' => 'courier number',//快递单号
+                    'header' => 'Courier Number',//快递单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'EXPRESS_TYPE' => [
-                    'header' => 'Shipping method',//发货方式
+                    'header' => 'Shipping Method',//发货方式
                     'headerOther' => ['width' => '150'],
                     'value' => function ($row) {
                         return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick ';//'邮寄' : '自提'
                     },
                 ],
                 'FRONT_REMARK' => [
-                    'header' => 'Member notes',//会员备注
+                    'header' => 'Member Notes',//会员备注
                     'headerOther' => [
                         'width' => '200',
                     ],
@@ -216,9 +216,9 @@ class OrderStandardList extends \common\libs\dataList\DataList implements DataLi
         if(!$this->filterTypes){
             $this->filterTypes = [
                 'SN'=> ['name'=> 'Order No'],//订单编号
-                'USER_NAME'=> ['name'=> 'Member code'],//会员编号
-                'PERIOD_NUM'=> ['name'=> 'Number of periods'],//期数
-                'CREATED_AT'=> ['name'=> 'Creation time', 'other'=>'date'],//创建时间
+                'USER_NAME'=> ['name'=> 'Member Code'],//会员编号
+                'PERIOD_NUM'=> ['name'=> 'Number Of Periods'],//期数
+                'CREATED_AT'=> ['name'=> 'Creation Time', 'other'=>'date'],//创建时间
             ];
         }
         return $this->filterTypes;

+ 15 - 15
backendApi/modules/v1/models/lists/shop/PackageList.php

@@ -44,19 +44,19 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
             $this->columns = [
                 'ID' => null,
                 'PACKAGE_NAME' => [
-                    'header' => 'Kitting products name',//套餐名称
+                    'header' => 'Kitting Products Name', // 套餐名称
                     'headerOther' => ['width' => '200'],
                 ],
                 'PACKAGE_NO' => [
-                    'header' => 'Kitting products code',//套餐编号
+                    'header' => 'Kitting Products Code', // 套餐编号
                     'headerOther' => ['width' => '200'],
                 ],
                 'LEVEL_NAME' => [
-                    'header' => 'Entry level',//所属报单级别
+                    'header' => 'Entry Level', // 所属报单级别
                     'headerOther' => ['width' => '200'],
                 ],
                 'AMOUNT_STANDARD' => [
-                    'header' => 'Standard price',//标准价格
+                    'header' => 'Standard Price', // 标准价格
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -70,11 +70,11 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
                     },
                 ],
 			'STORE_NUMS' => [
-			    'header' => 'Kitting stock', // 库存
+			    'header' => 'Kitting Stock', // 库存
 			    'headerOther' => ['width' => '200'],
 			],
                 'AMOUNT' => [
-                    'header' => 'Kit price',//套餐金额
+                    'header' => 'Kit Price', // 套餐金额
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -88,7 +88,7 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
                     },
                 ],
                 'PV' => [
-                    'header' => 'Kitting products BV',//套餐BV
+                    'header' => 'Kitting Products BV', // 套餐BV
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -102,7 +102,7 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
                     },
                 ],
                 'STATUS' => [
-                    'header' => 'Status',//状态
+                    'header' => 'Status', // 状态
                     'value' => function($row) {
                         return $row['STATUS'] == 1 ? 'On sale' : 'Sold out';//'已上架' : '已下架'
                     },
@@ -111,11 +111,11 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
                     ],
                 ],
                 'PACKAGE_CONTENT' => [
-                    'header' => 'Kit products',//套餐内容
+                    'header' => 'Kit Products', // 套餐内容
                     'headerOther' => ['width' => '290'],
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -136,11 +136,11 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'LEVEL_NAME'=> ['name'=> 'Entry level', 'other'=> 'decLevel'],//所属报单级别
-                'PACKAGE_NAME'=> ['name'=> 'Kitting products name'],//套餐名称
-                'AMOUNT'=> ['name'=> 'Kitting products amount'],//套餐金额
-                'PV'=> ['name'=> 'Kitting products BV'],//套餐BV
-                'STATUS'=> ['name'=> 'Status', 'other'=> 'select', 'selectData'=> [['id'=> 1, 'name'=> 'On sale'],['id'=> 0, 'name'=> 'Sold out']]],//状态,已上架,已下架
+                'LEVEL_NAME'=> ['name'=> 'Entry Level', 'other'=> 'decLevel'], // 所属报单级别
+                'PACKAGE_NAME'=> ['name'=> 'Kitting Products Name'], // 套餐名称
+                'AMOUNT'=> ['name'=> 'Kitting Products Amount'], // 套餐金额
+                'PV'=> ['name'=> 'Kitting Products BV'], // 套餐BV
+                'STATUS'=> ['name'=> 'Status', 'other'=> 'select', 'selectData'=> [['id'=> 1, 'name'=> 'On Sale'],['id'=> 0, 'name'=> 'Sold Out']]], // 状态,已上架,已下架
             ];
         }
         return $this->filterTypes;

+ 8 - 8
backendApi/modules/v1/models/lists/user/DecLevelList.php

@@ -51,11 +51,11 @@ class DecLevelList extends \common\libs\dataList\DataList implements DataListInt
                 'ID' => null,
                 'USER_ID' => null,
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'FROM_DEC_LV_NAME' => [
-                    'header' => 'Level before modification',//修改前级别
+                    'header' => 'Level Before Modification', // 修改前级别
 //                    'headerOther' => [
 //                        'width' => '120',
 //                    ],
@@ -67,7 +67,7 @@ class DecLevelList extends \common\libs\dataList\DataList implements DataListInt
                     ],
                 ],
                 'TO_DEC_LV_NAME' => [
-                    'header' => 'Modified level',//修改后级别
+                    'header' => 'Modified Level', // 修改后级别
 //                    'headerOther' => [
 //                        'width' => '130',
 //                    ],
@@ -79,11 +79,11 @@ class DecLevelList extends \common\libs\dataList\DataList implements DataListInt
                     ],
                 ],
                 'ADMIN_NAME' => [
-                    'header' => 'Operation Administrator',//操作管理员
+                    'header' => 'Operation Administrator', // 操作管理员
 //                    'headerOther' => ['width' => '120'],
                 ],
                 'CREATED_AT' => [
-                    'header' => 'Creation time',//创建时间
+                    'header' => 'Creation Time', // 创建时间
                     'value' => function($row) {
                         return (new DateTime([
                             'value' => $row['CREATED_AT'],
@@ -104,9 +104,9 @@ class DecLevelList extends \common\libs\dataList\DataList implements DataListInt
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'USER_NAME'=> ['isUserTable' => false,'name'=> 'Member code'],//会员编号
-                'CREATED_AT' => ['isUserTable' => false, 'name' => 'Creation time', 'other' => 'date'],//会员编号
-                'ADMIN_NAME' => ['isUserTable' => false, 'name' => 'Operation administrator'],//操作管理员
+                'USER_NAME'=> ['isUserTable' => false,'name'=> 'Member Code'], // 会员编号
+                'CREATED_AT' => ['isUserTable' => false, 'name' => 'Creation Time', 'other' => 'date'], // 会员编号
+                'ADMIN_NAME' => ['isUserTable' => false, 'name' => 'Operation Administrator'], // 操作管理员
             ];
         }
         return $this->filterTypes;

+ 43 - 281
backendApi/modules/v1/models/lists/user/IndexList.php

@@ -91,11 +91,11 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                 'USER_ID' => null, // 这种传输方式主要是用于索引,因为过滤后的字段可能没有这种ID,但是一些功能的操作还需要用这种ID去关联,例如前台会员列表中的勾选批量状态管理,这里需要的就是USER_ID
                 'BTF_URL' => null,
                 'USER_NAME' => [
-                    'header' => 'Member code',//会员编号
+                    'header' => 'Member Code', // 会员编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'REAL_NAME' => [
-                    'header' => 'Member name',//会员姓名
+                    'header' => 'Member Name', // 会员姓名
                     'headerOther' => [
                         'width' => '120',
                     ],
@@ -104,20 +104,20 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     ],
                 ],
                 'LOGIN_STATUS_NAME' => [
-                    'header' => 'Login status',//登录状态
+                    'header' => 'Login Status', // 登录状态
                     'value' => function($row) {
-                        return $row['ALLOW_LOGIN'] == 1 ? 'allow Login': 'prohibit Login';//'允许登录' : '禁止登录'
+                        return $row['ALLOW_LOGIN'] == 1 ? 'Allow Login': 'Prohibit Login'; // '允许登录' : '禁止登录'
                     },
                     'headerOther' => ['width' => '110'],
                 ],
                 'STATUS' => [
-                    'header' => 'Status',//状态
+                    'header' => 'Status', // 状态
                     'value' => function($row) {
-                        return $row['STATUS'] == 1 ? 'activate': 'lock';//'激活' : '锁定'
+                        return $row['STATUS'] == 1 ? 'Activate': 'Lock'; // '激活' : '锁定'
                     },
                     'headerOther' => ['width' => '110'],
                 ],
-                'ALLOW_LOGIN' => ['header' => 'Filter allow login','hidden'=>true],//筛选允许登录
+                'ALLOW_LOGIN' => ['header' => 'Filter Allow Login','hidden'=>true], // 筛选允许登录
                 'CREATED_AT' => [
                     'header' => 'Joining Date', // 加入日期
                     'value' => function($row) {
@@ -128,14 +128,12 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '170'],
                 ],
                 'PERIOD_AT' => [
-                    'header' => 'Joining Period',//加入期数
+                    'header' => 'Joining Period', // 加入期数
                     'headerOther' => ['width' => '180'],
                 ],
                 'DEC_LV_NAME' => [
-                    'header' => 'Real time membership level',//实时会员级别
-                    'headerOther' => [
-                        'width' => '120',
-                    ],
+                    'header' => 'Current Member Level', // 实时会员级别
+                    'headerOther' => ['width' => '160'],
                     'value' => function($row) use($decLevelConfig) {
                         return $decLevelConfig[$row['DEC_LV']]['LEVEL_NAME'];
                     },
@@ -144,18 +142,18 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     ],
                 ],
                 'DEC_LV_UPDATED_AT' => [
-                    'header' => 'Real time adjustment date',//实时调整日期
+                    'header' => 'Current Adjustment Date', // 实时调整日期
                     'value' => function($row) {
                         return (new DateTime([
                             'value' => $row['DEC_LV_UPDATED_AT'],
                         ]))->result();
                     },
-                    'headerOther' => ['width' => '160'],
+                    'headerOther' => ['width' => '180'],
                 ],
                 'LAST_DEC_LV_NAME' => [
-                    'header' => 'Member level at settlement',//结算时会员级别
+                    'header' => 'PC Member Level', // 结算时会员级别
                     'headerOther' => [
-                        'width' => '120',
+                        'width' => '140',
                     ],
                     'value' => function($row) use($decLevelConfig) {
                         if (!$row['LAST_DEC_LV']) {
@@ -169,9 +167,9 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     ],
                 ],
                 'EMP_LV_NAME' => [
-                    'header' => 'Real time employment',//实时聘级
+                    'header' => 'Current Director Rank', // 实时聘级
                     'headerOther' => [
-                        'width' => '130',
+                        'width' => '160',
                     ],
                     'value' => function($row) use($empLevelConfig) {
                         return isset($empLevelConfig[$row['EMP_LV']])?$empLevelConfig[$row['EMP_LV']]['LEVEL_NAME']:'';
@@ -181,9 +179,9 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     ],
                 ],
                 'CROWN_LV_NAME' => [
-                    'header' => 'Real time crown', // 实时星级
+                    'header' => 'Current Crown Rank', // 实时星级
                     'headerOther' => [
-                        'width' => '130',
+                        'width' => '150',
                     ],
                     'value' => function($row) use($crownLevelConfig) {
                         return isset($crownLevelConfig[$row['CROWN_LV']])?$crownLevelConfig[$row['CROWN_LV']]['LEVEL_NAME']:'';
@@ -192,74 +190,28 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                         'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border']
                     ],
                 ],
-//                'HIGHEST_EMP_LV_NAME' => [
-//                    'header' => '历史最高聘级',
-//                    'value' => function($row) use($empLevelConfig) {
-//                        if (!$row['HIGHEST_EMP_LV']){
-//                            return $empLevelConfig[$row['EMP_LV']]['LEVEL_NAME'];
-//                        } else {
-//                            return $empLevelConfig[$row['HIGHEST_EMP_LV']]['LEVEL_NAME'];
-//                        }
-//                    },
-//                    'headerOther' => ['width' => '130'],
-//                ],
-//                'HIGHEST_EMP_LV_PERIOD' => [
-//                    'header' => '首次达到历史最高聘级的期数',
-//                    'headerOther' => ['width' => '210'],
-//                ],
                 'REC_USER_NAME' => [
-                    'header' => 'Recommendation No',//推荐编号
-                    'headerOther' => ['width' => '150'],
+                    'header' => 'Recommendation No', // 推荐编号
+                    'headerOther' => ['width' => '160'],
                 ],
                 'REC_REAL_NAME' => [
-                    'header' => 'Recommended name',//推荐姓名
-                    'headerOther' => ['width' => '100'],
+                    'header' => 'Recommended Name', // 推荐姓名
+                    'headerOther' => ['width' => '160'],
                 ],
                 'CON_USER_NAME' => [
-                    'header' => 'Placement No',//安置编号
-                    'headerOther' => ['width' => '150'],
+                    'header' => 'Placement No', // 安置编号
+                    'headerOther' => ['width' => '140'],
                 ],
                 'CON_REAL_NAME' => [
-                    'header' => 'Placement Name',//安置姓名
-                    'headerOther' => ['width' => '100'],
+                    'header' => 'Placement Name', // 安置姓名
+                    'headerOther' => ['width' => '140'],
                 ],
                 'RELATIVE_LOCATION' => [
-                    'header' => 'Resettlement area',//安置区域
-                    'headerOther' => ['width' => '100'],
+                    'header' => 'Resettlement Area', // 安置区域
+                    'headerOther' => ['width' => '140'],
                 ],
-//                'ID_TYPE' => [
-//                    'header' => 'Document type',//证件类型
-//                    'value' => function($row) {
-//                        return $row['ID_TYPE'] == 0 ? 'Identity No.' : '';//'身份证' : ''
-//                    },
-//                ],
-//                'ID_CARD' => [
-//                    'header' => 'Identification Number',//证件号码
-//                    'value' => function($row) {
-//                        return "\t".$row['ID_CARD'];
-//                    },
-//                    'headerOther' => ['width' => '180'],
-//                ],
-//                'SPOUSE_NAME' => [
-//                    'header' => '配偶姓名',
-//                    'headerOther' => ['width' => '100'],
-//                ],
-//                'SPOUSE_IDCARD' => [
-//                    'header' => '配偶身份证号',
-//                    'value' => function($row) {
-//                        return "\t".$row['SPOUSE_IDCARD'];
-//                    },
-//                    'headerOther' => ['width' => '180'],
-//                ],
-//                'SYSTEM_NAME' => [
-//                    'header' => '体系名称',
-//                    'headerOther' => ['width' => '150'],
-//                    'value' => function($row) use($systemConfig) {
-//                        return $systemConfig[$row['SYSTEM_ID']]['SYSTEM_NAME'] ?? '';
-//                    },
-//                ],
                 'MOBILE' => [
-                    'header' => 'Phone Number',//手机号码
+                    'header' => 'Phone Number', // 手机号码
                     'value' => function($row) {
                         return "\t".$row['MOBILE'];
                     },
@@ -270,23 +222,21 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     'value' => function($row) {
                         return "\t".$row['TEL'];
                     },
-                    'headerOther' => ['width' => '120'],
+                    'headerOther' => ['width' => '180'],
                 ],
                 'DEC_USER_NAME' => [
                     'header' => 'Stockist Code', // 所属报单中心编号
                     'headerOther' => ['width' => '150'],
                 ],
                 'IS_DEC' => [
-                    'header' => 'Declaration center or not',//是否报单中心
+                    'header' => 'Whether Declaration Center', // 是否报单中心
                     'value' => function($row) {
                         return (new YesNo([
                             'value' => $row['IS_DEC'],
                         ]))->result();
                     },
                     'headerOther' => function($row) {
-                        return [
-                            'width' => '120',
-                        ];
+                        return ['width' => '200'];
                     },
                     'valueOther' => function($row) {
                         return [
@@ -294,26 +244,8 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                         ];
                     },
                 ],
-//                'IS_STUDIO' => [
-//                    'header' => 'Studio or not',//是否工作室
-//                    'value' => function($row) {
-//                        return (new YesNo([
-//                            'value' => $row['IS_STUDIO'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['IS_STUDIO']) && $row['IS_STUDIO'] )? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
                 'IS_ATLAS' => [
-                    'header' => 'Whether the atlas is displayed',//是否显示图谱
+                    'header' => 'Wheter Atlas Display', // 是否显示图谱
                     'value' => function($row) {
                         return (new YesNo([
                             'value' => $row['IS_ATLAS'],
@@ -321,7 +253,7 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                     'headerOther' => function($row) {
                         return [
-                            'width' => '120',
+                            'width' => '160',
                         ];
                     },
                     'valueOther' => function($row) {
@@ -331,7 +263,7 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'IS_RECHARGE' => [
-                    'header' => 'Whether to display recharge',//是否显示充值
+                    'header' => 'Wheter Recharge Display', // 是否显示充值
                     'value' => function($row) {
                         return (new YesNo([
                             'value' => $row['IS_RECHARGE'],
@@ -339,7 +271,7 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                     'headerOther' => function($row) {
                         return [
-                            'width' => '120',
+                            'width' => '180',
                         ];
                     },
                     'valueOther' => function($row) {
@@ -349,60 +281,28 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'DEC_ROLE_NAME' => [
-                    'header' => 'Stockist Level',//报单中心级别
+                    'header' => 'Stockist Level', // 报单中心级别
                     'headerOther' => ['width' => '110'],
                     'value' => function($row) use($decRoleConfig) {
                         return $decRoleConfig[$row['DEC_ROLE_ID']]['ROLE_NAME'] ?? '';
                     },
                 ],
                 'OPEN_BANK_NAME' => [
-                    'header' => 'Bank Name',//开户银行
+                    'header' => 'Bank Name', // 开户银行
                     'headerOther' => ['width' => '110'],
                     'value' => function($row) use($openBankConfig) {
                         return $openBankConfig[$row['OPEN_BANK']]['BANK_NAME'] ?? '';
                     },
                 ],
-//                'BANK_AREA' => [
-//                    'header' => 'Banking region',//银行地区
-//                    'value' => function($row) use($regionConfig) {
-//                        $province = $regionConfig[$row['BANK_PROVINCE']]['REGION_NAME'] ?? '';
-//                        $city = $regionConfig[$row['BANK_CITY']]['REGION_NAME'] ?? '';
-//                        $county = $regionConfig[$row['BANK_COUNTY']]['REGION_NAME'] ?? '';
-//                        return $province.$city.$county;
-//                    },
-//                    'showValue' => function($row) use($regionConfig) {
-//                        $province = $regionConfig[$row['BANK_PROVINCE']]['REGION_NAME'] ?? '';
-//                        $city = $regionConfig[$row['BANK_CITY']]['REGION_NAME'] ?? '';
-//                        $county = $regionConfig[$row['BANK_COUNTY']]['REGION_NAME'] ?? '';
-//                        return '<div class="addr" title='.$province.$city.$county.'>'.$province.$city.$county.'</div>';
-//                    },
-//                    'headerOther' => [
-//                        'width' => '200'
-//                    ],
-//                ],
-//                'BANK_ADDRESS' => [
-//                    'header' => 'Account opening address',//开户地址
-//                    'headerOther' => ['width' => '250'],
-//                    'showValue' => function($row) {
-//                        return '<div class="addr" title='.$row['BANK_ADDRESS'].'>'.$row['BANK_ADDRESS'].'</div>';
-//                    },
-//                ],
                 'BANK_NO' => [
-                    'header' => 'Bank account number',//银行帐号
+                    'header' => 'Bank Account Number', // 银行帐号
                     'headerOther' => ['width' => '220'],
                     'value' => function($row) {
                         return "\t".$row['BANK_NO'];
                     },
                 ],
-                'SEX' => 'Gender',//性别
-//                'NATION_NAME' => [
-//                    'header' => 'nation',//民族
-//                    'value' => function($row) {
-//                        return \Yii::$app->params['nation'][$row['NATION']]['name'] ?? '';
-//                    },
-//                ],
                 'AREA' => [
-                    'header' => 'Common address',//常用地址
+                    'header' => 'Common Address', // 常用地址
                     'value' => function($row) use($regionConfig) {
                         $province = $regionConfig[$row['PROVINCE']]['REGION_NAME'] ?? '';
                         $city = $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
@@ -419,160 +319,22 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                         'width' => '200'
                     ],
                 ],
-//                'ADDRESS' => [
-//                    'header' => 'ID card address',//身份证地址
-//                    'value' => function($row) {
-//                        return $row['ADDRESS'];
-//                    },
-//                    'showValue' => function($row) {
-//                        return '<div class="addr" title='.$row['ADDRESS'].'>'.$row['ADDRESS'].'</div>';
-//                    },
-//                    'headerOther' => ['width' => '250'],
-//                ],
-//                'IS_AUTO_WITHDRAW' => [
-//                    'header' => '提现方式',
-//                    'value' => function($row) {
-//                        return $row['IS_AUTO_WITHDRAW']==0?'手动':'自动';
-//                    },
-//                ],
-//                'VERIFIED' => [
-//                    'header' => 'Real name authentication',//实名认证
-//                    'value' => function($row) {
-//                        return (new YesNo([
-//                            'value' => $row['VERIFIED'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['VERIFIED']) && $row['VERIFIED']) ? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
-//                'VERIFIED_AT' => [
-//                    'header' => 'Real name certification date',//实名认证日期
-//                    'value' => function($row) {
-//                        return (new DateTime([
-//                            'value' => $row['VERIFIED_AT'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => ['width' => '170'],
-//                ],
-//                'IS_DIRECT_SELLER' => [
-//                    'header' => '是否直销员',
-//                    'value' => function($row) {
-//                        return (new YesNo([
-//                            'value' => $row['IS_DIRECT_SELLER'],
-//                        ]))->result();
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['IS_DIRECT_SELLER']) && $row['IS_DIRECT_SELLER']) ? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                ],
-//                'IS_SYSTEM_LEADER' => [
-//                    'header' => '是否体系领导人',
-//                    'value' => function($row) {
-//                        return (new YesNo([
-//                            'value' => $row['IS_SYSTEM_LEADER'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['IS_SYSTEM_LEADER']) && $row['IS_SYSTEM_LEADER']) ? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
-//                'IS_GROUP_LEADER' => [
-//                    'header' => '是否团队领导人',
-//                    'value' => function($row) {
-//                        return (new YesNo([
-//                            'value' => $row['IS_GROUP_LEADER'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['IS_GROUP_LEADER']) && $row['IS_GROUP_LEADER'] ) ? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
-//                'BIRTHDAY' => [
-//                    'header' => 'birthday',//生日
-//                    'value' => function($row) {
-//                        return date('Y-m-d', strtotime($row['BIRTHDAY']));
-//                    },
-//                    'headerOther' => ['width' => '110'],
-//                ],
                 'ALLOW_TRANSFER' => [
                     'header' => 'Enable "Transfer"', // 转账功能开启
                     'value' => function($row) {
-                        return $row['ALLOW_TRANSFER'] == 1 ? 'on': 'off';//'开启' : '关闭'
+                        return $row['ALLOW_TRANSFER'] == 1 ? 'On': 'Off'; // '开启' : '关闭'
                     },
                     'headerOther' => function($row) {
                         return [
-                            'width' => '120',
+                            'width' => '130',
                         ];
                     },
                     'valueOther' => function($row) {
                         return [
-                            'tag'=>['type'=>(isset($row['ALLOW_TRANSFER']) && $row['ALLOW_TRANSFER']) ? 'success' : 'info', 'size' => 'small']
+                            'tag'=>['type'=>(isset($row['ALLOW_TRANSFER']) && $row['ALLOW_TRANSFER']) ? 'Success' : 'Info', 'size' => 'small']
                         ];
                     },
                 ],
-//                'DEC_CLOSED' => [
-//                    'header' => 'Close entry',//是否关闭报单
-//                    'value' => function($row) {
-//                        return (new YesNo([
-//                            'value' => $row['DEC_CLOSED'],
-//                        ]))->result();
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['DEC_CLOSED']) && $row['DEC_CLOSED']) ? 'info' : 'success', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
-//                'IS_MODIFY_PASSWORD' => [
-//                    'header' => 'Edit Password', // 密码修改状态
-//                    'value' => function($row) {
-//                        return $row['IS_MODIFY_PASSWORD'] == 1 ? 'on': 'off';//'开启' : '关闭'
-//                    },
-//                    'headerOther' => function($row) {
-//                        return [
-//                            'width' => '120',
-//                        ];
-//                    },
-//                    'valueOther' => function($row) {
-//                        return [
-//                            'tag'=>['type'=>(isset($row['IS_MODIFY_PASSWORD']) && $row['IS_MODIFY_PASSWORD'] )? 'success' : 'info', 'size' => 'small']
-//                        ];
-//                    },
-//                ],
             ];
         }
         return $this->columns;

+ 30 - 34
backendApi/modules/v1/models/lists/user/MoveList.php

@@ -61,50 +61,50 @@ class MoveList extends \common\libs\dataList\DataList implements DataListInterfa
                 'ID' => null,
                 'USER_ID' => null,
                 'MOVE_USER_NAME' => [
-                    'header' => 'Move member', // 移动的会员
+                    'header' => 'Move Member', // 移动的会员
                     'headerOther' => ['width' => '150'],
                 ],
                 'MOVE_REAL_NAME' => [
-                    'header' => 'Move member name', // 移动的会员名字
-                    'headerOther' => [
-                        'width' => '150',
-                    ],
+                    'header' => 'Move Member Name', // 移动的会员名字
+                    'headerOther' => ['width' => '160'],
                     'valueOther' => [
                         'tag'=>['type'=>'success', 'size' => 'small', 'class'=>'no-border']
                     ],
                 ],
                 'FROM_USER_NAME' => [
-                    'header' => 'Uper member code before moving', // 移动前接点
-                    'headerOther' => ['width' => '150'],
+                    'header' => 'Uper Code Before Moving', // 移动前接点
+                    'headerOther' => ['width' => '190'],
                 ],
                 'TO_USER_NAME' => [
-                    'header' => 'Uper member code after moving', // 移动后接点
-                    'headerOther' => ['width' => '150'],
+                    'header' => 'Uper Code After Moving', // 移动后接点
+                    'headerOther' => ['width' => '170'],
                 ],
                 'TYPE' => [
-                    'header' => 'Type of moving', // 移网类型
-                    'headerOther' => [
-                        'width' => '120',
-                    ],
+                    'header' => 'Type Of Moving', // 移网类型
+                    'headerOther' => ['width' => '140'],
                     'value' => function($row) {
-                        return $row['TYPE'] == UserMove::TYPE_NETWORK ? 'placement network':'development network';//'安置网络' : '开拓网络'
+                        return $row['TYPE'] == UserMove::TYPE_NETWORK ? 'Placement Network':'Sponsor Network'; // '安置网络' : '开拓网络'
                     },
                 ],
                 'LOCATION' => [
                     'header' => 'Position', // 移动到位置
-                    'headerOther' => ['width' => '150'],
+                    'headerOther' => ['width' => '100'],
+                ],
+                'PERIOD_NUM' => [
+                    'header' => 'Period Of Moving', // 移动时的期数
+                    'headerOther' => ['width' => '130'],
                 ],
-                'PERIOD_NUM' => 'Period of moving', // 移动时的期数
                 'IS_MOVING' => [
-                    'header' => 'Whether to move', // 是否正在移动
-                    'headerOther' => ['width' => '100'],
+                    'header' => 'Whether To Move', // 是否正在移动
+                    'headerOther' => ['width' => '130'],
                 ],
                 'MOVE_PERCENT' => [
                     'header' => 'Percentage', // 移动百分比
+                    'headerOther' => ['width' => '100'],
                 ],
                 'MOVE_ADMIN_NAME' => [
-                    'header' => 'Administrator of moving',//移网管理员
-                    'headerOther' => ['width' => '120'],
+                    'header' => 'Administrator Of Moving', // 移网管理员
+                    'headerOther' => ['width' => '180'],
                 ],
                 'CREATED_AT' => [
                     'header' => 'Joining Date', // 加入日期
@@ -117,18 +117,18 @@ class MoveList extends \common\libs\dataList\DataList implements DataListInterfa
                 ],
                 'AUDIT_STATUS' => null,
                 'AUDIT_STATUS_NAME' => [
-                    'header' => 'Status',//审核状态
+                    'header' => 'Status', // 审核状态
                     'headerOther' => ['width' => '100'],
                     'value' => function ($row) {
                         return UserMove::STATUS_NAME[$row['AUDIT_STATUS']];
                     },
                 ],
                 'AUDIT_ADMIN_NAME' => [
-                    'header' => 'Administrator of reviewing',//审核管理员
-                    'headerOther' => ['width' => '100'],
+                    'header' => 'Administrator Of Reviewing', // 审核管理员
+                    'headerOther' => ['width' => '190'],
                 ],
                 'AUDITED_AT' => [
-                    'header' => 'Review time',//审核时间
+                    'header' => 'Review time', // 审核时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['AUDITED_AT'],
@@ -149,17 +149,13 @@ class MoveList extends \common\libs\dataList\DataList implements DataListInterfa
     {
         if(!$this->filterTypes){
             $this->filterTypes = [
-                'MOVE_USER_NAME'=> ['isUserTable' => false,'name'=> 'Move member code'], // 移动的会员
-                'MOVE_REAL_NAME'=> ['isUserTable' => false,'name'=> 'Move member name'], // 移动的会员姓名
+                'MOVE_USER_NAME'=> ['isUserTable' => false,'name'=> 'Move Member Code'], // 移动的会员
+                'MOVE_REAL_NAME'=> ['isUserTable' => false,'name'=> 'Move Member Name'], // 移动的会员姓名
                 'filterStatus'=> ['isUserTable' => false,'name'=> 'Status'], // 审核状态
-//                'moveType'=> ['isUserTable' => false,'name'=> '移网类型', 'other'=> 'select','selectData'=>UserMove::TYPE_NAME],
-//                'FROM_USER_NAME'=> ['isUserTable' => false,'name'=> '移动前接点'],
-//                'TO_USER_NAME'=> ['isUserTable' => false,'name'=> '移动后接点', 'other'=> 'decLevel'],
-                'PERIOD_NUM'=> ['isUserTable' => false,'name'=> 'Period of moving'], // 移动时的期数
-                'MOVE_ADMIN_NAME'=> ['isUserTable' => false,'name'=> 'Administrator of moving'], // 移网管理员
-                'AUDIT_ADMIN_NAME'=> ['isUserTable' => false,'name'=> 'Administrator of reviewing'], // 审核管理员
-//                'CREATED_AT' => ['isUserTable' => false, 'name' => '申请时间', 'other' => 'date'],
-                'AUDITED_AT' => ['isUserTable' => false, 'name' => 'Audit time', 'other' => 'Review time'], // 审核时间
+                'PERIOD_NUM'=> ['isUserTable' => false,'name'=> 'Period Of Moving'], // 移动时的期数
+                'MOVE_ADMIN_NAME'=> ['isUserTable' => false,'name'=> 'Administrator Of Moving'], // 移网管理员
+                'AUDIT_ADMIN_NAME'=> ['isUserTable' => false,'name'=> 'Administrator Of Reviewing'], // 审核管理员
+                'AUDITED_AT' => ['isUserTable' => false, 'name' => 'Audit Time', 'other' => 'Review Time'], // 审核时间
             ];
         }
         return $this->filterTypes;

+ 3 - 3
backendEle/src/utils/config_trial.js

@@ -1,17 +1,17 @@
 const APP_NAME = 'Settlement system background'
 const SERVER_API_DOMAIN = '16.163.228.151'
 const SERVER_API_HTTP_TYPE = 'http://'
-const SERVER_API_PORT = ':8025'  // ':8102'
+const SERVER_API_PORT = ':8032'  // ':8102'
 const SERVER_API_VERSION = 'v1'
 const REQUEST_URL = `${SERVER_API_HTTP_TYPE}${SERVER_API_DOMAIN}${SERVER_API_PORT}/${SERVER_API_VERSION}/`
 const WEBSOCKET_HOST = 'ws://127.0.0.1:9513'
 const BONUS_WEBSOCKET_HOST = 'ws://127.0.0.1:9513'
 const DEVICE_TYPE = 'pc'
 const ACCESS_TOKEN_PREFIX = 'Bearer '
-const CDN_BASE_URL = 'http://16.163.228.151:8029'
+const CDN_BASE_URL = 'http://16.163.228.151:8036'
 const CDN_IMG_URL = `${CDN_BASE_URL}/cdn/`
 const PRICE_IS_ROUND = true
-const FRONTEND_SERVER = 'http://16.163.228.151:8028'
+const FRONTEND_SERVER = 'http://16.163.228.151:8035'
 const REGION_URL = `${CDN_BASE_URL}/cdn/jsdata/ar_region_data.js?ver=0.1`
 
 export {

+ 6 - 7
backendEle/src/views/admin/edit.vue

@@ -38,7 +38,7 @@
           <el-switch v-model="form.isModifyPassword"></el-switch>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" :loading="submitButtonStat" @click="onSubmit">保存</el-button>
+          <el-button type="primary" :loading="submitButtonStat" @click="onSubmit">SAVE<!--保存--></el-button>
         </el-form-item>
       </el-form>
     </div>
@@ -61,12 +61,12 @@ export default {
         this.loading = false
         this.isEdit = true
       })
-    } else if (this.$route.name === 'admin_add'){
+    } else if (this.$route.name === 'admin_add') {
       network.getData('admin/add').then(response => {
         this.roles = response.adminRoles
         this.loading = false
       })
-    }else {
+    } else {
       this.loading = false
     }
   },
@@ -86,7 +86,7 @@ export default {
       loading: true,
       submitButtonStat: false,
       isEdit: false,
-      roles: null,
+      roles: null
     }
   },
   computed: {
@@ -95,7 +95,7 @@ export default {
         return true
       }
       return false
-    },
+    }
   },
   watch: {
     '$route' () {
@@ -110,8 +110,7 @@ export default {
       let path = 'admin/add'
       if (this.$route.name === 'admin_edit') {
         path = 'admin/edit/' + this.$route.params.id
-      }
-      else if (this.$route.name === 'admin_change-password') {
+      } else if (this.$route.name === 'admin_change-password') {
         path = 'admin/change-password'
       }
       network.postData(path, this.form).then(response => {

+ 1 - 1
backendEle/src/views/article/category-add.vue

@@ -2,7 +2,7 @@
   <div v-loading="loading">
     <div class="white-box">
       <el-form ref="form" :model="form" label-width="150px" style="width:500px;">
-        <el-form-item label="Category name"><!--分类名称-->
+        <el-form-item label="Category Name"><!--分类名称-->
           <el-input v-model="form.cateName"></el-input>
         </el-form-item>
         <el-form-item>

+ 2 - 2
backendEle/src/views/article/category.vue

@@ -3,14 +3,14 @@
     <div class="white-box">
       <el-table :data="tableData" stripe style="width: 100%;" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column label="Category name" prop="CATE_NAME"></el-table-column><!--分类名称-->
+        <el-table-column label="Category Name" prop="CATE_NAME"></el-table-column><!--分类名称-->
         <el-table-column label="Order" width="100"><!--排序-->
           <template slot-scope="scope">
             <el-input v-model="scope.row.SORT" min="0" max="99"
                       @change="handleChangeSort(scope.row, scope.row.SORT)"></el-input>
           </template>
         </el-table-column>
-        <el-table-column label="Creation time"><!--创建时间-->
+        <el-table-column label="Creation Time"><!--创建时间-->
           <template slot-scope="scope">
             {{tool.formatDate(scope.row.CREATED_AT)}}
           </template>

+ 1 - 1
backendEle/src/views/article/index.vue

@@ -27,7 +27,7 @@
             <el-input v-model="scope.row.SORT" min="0" max="99" @change="handleChangeSort(scope.row, scope.row.SORT)"></el-input>
           </template>
         </el-table-column>
-        <el-table-column label="Creation time"><!--创建时间-->
+        <el-table-column label="Creation Time"><!--创建时间-->
           <template slot-scope="scope">
             {{tool.formatDate(scope.row.CREATED_AT)}}
           </template>

+ 10 - 11
backendEle/src/views/atlas/network-opt.vue

@@ -5,15 +5,15 @@
         <el-tab-pane label="Resettlement network diagram" name="first" v-if="permission.hasPermission(`atlas/network`)"><!-- 安置网络图 -->
           <div class="filter-user" @keyup.enter="enterToGetData()">
             <el-input v-model="mainUserName" size="small" style="width:300px;">
-              <template slot="prepend">Top member<!-- 顶级会员 --></template>
+              <template slot="prepend">Top Member<!-- 顶级会员 --></template>
             </el-input>
             <el-input v-model="expandDeep" size="small" style="width:200px;">
-              <template slot="prepend">Spread depth<!-- 展开深度 --></template>
+              <template slot="prepend">Spread Depth<!-- 展开深度 --></template>
             </el-input>
             <el-input v-model="periodNum" size="small" style="width:150px;" v-show="false">
-              <template slot="prepend">Number of periods<!-- 期数 --></template>
+              <template slot="prepend">Number Of Periods<!-- 期数 --></template>
             </el-input>
-            <el-button type="primary" size="small" @click="getMainData()">confirm<!-- 确定 --></el-button>
+            <el-button type="primary" size="small" @click="getMainData()">Confirm<!-- 确定 --></el-button>
           </div>
           <el-tree :props="props" :data="treeData" node-key="USER_ID" @node-click="getChildData" ref="tree" :indent="0"
                    default-expand-all :height="tool.getTableHeight(true)">
@@ -22,13 +22,12 @@
               <span :class="'el-icon-loading '+ data.displayNone"></span>
               <span :class="data.icon"></span>
               <span>
-                <el-tag type="danger">Number of Layers:{{countTopDeep(data.TOP_NETWORK_DEEP,topDeep)}}</el-tag>
-                <el-tag><!-- 会员编号 -->Member code:{{ node.label }}</el-tag>
+                <el-tag type="danger">Number Of Layers:{{countTopDeep(data.TOP_NETWORK_DEEP,topDeep)}}</el-tag>
+                <el-tag><!-- 会员编号 -->Member Code:{{ node.label }}</el-tag>
                 <el-tag>Name<!-- 姓名 -->:{{data.REAL_NAME}}</el-tag>
                 <el-tag type="danger"><!-- 区位 -->Location:{{data.RELATIVE_LOCATION}}</el-tag>
                 <el-tag type="success"><!-- 级别 -->Level:{{data.DEC_LV_NAME}}</el-tag>
                 <el-tag type="warning"><!-- 聘级 -->Rank:{{data.EMP_LV_NAME}}, {{data.CROWN_LV_NAME}}</el-tag>
-<!--                <el-tag type="warning">&lt;!&ndash; 聘级 &ndash;&gt;Star:{{data.CROWN_LV_NAME}}</el-tag>-->
                 <el-tag><!-- 加入期数 -->Joining Period:{{data.PERIOD_AT}}</el-tag>
               </span>
             </span>
@@ -37,15 +36,15 @@
         <el-tab-pane label="Placement network list" name="two" v-if="permission.hasPermission(`atlas/network-list`)"><!-- 安置网络列表 -->
           <div class="filter-user">
             <el-input v-model="filterForm.userName" size="small" style="width:300px;">
-              <template slot="prepend"><!-- 会员编号 -->Member code</template>
+              <template slot="prepend"><!-- 会员编号 -->Member Code</template>
             </el-input>
             <el-input v-model="filterForm.deep" size="small" style="width:150px;">
-              <template slot="prepend"><!-- 深度 -->depth</template>
+              <template slot="prepend"><!-- 深度 -->Depth</template>
             </el-input>
             <el-input v-model="filterForm.periodNum" size="small" style="width:150px;" v-show="false">
-              <template slot="prepend"><!-- 期数 -->Number of periods</template>
+              <template slot="prepend"><!-- 期数 -->Number Of Periods</template>
             </el-input>
-            <el-button type="primary" size="small" @click="handleFilter">confirm<!-- 确定 --></el-button>
+            <el-button type="primary" size="small" @click="handleFilter">Confirm<!-- 确定 --></el-button>
           </div>
 
           <el-table :data="tableData" stripe style="width: 100%;" :height="tool.getTableHeight(true)">

+ 11 - 26
backendEle/src/views/atlas/relation-opt.vue

@@ -2,18 +2,18 @@
   <div v-loading="loading">
     <div class="white-box">
       <el-tabs v-model="tabActiveName">
-        <el-tab-pane label="Development network diagram" name="first" v-if="permission.hasPermission(`atlas/relation`)"><!-- 开拓网络图 -->
+        <el-tab-pane label="Sponsor Network Diagram" name="first" v-if="permission.hasPermission(`atlas/relation`)"><!-- 开拓网络图 -->
           <div class="filter-user">
             <el-input v-model="mainUserName" size="small" style="width:300px;">
-              <template slot="prepend">Top member<!-- 顶级会员 --></template>
+              <template slot="prepend">Top Member<!-- 顶级会员 --></template>
             </el-input>
             <el-input v-model="expandDeep" size="small" style="width:200px;">
-              <template slot="prepend">Spread depth<!-- 展开深度 --></template>
+              <template slot="prepend">Spread Depth<!-- 展开深度 --></template>
             </el-input>
             <el-input v-model="periodNum" size="small" style="width:150px;" v-show="false">
-              <template slot="prepend">Number of periods<!-- 期数 --></template>
+              <template slot="prepend">Number Of Periods<!-- 期数 --></template>
             </el-input>
-            <el-button type="primary" size="small" @click="getMainData()">confirm<!-- 确定 --></el-button>
+            <el-button type="primary" size="small" @click="getMainData()">Confirm<!-- 确定 --></el-button>
           </div>
           <el-tree :props="props" :data="treeData" node-key="USER_ID" @node-click="getChildData" ref="tree" :indent="0"
                    default-expand-all>
@@ -23,7 +23,7 @@
                     <span :class="data.icon"></span>
                     <span>
                       <el-tag type="danger"><!-- 代数 -->Algebra:{{countTopDeep(data.TOP_RELATION_DEEP,topDeep)}}</el-tag>
-                      <el-tag><!-- 会员编号 -->Member code:{{ node.label }}</el-tag>
+                      <el-tag><!-- 会员编号 -->Member Code:{{ node.label }}</el-tag>
                       <el-tag type="success">Name<!-- 姓名 -->:{{data.REAL_NAME}}</el-tag>
                       <el-tag type="warning">Level<!-- 级别 -->:{{data.DEC_LV_NAME}}</el-tag>
                       <el-tag type="warning">Rank:<!-- 聘级 -->{{data.EMP_LV_NAME}}, {{data.CROWN_LV_NAME}}</el-tag>
@@ -32,18 +32,18 @@
                 </span>
           </el-tree>
         </el-tab-pane>
-        <el-tab-pane label="Development network list" name="two" v-if="permission.hasPermission(`atlas/relation-list`)"><!-- 开拓网络列表 -->
+        <el-tab-pane label="Sponsor Network List" name="two" v-if="permission.hasPermission(`atlas/relation-list`)"><!-- 开拓网络列表 -->
           <div class="filter-user">
             <el-input v-model="filterForm.userName" size="small" style="width:300px;">
-              <template slot="prepend"><!-- 会员编号 -->Member code</template>
+              <template slot="prepend"><!-- 会员编号 -->Member Code</template>
             </el-input>
             <el-input v-model="filterForm.deep" size="small" style="width:150px;">
-              <template slot="prepend"><!-- 深度 -->depth</template>
+              <template slot="prepend"><!-- 深度 -->Depth</template>
             </el-input>
             <el-input v-model="filterForm.periodNum" size="small" style="width:150px;" v-show="false">
-              <template slot="prepend"><!-- 期数 -->Number of periods</template>
+              <template slot="prepend"><!-- 期数 -->Number Of Periods</template>
             </el-input>
-            <el-button type="primary" size="small" @click="handleFilter">confirm<!-- 确定 --></el-button>
+            <el-button type="primary" size="small" @click="handleFilter">Confirm<!-- 确定 --></el-button>
           </div>
 
           <el-table :data="tableData" stripe style="width: 100%;" :height="tool.getTableHeight(true)">
@@ -70,23 +70,8 @@
                     <div v-html="scope.row[tableHeader.index].value"></div>
                   </template>
                 </template>
-                <!--<template v-else>-->
-                  <!--<div v-html="scope.row[tableHeader.index].value"></div>-->
-                <!--</template>-->
               </template>
             </el-table-column>
-            <!--<el-table-column fixed="right" label="操作" width="180" v-if="tableHeaders">-->
-              <!--<template slot-scope="scope">-->
-                <!--<el-dropdown size="small" trigger="click">-->
-                  <!--<el-button type="primary" size="small" @click.stop="">-->
-                    <!--操作该数据<i class="el-icon-arrow-down el-icon&#45;&#45;right"></i>-->
-                  <!--</el-button>-->
-                  <!--<el-dropdown-menu slot="dropdown">-->
-                    <!--<el-dropdown-item command="edit" @click.native="handleShow(scope.row)">查看下级</el-dropdown-item>-->
-                  <!--</el-dropdown-menu>-->
-                <!--</el-dropdown>-->
-              <!--</template>-->
-            <!--</el-table-column>-->
           </el-table>
           <div class="white-box-footer">
             <el-button type="success" size="small" @click="handleExport"

+ 1 - 4
backendEle/src/views/bonus/perf-order.vue

@@ -3,10 +3,7 @@
     <div class="white-box">
       <el-tabs v-model="filterStatus" @tab-click="handleFilterStatusClick">
         <el-tab-pane label="All" name="ALL" :lazy="true"></el-tab-pane><!-- 全部 -->
-        <el-tab-pane label="Welcome Pack order" name="ZC" :lazy="true"></el-tab-pane><!-- 首购单 -->
-        <!--<el-tab-pane label="增购单" name="ZG" :lazy="true"></el-tab-pane>-->
-        <!--<el-tab-pane label="零售单" name="LS" :lazy="true"></el-tab-pane>-->
-        <!--<el-tab-pane label="复销单" name="FX" :lazy="true"></el-tab-pane>-->
+        <el-tab-pane label="Welcome Pack Order" name="ZC" :lazy="true"></el-tab-pane><!-- 首购单 -->
       </el-tabs>
       <div class="filter-box">
         <filter-user ref="filterUser" :filter-types="filterTypes" @select-value="handleFilterUser"></filter-user>

+ 177 - 156
backendEle/src/views/bonus/period.vue

@@ -103,177 +103,198 @@
       <div class="white-box-footer">
         <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
       </div>
+      <div>
+        <el-button type="primary" size="small" @click="doAutoWithdraw()">
+          批量提现
+        </el-button>
+      </div>
     </div>
   </div>
 </template>
 
 <script>
-  import Vue from 'vue'
-  import {BONUS_WEBSOCKET_HOST} from '@/utils/config'
-  import userInfo from '@/utils/userInfo'
-  import network from './../../utils/network'
-  import tool from './../../utils/tool'
-  import store from '@/utils/vuexStore'
-  import FilterUser from '@/components/FilterUser'
-  import permission from '@/utils/permission'
-  import Pagination from '@/components/Pagination'
-  import filterHelper from '../../utils/filterHelper'
+import Vue from 'vue'
+import {BONUS_WEBSOCKET_HOST} from '@/utils/config'
+import userInfo from '@/utils/userInfo'
+import network from './../../utils/network'
+import tool from './../../utils/tool'
+import store from '@/utils/vuexStore'
+import FilterUser from '@/components/FilterUser'
+import permission from '@/utils/permission'
+import Pagination from '@/components/Pagination'
+import filterHelper from '../../utils/filterHelper'
 
-  export default {
-    name: 'bonus-period',
-    components: {FilterUser,Pagination},
-    created() {
-      let wsServer = BONUS_WEBSOCKET_HOST
-      let webSocket = new WebSocket(wsServer)
-      webSocket.onopen = function (evt) {
-        let userId = userInfo.userId()
-        let sendData = {app: 'admin', userId: userId}
-        webSocket.send(JSON.stringify(sendData))
+export default {
+  name: 'bonus-period',
+  components: {FilterUser, Pagination},
+  created () {
+    let wsServer = BONUS_WEBSOCKET_HOST
+    let webSocket = new WebSocket(wsServer)
+    webSocket.onopen = function (evt) {
+      let userId = userInfo.userId()
+      let sendData = {app: 'admin', userId: userId}
+      webSocket.send(JSON.stringify(sendData))
+    }
+    webSocket.onmessage = (env) => {
+      let data = JSON.parse(env.data)
+      if (data.handle === 'adminAsyncPercent') {
+        this.onMessageCallback(data)
       }
-      webSocket.onmessage = (env) => {
-        let data = JSON.parse(env.data)
-        if (data.handle === 'adminAsyncPercent') {
-          this.onMessageCallback(data)
-        }
+    }
+  },
+  mounted () {
+    this.getData(this.currentPage, this.pageSize)
+    store.state.socket.onMessageCallback = this.onMessageCallback
+  },
+  data () {
+    return {
+      tableData: null,
+      loading: true,
+      multipleSelection: [],
+      currentPage: 1,
+      totalPages: 1,
+      totalCount: 1,
+      pageSize: 10,
+      tool: tool,
+      permission: permission,
+      filterTypes: {
+        'periodNum': {isUserTable: false, name: 'Number of periods'}, // 期数
+        'year': {isUserTable: false, name: 'Bonus Year'}, // 所在结算年
+        'month': {isUserTable: false, name: 'Bonus Month'}, // 所在结算月
+        'startTime': {isUserTable: false, name: 'Period start time', other: 'date'}, // 期数开始时间
+        'endTime': {isUserTable: false, name: 'Period end time', other: 'date'}, // 期数结束时间
+        'closedAt': {isUserTable: false, name: 'Closing time', other: 'date'}, // 封期时间
+        'perfStartedAt': {isUserTable: false, name: 'Start time of generating performance sheet', other: 'date'}, // 生成业绩单开始时间
+        'perfedAt': {isUserTable: false, name: 'End time of generating performance sheet', other: 'date'}, // 生成业绩单结束时间
+        'calStartedAt': {isUserTable: false, name: 'Settlement start time', other: 'date'}, // 结算开始时间
+        'calculatedAt': {isUserTable: false, name: 'Settlement end time', other: 'date'}, // 结算结束时间
+        'sendStartedAt': {isUserTable: false, name: 'Network connection start time', other: 'date'}, // 挂网开始时间
+        'sentAt': {isUserTable: false, name: 'End time of network connection', other: 'date'} // 挂网结束时间
+      },
+      filterModel: {},
+      percentList: {
+        'PERF_PERCENT': {},
+        'CALC_PERCENT': {},
+        'SENT_PERCENT': {}
       }
+    }
+  },
+  methods: {
+    closeHandle (row) {
+      this.$confirm('Confirm to manually seal the current period?', 'Hint', { // '确定对当前期进行手动封期操作?', '提示'
+        confirmButtonText: 'confirm', // 确定
+        cancelButtonText: 'cancel', // 取消
+        type: 'warning'
+      }).then(() => {
+        return network.getData(`bonus/close-period/${row.PERIOD_NUM}`)
+      }).then(response => {
+        this.$message({
+          message: response,
+          type: 'success'
+        })
+        this.getData(this.currentPage, this.pageSize)
+      }).catch(response => {
+      })
     },
-    mounted() {
-      this.getData(this.currentPage, this.pageSize)
-      store.state.socket.onMessageCallback = this.onMessageCallback
-    },
-    data() {
-      return {
-        tableData: null,
-        loading: true,
-        multipleSelection: [],
-        currentPage: 1,
-        totalPages: 1,
-        totalCount: 1,
-        pageSize: 10,
-        tool: tool,
-        permission: permission,
-        filterTypes: {
-          'periodNum': {isUserTable: false, name: 'Number of periods'},//期数
-          'year': {isUserTable: false, name: 'Bonus Year'},//所在结算年
-          'month': {isUserTable: false, name: 'Bonus Month'},//所在结算月
-          'startTime': {isUserTable: false, name: 'Period start time', other: 'date'},//期数开始时间
-          'endTime': {isUserTable: false, name: 'Period end time', other: 'date'},//期数结束时间
-          'closedAt': {isUserTable: false, name: 'Closing time', other: 'date'},//封期时间
-          'perfStartedAt': {isUserTable: false, name: 'Start time of generating performance sheet', other: 'date'},//生成业绩单开始时间
-          'perfedAt': {isUserTable: false, name: 'End time of generating performance sheet', other: 'date'},//生成业绩单结束时间
-          'calStartedAt': {isUserTable: false, name: 'Settlement start time', other: 'date'},//结算开始时间
-          'calculatedAt': {isUserTable: false, name: 'Settlement end time', other: 'date'},//结算结束时间
-          'sendStartedAt': {isUserTable: false, name: 'Network connection start time', other: 'date'},//挂网开始时间
-          'sentAt': {isUserTable: false, name: 'End time of network connection', other: 'date'},//挂网结束时间
-        },
-        filterModel: {},
-        percentList: {
-          'PERF_PERCENT': {},
-          'CALC_PERCENT': {},
-          'SENT_PERCENT': {},
-        },
-      }
+    calcHandle (row) {
+      this.$confirm('Confirm to perform settlement operation for the current period?', 'Hint', { // '确定对当前期进行结算操作?', '提示'
+        confirmButtonText: 'confirm', // 确定
+        cancelButtonText: 'cancel', // 取消
+        type: 'warning'
+      }).then(() => {
+        return network.getData(`bonus/calc-period/${row.PERIOD_NUM}`)
+      }).then(response => {
+        this.$message({
+          message: response,
+          type: 'success'
+        })
+        this.getData(this.currentPage, this.pageSize)
+      }).catch(response => {
+      })
     },
-    methods: {
-      closeHandle(row) {
-        this.$confirm('Confirm to manually seal the current period?', 'Hint', {//'确定对当前期进行手动封期操作?', '提示'
-          confirmButtonText: 'confirm', // 确定
-          cancelButtonText: 'cancel', // 取消
-          type: 'warning'
-        }).then(() => {
-          return network.getData(`bonus/close-period/${row.PERIOD_NUM}`)
-        }).then(response => {
-          this.$message({
-            message: response,
-            type: 'success'
-          })
-          this.getData(this.currentPage, this.pageSize)
-        }).catch(response => {
+    perfHandle (row) {
+      this.$confirm('Confirm to generate performance sheet for the current period?', 'Hint', { // '确定对当前期进行生成业绩单操作?', '提示'
+        confirmButtonText: 'confirm', // 确定
+        cancelButtonText: 'cancel', // 取消
+        type: 'warning'
+      }).then(() => {
+        return network.getData(`bonus/perf-period/${row.PERIOD_NUM}`)
+      }).then(response => {
+        this.$message({
+          message: response,
+          type: 'success'
         })
-      },
-      calcHandle(row) {
-        this.$confirm('Confirm to perform settlement operation for the current period?', 'Hint', {//'确定对当前期进行结算操作?', '提示'
-          confirmButtonText: 'confirm', // 确定
-          cancelButtonText:  'cancel', // 取消
-          type: 'warning'
-        }).then(() => {
-          return network.getData(`bonus/calc-period/${row.PERIOD_NUM}`)
-        }).then(response => {
-          this.$message({
-            message: response,
-            type: 'success'
-          })
-          this.getData(this.currentPage, this.pageSize)
-        }).catch(response => {
+        this.getData(this.currentPage, this.pageSize)
+      }).catch(response => {
+      })
+    },
+    sentHandle (row) {
+      this.$confirm('Are you sure to connect the current period? Performance sheet and settlement cannot be generated after network connection', 'Hint', { // '确定对当前期进行挂网操作?挂网后无法生成业绩单和结算', '提示'
+        confirmButtonText: 'confirm', // 确定
+        cancelButtonText: 'cancel', // 取消
+        type: 'warning'
+      }).then(() => {
+        return network.getData(`bonus/send-period/${row.PERIOD_NUM}`)
+      }).then(response => {
+        this.$message({
+          message: response,
+          type: 'success'
         })
-      },
-      perfHandle(row) {
-        this.$confirm('Confirm to generate performance sheet for the current period?', 'Hint', {//'确定对当前期进行生成业绩单操作?', '提示'
-          confirmButtonText: 'confirm', // 确定
-          cancelButtonText:  'cancel', // 取消
-          type: 'warning'
-        }).then(() => {
-          return network.getData(`bonus/perf-period/${row.PERIOD_NUM}`)
-        }).then(response => {
-          this.$message({
-            message: response,
-            type: 'success'
-          })
-          this.getData(this.currentPage, this.pageSize)
-        }).catch(response => {
+        this.getData(this.currentPage, this.pageSize)
+      }).catch(response => {
+      })
+    },
+    doAutoWithdraw () {
+      this.$confirm('全部提现?', 'Hint', {
+        confirmButtonText: 'confirm', // 确定
+        cancelButtonText: 'cancel', // 取消
+        type: 'warning'
+      }).then(() => {
+        return network.getData(`bonus/auto-withdraw`)
+      }).then(response => {
+        this.$message({
+          message: response,
+          type: 'success'
         })
-      },
-      sentHandle(row) {
-        this.$confirm('Are you sure to connect the current period? Performance sheet and settlement cannot be generated after network connection', 'Hint', {//'确定对当前期进行挂网操作?挂网后无法生成业绩单和结算', '提示'
-          confirmButtonText: 'confirm', // 确定
-          cancelButtonText:  'cancel', // 取消
-          type: 'warning'
-        }).then(() => {
-          return network.getData(`bonus/send-period/${row.PERIOD_NUM}`)
-        }).then(response => {
-          this.$message({
-            message: response,
-            type: 'success'
-          })
+        this.getData(this.currentPage, this.pageSize)
+      }).catch(response => {
+      })
+    },
+    viewHandle (row) {
+      this.$router.push({path: `/bonus/period-detail/${row.PERIOD_NUM}`})
+    },
+    handleSelectionChange (val) {
+      this.multipleSelection = val
+    },
+    handleCurrentChange (page) {
+      this.getData(page, this.pageSize)
+    },
+    handleSizeChange (pageSize) {
+      this.getData(this.currentPage, pageSize)
+    },
+    handleFilterUser (filterData) {
+      filterHelper.handleFilterUser(this, filterData)
+    },
+    handleFilter () {
+      this.getData()
+    },
+    getData (page, pageSize) {
+      let filterData = this.filterModel
+      let vueObj = this
+      network.getPageData(this, 'bonus/period', page, pageSize, filterData, function (response) {
+        vueObj.allData = response
+      }, null, ['PERF_PERCENT', 'CALC_PERCENT', 'SENT_PERCENT'])
+    },
+    onMessageCallback (data) {
+      if (data) {
+        if (data.other && data.other.MODEL === 'PERIOD' && data.other.ID) {
+          this.$set(this.percentList[data.other.FIELD], data.other.ID, data.percent)
+        }
+        if (data.other && data.other.MODEL === 'PERIOD' && data.percent === 100) {
           this.getData(this.currentPage, this.pageSize)
-        }).catch(response => {
-        })
-      },
-      viewHandle(row) {
-        this.$router.push({path: `/bonus/period-detail/${row.PERIOD_NUM}`})
-      },
-      handleSelectionChange(val) {
-        this.multipleSelection = val
-      },
-      handleCurrentChange(page) {
-        this.getData(page, this.pageSize)
-      },
-      handleSizeChange(pageSize) {
-        this.getData(this.currentPage, pageSize)
-      },
-      handleFilterUser(filterData) {
-        filterHelper.handleFilterUser(this, filterData)
-      },
-      handleFilter() {
-        this.getData()
-      },
-      getData(page, pageSize) {
-        let filterData = this.filterModel
-        let vueObj = this
-        network.getPageData(this, 'bonus/period', page, pageSize, filterData, function (response) {
-          vueObj.allData = response
-        }, null, ['PERF_PERCENT', 'CALC_PERCENT', 'SENT_PERCENT'])
-      },
-      onMessageCallback(data) {
-        if (data) {
-          if (data.other && data.other.MODEL === 'PERIOD' && data.other.ID) {
-            this.$set(this.percentList[data.other.FIELD], data.other.ID, data.percent)
-          }
-          if (data.other && data.other.MODEL === 'PERIOD' && data.percent === 100) {
-            this.getData(this.currentPage, this.pageSize)
-          }
         }
-      },
+      }
     }
   }
+}
 </script>

+ 10 - 10
backendEle/src/views/file/export.vue

@@ -12,7 +12,7 @@
       <el-table class="table-box" ref="multipleTable" :data="tableData" stripe style="width: 100%;"
                 @selection-change="handleSelectionChange" :height="tool.getTableHeight(true)">
 <!--        <el-table-column type="selection" width="55"></el-table-column>-->
-        <el-table-column label="Export name" width="450"><!-- 导出名称 -->
+        <el-table-column label="Export Name" width="450"><!-- 导出名称 -->
           <template slot-scope="scope">
             {{scope.row.EXPORT_NAME}}
           </template>
@@ -24,29 +24,29 @@
             </el-button>
           </template>
         </el-table-column>
-        <el-table-column label="Operation administrator"><!-- 操作管理员 -->
+        <el-table-column label="Operation Administrator"><!-- 操作管理员 -->
           <template slot-scope="scope">
             {{scope.row.ADMIN_NAME}}
           </template>
         </el-table-column>
-        <el-table-column label="Export progress"><!-- 导出进度 -->
+        <el-table-column label="Export Progress"><!-- 导出进度 -->
           <template slot-scope="scope">
             <el-progress type="circle" :percentage="Number.parseInt(percentList['EXPORT_PERCENT'][scope.row.ID])"
                          :width="50"
                          :stroke-width="3"></el-progress>
           </template>
         </el-table-column>
-        <el-table-column label="Export start" width="180"><!-- 导出开始 -->
+        <el-table-column label="Export Start" width="180"><!-- 导出开始 -->
           <template slot-scope="scope">
             {{tool.formatDate(scope.row.STARTED_AT)}}
           </template>
         </el-table-column>
-        <el-table-column label="Export complete" width="180"><!-- 导出完成 -->
+        <el-table-column label="Export Complete" width="180"><!-- 导出完成 -->
           <template slot-scope="scope">
             {{tool.formatDate(scope.row.ENDED_AT)}}
           </template>
         </el-table-column>
-        <el-table-column label="Creation time" width="180"><!-- 创建时间 -->
+        <el-table-column label="Creation Time" width="180"><!-- 创建时间 -->
           <template slot-scope="scope">
             {{tool.formatDate(scope.row.CREATED_AT)}}
           </template>
@@ -110,10 +110,10 @@
         tool: tool,
         permission: permission,
         filterTypes: {
-          'EXPORT_NAME': {isUserTable: false, name: 'Export name'},//导出名称
-          'STARTED_AT': {isUserTable: false, name: 'Export start time', other: 'date'},//导出开始时间
-          'ENDED_AT': {isUserTable: false, name: 'Export end time', other: 'date'},//导出结束时间
-          'createdAt': {isUserTable: false, name: 'Creation time', other: 'date'},//创建时间
+          'EXPORT_NAME': {isUserTable: false, name: 'Export Name'},//导出名称
+          'STARTED_AT': {isUserTable: false, name: 'Export Start Time', other: 'date'},//导出开始时间
+          'ENDED_AT': {isUserTable: false, name: 'Export End Time', other: 'date'},//导出结束时间
+          'createdAt': {isUserTable: false, name: 'Creation Time', other: 'date'},//创建时间
         },
         filterModel: {},
         filterStatus: '0',

+ 4 - 10
backendEle/src/views/user/change-user-dec-level.vue

@@ -2,19 +2,13 @@
   <div v-loading="loading">
     <div class="white-box">
       <el-form ref="form" :model="form" label-width="250px" class="form-page">
-        <el-form-item label="Member code"><!-- 会员编号 -->
+        <el-form-item label="Member Code"><!-- 会员编号 -->
           <el-input v-model="form.userName" @change="handleChange"></el-input>
-          <el-tag v-show="userInfo.REAL_NAME!==null"><!-- 会员姓名 -->Member name:{{userInfo.REAL_NAME}} <!-- 当前级别 -->Current level:{{userInfo.LEVEL_NAME}}
+          <el-tag v-show="userInfo.REAL_NAME!==null"><!-- 会员姓名 -->Member Name:{{userInfo.REAL_NAME}} <!-- 当前级别 -->Current Level:{{userInfo.LEVEL_NAME}}
           </el-tag>
         </el-form-item>
-        <!--<el-form-item label="期数">-->
-          <!--<el-select v-model="form.periodNum">-->
-            <!--<el-option v-for="(item,key) in periodArr" :value="item"-->
-                       <!--:key="key"></el-option>-->
-          <!--</el-select>-->
-        <!--</el-form-item>-->
-        <el-form-item label="entry level"><!-- 报单级别 -->
-          <el-select v-model="form.levelId" placeholder="Please select the entry level"><!-- 请选择报单级别 -->
+        <el-form-item label="Entry Level"><!-- 报单级别 -->
+          <el-select v-model="form.levelId" placeholder="Please Select The Entry Level"><!-- 请选择报单级别 -->
             <el-option v-for="(item,key) in allDecLevel" :label="item.LEVEL_NAME" :value="item.ID"
                        :key="key"></el-option>
           </el-select>

+ 3 - 3
backendEle/src/views/user/change-user-dec-role.vue

@@ -2,14 +2,14 @@
   <div v-loading="loading">
     <div class="white-box">
       <el-form ref="form" :model="form" label-width="250px" class="form-page">
-        <el-form-item label="Member code"><!-- 会员编号 -->
+        <el-form-item label="Member Code"><!-- 会员编号 -->
           <el-input v-model="form.userName" @change="handleChange"></el-input>
-          <el-tag v-show="userInfo.REAL_NAME!==null"><!-- 会员姓名 -->Member name:{{userInfo.REAL_NAME}} <!-- 当前级别 -->Current level:{{allDecRole[userInfo.DEC_ROLE_ID] ?
+          <el-tag v-show="userInfo.REAL_NAME!==null"><!-- 会员姓名 -->Member Name:{{userInfo.REAL_NAME}} <!-- 当前级别 -->Current Level:{{allDecRole[userInfo.DEC_ROLE_ID] ?
             allDecRole[userInfo.DEC_ROLE_ID]['ROLE_NAME'] : ''}}
           </el-tag>
         </el-form-item>
         <el-form-item label="Stockist Level"><!-- 报单中心级别 -->
-          <el-select v-model="form.levelId" placeholder="Please select the Stockist level"><!-- 请选择报单中心级别 -->
+          <el-select v-model="form.levelId" placeholder="Please Select The Stockist Level"><!-- 请选择报单中心级别 -->
             <el-option v-for="(item,key) in allDecRole" :label="item.ROLE_NAME" :value="item.ID"
                        :key="key"></el-option>
           </el-select>

+ 17 - 0
common/helpers/Cache.php

@@ -341,4 +341,21 @@ class Cache
         return UserRelation::getAllParentsFromRedis($userId);
     }
 
+    /**
+     * 设置 当前自动发放奖金的状态
+     *
+     *
+     */
+    public static function setWithdrawLock($status){
+        Yii::$app->cache->set('withdrawLock', $status);
+    }
+
+    /**
+     * 获取 当前自动发放奖金的状态
+     *
+     *
+     */
+    public static function getWithdrawLock(){
+        return Yii::$app->cache->get('withdrawLock');
+    }
 }

+ 2 - 2
common/helpers/bonus/BonusCalc.php

@@ -1827,13 +1827,13 @@ class BonusCalc extends BaseObject {
         $subQuery = CalcBonusQY::find()
             ->yearMonth($this->_calcYearMonth)
             ->where('CALC_MONTH = :CALC_MONTH AND LAST_CROWN_LV <> :NO_CROWN_LV', [':CALC_MONTH' => $this->_calcYearMonth, ':NO_CROWN_LV' => StarCrownLevel::NO_LEVEL_ID])
-            ->select('USER_ID,LAST_DEC_LV,LAST_CROWN_LV,LAST_STATUS,LEVEL_NAME,SORT')
+            ->select('USER_ID,LAST_DEC_LV,LAST_CROWN_LV,LAST_EMP_LV,LAST_STATUS,LEVEL_NAME,SORT')
             ->joinWith(['starCrown' => function($query) {
                 $query->select(['LEVEL_NAME', 'SORT']);
             }])
             ->having(1)
             ->orderBy('USER_ID ASC, SORT DESC');
-        $userStarCrownObj = (new Query())->from(['u' => $subQuery])->select('USER_ID,LAST_DEC_LV,LAST_CROWN_LV,LAST_STATUS,LEVEL_NAME,SORT')->groupBy('USER_ID')->indexBy('USER_ID')->all();
+        $userStarCrownObj = (new Query())->from(['u' => $subQuery])->select('USER_ID,LAST_DEC_LV,LAST_CROWN_LV,LAST_EMP_LV,LAST_STATUS,LEVEL_NAME,SORT')->groupBy('USER_ID')->indexBy('USER_ID')->all();
 
         // 奖金点数综合
         $bonusPointComplex = 0;

+ 14 - 14
common/libs/export/BaseExport.php

@@ -661,31 +661,31 @@ EOT;
             $orderBase = <<<ORDER
             <table border="1" style="table-layout: fixed; padding: 10px 20px;" width="100%">
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Code</td>
                     <td width="70%">{$userId}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member name</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Name</td>
                     <td width="70%">{$userName}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member address</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Address</td>
                     <td width="70%">{$address}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member phone</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Phone</td>
                     <td width="70%">{$mobile}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order Code</td>
                     <td width="70%">{$orderSn}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation time</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation Time</td>
                     <td width="70%">{$orderAt}</td>
                 </tr>
                 <tr>
-                    <td class="bg" style="font-weight: bold; font-size: 14px; text-align: center;">Order detail</td>
+                    <td class="bg" style="font-weight: bold; font-size: 14px; text-align: center;">Order Detail</td>
                     <td class="bg"></td>
                 </tr>
             </table>
@@ -916,31 +916,31 @@ EOT;
             $orderBase = <<<ORDER
             <table border="1" style="table-layout: fixed; padding: 10px 20px;" width="100%">
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Code</td>
                     <td width="70%">{$userId}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member name</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Name</td>
                     <td width="70%">{$userName}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member address</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Address</td>
                     <td width="70%">{$address}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member phone</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Phone</td>
                     <td width="70%">{$mobile}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order Code</td>
                     <td width="70%">{$orderSn}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation time</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation Time</td>
                     <td width="70%">{$orderAt}</td>
                 </tr>
                 <tr>
-                    <td class="bg" style="font-weight: bold; font-size: 14px; text-align: center;">Order detail</td>
+                    <td class="bg" style="font-weight: bold; font-size: 14px; text-align: center;">Order Detail</td>
                     <td class="bg"></td>
                 </tr>
             </table>

+ 2 - 2
common/models/UserNetwork.php

@@ -293,8 +293,8 @@ class UserNetwork extends \common\components\ActiveRecord
                     'TOP_NETWORK_DEEP' => $data['TOP_DEEP'],
                     'REAL_NAME' => $baseInfo['REAL_NAME'],
                     'DEC_LV_NAME' => $decLevelConfig[$baseInfo['DEC_LV']]['LEVEL_NAME'],
-                    'EMP_LV_NAME' => isset($empLevelConfig[$baseInfo['EMP_LV']])?$empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME']:'',
-                    'CROWN_LV_NAME' => isset($crownLevelConfig[$baseInfo['CROWN_LV']])?$crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME']:'',
+                    'EMP_LV_NAME' => isset($empLevelConfig[$baseInfo['EMP_LV']])?$empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME']:'0-Star Director',
+                    'CROWN_LV_NAME' => isset($crownLevelConfig[$baseInfo['CROWN_LV']])?$crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME']:'0-Star Crown',
 //                    'MOBILE' => $baseInfo['MOBILE'],
                     'PERIOD_AT' => $baseInfo['PERIOD_AT'],
                 ]);

+ 2 - 2
common/models/UserRelation.php

@@ -214,8 +214,8 @@ class UserRelation extends \common\components\ActiveRecord
                     'TOP_RELATION_DEEP' => $data['TOP_DEEP'],
                     'REAL_NAME' => $baseInfo['REAL_NAME'],
                     'DEC_LV_NAME' => $decLevelConfig[$baseInfo['DEC_LV']]['LEVEL_NAME'],
-                    'EMP_LV_NAME' => isset($empLevelConfig[$baseInfo['EMP_LV']])?$empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME']:'',
-                    'CROWN_LV_NAME' => isset($crownLevelConfig[$baseInfo['CROWN_LV']])?$crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME']:'',
+                    'EMP_LV_NAME' => isset($empLevelConfig[$baseInfo['EMP_LV']])?$empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME']:'0-Star Director',
+                    'CROWN_LV_NAME' => isset($crownLevelConfig[$baseInfo['CROWN_LV']])?$crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME']:'0-Star Crown',
                     'PERIOD_AT' => $baseInfo['PERIOD_AT'],
                 ]);
                 // 获取字节点数量

+ 17 - 0
common/models/forms/DeclarationForm.php

@@ -647,6 +647,14 @@ class DeclarationForm extends Model
                     'GOODS_TITLE' => $decPackage['PACKAGE_NAME'],
                     'EMAIL' => $this->email
                 ];
+                // 更改库存和状态
+                $data = DeclarationPackage::find()->where(['ID' => $decPackage['ID']])->one();
+                $data->STORE_NUMS = $data->STORE_NUMS - 1;
+                if($data->STORE_NUMS <= 0){
+                    $data->STATUS = 0;
+                    $data->UPDATED_AT = Date::nowTime();
+                }
+                $data->update();
             }else{
                 $ids = $this->goodsId;
                 $totalAmount = 0;
@@ -670,6 +678,14 @@ class DeclarationForm extends Model
                                 'EMAIL' => $this->email,
                                 'TAX_RATE' => $goods['TAX_RATE'],
                             ];
+                            // 更改库存和状态
+                            $data = ShopGoods::find()->where(['ID' => $goods['ID']])->one();
+                            $data->STORE_NUMS = $data->STORE_NUMS - intval($v);
+                            if($data->STORE_NUMS <= 0){
+                                $data->STATUS = 0;
+                                $data->UPDATED_AT = Date::nowTime();
+                            }
+                            $data->update();
                         }
                     }
                 }
@@ -882,6 +898,7 @@ class DeclarationForm extends Model
             return $addressModel;
         }else{
             $addressModel = new ReceiveAddress();
+            Cash::changeUserCash(\Yii::$app->user->id, 'CASH', -abs($this->_decAmount), ['REMARK' =>'To'.$this->insertUserName.'Entry']);
             return $addressModel;
         }
     }

+ 26 - 74
common/models/forms/DeclarationLoopForm.php

@@ -117,65 +117,32 @@ class DeclarationLoopForm extends Model
             foreach ($this->data as $value){
 				
 				/**
-				                 * 2022-04-29
-				                 * York
-				                 * 获取商品套餐信息
-				                 */
-				                if (isset($value['packageId']) && $value['packageId']){
-				
-				
-				                    $packagedata = DeclarationPackage::findOneAsArray('ID=:ID', [':ID' => $value['packageId']]);
-				                    //var_dump($packagedata['ID']);
-				                    if($packagedata['STORE_NUMS']>0){
-				                        $data =  DeclarationPackage::find()->where(['ID'=> $packagedata['ID'] ])->one();
-				                        $goods_store_nums = $data->STORE_NUMS - 1;
-				                        $data->STORE_NUMS = $goods_store_nums;
-				                        $data->update();
-				//                        var_dump('输出一下数量');
-				//                        var_dump($goods_store_nums);
-				                        //库存为0下架套餐
-				                        if ($goods_store_nums <= 0){
-				                            $data->STATUS = 0;
-				                            $data->UPDATED_AT = Date::nowTime();
-				//                            var_dump('购买后套餐库存为0 下架拉');
-				                        }
-				
-				                    }else{
-				                        throw new Exception($packagedata['PACKAGE_NAME'].'Insufficient inventory');// 库存不足
-				                    }
-				
-				
-				                }
-								
-								if (count($value['goodsId']) > 0 && (count($value['goodsId']) == count($value['goodsNum']))){
-								    for ($i=0;$i<count($value['goodsId']);$i++){
-								        $goods = ShopGoods::findOneAsArray('ID=:ID',[':ID'=> $value['goodsId'][$i]]);
-								        if ($goods['STATUS'] == 1 ){
-								            if($goods['STORE_NUMS'] >= $value['goodsNum'][$i]){
-								                $data = ShopGoods::find()->where(['ID' => $value['goodsId'][$i]])->one();
-								                $goods_store_nums = $data->STORE_NUMS - $value['goodsNum'][$i];
-								                $data->STORE_NUMS = $goods_store_nums;
-								                $data->update();
-								                if($goods_store_nums <= 0){
-								                    $data->STATUS = 0;
-								                    $data->UPDATED_AT = Date::nowTime();
-								                    $data->update();
-								                }
-								            }else{
-								                throw new Exception($goods['GOODS_NAME'].'Insufficient inventory');// 商品库存不足
-								            }
-								
-								        }else{
-								            throw new Exception($goods['GOODS_NAME'].'Sold out');// 商品已下架
-								        }
-								
-								    }
-								
-								}
-				
-				
-				
-				
+                 * 2022-04-29
+                 * York
+                 * 获取商品套餐信息
+                 */
+                if (isset($value['packageId']) && $value['packageId']){
+
+                    $packagedata = DeclarationPackage::findOneAsArray('ID=:ID', [':ID' => $value['packageId']]);
+                    //var_dump($packagedata['ID']);
+                    if($packagedata['STORE_NUMS']<=0){
+                        throw new Exception($packagedata['PACKAGE_NAME'].'Insufficient inventory');// 库存不足
+                    }
+                }
+
+                if (count($value['goodsId']) > 0 && (count($value['goodsId']) == count($value['goodsNum']))){
+                    for ($i=0;$i<count($value['goodsId']);$i++){
+                        $goods = ShopGoods::findOneAsArray('ID=:ID',[':ID'=> $value['goodsId'][$i]]);
+                        if ($goods['STATUS'] == 1 ){
+                            if($goods['STORE_NUMS'] < $value['goodsNum'][$i]){
+                                throw new Exception($goods['GOODS_NAME'].'Insufficient inventory');// 商品库存不足
+                            }
+                        }else{
+                            throw new Exception($goods['GOODS_NAME'].'Sold out');// 商品已下架
+                        }
+                    }
+                }
+
                 if(is_array($value)){
                     foreach($value as $key=>$decFormData){
                         $model->$key = $decFormData;
@@ -194,26 +161,11 @@ class DeclarationLoopForm extends Model
                     if(!$model->add($this->data)){
                         throw new Exception(Form::formatErrorsForApi($model->getErrors()));
                     }
-//                    $model->type = null;
-//                    $model->decSn = null;
-//                    $model->userId = null;
-//                    $model->toUserId = null;
-//                    $model->decPv = null;
-//                    $model->insertUserName = null;
-//                    $model->insertUserIdCard = null;
-//                    $model->conUserName = null;
-//                    $model->recUserName = null;
-//                    $model->location = null;
                 } else {
                     throw new Exception('The format of the report data is incorrect');// 报单数据格式错误
                 }
             }
 
-            // 把这几个首购单的注册用户点位绑定到一起
-//            UserBind::zcBind($allZcUserIds, $zcUserIdCard);
-//            if((microtime(true) - $startTime) >= 20)  {
-//                throw new Exception('服务端报单超时');
-//            }
             $transaction->commit();
         } catch (\Exception $e){
             $transaction->rollBack();

+ 28 - 32
common/models/forms/DeclarationUpgradeForm.php

@@ -282,39 +282,35 @@ class DeclarationUpgradeForm extends Model
                 throw new Exception(Form::formatErrorsForApi($orderModel->getErrors()));
             }
 			
-			/**
-			  * 2022-05-10
-			  * York
-			  */
-			 foreach ($this->goodsNum as $k => $v) {
-			     if ($v) {
-			         $goods = ShopGoods::findOneAsArray('ID=:ID',[':ID'=> $this->goodsId[$k]]);
-			
-			         $storenums = $goods['STORE_NUMS'] - $this->goodsNum[$k];
-			         if($goods['STATUS']==1){
-			            if($goods['STORE_NUMS'] >=$this->goodsNum[$k]){
-			                $data = ShopGoods::find()->where(['ID' => $this->goodsId[$k]])->one();
-			                $data->STORE_NUMS = $storenums;
-			                $data->update();
-			                if ($storenums==0){
-			                    $data->STATUS = 0;
-			                    $data->UPDATED_AT = Date::nowTime();
-			                    $data->update();
-			                }
-			            }else{
-//			                throw new Exception("商品".$goods['GOODS_NAME']."库存不足");
-                            throw new Exception("product".$goods['GOODS_NAME']."Insufficient inventory");
-			            }
-			         }else{
-//			             throw new Exception("商品".$goods['GOODS_NAME']."已下架");
-                         throw new Exception("product".$goods['GOODS_NAME']."Removed from the shelf");
-			         }
-			     }
-			 }
-			// exit();
-
-
+            /**
+             * 2022-05-10
+             * York
+             */
+            foreach ($this->goodsNum as $k => $v) {
+                if ($v) {
+                    $goods = ShopGoods::findOneAsArray('ID=:ID',[':ID'=> $this->goodsId[$k]]);
 
+                    $storenums = $goods['STORE_NUMS'] - $this->goodsNum[$k];
+                    if($goods['STATUS']==1){
+                        if($goods['STORE_NUMS'] >=$this->goodsNum[$k]){
+                            $data = ShopGoods::find()->where(['ID' => $this->goodsId[$k]])->one();
+                            $data->STORE_NUMS = $storenums;
+                            $data->update();
+                            if ($storenums==0){
+                                $data->STATUS = 0;
+                                $data->UPDATED_AT = Date::nowTime();
+                                $data->update();
+                            }
+                        }else{
+//                          throw new Exception("商品".$goods['GOODS_NAME']."库存不足");
+                            throw new Exception("product".$goods['GOODS_NAME']."Insufficient inventory");
+                        }
+                    }else{
+//                          throw new Exception("商品".$goods['GOODS_NAME']."已下架");
+                        throw new Exception("product".$goods['GOODS_NAME']."Removed from the shelf");
+                    }
+                }
+            }
 
             // 加入商品到订单商品表
             foreach($this->_orderGoods as $key=>$value){

+ 2 - 2
common/models/forms/OrderForm.php

@@ -713,7 +713,7 @@ class OrderForm extends Model
 
         //扣除会员余额/积分
         if($this->payType=='cash') {
-            Cash::changeUserCash(\Yii::$app->user->id, 'CASH', -abs($this->_payAmount), ['REMARK' => '会员复销余额支付']);
+            Cash::changeUserCash(\Yii::$app->user->id, 'CASH', -abs($this->_payAmount), ['REMARK' => 'Members reselling balance payment']); // 会员复销余额支付
         } else if ($this->payType=='exchange') {
             Balance::changeUserBonus(\Yii::$app->user->id,'exchange_points', -abs($this->_payAmount),['DEAL_TYPE_ID' => DealType::EXCHANGE_POINTS_EXCHANGE,'REMARK' => '会员兑换积分兑换']);
         } else if ($this->payType == 'tourism_points') {
@@ -956,7 +956,7 @@ class OrderForm extends Model
 
         //扣除会员余额/积分
         if($this->payType=='cash') {
-            Cash::changeUserCash($loginUserId, 'CASH', -abs($this->_payAmount), ['REMARK' => '会员复销余额支付']);
+            Cash::changeUserCash($loginUserId, 'CASH', -abs($this->_payAmount), ['REMARK' => 'Members reselling balance payment']); // 会员复销余额支付
         }else{
             Balance::changeUserBonus($loginUserId,'reconsume_points', -abs($this->_payAmount),['DEAL_TYPE_ID' => DealType::RECONSUME_POINTS_EXCHANGE, 'REMARK' => '会员复销积分兑换']);
         }

+ 1 - 1
common/models/forms/UploadForm.php

@@ -290,7 +290,7 @@ class UploadForm extends Model {
                         throw new Exception("缺少参数ID");
                     }
                     //写入充值表
-                    $recharge->BANK_PROVE = $uploadInfo['url'];
+                    $recharge->BANK_PROVE = $uploadInfo['fileName'];
                     $recharge->AUDIT_STATUS = Recharge::STATUS_PROVED;
                     if (!$recharge->save()) {
                         throw new Exception(Form::formatErrorsForApi($recharge->getErrors()));

+ 59 - 0
common/models/forms/UserBonusForm.php

@@ -0,0 +1,59 @@
+<?php
+namespace common\models\forms;
+
+use common\components\Model;
+use yii\base\Exception;
+
+/**
+ * Login form
+ */
+class UserBonusForm extends Model
+{
+    public $periodNum;
+
+    private $_periodModel;
+    private $_limit = 1000;
+
+    /**
+     * @inheritdoc
+     */
+    public function rules()
+    {
+        return [];
+    }
+
+    public function scenarios()
+    {
+        $parentScenarios =  parent::scenarios();
+        $customScenarios = [
+            'autoWithdraw' => [],
+        ];
+        return array_merge($parentScenarios, $customScenarios);
+    }
+
+    public function attributeLabels()
+    {
+        return [];
+    }
+
+    /**
+     * 页面请求异步处理,生成提现单
+     * @return string | null
+     */
+    public function autoWithdrawWebToAsync(){
+        if(!$this->validate()){
+            return null;
+        }
+        // 异步处理添加任务
+        $settings = \Yii::$app->params['swooleAsyncTimer'];
+        $bonusSettings = \Yii::$app->params['swooleBonusConfig'];
+        $settings = array_merge($settings, $bonusSettings);
+        $taskKey = \Yii::$app->swooleAsyncTimer->asyncHandle('bonus/auto-withdraw', \Yii::$app->request->get(), $settings);
+        if($taskKey === false){
+            $this->addError('perf', '请求失败');
+            return null;
+        }
+        return 1;
+    }
+
+}

+ 65 - 0
common/models/forms/WithdrawForm.php

@@ -101,6 +101,7 @@ class WithdrawForm extends Model {
             'editByAdmin' => ['id', 'planPaidAt', 'createRemark'],
             'backByUser' => ['id', 'createRemark'],
             'excelPaidFalse' => ['sn', 'withdrawPeriodNum', 'paidAt', 'paidFailRemark', 'userName', 'realName', 'amount', 'bankRealName', 'bankNo'],
+            'batchWithdraw' => ['userName', 'applyAmount']
         ];
         return array_merge($parentScenarios, $customScenarios);
     }
@@ -703,4 +704,68 @@ class WithdrawForm extends Model {
         return true;
     }
 
+    /**
+     * 批量自动提现
+     *
+     *
+     * @throws \yii\db\Exception
+     */
+    public function batchWithdraw($limit, $start){
+        $config = Cache::getSystemConfig();
+        $minAmount = $config['manualWithdrawMinAmount']['VALUE'];
+        // 查找有奖金的用户
+        $allData = UserBonus::find()->select('USER_ID, USER_NAME, ID_CARD, BONUS')->from(UserBonus::tableName().' AS UB')->join('LEFT JOIN', User::tableName().' AS U','UB.USER_ID = U.ID')->where("BONUS>$minAmount")->offset(0)->limit($limit)->orderBy('U.ID')->asArray()->all();
+        if($allData){
+            foreach ($allData as $data){
+                $db = \Yii::$app->db;
+                $transaction = $db->beginTransaction();
+                try {
+                    $nowTime = $this->createdAt ?: Date::nowTime();
+                    $period = Withdraw::getPeriod($nowTime);
+                    //扣除会员奖金
+                    Balance::changeUserBonus($data['USER_ID'], 'BONUS', -abs($data['BONUS']), ['DEAL_TYPE_ID'=>DealType::WITHDRAW,'REMARK' => 'batch withdrawal', 'TIME' => $nowTime]);
+                    //手续费
+                    $fees = $data['BONUS'] * $config['withdrawFee']['VALUE']/100;
+                    $fees = Tool::formatPrice($fees);
+                    $realAmount = $data['BONUS'] - $fees;
+                    //判断付款类型
+                    $payType = Withdraw::PAY_TYPE_NO_INVOICE;
+                    $withdrawModel = new Withdraw();
+                    $withdrawModel->SN = $this->_generateSn();
+                    $withdrawModel->USER_ID = $data['USER_ID'];
+                    $withdrawModel->ID_CARD = $data['ID_CARD'];
+                    $withdrawModel->WITHDRAW_PERIOD_NUM = $period['nowPeriodNum'];
+                    $withdrawModel->WITHDRAW_YEAR = $period['nowYear'];
+                    $withdrawModel->WITHDRAW_MONTH = $period['nowMonth'];
+                    $withdrawModel->PAY_TYPE = $payType;
+                    $withdrawModel->IS_AUTO_WITHDRAW = $this->scenario == 'batchWithdraw' ? 1 : 0;
+                    $withdrawModel->AMOUNT = $data['BONUS'];
+                    $withdrawModel->FEES = $fees;
+                    $withdrawModel->REAL_AMOUNT = $realAmount;
+                    $withdrawModel->P_MONTH = Date::ociToDate($period['yearMonth'], Date::OCI_TIME_FORMAT_SHORT_MONTH);
+                    $withdrawModel->AUDIT_STATUS = Withdraw::STATUS_APPLIED;
+                    $withdrawModel->CREATED_AT = $nowTime;
+                    //预计付款时间
+                    $withdrawModel->PLAN_PAID_AT = $period['endTime'] + $config['withdrawFreezeDays']['VALUE'] * 3600 * 24;
+
+                    if (!$withdrawModel->save()) {
+                        throw new Exception(Form::formatErrorsForApi($withdrawModel->getErrors()));
+                    }
+//                    print_r($data['BONUS'].',,'.$i.PHP_EOL);
+                    $transaction->commit();
+                    unset($withdrawModel);
+                } catch (Exception $e) {
+                    $transaction->rollBack();
+                    $this->addError('add', $e->getMessage());
+                    return false;
+                }
+            }
+            unset($allData);
+            $start = $start + $limit;
+
+            return self::batchWithdraw($limit, $start);
+        }
+        return true;
+    }
+
 }

+ 13 - 0
console/controllers/BonusController.php

@@ -53,8 +53,10 @@ use common\helpers\http\RemoteUploadApi;
 use common\helpers\Log;
 use common\libs\export\module\BonusExport;
 use common\models\forms\PeriodForm;
+use common\models\forms\WithdrawForm;
 use common\models\LogAsync;
 use common\models\Withdraw;
+use common\models\UserBonus;
 use yii\db\Exception;
 
 class BonusController extends BaseController
@@ -547,4 +549,15 @@ class BonusController extends BaseController
         unset($factory, $taskId, $className, $listName);
         return false;
     }
+
+    /**
+     * 批量提现
+     *
+     */
+    public function actionAutoWithdraw($taskKey){
+        Cache::setWithdrawLock(1);
+        $formModel = new WithdrawForm();
+        $formModel->batchWithdraw(1000,0);
+        Cache::setWithdrawLock(0);
+    }
 }

+ 1 - 0
frontendApi/config/menu.php

@@ -64,6 +64,7 @@ return [
         'show'=>1,
         'child'=>[
             ['name'=>'Placement network', 'class'=>'', 'icon'=>'', 'controller'=>'atlas', 'action'=>'network', 'routePath'=>'atlas/network', 'show'=>1,],
+            ['name'=>'Sponsor network', 'class'=>'', 'icon'=>'', 'controller'=>'atlas', 'action'=>'relation', 'routePath'=>'atlas/relation', 'show'=>1,],
         ]
     ],
     'bonus'=>[

+ 2 - 0
frontendApi/config/urlManagerRules.php

@@ -111,6 +111,8 @@ return [
             'GET main-user-info' => 'main-user-info',
             'GET network' => 'network',
             'GET network-list' => 'network-list',
+            'GET relation' => 'relation',
+            'GET relation-list' => 'relation-list',
             'GET get-period' => 'get-period',
         ],
     ],

+ 70 - 5
frontendApi/modules/v1/controllers/AtlasController.php

@@ -10,8 +10,12 @@ namespace frontendApi\modules\v1\controllers;
 
 use common\helpers\Cache;
 use common\helpers\user\Info;
+use common\models\DeclarationLevel;
+use common\models\EmployLevel;
 use common\models\Period;
+use common\models\StarCrownLevel;
 use common\models\UserNetwork;
+use common\models\UserRelation;
 use Yii;
 use common\models\User;
 
@@ -42,7 +46,7 @@ class AtlasController extends BaseController {
             $userNetInfo = UserNetwork::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId], 'PARENT_UIDS');
             $parentUidsArr = explode(',', $userNetInfo['PARENT_UIDS']);
             if(!in_array($topUid,$parentUidsArr)){
-                return static::notice('会员与当前用户不再同一安置网络内', 400);
+                return static::notice('The member is not in the same placement network as the current user', 400); // 会员与当前用户不再同一安置网络内
             }
 
         } else {
@@ -60,9 +64,9 @@ class AtlasController extends BaseController {
                 'USER_NAME' => $baseInfo['USER_NAME'],
                 'REAL_NAME' => $baseInfo['REAL_NAME'],
                 'PERIOD_AT' => $baseInfo['PERIOD_AT'],
-                'DEC_LV_NAME' => $decLevelConfig[$baseInfo['DEC_LV']]['LEVEL_NAME'],
-                'EMP_LV_NAME' => $empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME'],
-                'CROWN_LV_NAME' => $crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME'],
+                'DEC_LV_NAME' => $decLevelConfig[$baseInfo['DEC_LV']]['LEVEL_NAME'] ?? $decLevelConfig[DeclarationLevel::getDefaultLevelId()]['LEVEL_NAME'],
+                'EMP_LV_NAME' => $empLevelConfig[$baseInfo['EMP_LV']]['LEVEL_NAME'] ?? $empLevelConfig[EmployLevel::getDefaultLevelId()]['LEVEL_NAME'],
+                'CROWN_LV_NAME' => $crownLevelConfig[$baseInfo['CROWN_LV']]['LEVEL_NAME'] ?? $crownLevelConfig[StarCrownLevel::getDefaultLevelId()]['LEVEL_NAME'],
                 'leaf' => false,
                 'icon' => 'el-icon-user-solid',
                 'children' => null,
@@ -111,7 +115,7 @@ class AtlasController extends BaseController {
             $userNetInfo = UserNetwork::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId], 'PARENT_UIDS');
             $parentUidsArr = explode(',', $userNetInfo['PARENT_UIDS']);
             if(!in_array($topUid,$parentUidsArr)){
-                return static::notice('会员与当前用户不再同一安置网络内', 400);
+                return static::notice('The member is not in the same placement network as the current user', 400); // 会员与当前用户不再同一安置网络内
             }
         }
         $period = Period::instance();
@@ -149,4 +153,65 @@ class AtlasController extends BaseController {
         ]);
     }
 
+    /**
+     * 推荐网络图
+     * @return mixed
+     * @throws \yii\web\HttpException
+     */
+    public function actionRelation() {
+        $userId = Yii::$app->request->get('id', \Yii::$app->user->id);
+        $periodNum = Yii::$app->request->get('periodNum', null);
+        $deep = Yii::$app->request->get('deep', 5);
+        if ($deep > 20) {
+            return static::notice('View the top 20 sub members of the member at most', 400); // 最多查看会员的前20层子会员
+        }
+        $allData = UserRelation::getChildrenWithDeepAndLayer($userId, $deep, 1, $periodNum);
+        return static::notice(['allData' => $allData, 'periodNum' => $periodNum]);
+    }
+
+    /**
+     * 推荐网络列表
+     * @return mixed
+     * @throws \yii\base\Exception
+     * @throws \yii\db\Exception
+     * @throws \yii\web\HttpException
+     */
+    public function actionRelationList() {
+        $userName = Yii::$app->request->get('userName');
+        $deep = Yii::$app->request->get('deep', 5);
+        $periodNum = Yii::$app->request->get('periodNum', null);
+        if (!$userName) {
+            $userId = \Yii::$app->user->id;
+        } else {
+            if (!$userId = Info::getUserIdByUserName($userName)) {
+                return static::notice('Member does not exist', 400); //  会员不存在
+            }
+            $topUid = \Yii::$app->user->id;
+            $userNetInfo = UserRelation::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId], 'PARENT_UIDS');
+            $parentUidsArr = explode(',', $userNetInfo['PARENT_UIDS']);
+            if(!in_array($topUid,$parentUidsArr)){
+                return static::notice('会员与当前用户不再同一安置网络内', 400);
+            }
+        }
+        $period = Period::instance();
+        $mainUserInfo = Info::baseInfo($userId, $periodNum);
+        $decLevelConfig = Cache::getDecLevelConfig();
+        $empLevelConfig = Cache::getEmpLevelConfig();
+        $data = UserNetwork::getChildrenInDeepFromPeriodWithPage($userId, $deep, $periodNum, 1 ? ['pageSize' => 10] : []);
+        foreach($data['list'] as $key=>$value){
+            $userBaseInfo = Info::baseInfo($value['USER_ID'], $periodNum);
+            $data['list'][$key]['LIST_PERIOD_NUM'] = $periodNum?$periodNum:$period->getNowPeriodNum();
+            $data['list'][$key]['COUNT_DEEP'] = (int)($userBaseInfo['NETWORK_DEEP']);
+            $data['list'][$key]['USER_NAME'] = $userBaseInfo['USER_NAME'];
+            $data['list'][$key]['SEE_USER_NAME'] = $userBaseInfo['USER_NAME'];
+            $data['list'][$key]['REAL_NAME'] = $userBaseInfo['REAL_NAME'];
+            $data['list'][$key]['PERIOD_AT'] = $userBaseInfo['PERIOD_AT'];
+            $data['list'][$key]['DEC_LV_NAME'] = $decLevelConfig[$userBaseInfo['DEC_LV']]['LEVEL_NAME'];
+            $data['list'][$key]['EMP_LV_NAME'] = $empLevelConfig[$userBaseInfo['EMP_LV']]['LEVEL_NAME'];
+        }
+        $data['periodNum'] = $periodNum;
+        $data['listTopDeep'] = $mainUserInfo['NETWORK_DEEP'];
+
+        return static::notice($data);
+    }
 }

+ 1 - 0
frontendApi/modules/v1/controllers/FinanceController.php

@@ -32,6 +32,7 @@ use common\models\Transfer;
 use common\models\Uploads;
 use common\models\UserInfo;
 use common\models\Withdraw;
+use common\models\UserBonus;
 use yii\helpers\Json;
 use yii\web\UploadedFile;
 

+ 1 - 1
frontendApi/modules/v1/controllers/OauthController.php

@@ -192,7 +192,7 @@ class OauthController extends BaseController
             $form->scenario = 'noLoginModifyPassword';
             $post = \Yii::$app->request->post();
             if($form->load($post, '') && $result = $form->noLoginModifyPassword()){
-                return static::notice('密码修改成功');
+                return static::notice('Password change succeeded'); // 密码修改成功
             } else {
                 return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
             }

+ 13 - 13
frontendApi/modules/v1/controllers/ShopController.php

@@ -586,31 +586,31 @@ EOT;
         $orderBase = <<<ORDER
             <table border="1" style="table-layout: fixed; padding: 10px 20px;" width="100%">
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Code</td>
                     <td width="70%">{$userId}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member name</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Name</td>
                     <td width="70%">{$userName}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member address</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Address</td>
                     <td width="70%">{$address}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member phone</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Phone</td>
                     <td width="70%">{$mobile}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order Code</td>
                     <td width="70%">{$orderSn}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation time</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation Time</td>
                     <td width="70%">{$orderAt}</td>
                 </tr>
                 <tr>
-                    <td class="bg" style="font-weight: bold; font-size: 14px; text-align: center;">Order detail</td>
+                    <td class="bg" style="font-weight: bold; font-size: 14px; text-align: center;">Order Detail</td>
                     <td class="bg"></td>
                 </tr>
             </table>
@@ -832,27 +832,27 @@ EOT;
         $orderBase = <<<ORDER
             <table border="1" style="table-layout: fixed; padding: 10px 20px;" width="100%">
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Code</td>
                     <td width="70%">{$userId}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member name</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Name</td>
                     <td width="70%">{$userName}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member address</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Address</td>
                     <td width="70%">{$address}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member phone</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Member Phone</td>
                     <td width="70%">{$mobile}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order code</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Order Code</td>
                     <td width="70%">{$orderSn}</td>
                 </tr>
                 <tr>
-                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation time</td>
+                    <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">Creation Time</td>
                     <td width="70%">{$orderAt}</td>
                 </tr>
                 <tr>

+ 1 - 1
frontendApi/modules/v1/controllers/UserController.php

@@ -82,7 +82,7 @@ class UserController extends BaseController {
             $form->scenario = 'modifyPassword';
             $post = \Yii::$app->request->post();
             if($form->load($post, '') && $result = $form->modifyPassword()){
-                return static::notice('Password modified successfully');//密码修改成功
+                return static::notice('Password modified successfully'); // 密码修改成功
             } else {
                 return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
             }

+ 31 - 19
frontendEle/src/router/index.js

@@ -246,25 +246,37 @@ export const constantRouterMap = [
       },
     ]
   },
-    {
-        path: '/atlas',
-        component: layout,
-        redirect: '/atlas/network',
-        children: [
-            {
-                path: '/atlas/network',
-                component: _import('atlas/network'),
-                name: 'atlas_network',
-                meta: {
-                    title: 'Placement network',
-                    breadcrumb: [
-                        {title: 'Dashboard', path: '/dashboard/index'},
-                        {title: 'Network Chart', path: '/atlas/network'},
-                    ],
-                },
-            },
-        ]
-    },
+  {
+    path: '/atlas',
+    component: layout,
+    redirect: '/atlas/network',
+    children: [
+      {
+        path: '/atlas/network',
+        component: _import('atlas/network'),
+        name: 'atlas_network',
+        meta: {
+          title: 'Placement network',
+          breadcrumb: [
+            {title: 'Dashboard', path: '/dashboard/index'},
+            {title: 'Network Chart', path: '/atlas/network'},
+          ]
+        }
+      },
+      {
+        path: '/atlas/relation',
+        component: _import('atlas/relation'),
+        name: 'atlas_relation',
+        meta: {
+          title: 'Sponsor network',
+          breadcrumb: [
+            {title: 'Dashboard', path: '/dashboard/index'},
+            {title: 'Sponsor Chart', path: '/atlas/relation'}
+          ]
+        }
+      }
+    ]
+  },
   {
     path: '/bonus',
     component: layout,

+ 2 - 2
frontendEle/src/utils/config_trial.js

@@ -1,13 +1,13 @@
 const APP_NAME = '奖金结算系统'
 const SERVER_API_DOMAIN = '16.163.228.151'
 const SERVER_API_HTTP_TYPE = 'http://'
-const SERVER_API_PORT = ':8026'  // ':8102'
+const SERVER_API_PORT = ':8033' // ':8102'
 const SERVER_API_VERSION = 'v1'
 const REQUEST_URL = `${SERVER_API_HTTP_TYPE}${SERVER_API_DOMAIN}${SERVER_API_PORT}/${SERVER_API_VERSION}/`
 const WEBSOCKET_HOST = 'ws://127.0.0.1:9512'
 const DEVICE_TYPE = 'pc'
 const ACCESS_TOKEN_PREFIX = 'Bearer '
-const CDN_BASE_URL = 'http://16.163.228.151:8029'
+const CDN_BASE_URL = 'http://16.163.228.151:8036'
 const CDN_IMG_URL = `${CDN_BASE_URL}/cdn/`
 const PRICE_IS_ROUND = true
 const REGION_URL = `${CDN_BASE_URL}/cdn/jsdata/ar_region_data.js?ver=0.1`

+ 8 - 8
frontendEle/src/views/atlas/network.vue

@@ -195,7 +195,7 @@ export default {
   .filter-user .el-input-group{float: left;margin-right: 15px;}
   .filter-user >>> .el-input__inner{border: 1px solid #DCDFE6;width: 100%;background: none;border-radius: 0;float: right;display: block; }
   .filter-user >>> .el-input-group__prepend{border-top: 1px solid #DCDFE6;border-left: 1px solid #DCDFE6;border-bottom: 1px solid #DCDFE6;border-right:none;}
-  .el-tree {
+  /deep/ .el-tree {
       padding-bottom: 20px;
       font-size: 14px;
       overflow-x: auto;
@@ -205,19 +205,19 @@ export default {
       height: 20px;
       line-height: 18px;vertical-align: middle;
   }
-  .el-tree-node{position: relative;}
+  /deep/ .el-tree-node{position: relative;}
 
-  .el-tree-node__content {
+  /deep/ .el-tree-node__content {
       height: 30px;
       line-height: 30px;
   }
 
-  .el-tree-node__children {
+  /deep/ .el-tree-node__children {
       position: relative;
       padding: 0 0 0 16px;
   }
 
-  .el-tree-node:before {
+  /deep/ .el-tree-node:before {
       position: absolute;
       content: '';
       top: 0px;
@@ -225,7 +225,7 @@ export default {
       height: 100%;
       border-left: 1px solid #ccc;
   }
-  .el-tree-node:last-child:before{height: 15px;}
+  /deep/ .el-tree-node:last-child:before{height: 15px;}
 
   .custom-tree-node {
       position: relative;
@@ -236,7 +236,7 @@ export default {
       display: none;
   }
 
-  .custom-tree-node:before {
+  /deep/ .custom-tree-node:before {
       position: absolute;
       width: 8px;
       content: '';
@@ -245,7 +245,7 @@ export default {
       border-bottom: 1px solid #ccc;
   }
 
-  .el-tree-node__expand-icon {
+  /deep/ .el-tree-node__expand-icon {
       display: none !important;
   }
 </style>

+ 251 - 0
frontendEle/src/views/atlas/relation.vue

@@ -0,0 +1,251 @@
+<template>
+  <div v-loading="loading">
+    <div class="white-box">
+      <div class="filter-user" @keyup.enter="enterToGetData()" >
+        <el-input v-model="mainUserName" size="small" style="width:300px;" class="top-member">
+          <template slot="prepend">Top Member</template>
+        </el-input>
+        <el-input v-model="expandDeep" size="small" style="width:200px;" class="spread-depth">
+          <template slot="prepend">Spread depth</template>
+        </el-input>
+        <el-input v-model="periodNum" size="small" style="width:150px;" v-show="false">
+          <template slot="prepend">Period number</template>
+        </el-input>
+        <el-button type="primary" size="small" @click="getMainData()">Confirm</el-button>
+      </div>
+      <el-tree :props="props" :data="treeData" node-key="USER_ID" @node-click="getChildData" ref="tree" :indent="0"
+                default-expand-all :height="tool.getTableHeight(true)">
+        <span :id="'node_'+data.USER_ID" :class="'custom-tree-node '+data.className" slot-scope="{ node, data }">
+          <span :class="'el-icon-loading '+ data.displayNone"></span>
+          <span :class="data.icon"></span>
+          <span>
+<!--            <el-tag type="danger">Number of Layers: {{countTopDeep(data.TOP_NETWORK_DEEP,topDeep)}}</el-tag>-->
+            <el-tag>Member Code: {{ node.label }}</el-tag>
+            <el-tag>Name: {{data.REAL_NAME}}</el-tag>
+<!--            <el-tag type="danger">Location: {{data.RELATIVE_LOCATION}}</el-tag>-->
+            <el-tag type="success">Level: {{data.DEC_LV_NAME}}</el-tag>
+            <el-tag type="warning">Rank: {{data.EMP_LV_NAME}}, {{data.CROWN_LV_NAME}}</el-tag>
+<!--            <el-tag type="warning">Star: {{data.CROWN_LV_NAME}}</el-tag>-->
+            <el-tag>Joining Period: {{data.PERIOD_AT}}</el-tag>
+          </span>
+        </span>
+      </el-tree>
+    </div>
+  </div>
+</template>
+
+<script>
+import network from '@/utils/network'
+import tool from '@/utils/tool'
+import store from '@/utils/vuexStore'
+import Pagination from '@/components/Pagination'
+import baseInfo from '@/utils/baseInfo'
+
+export default {
+  name: 'atlas_relation',
+  components: {Pagination},
+  mounted () {
+    this.getData()
+    store.state.socket.onMessageCallback = this.onMessageCallback
+  },
+  data () {
+    return {
+      loading: true,
+      tabActiveName: 'first',
+      // relation
+      props: {
+        label: 'USER_NAME',
+        children: 'children',
+        // isLeaf: 'leaf',
+        icon: 'icon'
+      },
+      treeData: null,
+      expandDeep: 5,
+      topDeep: 0,
+      mainUserName: '',
+      periodNum: null,
+      listPeriodNum: null,
+      allData: null,
+      tableHeaders: null,
+      tableData: null,
+      currentPage: 1,
+      totalPages: 1,
+      totalCount: 1,
+      pageSize: 20,
+      tool: tool,
+      filterForm: {
+        userName: null,
+        deep: 5,
+        periodNum: null
+      },
+      listTopDeep: 0
+    }
+  },
+  methods: {
+    getData () {
+      this.$message({
+        message: 'Retrieving data, please wait.' // 正在获取数据,请稍后
+      })
+      // this.periodNum = baseInfo.nowPeriodNum()
+      // this.filterForm.periodNum = baseInfo.nowPeriodNum()
+      this.getMainData(null, true)
+    },
+    getMainData (userName = null, getList = false) {
+      this.$message.closeAll()
+      this.$message({
+        message: 'Retrieving data, please wait.' // 正在获取数据,请稍后
+      })
+      let thisObj = this
+      let requestData = {
+        periodNum: this.periodNum
+      }
+      if (this.mainUserName !== null) {
+        requestData = {userName: this.mainUserName, periodNum: this.periodNum}
+      }
+      network.getData('atlas/main-user-info', requestData).then(response => {
+        thisObj.treeData = response
+        thisObj.topDeep = Number(response[0].TOP_NETWORK_DEEP)
+        thisObj.listPeriodNum = response[0].listPeriodNum
+        if (getList) thisObj.getListData()
+        thisObj.loading = false
+      }).catch(response => {
+        thisObj.loading = false
+      })
+    },
+    getChildData (data, node) {
+      let thisObj = this
+      let userId = data.USER_ID
+      let thisData = data
+      if (thisData.leaf) {
+        return ''
+      }
+      if (thisData.isExpanded) {
+        return ''
+      }
+      if (thisData.children !== null && thisData.children.length > 0) {
+        return ''
+      }
+      thisData.displayNone = ''
+      network.getData('atlas/relation', {
+        id: userId,
+        deep: thisObj.expandDeep,
+        periodNum: this.periodNum
+      }).then(response => {
+        thisObj.$refs.tree.updateKeyChildren(userId, response.allData)
+        thisObj.listPeriodNum = response.periodNum
+        thisData.displayNone = 'display-none'
+        thisData.isExpanded = true
+      })
+    },
+    countTopDeep (deep, topDeep) {
+      return Number(deep) - Number(topDeep)
+    },
+    handleCurrentChange (page) {
+      this.getListData(page, this.pageSize)
+    },
+    handleSizeChange (pageSize) {
+      this.getListData(this.currentPage, pageSize)
+    },
+    handleFilter () {
+      this.getListData(1, this.pageSize)
+      this.tabActiveName = 'two'
+    },
+    handleShow (row) {
+      this.loading = true
+      this.filterForm.userName = row.SEE_USER_NAME
+      this.getListData(1, this.pageSize)
+      this.tabActiveName = 'two'
+    },
+    getListData (page, pageSize) {
+      let obj = this
+      network.getPageData(this, 'atlas/relation-list', page, pageSize, this.filterForm, function (response) {
+        obj.allData = response
+        obj.listTopDeep = response.listTopDeep
+      })
+    },
+    onMessageCallback (data) {
+      // this.getData(this.currentPage, this.pageSize, false)
+    },
+    handleExport () {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', { // 确定要导出当前数据吗?
+        confirmButtonText: 'confirm', // 确定
+        cancelButtonText: 'cancel', // 取消
+        type: 'warning'
+      }).then(() => {
+        return network.getData(`atlas/relation-list-export`, this.filterForm)
+      }).then(response => {
+        this.$message({
+          message: response,
+          type: 'success'
+        })
+      }).catch(response => {
+      })
+    },
+    enterToGetData (ev) {
+      this.getMainData()
+    }
+  }
+}
+</script>
+
+<style scoped>
+  .filter-user{font-size: 14px;margin-bottom: 20px;}
+  .filter-user:after{content: '';display: table;
+      clear: both;}
+  .filter-user .el-input-group{float: left;margin-right: 15px;}
+  .filter-user >>> .el-input__inner{border: 1px solid #DCDFE6;width: 100%;background: none;border-radius: 0;float: right;display: block; }
+  .filter-user >>> .el-input-group__prepend{border-top: 1px solid #DCDFE6;border-left: 1px solid #DCDFE6;border-bottom: 1px solid #DCDFE6;border-right:none;}
+  /deep/ .el-tree {
+      padding-bottom: 20px;
+      font-size: 14px;
+      overflow-x: auto;
+  }
+
+  .el-tree .el-tag {
+      height: 20px;
+      line-height: 18px;vertical-align: middle;
+  }
+  /deep/ .el-tree-node{position: relative;}
+
+  /deep/ .el-tree-node__content {
+      height: 30px;
+      line-height: 30px;
+  }
+
+  /deep/ .el-tree-node__children {
+      position: relative;
+      padding: 0 0 0 16px;
+  }
+
+  /deep/ .el-tree-node:before {
+      position: absolute;
+      content: '';
+      top: 0px;
+      left: -4px;
+      height: 100%;
+      border-left: 1px solid #ccc;
+  }
+  /deep/ .el-tree-node:last-child:before{height: 15px;}
+
+  .custom-tree-node {
+      position: relative;
+      padding-left: 5px;
+  }
+
+  .first-node:before {
+      display: none;
+  }
+
+  /deep/ .custom-tree-node:before {
+      position: absolute;
+      width: 8px;
+      content: '';
+      top: 15px;
+      left: -4px;
+      border-bottom: 1px solid #ccc;
+  }
+
+  /deep/ .el-tree-node__expand-icon {
+      display: none !important;
+  }
+</style>

+ 1 - 1
frontendEle/src/views/layout/layout.vue

@@ -94,7 +94,7 @@ import websocketHelper from '@/utils/websocketHelper';
 import userInfo from '@/utils/userInfo'
 import network from '@/utils/network'
 import tool from '@/utils/tool'
-import Waves from '@/static/plugins/waves/waves.js'
+import Waves from '../../static/plugins/waves/waves.js'
 import store from '@/utils/vuexStore'
 import baseInfo from '@/utils/baseInfo'
 import initRegion from '@/utils/region'

+ 2 - 1
frontendEle/src/views/user/dec.vue

@@ -5,7 +5,7 @@
         <div class="hr-tip"><span>Account Information<!--账号信息--></span></div>
 
         <el-form-item label="New member code"><!--会员编号-->
-          <el-input v-model="form.insertUserName"></el-input>
+          <el-input v-model="form.insertUserName" :readonly="userReadOnly"></el-input>
         </el-form-item>
         <el-form-item>
           <template slot="label">
@@ -356,6 +356,7 @@ export default {
       currentRow: null,
       decWay: '2',
       regionData: store.state.regionInfo.regionData,
+      userReadOnly: true,
       form: {
         realName: '',
         decLv: '',

+ 2715 - 0
sql/StoredProcedure-NG.sql

@@ -0,0 +1,2715 @@
+-- MariaDB dump 10.19  Distrib 10.7.4-MariaDB, for Linux (x86_64)
+--
+-- Host: ngds-db-live.cdehazle30lc.ap-east-1.rds.amazonaws.com    Database: coco_milk_0524
+-- ------------------------------------------------------
+-- Server version	10.6.7-MariaDB-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping routines for database 'coco_milk_0524'
+--
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALC10` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALC10`(IN `PCPID` INT)
+BEGIN
+    DECLARE
+        MLAYER,
+        MMAXLAYER INT;
+    DECLARE
+        MRATE,
+        MLIMITPV DECIMAL ( 10, 2 );-- 查询第一个级别的限制以及等奖比例
+    SELECT
+        T.ACHIEVE_PV,
+        T.BS_PERCENT / 100 INTO MLIMITPV,
+        MRATE
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = 'E121497617216708615';
+    SELECT
+        MAX( LAYER ) INTO MLAYER
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            PV > 0;
+
+    SET MMAXLAYER := MLAYER;
+    WHILE
+            MLAYER >= 0 DO
+            IF
+                ( MLAYER < MMAXLAYER ) THEN-- 向上累计
+                UPDATE AR_BS_BONUS_103_CALC T1
+                    INNER JOIN (
+                        SELECT
+                            INTRODUCER_ID,
+                            SUM( GPV10 ) GPV10
+                        FROM
+                            AR_BS_BONUS_103_CALC
+                        WHERE
+                                LAYER = MLAYER + 1
+                          AND USER_TYPE10 = 0
+                          AND GPV10 > 0
+                        GROUP BY
+                            INTRODUCER_ID
+                    ) T2 ON T1.USER_ID = T2.INTRODUCER_ID
+                        AND T1.LAYER = MLAYER
+                SET T1.GPV10 = T2.GPV10;-- 没有升级的会员需要将自己的小组业绩清零
+                UPDATE AR_BS_BONUS_103_CALC T
+                SET T.GPV10 = 0
+                WHERE
+                        T.GPV10 < T.ACHIEVE_PERF_PV AND T.LAYER = MLAYER + 1 AND USER_TYPE10 = 0 AND T.GPV10 > 0;
+
+            END IF;
+            UPDATE AR_BS_BONUS_103_CALC T1
+            SET T1.GPV10 = T1.GPV10 + T1.PV
+            WHERE
+                    T1.LAYER = MLAYER
+              AND T1.PV > 0;-- 是否达标 如果达标
+            UPDATE AR_BS_BONUS_103_CALC T
+            SET T.USER_TYPE10 = 10
+            WHERE
+                    T.GPV10 >= T.ACHIEVE_PERF_PV
+              AND T.LAYER = MLAYER
+              AND T.USER_TYPE10 = 0;
+            IF
+                ( MLAYER > 0 ) THEN-- 升级为蓝星A
+                CALL CALCUPGARDE ( MLAYER );
+
+            END IF;
+
+            SET MLAYER := MLAYER - 1;
+
+        END WHILE;
+    UPDATE AR_BS_BONUS_103_CALC T
+    SET T.BONUS10 = T.GPV10 * MRATE
+    WHERE
+            T.USER_TYPE10 = 10
+      AND T.GPV10 > 0;
+    UPDATE AR_BS_BONUS_103_CALC
+    SET USER_TYPE = 0;
+
+    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+    SELECT USER_ID, NULL, 10, GPV10 * MRATE, GPV10, MRATE ,PCPID FROM AR_BS_BONUS_103_CALC WHERE USER_TYPE10 = 10
+                                                                                             AND GPV10 > 0;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALC20` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALC20`(IN `PCPID` INT)
+BEGIN
+    DECLARE
+        MLAYER,
+        MMAXLAYER,
+        MCOUNT INT;
+    DECLARE
+        MRATE,
+        MLIMITPV DECIMAL ( 10, 2 );
+    START TRANSACTION;-- 第一个级别的限制
+    SELECT
+        T.ACHIEVE_PV INTO MLIMITPV
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = 'E121497617216708615';-- 第二个级别得奖的比例
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE5FE7857C216AE055736AECE8644D';
+    SELECT
+        MAX( LAYER ) INTO MLAYER
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            PV > 0;
+
+    SET MMAXLAYER := MLAYER;
+    WHILE
+            MLAYER >= 0 DO
+            IF
+                ( MLAYER < MMAXLAYER ) THEN-- 向上累计
+                UPDATE AR_BS_BONUS_103_CALC T1
+                    INNER JOIN (
+                        SELECT
+                            INTRODUCER_ID,
+                            SUM( GPV ) GPV
+                        FROM
+                            AR_BS_BONUS_103_CALC
+                        WHERE
+                                LAYER = MLAYER + 1
+                          AND USER_TYPE = 0
+                          AND GPV > 0
+                        GROUP BY
+                            INTRODUCER_ID
+                    ) T2 ON T1.USER_ID = T2.INTRODUCER_ID
+                        AND T1.LAYER = MLAYER
+                SET T1.GPV = T2.GPV;-- 没有升级的会员需要将自己的小组业绩清零
+                UPDATE AR_BS_BONUS_103_CALC T
+                SET T.GPV = 0
+                WHERE
+                        T.GPV < T.ACHIEVE_PERF_PV AND T.LAYER = MLAYER + 1 AND GPV > 0;
+
+            END IF;
+            UPDATE AR_BS_BONUS_103_CALC T1
+            SET T1.GPV = T1.GPV + T1.PV
+            WHERE
+                    T1.LAYER = MLAYER;-- 是否达标 如果达标
+            UPDATE AR_BS_BONUS_103_CALC T
+            SET T.USER_TYPE = 10
+            WHERE
+                    T.GPV >= T.ACHIEVE_PERF_PV
+              AND T.LAYER = MLAYER;
+
+            SET MLAYER := MLAYER - 1;
+
+        END WHILE;
+    UPDATE AR_BS_BONUS_103_CALC
+    SET GPV = 0
+    WHERE
+            USER_TYPE = 0
+      AND GPV > 0;
+    SELECT
+        MAX( LAYER ) INTO MLAYER
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            USER_TYPE > 0;
+
+    SET MMAXLAYER := MLAYER;-- 添加至新网体页面
+    INSERT INTO AR_BS_BONUS_103_CALC_NET ( USER_ID, INTRODUCER_ID, CALC_PERIOD_ID, USER_TYPE, GPV, DIRECTLY_UNDER, LAYER, TEAM_GPV ) SELECT
+                                                                                                                                         USER_ID,
+                                                                                                                                         INTRODUCER_ID,
+                                                                                                                                         CALC_PERIOD_ID,
+                                                                                                                                         USER_TYPE,
+                                                                                                                                         GPV,
+                                                                                                                                         0,
+                                                                                                                                         LAYER,
+                                                                                                                                         0
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            LAYER <= MLAYER; -- 处理新的网体
+    DELETE FROM AR_BS_BONUS_103_CALC_NET WHERE LAYER = MLAYER AND USER_TYPE = 0; SET MLAYER := MLAYER - 1; WHILE MLAYER >= 0 DO-- 计算直属宽度
+    UPDATE AR_BS_BONUS_103_CALC_NET T1
+        INNER JOIN ( SELECT INTRODUCER_ID, COUNT( * ) SONS FROM AR_BS_BONUS_103_CALC_NET WHERE LAYER = MLAYER + 1 GROUP BY INTRODUCER_ID ) T2 ON T1.USER_ID = T2.INTRODUCER_ID
+            AND T1.LAYER = MLAYER
+    SET T1.DIRECTLY_UNDER = T2.SONS;-- 本人达标并且下属满足一个及以上的达标数升级为第二个级别
+    UPDATE AR_BS_BONUS_103_CALC_NET T1
+    SET T1.USER_TYPE = 20
+    WHERE
+            T1.LAYER = MLAYER
+      AND USER_TYPE = 10
+      AND DIRECTLY_UNDER >= 1;-- 计算本层达标人员
+    SELECT
+        COUNT( * ) INTO MCOUNT
+    FROM
+        AR_BS_BONUS_103_CALC_NET C
+    WHERE
+            C.DIRECTLY_UNDER >= 2
+      AND C.USER_TYPE = 0
+      AND LAYER = MLAYER;
+    IF
+        ( MCOUNT > 0 ) THEN
+        CALL CALC20_0 ( MLAYER, PCPID );
+
+    END IF;-- 删除未达标人员
+    CALL CALCDELNET ( MLAYER );
+
+    SET MLAYER := MLAYER - 1;
+
+        END WHILE;-- 计算GPV_4_CALC,会员级别
+    UPDATE AR_BS_BONUS_103_CALC C1
+        INNER JOIN AR_BS_BONUS_103_CALC_NET C2 ON C1.USER_ID = C2.USER_ID
+    SET C1.GPV_4_CALC = C2.GPV,
+        C1.USER_TYPE = C2.USER_TYPE;-- 计算见习奖金
+    UPDATE AR_BS_BONUS_103_CALC C1
+        INNER JOIN ( SELECT INTRODUCER_ID, SUM( GPV ) ALL_GPV FROM AR_BS_BONUS_103_CALC_NET GROUP BY INTRODUCER_ID ) C2 ON C1.USER_ID = C2.INTRODUCER_ID
+            AND C1.USER_TYPE = 20
+    SET C1.BONUS20 = C2.ALL_GPV * MRATE;
+    COMMIT;
+    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE, PERIOD_NUM ) SELECT
+                                                                                                                           C1.USER_ID,
+                                                                                                                           NULL,
+                                                                                                                           20,
+                                                                                                                           C2.ALL_GPV * MRATE,
+                                                                                                                           C2.ALL_GPV,
+                                                                                                                           MRATE,
+                                                                                                                           PCPID
+    FROM
+        AR_BS_BONUS_103_CALC C1
+            INNER JOIN ( SELECT INTRODUCER_ID, SUM( GPV ) ALL_GPV FROM AR_BS_BONUS_103_CALC_NET GROUP BY INTRODUCER_ID ) C2 ON C1.USER_ID = C2.INTRODUCER_ID
+            AND C1.USER_TYPE = 20
+            AND ALL_GPV > 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALC20_0` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALC20_0`(IN PLAYER INT,IN `PCPID` INT)
+BEGIN
+	DECLARE
+		FLAG INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MMAXUSERID VARCHAR ( 50 );
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		MC CURSOR FOR SELECT
+		C.USER_ID 
+	FROM
+		AR_BS_BONUS_103_CALC_NET C 
+	WHERE
+		C.DIRECTLY_UNDER >= 2 
+		AND C.USER_TYPE = 0 
+		AND LAYER = PLAYER;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;-- 打开游标
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MUSERID;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;-- 这里是为了显示获取结果
+		SELECT
+			MIN( GPV ) INTO MGPV 
+		FROM
+			AR_BS_BONUS_103_CALC_NET C 
+		WHERE
+			C.INTRODUCER_ID = MUSERID 
+			AND C.USER_TYPE >= 10;
+		SELECT
+			MAX( USER_ID ) INTO MMAXUSERID 
+		FROM
+			AR_BS_BONUS_103_CALC_NET C 
+		WHERE
+			C.INTRODUCER_ID = MUSERID 
+			AND C.GPV = MGPV;
+		UPDATE AR_BS_BONUS_103_CALC_NET C 
+		SET C.USER_TYPE = 20,
+		C.GPV = MGPV 
+		WHERE
+			USER_ID = MUSERID;
+		UPDATE AR_BS_BONUS_103_CALC_NET C 
+		SET C.GPV = 0 
+		WHERE
+			USER_ID = MMAXUSERID;-- 关闭游标
+		
+		INSERT INTO AR_CALC_BONUS_BS_DETAIL_GPV(USER_ID,INTRODUCER_ID,GPV,PERIOD_NUM)
+		VALUES(MMAXUSERID,MUSERID,MGPV,PCPID);
+	END LOOP;
+	CLOSE MC;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCBLUE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCBLUE`(IN `PCPID` INT)
+LABEL: BEGIN
+DECLARE MCALCYEAR INT;
+DECLARE MISMONTH,MCALCMONTH,MISSENT TINYINT;
+
+START TRANSACTION;
+-- 日志;
+DELETE FROM AR_BS_BONUS_103_CALC_EVENT ;-- WHERE CALC_PERIOD_ID >= PCPID;
+CALL CALCRECORD(-1,'开始',PCPID,NOW());
+COMMIT;
+-- SELECT USER_ID INTO MISMONTH FROM ZR_USER;
+SELECT AP.IS_MONTH,AP.CALC_MONTH,AP.CALC_YEAR,AP.IS_SENT
+INTO MISMONTH,MCALCMONTH,MCALCYEAR,MISSENT
+FROM AR_PERIOD AP WHERE AP.PERIOD_NUM = PCPID;
+
+	-- 查看是否月结
+-- IF(MISMONTH  =  0 OR MISSENT = 1)THEN
+-- LEAVE LABEL;
+-- END IF;
+
+
+-- 清除数据
+CALL CALCRECORD(1,'清除数据',PCPID,NOW());
+COMMIT;
+CALL CALCCLEAN(PCPID);
+COMMIT;
+
+-- 初始化
+CALL CALCRECORD(2,'初始化',PCPID,NOW());
+COMMIT;
+CALL CALCINIT(PCPID,MCALCMONTH,MCALCYEAR);
+COMMIT;
+
+
+-- 初始业绩
+-- 3.蓝星奖
+CALL CALCRECORD(3,'蓝星奖',PCPID,NOW());
+COMMIT;
+CALL CALC10(PCPID);
+COMMIT;
+
+-- 4.新网体
+CALL CALCRECORD(4,'新网体',PCPID,NOW());
+COMMIT;
+CALL CALC20(PCPID);
+COMMIT;
+
+-- 5.升级主任
+CALL CALCRECORD(5,'升级主任',PCPID,NOW());
+COMMIT;
+CALL CALCUP30;
+COMMIT;
+
+-- 6.计算主任自己第一层的总业绩
+CALL CALCRECORD(6,'计算主任自己第一层的总业绩',PCPID,NOW());
+COMMIT;
+CALL CALCTOTALGPV;
+COMMIT;
+
+-- 7.计算平级奖
+CALL CALCRECORD(7,'计算平级奖',PCPID,NOW());
+COMMIT;
+CALL CALCLEVEL(PCPID);
+COMMIT;
+
+-- 8.积分
+CALL CALCRECORD(8,'积分',PCPID,NOW());
+COMMIT;
+CALL CALCPOINT;
+COMMIT;
+
+-- 9.汇总
+CALL CALCRECORD(9,'汇总',PCPID,NOW());
+COMMIT;
+CALL CALCSUMMARY;
+COMMIT;
+
+-- 10.记录总表
+CALL CALCRECORD(10,'记录总表',PCPID,NOW());
+COMMIT;
+CALL CALCKEEP(MCALCYEAR,MCALCMONTH);
+COMMIT;
+
+-- 11.计算拨出比
+CALL CALCRECORD(11,'计算拨出比',PCPID,NOW());
+COMMIT;
+CALL CALCSTAT(PCPID);
+COMMIT;
+
+CALL CALCRECORD(12,'结束',PCPID,NOW());
+COMMIT;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCCHECKING` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCCHECKING`(IN `PCPID` INT)
+LABEL : BEGIN-- 遍历数据结束标志
+	DECLARE
+		MCOLUMNNAME,
+		MVALUES,
+		MVALUES0,
+		MVALUES1,
+		MVALUES2 VARCHAR ( 100 );-- 定义预处理SQL语句
+	DECLARE
+		SQL_FOR_SELECT VARCHAR ( 2000 );
+	DECLARE
+		MCOUNT INT DEFAULT 0;
+	DECLARE
+		DONE INT DEFAULT FALSE;
+	DECLARE
+		MISMONTH,
+		MISSEND TINYINT;-- 游标
+	DECLARE
+		CUR_ACCOUNT CURSOR FOR SELECT
+		COLUMN_NAME 
+	FROM
+		INFORMATION_SCHEMA.COLUMNS 
+	WHERE
+		TABLE_NAME = 'AR_CALC_BONUS_BS_DETAIL' 
+		AND TABLE_SCHEMA = 'aikang_db_28' 
+		AND COLUMN_NAME NOT IN ( 'CALC_YEAR', 'CALC_MONTH', 'P_CALC_MONTH', 'CREATED_AT', 'ID', 'LAYER' ) 
+		AND DATA_TYPE IN ( 'DECIMAL', 'DOUBLE', 'INT' );-- 将结束标志绑定到游标
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET DONE = TRUE;
+	START TRANSACTION;
+	SELECT
+		AP.IS_MONTH,
+		AP.IS_SENT INTO MISMONTH,
+		MISSEND 
+	FROM
+		AR_PERIOD AP 
+	WHERE
+		AP.PERIOD_NUM = PCPID;-- 查看是否月结
+	IF
+		( MISMONTH = 0 OR MISSEND = 1 ) THEN
+			LEAVE LABEL;
+		
+	END IF;-- 打开游标
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_CHECKING 
+	WHERE
+		PERIOD_NUM >= PCPID;
+	OPEN CUR_ACCOUNT;-- 遍历
+	READ_LOOP :
+	LOOP-- 取值 取多个字段
+		FETCH NEXT 
+		FROM
+			CUR_ACCOUNT INTO MCOLUMNNAME;
+		IF
+			DONE THEN
+				LEAVE READ_LOOP;
+			
+		END IF;
+		
+		SET SQL_FOR_SELECT = CONCAT(
+			"SELECT COUNT(*) INTO @MVALUES0 FROM (SELECT IFNULL(A1.USER_ID,'-1') MAIN_ID,IFNULL(A2.USER_ID,'-1') TEST_ID,IFNULL(A1.",
+			MCOLUMNNAME,
+			",0) NAME1,IFNULL(A2.",
+			MCOLUMNNAME,
+			",0) NAME2 FROM AR_CALC_BONUS_BS_DETAIL A1 LEFT JOIN AR_CALC_BONUS_BS_DETAIL_CALC A2 ON A1.USER_ID = A2.USER_ID WHERE A1.PERIOD_NUM = ",
+			PCPID,
+			" AND A2.PERIOD_NUM = ",
+			PCPID,
+			" UNION SELECT IFNULL(A2.USER_ID,'-1') MAIN_ID,IFNULL(A1.USER_ID,'-1') TEST_ID,IFNULL(A2.",
+			MCOLUMNNAME,
+			",0) NAME1,IFNULL(A1.",
+			MCOLUMNNAME,
+			",0) NAME2 FROM AR_CALC_BONUS_BS_DETAIL_CALC A1 LEFT JOIN AR_CALC_BONUS_BS_DETAIL A2 ON A1.USER_ID = A2.USER_ID WHERE A1.PERIOD_NUM = ",
+			PCPID,
+			" AND A2.PERIOD_NUM = ",
+			PCPID,
+			") B WHERE B.MAIN_ID != B.TEST_ID OR ABS(B.NAME1-B.NAME2)>0.5" 
+		);-- 拼接查询SQL语句
+		
+		SET @SQL = SQL_FOR_SELECT;
+		PREPARE STMT 
+		FROM
+			@SQL;-- 预处理动态SQL语句
+		EXECUTE STMT;-- 执行SQL语句
+		DEALLOCATE PREPARE STMT;
+		
+		SET MVALUES0 := @MVALUES0;
+		
+		SET SQL_FOR_SELECT = CONCAT( "SELECT IFNULL(SUM(", MCOLUMNNAME, "),0) INTO @MVALUES1 FROM  AR_CALC_BONUS_BS_DETAIL  WHERE PERIOD_NUM = '", PCPID, "'" );-- 拼接查询SQL语句
+		
+		SET @SQL = SQL_FOR_SELECT;
+		PREPARE STMT 
+		FROM
+			@SQL;-- 预处理动态SQL语句
+		EXECUTE STMT;-- 执行SQL语句
+		DEALLOCATE PREPARE STMT;
+		
+		SET MVALUES1 := @MVALUES1;
+		
+		SET SQL_FOR_SELECT = CONCAT( "SELECT IFNULL(SUM(", MCOLUMNNAME, "),0) INTO @MVALUES2 FROM  AR_CALC_BONUS_BS_DETAIL_CALC  WHERE USER_ID != '0' AND PERIOD_NUM = '", PCPID, "'" );-- 拼接查询SQL语句
+		
+		SET @SQL = SQL_FOR_SELECT;
+		PREPARE STMT 
+		FROM
+			@SQL;-- 预处理动态SQL语句
+		EXECUTE STMT;-- 执行SQL语句
+		DEALLOCATE PREPARE STMT;
+		
+		SET MVALUES2 := @MVALUES2;
+		INSERT INTO AR_CALC_BONUS_BS_CHECKING ( PERIOD_NUM, COLUMN_NAME, DIFF_COUNT, MAIN_SUM, CALC_SUM, DIFF_SUM )
+		VALUES
+			(
+				PCPID,
+				MCOLUMNNAME,
+				MVALUES0,
+				MVALUES1,
+				MVALUES2,
+				ABS(
+					CONVERT (
+						MVALUES1,
+						DECIMAL ( 12, 2 ))- CONVERT (
+						MVALUES2,
+					DECIMAL ( 12, 2 ))));
+		COMMIT;
+		
+	END LOOP;
+	CLOSE CUR_ACCOUNT;
+	SELECT
+		COUNT(*) INTO MCOUNT 
+	FROM
+		AR_CALC_BONUS_BS_CHECKING 
+	WHERE
+		( DIFF_COUNT > 0 OR DIFF_SUM >= 1 ) 
+		AND COLUMN_NAME IN (
+			'USER_TYPE10',
+			'USER_TYPE',
+			'BONUS10',
+			'BONUS20',
+			'BONUS30',
+			'BONUS40',
+			'BONUS50',
+			'BONUS60',
+			'BONUS70',
+			'BONUS80',
+			'BONUS90',
+			'BONUS100',
+			'BONUS110',
+			'ORI_BONUS',
+			'AMOUNT',
+			'PRODUCT_POINT' 
+		);
+	IF
+		( MCOUNT = 0 ) THEN
+			UPDATE AR_CALC_BONUS_BS_STAT T 
+			SET T.CHECK_STATUS = 1 
+		WHERE
+			T.PERIOD_NUM = PCPID;
+		
+	END IF;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCCLEAN` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCCLEAN`(IN `PCPID` INT)
+BEGIN-- 删除当期奖金
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_CALC;
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_TEST 
+	WHERE
+		CALC_PERIOD_ID >= PCPID;-- 使用的奖金表
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS 
+	WHERE
+		PERIOD_NUM >= PCPID;
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_DETAIL 
+	WHERE
+		PERIOD_NUM >= PCPID;-- 删除当期网体
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_CALC_NET;
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_TEST_NET 
+	WHERE
+		CALC_PERIOD_ID >= PCPID;-- 删除拨出表
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_STAT 
+	WHERE
+		PERIOD_NUM >= PCPID;-- 删除明细表
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_DETAIL_BONUS 
+	WHERE
+		PERIOD_NUM >= PCPID;-- 删除日志
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_DETAIL_GPV 
+	WHERE
+		PERIOD_NUM >= PCPID;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCDELNET` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCDELNET`(IN `PLAYER` INT)
+BEGIN
+	DECLARE
+		FLAG INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MMAXUSERID,
+		MINTRODUCERID VARCHAR ( 50 );
+	/*DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		DN CURSOR FOR SELECT
+		USER_ID 
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		LAYER = PLAYER 
+		AND USER_TYPE = 0;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;*/
+	START TRANSACTION;-- 打开游标
+	/*OPEN DN;-- 获取结果
+	L2 :
+	LOOP
+			FETCH DN INTO MUSERID;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;-- 查询需要删除会员的推荐人ID
+		SELECT
+			T.INTRODUCER_ID INTO MINTRODUCERID 
+		FROM
+			AR_BS_BONUS_103_CALC_NET T 
+		WHERE
+			T.USER_ID = MUSERID;-- 更改需要删除会员第一代的推荐人ID以及层数
+		UPDATE AR_BS_BONUS_103_CALC_NET T 
+		SET T.INTRODUCER_ID = MINTRODUCERID,
+		T.LAYER = T.LAYER - 1 
+		WHERE
+			T.INTRODUCER_ID = MUSERID;-- 关闭游标
+		
+	END LOOP;
+	CLOSE DN;*/
+	UPDATE AR_BS_BONUS_103_CALC_NET
+	SET DELETED = 1
+	WHERE
+		LAYER = PLAYER 
+		AND USER_TYPE = 0;
+	UPDATE AR_BS_BONUS_103_CALC_NET T1
+	INNER JOIN AR_BS_BONUS_103_CALC_NET T2
+	ON T1.INTRODUCER_ID = T2.USER_ID AND T1.LAYER = PLAYER+1 AND T2.LAYER =  PLAYER AND T2.USER_TYPE = 0
+	SET T1.INTRODUCER_ID = T2.INTRODUCER_ID,T1.LAYER = PLAYER;
+	DELETE
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		LAYER = PLAYER 
+		AND USER_TYPE = 0
+		AND DELETED = 1;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCINIT` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCINIT`(IN `PCPID` INT, IN `PCALCMONTH` TINYINT, IN `PCALCYEAR` INT)
+BEGIN
+
+    DECLARE
+        AC_USER_NO INT;     -- 邀请会员达标数
+    DECLARE
+        MLIMITPV,   -- 邀请会员不及格达标PV
+        AC_PERF_PV DECIMAL ( 10, 2 );   -- 邀请会员及格达标PV
+
+    -- 查询第一个级别的邀请会员数、达标PV值以及等奖比例
+    SELECT
+        T.ACHIEVE_PV,
+        T.ACHIEVE_PERF_PV,
+        T.ACHIEVE_MEMBER_NUM
+    INTO MLIMITPV, AC_PERF_PV, AC_USER_NO
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+        T.ID = 'E121497617216708615';
+
+    INSERT INTO AR_BS_BONUS_103_CALC (
+        LAST_DEC_LV,
+        LAST_EMP_LV,
+        LAST_STATUS,
+        USER_ID,
+        INTRODUCER_ID,
+        LAYER,
+        PV,
+        GPV10,
+        GPV,
+        GPV_4_CALC,
+        USER_TYPE10,
+        USER_TYPE,
+        BONUS10,
+        BONUS20,
+        BONUS30,
+        BONUS40,
+        BONUS50,
+        BONUS60,
+        BONUS70,
+        BONUS80,
+        BONUS90,
+        BONUS100,
+        BONUS110,
+        BONUS,
+        PRODUCT_POINT,
+        CALC_PERIOD_ID,
+        ACHIEVE_MEMBER_NUM,
+        ACHIEVE_PERF_PV
+    ) SELECT
+          AU.LAST_DEC_LV,
+          AU.EMP_LV,
+          AU.STATUS,
+          AU.ID,
+          IFNULL( AURN.PARENT_UID, 0 ),
+          AURN.TOP_DEEP,
+          IFNULL( AO.PV, 0 ),
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          PCPID,
+          IFNULL(DO.ACHIEVE_MEMBER_NUM, 0),
+          IF(DO.ACHIEVE_MEMBER_NUM >= AC_USER_NO, AC_PERF_PV, MLIMITPV)
+    FROM
+        AR_USER AU
+    INNER JOIN AR_USER_RELATION_NEW AURN ON AU.ID = AURN.USER_ID
+    LEFT JOIN (
+        SELECT
+            USER_ID,
+            SUM( PV ) PV
+        FROM
+            AR_PERF_ORDER
+        WHERE
+                PERIOD_NUM IN ( SELECT PERIOD_NUM FROM AR_PERIOD WHERE CALC_YEAR = PCALCYEAR AND CALC_MONTH = PCALCMONTH )
+        GROUP BY
+            USER_ID
+    ) AO ON AO.USER_ID = AU.ID
+    LEFT JOIN (
+        SELECT
+            R.PARENT_UID,
+            COUNT(R.USER_ID) AS ACHIEVE_MEMBER_NUM
+        FROM
+            AR_PERF_ORDER O
+            INNER JOIN AR_USER_RELATION_NEW R ON O.USER_ID = R.USER_ID
+        WHERE
+            O.DEC_TYPE = 'ZC' AND O.PERIOD_NUM IN ( SELECT PERIOD_NUM FROM AR_PERIOD WHERE CALC_YEAR = PCALCYEAR AND CALC_MONTH = PCALCMONTH )
+        GROUP BY R.PARENT_UID
+    ) DO ON DO.PARENT_UID = AU.ID
+    WHERE
+            AU.DELETED = 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCKEEP` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCKEEP`(IN PCALCYEAR int, IN PCALCMONTH int)
+BEGIN
+    INSERT INTO AR_BS_BONUS_103_TEST SELECT
+        *
+    FROM
+        AR_BS_BONUS_103_CALC;
+    INSERT INTO AR_BS_BONUS_103_TEST_NET SELECT
+        *
+    FROM
+        AR_BS_BONUS_103_CALC_NET;
+    INSERT INTO AR_CALC_BONUS_BS (
+        USER_ID,
+        INTRODUCER_ID,
+        LAST_DEC_LV,
+        LAST_EMP_LV,
+        LAST_STATUS,
+        LEVEL_ID,
+        ORI_BONUS,
+        MANAGE_TAX,
+        AMOUNT,
+        PRODUCT_POINT,
+        PERIOD_NUM,
+        CALC_YEAR,
+        CALC_MONTH,
+        P_CALC_MONTH,
+        CREATED_AT,
+        ORI_BONUS_MNT,
+        MANAGE_TAX_MNT,
+        AMOUNT_MNT,
+        ORI_BONUS_ABBR,
+        MANAGE_TAX_ABBR,
+        AMOUNT_ABBR,
+        ACHIEVE_MEMBER_NUM,
+        ACHIEVE_PERF_PV
+    ) SELECT
+          A.USER_ID,
+          A.INTRODUCER_ID,
+          A.LAST_DEC_LV,
+          A.LAST_EMP_LV,
+          A.LAST_STATUS,
+          B.ID,
+          IFNULL( A.BONUS, 0 ),
+          0,
+          IFNULL( A.BONUS, 0 ),
+          IFNULL( A.PRODUCT_POINT, 0 ),
+          CALC_PERIOD_ID,
+          PCALCYEAR,
+          PCALCYEAR*100+PCALCMONTH,
+          NOW(),
+          UNIX_TIMESTAMP(
+                  NOW()),
+          IFNULL( A.BONUS_MNT, 0 ),
+          0,
+          IFNULL( A.BONUS_MNT, 0 ),
+          IFNULL( A.BONUS_ABBR, 0 ),
+          0,
+          IFNULL( A.BONUS_ABBR, 0 ),
+          A.ACHIEVE_MEMBER_NUM,
+          A.ACHIEVE_PERF_PV
+    FROM
+        AR_BS_BONUS_103_CALC A
+            LEFT JOIN AR_EMPLOY_LEVEL B ON A.USER_TYPE = B.SORT * 10
+    WHERE
+            A.BONUS > 0
+       OR A.PRODUCT_POINT > 0;
+    INSERT INTO AR_CALC_BONUS_BS_DETAIL (
+        USER_ID,
+        INTRODUCER_ID,
+        LAST_DEC_LV,
+        LAST_EMP_LV,
+        LAST_STATUS,
+        LEVEL_ID,
+        ORI_BONUS,
+        MANAGE_TAX,
+        AMOUNT,
+        PRODUCT_POINT,
+        PERIOD_NUM,
+        LAYER,
+        PV,
+        GPV10,
+        GPV,
+        GPV_4_CALC,
+        USER_TYPE10,
+        USER_TYPE,
+        BONUS10,
+        BONUS20,
+        BONUS30,
+        BONUS40,
+        BONUS50,
+        BONUS60,
+        BONUS70,
+        BONUS80,
+        BONUS90,
+        BONUS100,
+        BONUS110,
+        CALC_YEAR,
+        CALC_MONTH,
+        P_CALC_MONTH,
+        CREATED_AT,
+        ORI_BONUS_MNT,
+        MANAGE_TAX_MNT,
+        AMOUNT_MNT,
+        ORI_BONUS_ABBR,
+        MANAGE_TAX_ABBR,
+        AMOUNT_ABBR
+    ) SELECT
+          USER_ID,
+          INTRODUCER_ID,
+          LAST_DEC_LV,
+          LAST_EMP_LV,
+          LAST_STATUS,
+          B.ID,
+          IFNULL( BONUS, 0 ),
+          0,
+          IFNULL( BONUS, 0 ),
+          IFNULL( PRODUCT_POINT, 0 ),
+          CALC_PERIOD_ID,
+          LAYER,
+          PV,
+          GPV10,
+          GPV,
+          GPV_4_CALC,
+          USER_TYPE10,
+          USER_TYPE,
+          BONUS10,
+          BONUS20,
+          BONUS30,
+          BONUS40,
+          BONUS50,
+          BONUS60,
+          BONUS70,
+          BONUS80,
+          BONUS90,
+          BONUS100,
+          BONUS110,
+          PCALCYEAR,
+          PCALCYEAR*100+PCALCMONTH,
+          NOW(),
+          UNIX_TIMESTAMP(
+                  NOW()),
+          IFNULL( A.BONUS_MNT, 0 ),
+          0,
+          IFNULL( A.BONUS_MNT, 0 ),
+          IFNULL( A.BONUS_ABBR, 0 ),
+          0,
+          IFNULL( A.BONUS_ABBR, 0 )
+    FROM
+        AR_BS_BONUS_103_CALC A
+            LEFT JOIN ( SELECT ID, SORT FROM AR_EMPLOY_LEVEL ) B ON A.USER_TYPE = B.SORT * 10;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCLEVEL` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCLEVEL`(IN `PCPID` INT)
+BEGIN
+	DECLARE
+		FLAG,
+		MLAYER,
+		MUSERTYPE INT DEFAULT 0;
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	
+		DECLARE
+		MC CURSOR FOR SELECT
+		LAYER
+	FROM
+		AR_BS_BONUS_103_CALC_NET T 
+	WHERE
+		T.USER_TYPE = 30 GROUP BY LAYER ORDER BY LAYER DESC;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;
+	START TRANSACTION;-- 打开游标
+
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MLAYER;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;
+		
+-- 计算当前层数的奖金以及向上所贡献的奖金
+			CALL CALCLEVEL_ ( MLAYER ,PCPID);
+	END LOOP;
+	CLOSE MC;
+	/*WHILE
+			( MLAYER >= 0 ) DO-- 计算当前层数的奖金以及向上所贡献的奖金
+			CALL CALCLEVEL_ ( MLAYER );
+		
+		SET MLAYER := MLAYER - 1;
+		
+	END WHILE;*/-- 级别更新
+	
+
+	UPDATE AR_BS_BONUS_103_CALC C1
+	INNER JOIN AR_BS_BONUS_103_CALC_NET C2 ON C1.USER_ID = C2.USER_ID 
+	AND C1.USER_TYPE <> C2.USER_TYPE 
+	SET C1.USER_TYPE = C2.USER_TYPE;
+
+
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCLEVEL_` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCLEVEL_`(IN PLAYER int, IN PCPID int)
+BEGIN
+	DECLARE
+		FLAG,
+		MLAYER,
+		MUSERTYPE INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MBONUSID,
+		MNEWBONUSID VARCHAR ( 50 );
+	DECLARE
+		MRATE,
+		MRATE30,
+		MRATE40,
+		MRATE50,
+		MRATE60,
+		MRATE70,
+		MRATE80,
+		MRATE90,
+		MRATE100,
+		MRATE110,
+		MBONUS,
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		MC CURSOR FOR SELECT
+		C.USER_ID,
+		C.TEAM_GPV 
+	FROM
+		AR_BS_BONUS_103_CALC_NET C 
+	WHERE
+		C.USER_TYPE >= 30 
+		AND LAYER = PLAYER;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;
+
+	START TRANSACTION;
+
+	-- 取各级别蓝星奖比例【开始】
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE30 
+	FROM
+		AR_EMPLOY_LEVEL T 
+	WHERE
+		T.ID = 'E121497617216708616';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE40 
+	FROM
+		AR_EMPLOY_LEVEL T 
+	WHERE
+		T.ID = '67BE6A4D03C52288E055736AECE8644D';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE50 
+	FROM
+		AR_EMPLOY_LEVEL T 
+	WHERE
+		T.ID = '67BE6EA2070D22EBE055736AECE8644D';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE60
+	FROM
+		AR_EMPLOY_LEVEL T
+	WHERE
+		T.ID = '67BE742A336F2370E055736AECE8644D';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE70
+	FROM
+		AR_EMPLOY_LEVEL T
+	WHERE
+		T.ID = '67BE805032C22492E055736AECE8644D';
+
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE80
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '67BE82019BE524CAE055736AECE8644D';
+#
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE90
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '99BE5FE7857C216AE055736AECE8644D';
+#
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE100
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '99BE5FE9008C216AE055736AECE8644D';
+#
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE110
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '99BE5FE7857C216AE000223AECE8644D';
+    -- 取各级别蓝星奖比例【结束】
+
+    -- 打开游标
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MUSERID,
+			MGPV;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;-- 这里是为了显示获取结果
+		
+		SET MLAYER := 1;
+		
+		SET MBONUSID := MUSERID;
+		OUTER_LABEL :
+		WHILE ( MLAYER <= 5 ) DO
+			IF ( MLAYER > 1 ) THEN
+					CALL CALCREFEREE ( MBONUSID, MNEWBONUSID );
+				IF ( ISNULL( MNEWBONUSID ) OR MNEWBONUSID = 0 ) THEN
+						LEAVE OUTER_LABEL;
+					ELSE 
+						SET MBONUSID := MNEWBONUSID;
+					
+				END IF;
+				
+			END IF;
+			IF
+				( MLAYER = 1 ) THEN
+					
+					SET MRATE := MRATE30;
+				
+				ELSEIF ( MLAYER = 2 ) THEN
+				
+				SET MRATE := MRATE40;
+				
+				ELSEIF ( MLAYER = 3 ) THEN
+				
+				SET MRATE := MRATE50;
+				
+				ELSEIF ( MLAYER = 4 ) THEN
+				
+				SET MRATE := MRATE60;
+				
+				ELSEIF ( MLAYER = 5 ) THEN
+				
+				SET MRATE := MRATE70;
+				
+				ELSEIF ( MLAYER = 6 ) THEN
+				
+				SET MRATE := MRATE80;
+				
+				ELSEIF ( MLAYER = 7 ) THEN
+				
+				SET MRATE := MRATE90;
+				
+				ELSEIF ( MLAYER = 8 ) THEN
+				
+				SET MRATE := MRATE100;
+				
+				ELSEIF ( MLAYER = 9 ) THEN
+				
+				SET MRATE := MRATE110;
+				
+			END IF;
+			
+			SET MBONUS := MGPV * MRATE;
+			IF
+				( MLAYER = 1 ) THEN
+					UPDATE AR_BS_BONUS_103_CALC T 
+					SET T.BONUS30 = T.BONUS30 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, NULL, 30, MBONUS, MGPV, MRATE ,PCPID);
+				
+				ELSEIF ( MLAYER = 2 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS40 = T.BONUS40 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 40, MBONUS, MGPV, MRATE ,PCPID);
+				
+				ELSEIF ( MLAYER = 3 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS50 = T.BONUS50 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 50, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 4 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS60 = T.BONUS60 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 60, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 5 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS70 = T.BONUS70 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 70, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 6 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS80 = T.BONUS80 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 80, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 7 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS90 = T.BONUS90 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 90, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 8 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS100 = T.BONUS100 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 100, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 9 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS110 = T.BONUS110 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 110, MBONUS, MGPV, MRATE,PCPID );
+				
+			END IF;-- 计算会员的级别
+			UPDATE AR_BS_BONUS_103_CALC_NET T 
+			SET T.USER_TYPE = ( MLAYER + 2 )* 10 
+			WHERE
+				T.USER_ID = MBONUSID 
+				AND USER_TYPE <=(
+					MLAYER + 1 
+				)* 10;
+			
+			SET MLAYER := MLAYER + 1;
+			
+		END WHILE;-- 关闭游标
+		
+	END LOOP;
+	CLOSE MC;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCLEVEL_kevin_01` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCLEVEL_kevin_01`(IN PLAYER int, IN PCPID int)
+BEGIN
+    DECLARE
+        FLAG,
+        MLAYER,
+        MUSERTYPE INT DEFAULT 0;
+    DECLARE
+        MUSERID,
+        MBONUSID,
+        MNEWBONUSID VARCHAR ( 50 );
+    DECLARE
+        MRATE,
+        MRATE30,
+        MRATE40,
+        MRATE50,
+        MRATE60,
+        MRATE70,
+        MRATE80,
+        MRATE90,
+        MRATE100,
+        MRATE110,
+        MBONUS,
+        MGPV DECIMAL ( 10, 2 );
+    DECLARE
+        MC CURSOR FOR SELECT
+                          C.USER_ID,
+                          C.TEAM_GPV
+                      FROM
+                          AR_BS_BONUS_103_CALC_NET C
+                      WHERE
+                              C.USER_TYPE >= 30
+                        AND LAYER = PLAYER;
+    DECLARE
+        CONTINUE HANDLER FOR NOT FOUND
+        SET FLAG = 1;
+    START TRANSACTION;
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE30
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = 'E121497617216708616';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE40
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE6A4D03C52288E055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE50
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE6EA2070D22EBE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE60
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE742A336F2370E055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE70
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE805032C22492E055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE80
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE82019BE524CAE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE90
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '99BE5FE7857C216AE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE100
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '99BE5FE9008C216AE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE110
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '99BE5FE7857C216AE000223AECE8644D';-- 打开游标
+    OPEN MC;-- 获取结果
+    L2 :
+    LOOP
+        FETCH MC INTO MUSERID,
+            MGPV;
+        IF
+                FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+            LEAVE L2;
+
+        END IF;-- 这里是为了显示获取结果
+
+        SET MLAYER := 1;
+
+        SET MBONUSID := MUSERID;
+        OUTER_LABEL :
+        WHILE
+            ( MLAYER <= 9 ) DO
+                IF
+                    ( MLAYER > 1 ) THEN
+                    CALL CALCREFEREE ( MBONUSID, MNEWBONUSID );
+                    IF
+                        ( ISNULL( MNEWBONUSID ) OR MNEWBONUSID = 0 ) THEN
+                        LEAVE OUTER_LABEL;
+                    ELSE
+                        SET MBONUSID := MNEWBONUSID;
+
+                    END IF;
+
+                END IF;
+                IF
+                    ( MLAYER = 1 ) THEN
+
+                    SET MRATE := MRATE30;
+
+                ELSEIF ( MLAYER = 2 ) THEN
+
+                    SET MRATE := MRATE40;
+
+                ELSEIF ( MLAYER = 3 ) THEN
+
+                    SET MRATE := MRATE50;
+
+                ELSEIF ( MLAYER = 4 ) THEN
+
+                    SET MRATE := MRATE60;
+
+                ELSEIF ( MLAYER = 5 ) THEN
+
+                    SET MRATE := MRATE70;
+
+                ELSEIF ( MLAYER = 6 ) THEN
+
+                    SET MRATE := MRATE80;
+
+                ELSEIF ( MLAYER = 7 ) THEN
+
+                    SET MRATE := MRATE90;
+
+                ELSEIF ( MLAYER = 8 ) THEN
+
+                    SET MRATE := MRATE100;
+
+                ELSEIF ( MLAYER = 9 ) THEN
+
+                    SET MRATE := MRATE110;
+
+                END IF;
+
+                SET MBONUS := MGPV * MRATE;
+                IF
+                    ( MLAYER = 1 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS30 = T.BONUS30 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, NULL, 30, MBONUS, MGPV, MRATE ,PCPID);
+
+                ELSEIF ( MLAYER = 2 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS40 = T.BONUS40 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 40, MBONUS, MGPV, MRATE ,PCPID);
+
+                ELSEIF ( MLAYER = 3 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS50 = T.BONUS50 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 50, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 4 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS60 = T.BONUS60 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 60, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 5 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS70 = T.BONUS70 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 70, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 6 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS80 = T.BONUS80 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 80, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 7 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS90 = T.BONUS90 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 90, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 8 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS100 = T.BONUS100 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 100, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 9 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS110 = T.BONUS110 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 110, MBONUS, MGPV, MRATE,PCPID );
+
+                END IF;-- 计算会员的级别
+                UPDATE AR_BS_BONUS_103_CALC_NET T
+                SET T.USER_TYPE = ( MLAYER + 2 )* 10
+                WHERE
+                        T.USER_ID = MBONUSID
+                  AND USER_TYPE <=(
+                                          MLAYER + 1
+                                      )* 10;
+
+                SET MLAYER := MLAYER + 1;
+
+            END WHILE;-- 关闭游标
+
+    END LOOP;
+    CLOSE MC;
+    COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCMAIN` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCMAIN`(IN `PCPID` int,OUT `PRESULT` varchar(100))
+BEGIN
+	#Routine body goes here...
+DECLARE EXIT HANDLER FOR SQLEXCEPTION  
+SET PRESULT = 'FAIL';
+ CALL CalcBlue(PCPID);
+SET PRESULT = 'SUCCESS';
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCPOINT` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCPOINT`()
+BEGIN
+	DECLARE
+		MPOINTRATE DECIMAL ( 10, 2 );
+	SELECT 
+	VALUE
+		/ 100 INTO MPOINTRATE 
+	FROM
+		AR_CONFIG 
+	WHERE
+		CONFIG_NAME = 'bsNoPvPointsPercent';
+	UPDATE AR_BS_BONUS_103_CALC 
+	SET PRODUCT_POINT = PV * MPOINTRATE 
+	WHERE
+		USER_TYPE10 = 0 
+		AND USER_TYPE = 0 
+		AND PV > 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCRECORD` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCRECORD`(IN `PID` INT, IN `PEVENT` VARCHAR ( 255 ), IN `PCPID` INT, IN `PNOW` DATETIME)
+BEGIN
+	INSERT INTO AR_BS_BONUS_103_CALC_EVENT ( ID, EVENT, CREATION_TIME, CALC_PERIOD_ID )
+	VALUES
+		( PID, PEVENT, NOW(), PCPID );
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCREFEREE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCREFEREE`(IN `PBONUSID` VARCHAR ( 50 ),
+	OUT `PNEWBONUSID` VARCHAR ( 50 ))
+BEGIN
+	DECLARE
+		MUSERID,
+		MBONUSID VARCHAR ( 50 );
+	DECLARE
+		MUSERTYPE INT;
+	
+	/*SET MUSERID := PBONUSID;
+	OUTER_LABEL :
+	WHILE
+			(
+			ISNULL( MBONUSID )) DO
+		SELECT
+			INTRODUCER_ID INTO MUSERID 
+		FROM
+			AR_BS_BONUS_103_CALC_NET T 
+		WHERE
+			T.USER_ID = MUSERID;
+		IF
+			( MUSERID = 0 ) THEN
+				
+				SET PNEWBONUSID := NULL;
+			LEAVE OUTER_LABEL;
+			
+		END IF;
+		SELECT
+			USER_TYPE INTO MUSERTYPE 
+		FROM
+			AR_BS_BONUS_103_CALC_NET T 
+		WHERE
+			T.USER_ID = MUSERID;
+		IF
+			( MUSERTYPE >= 30 ) THEN
+				
+				SET PNEWBONUSID := MUSERID;
+			LEAVE OUTER_LABEL;
+			
+		END IF;
+		
+	END WHILE;*/
+  SELECT INTRODUCER_ID30 INTO PNEWBONUSID FROM AR_BS_BONUS_103_CALC_NET WHERE USER_ID = PBONUSID;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCSTAT` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCSTAT`(IN PCPID int)
+BEGIN
+	INSERT INTO AR_CALC_BONUS_BS_STAT (
+		PERIOD_NUM,
+		TOTAL_PV,
+		BONUS10,
+		PERCENT10,
+		BONUS20,
+		PERCENT20,
+		BONUS30,
+		PERCENT30,
+		BONUS40,
+		PERCENT40,
+		BONUS50,
+		PERCENT50,
+		BONUS60,
+		PERCENT60,
+		BONUS70,
+		PERCENT70,
+		BONUS80,
+		PERCENT80,
+		BONUS90,
+		PERCENT90,
+		BONUS100,
+		PERCENT100,
+		BONUS110,
+		PERCENT110,
+		BONUS,
+		PERCENT,
+		CHECK_STATUS,
+        BONUS_MNT,
+        BONUS_MNT_PERCENT,
+        BONUS_ABBR,
+        BONUS_ABBR_PERCENT
+	) SELECT
+	PCPID,
+	SUM( PV ),
+	SUM( BONUS10 ),
+	0,
+	SUM( BONUS20 ),
+	0,
+	SUM( BONUS30 ),
+	0,
+	SUM( BONUS40 ),
+	0,
+	SUM( BONUS50 ),
+	0,
+	SUM( BONUS60 ),
+	0,
+	SUM( BONUS70 ),
+	0,
+	SUM( BONUS80 ),
+	0,
+	SUM( BONUS90 ),
+	0,
+	SUM( BONUS100 ),
+	0,
+	SUM( BONUS110 ),
+	0,
+	SUM( BONUS ),
+	0,
+	0,
+    SUM(BONUS_MNT),
+    0,
+	SUM(BONUS_ABBR),
+    0
+	FROM
+		AR_BS_BONUS_103_CALC;
+
+	UPDATE AR_CALC_BONUS_BS_STAT 
+        SET PERCENT10 = BONUS10 / TOTAL_PV,
+        PERCENT20 = BONUS20 / TOTAL_PV,
+        PERCENT30 = BONUS30 / TOTAL_PV,
+        PERCENT40 = BONUS40 / TOTAL_PV,
+        PERCENT50 = BONUS50 / TOTAL_PV,
+        PERCENT60 = BONUS60 / TOTAL_PV,
+        PERCENT70 = BONUS70 / TOTAL_PV,
+        PERCENT80 = BONUS80 / TOTAL_PV,
+        PERCENT90 = BONUS90 / TOTAL_PV,
+        PERCENT100 = BONUS100 / TOTAL_PV,
+        PERCENT110 = BONUS110 / TOTAL_PV,
+        PERCENT = BONUS / TOTAL_PV,
+        BONUS_MNT_PERCENT = BONUS_MNT / TOTAL_PV,
+        BONUS_ABBR_PERCENT = BONUS_ABBR / TOTAL_PV
+	WHERE
+		PERIOD_NUM = PCPID AND TOTAL_PV > 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCSUMMARY` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCSUMMARY`()
+BEGIN
+	UPDATE AR_BS_BONUS_103_CALC T 
+	    SET T.BONUS = BONUS10 + BONUS20 + BONUS30 + BONUS40 + BONUS50 + BONUS60 + BONUS70 + BONUS80 + BONUS90 + BONUS100 + BONUS110,
+	        T.BONUS_MNT = BONUS30 + BONUS40 + BONUS50 + BONUS60 + BONUS70 + BONUS80 + BONUS90 + BONUS100 + BONUS110,
+	        T.BONUS_ABBR = BONUS10 + BONUS20
+	WHERE
+		T.BONUS10 > 0 
+		OR T.BONUS20 > 0 
+		OR T.BONUS30 > 0 
+		OR T.BONUS40 > 0 
+		OR T.BONUS50 > 0 
+		OR T.BONUS60 > 0 
+		OR T.BONUS70 > 0 
+		OR T.BONUS80 > 0 
+		OR T.BONUS90 > 0 
+		OR T.BONUS100 > 0 
+		OR T.BONUS110 > 0;
+	UPDATE AR_BS_BONUS_103_CALC T 
+	SET GPV = 0 
+	WHERE
+		T.INTRODUCER_ID = '0' 
+		AND USER_TYPE = 0;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCTOTALGPV` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCTOTALGPV`()
+BEGIN
+	DECLARE
+		MLAYER,
+		MMINLAYER,
+		MUSERTYPE INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MMAXUSERID VARCHAR ( 50 );
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	SELECT
+		MAX( LAYER ) INTO MLAYER 
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		GPV > 0;
+	SELECT
+		MIN( LAYER ) INTO MMINLAYER 
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		USER_TYPE = 30;
+	UPDATE AR_BS_BONUS_103_CALC_NET T1
+	INNER JOIN AR_BS_BONUS_103_CALC_NET T2 ON IFNULL( T1.INTRODUCER_ID, '0' ) = T2.USER_ID 
+	AND T1.USER_TYPE = 30 
+	AND T2.USER_TYPE = 30 
+	SET T1.INTRODUCER_ID30 = T2.USER_ID;
+	WHILE
+			MLAYER > MMINLAYER DO
+			CALL CALCTOTALGPV_ ( MLAYER, MMINLAYER );
+		
+		SET MLAYER = MLAYER - 1;
+		
+	END WHILE;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCTOTALGPV_` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCTOTALGPV_`(IN `PLAYER` INT, -- 第几层
+	IN `PMINLAYER` INT)
+BEGIN
+	DECLARE
+		FLAG,
+		MLAYER,
+		MINTLAYER,
+		MUSERTYPE,
+		MINTTYPE INT DEFAULT 0;
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		MUSERID,
+		MUSERINTID,
+		MINTUSERID,
+		MINTRODUCERID VARCHAR ( 50 );
+	DECLARE
+		MC CURSOR FOR SELECT
+		C.USER_ID,
+		C.INTRODUCER_ID,
+		C.USER_TYPE,
+		C.GPV 
+	FROM
+		(
+		SELECT
+			USER_ID,
+			IFNULL( INTRODUCER_ID, '0' ) INTRODUCER_ID,
+			USER_TYPE,
+			GPV 
+		FROM
+			AR_BS_BONUS_103_CALC_NET 
+		WHERE
+			LAYER = PLAYER 
+			AND GPV > 0 
+			OR ( GPV = 0 AND USER_TYPE = 30 ) 
+		ORDER BY
+			USER_ID DESC 
+		) C;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;
+	START TRANSACTION;-- 打开游标
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MUSERID,
+			MUSERINTID,
+			MUSERTYPE,
+			MGPV;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;
+		SET MLAYER = PLAYER;
+		
+		SET MINTUSERID = MUSERINTID;
+		IF
+			( MINTUSERID != '0' ) THEN
+				OUTLABEL :
+			WHILE
+					MLAYER > PMINLAYER DO
+				SELECT
+					INTRODUCER_ID,
+					USER_TYPE,
+					LAYER INTO MINTRODUCERID,
+					MINTTYPE,
+					MLAYER 
+				FROM
+					AR_BS_BONUS_103_CALC_NET 
+				WHERE
+					USER_ID = MINTUSERID;
+				IF
+					( MINTUSERID != MUSERINTID AND MINTTYPE = 30 ) THEN
+						UPDATE AR_BS_BONUS_103_CALC_NET 
+						SET TEAM_GPV = TEAM_GPV + MGPV 
+					WHERE
+						USER_ID = MINTUSERID;
+					IF
+						( MUSERTYPE = 30 ) THEN
+							UPDATE AR_BS_BONUS_103_CALC_NET 
+							SET INTRODUCER_ID30 = MINTUSERID 
+						WHERE
+							USER_ID = MUSERID 
+							AND INTRODUCER_ID30 IS NULL;
+						
+					END IF;
+					LEAVE OUTLABEL;
+					
+				END IF;
+				
+				SET MINTUSERID = MINTRODUCERID;
+				
+			END WHILE;
+			
+		END IF;-- 关闭游标
+		
+	END LOOP;
+	CLOSE MC;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCUP30` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCUP30`()
+BEGIN
+	START TRANSACTION;
+	UPDATE AR_BS_BONUS_103_CALC_NET T1 
+	SET T1.USER_TYPE = 30 
+	WHERE
+		USER_TYPE >= 10 
+		AND DIRECTLY_UNDER >= 3;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCUPGARDE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CALCUPGARDE`(IN `PLAYER` INT)
+BEGIN
+	DECLARE
+		MLAYER,
+		MCOUNT,
+		MCOUNT1,
+		MCOUNT2 INT;
+	
+	SET MLAYER := PLAYER;
+	SELECT
+		COUNT(*) INTO MCOUNT 
+	FROM
+		AR_BS_BONUS_103_CALC T 
+	WHERE
+		T.LAYER = MLAYER 
+		AND USER_TYPE10 = 10 
+		AND USER_TYPE = 0;
+	IF
+		( MCOUNT > 0 ) THEN
+			BREAKLABLE :
+		WHILE
+				MLAYER > 0 DO
+			SELECT
+				COUNT(*) INTO MCOUNT1 
+			FROM
+				AR_BS_BONUS_103_CALC T1 
+			WHERE
+				T1.USER_TYPE10 = 10 
+				AND T1.LAYER = MLAYER - 1;
+			UPDATE AR_BS_BONUS_103_CALC T1
+			INNER JOIN ( SELECT INTRODUCER_ID FROM AR_BS_BONUS_103_CALC WHERE LAYER = MLAYER AND USER_TYPE10 = 10 GROUP BY INTRODUCER_ID ) T2 ON T1.USER_ID = T2.INTRODUCER_ID 
+			AND T1.USER_TYPE10 = 0 
+			AND T1.LAYER = MLAYER - 1 
+			SET T1.USER_TYPE10 = 10,
+			T1.USER_TYPE = 10;
+			SELECT
+				COUNT(*) INTO MCOUNT2 
+			FROM
+				AR_BS_BONUS_103_CALC T1 
+			WHERE
+				T1.USER_TYPE10 = 10 
+				AND T1.LAYER = MLAYER - 1;
+			IF
+				( MCOUNT1 = MCOUNT2 ) THEN
+					LEAVE BREAKLABLE;
+				
+			END IF;
+			
+			SET MLAYER := MLAYER - 1;
+			
+		END WHILE;
+		
+	END IF;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CLEANACTIVE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CLEANACTIVE`(IN `UNUMBER` VARCHAR(32))
+BEGIN
+DECLARE t_error INTEGER DEFAULT 0;    
+DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
+
+START TRANSACTION;
+  -- 备份用户的余额 奖金 兑换积分 复消积分
+	INSERT INTO `AR_ACTIVED_ACCOUNT_BACK` ( `USER_ID`, `USER_NAME`, `USER_CASH`, `EXCHANGE_POINTS`, `EXCHANGE_POINTS_TOTAL`, `RECONSUME_POINTS`, `RECONSUME_POINTS_TOTAL`, `USER_BONUS`, `RECONSUME_POINTS_EXPIRED` ) SELECT
+`AR_USER_BONUS`.`USER_ID`,
+`AR_USER`.`USER_NAME`,
+`AR_USER_WALLET`.`CASH`,
+`AR_USER_BONUS`.`EXCHANGE_POINTS`,
+`AR_USER_BONUS`.`EXCHANGE_POINTS_TOTAL`,
+`AR_USER_BONUS`.`RECONSUME_POINTS`,
+`AR_USER_BONUS`.`RECONSUME_POINTS_TOTAL`,
+`AR_USER_BONUS`.`BONUS`,
+`AR_USER_BONUS`.`RECONSUME_POINTS_EXPIRED` 
+FROM
+	`AR_USER_BONUS`
+	INNER JOIN `AR_USER` ON `AR_USER`.`ID` = `AR_USER_BONUS`.`USER_ID`
+	LEFT JOIN `AR_USER_WALLET` ON `AR_USER_WALLET`.`USER_ID` = `AR_USER_BONUS`.`USER_ID` 
+WHERE
+	`AR_USER`.`USER_NAME` = `UNUMBER`;
+
+	-- 删除用户奖金
+	DELETE  `UB`  FROM  `AR_USER_BONUS` `UB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	
+	-- 清除用户的cash余额
+	UPDATE `AR_USER_WALLET` INNER JOIN `AR_USER` ON `AR_USER`.`ID`=`AR_USER_WALLET`.`USER_ID`      SET  `AR_USER_WALLET`.`CASH`=0 WHERE `AR_USER`.`USER_NAME` = `UNUMBER`; 
+	
+	
+	-- 删除用户累计业绩
+	DELETE  `UP`  FROM  `AR_USER_PERF` `UP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	
+	-- 删除用户总奖金发送记录
+	DELETE  `CB`  FROM  `AR_CALC_BONUS` `CB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	
+	-- 删除用户各个奖金发送记录
+	DELETE  `CBBD`  FROM  `AR_CALC_BONUS_BD` `CBBD` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBBD`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBBS`  FROM  `AR_CALC_BONUS_BS` `CBBS` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBBS`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBBT`  FROM  `AR_CALC_BONUS_BT` `CBBT` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBBT`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBCF`  FROM  `AR_CALC_BONUS_CF` `CBCF` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBCF`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBFL`  FROM  `AR_CALC_BONUS_FL` `CBFL` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBFL`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBFW`  FROM  `AR_CALC_BONUS_FW` `CBFW` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBFW`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBFX`  FROM  `AR_CALC_BONUS_FX` `CBFX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBFX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBGL`  FROM  `AR_CALC_BONUS_GL` `CBGL` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBGL`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBGX`  FROM  `AR_CALC_BONUS_GX` `CBGX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBGX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBLS`  FROM  `AR_CALC_BONUS_LS` `CBLS` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBLS`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBLX`  FROM  `AR_CALC_BONUS_LX` `CBLX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBLX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBQY`  FROM  `AR_CALC_BONUS_QY` `CBQY` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBQY`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBST`  FROM  `AR_CALC_BONUS_STANDARD` `CBST` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBST`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBTG`  FROM  `AR_CALC_BONUS_TG` `CBTG` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBTG`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBVIP`  FROM  `AR_CALC_BONUS_VIP` `CBVIP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBVIP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBXF`  FROM  `AR_CALC_BONUS_XF` `CBXF` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBXF`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBYC`  FROM  `AR_CALC_BONUS_YC` `CBYC` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBYC`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBYJ`  FROM  `AR_CALC_BONUS_YJ` `CBYJ` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBYJ`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CMBU`  FROM  `AR_CALC_MONTH_BONUS_USER` `CMBU` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CMBU`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FB`  FROM  `AR_FLOW_BONUS` `FB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FC`  FROM  `AR_FLOW_CF` `FC` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FC`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FDZ`  FROM  `AR_FLOW_DEDUCT_ZR` `FDZ` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FDZ`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FEP`  FROM  `AR_FLOW_EXCHANGE_POINTS` `FEP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FEP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FLX`  FROM  `AR_FLOW_LX` `FLX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FLX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FRP`  FROM  `AR_FLOW_RECONSUME_POINTS` `FRP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FRP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FW`  FROM  `AR_FLOW_WALLET` `FW` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FW`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `HB`  FROM  `AR_HISTORY_BONUS` `HB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`HB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `UPEP`  FROM  `AR_USER_PERIOD_EXCHANGE_POINTS` `UPEP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UPEP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `UPP`  FROM  `AR_USER_PERIOD_POINTS` `UPP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UPP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `AW`  FROM  `AR_WITHDRAW` `AW` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`AW`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `AT`  FROM  `AR_TRANSFER` `AT` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`AT`.`OUT_UID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `ABA`  FROM  `AR_BALANCE_AUDIT` `ABA` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`ABA`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `R`  FROM  `AR_RECHARGE` `R` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`R`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `ASM`  FROM  `AR_SCORE_MONTH` `ASM` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`ASM`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	IF t_error = 1 THEN    
+      ROLLBACK;    
+  ELSE
+	    COMMIT;
+	END IF;
+	select t_error;  -- 返回标识位的结果集
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CONFOUNDING_DATA` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `CONFOUNDING_DATA`()
+BEGIN
+	#Routine body goes here...
+	UPDATE AR_BALANCE_AUDIT SET CREATE_REMARK = '';
+	
+	UPDATE AR_CALC_BONUS SET LAST_REAL_NAME = CONCAT(LAST_USER_NAME,'REAL_NAME'),LAST_REC_REAL_NAME = CONCAT(LAST_REC_USER_NAME,'REAL_NAME'),LAST_CON_REAL_NAME = CONCAT(LAST_CON_USER_NAME,'REAL_NAME');
+
+	UPDATE AR_FLOW_BONUS SET REMARK ='';
+	
+	UPDATE AR_FLOW_WALLET SET REMARK ='';
+	
+	UPDATE AR_ORDER SET CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),MOBILE = '18888888888',ADDRESS = 'Virtual Address';
+	
+	UPDATE AR_ORDER_DEC SET MOBILE = '18888888888',CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),ADDRESS = 'Virtual Address';
+	
+	UPDATE AR_ORDER_SHOP SET MOBILE = '18888888888',CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),ADDRESS = 'Virtual Address';
+
+	UPDATE AR_RECEIVE_ADDRESS SET CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),MOBILE = '18888888888',ADDRESS = 'Virtual Address';
+
+	UPDATE AR_RECHARGE SET REAL_NAME = USER_ID;
+
+	UPDATE AR_TRANSFER SET LAST_OUT_REAL_NAME = CONCAT(LAST_OUT_USER_NAME,'REAL_NAME'),LAST_IN_REAL_NAME = CONCAT(LAST_IN_USER_NAME,'REAL_NAME'),REMARK = '';
+
+	UPDATE AR_USER SET REAL_NAME = CONCAT(USER_NAME,'REAL_NAME'),MOBILE = '18888888888',ADDRESS = 'Virtual Address';
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `QTRCALC` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `QTRCALC`(IN `PCPID` INT)
+LABEL: BEGIN
+-- DECLARE QTRSTARTPID, QTRSTARTMONTH, THISYEAR, THISMONTH, MISMONTH INT;
+
+DECLARE TBONUS,BONUSPERU DECIMAL; -- 奖金总额,每份奖金
+DECLARE QTRSTARTMONTH, THISYEAR, THISMONTH, MISMONTH INT; -- 这个月
+
+-- DECLARE OCROWN1NUM,OCROWN2NUM,OCROWN3NUM,OCROWN4NUM,OCROWN5NUM,OCROWN6NUM,OCROWN7NUM INT; -- 各星级的人数,原始不加权
+-- DECLARE  CROWN1U, CROWN2U, CROWN3U, CROWN4U, CROWN5U, CROWN6U, CROWN7U INT; -- 各星级的人数(加权)
+
+DECLARE TOTALU INT; -- 加权的总份数
+
+DECLARE MAXID, USERTBID INT;
+DECLARE Q, R INT;
+
+START TRANSACTION;
+-- 日志;
+DELETE FROM AR_QTR_CALC_RECORD ;
+CALL QTRCALCRECORD(-1,'开始',PCPID,NOW());
+COMMIT;
+
+CALL QTRCLEAN(PCPID);
+CALL QTRCALCRECORD(1,'清除数据',PCPID,NOW());
+COMMIT;
+
+SELECT
+ CALC_YEAR, CALC_MONTH, IS_MONTH INTO THISYEAR, THISMONTH, MISMONTH FROM AR_PERIOD WHERE PERIOD_NUM = PCPID;
+
+CALL QTRCALCRECORD(2,'初始化',PCPID,NOW());
+COMMIT;
+
+-- 查看是否季度结
+
+IF(THISMONTH!=3 AND THISMONTH!=6 AND THISMONTH!=9 AND THISMONTH!=12) OR MISMONTH!=1 THEN
+  CALL QTRCALCRECORD(12,'非季结,结束',PCPID,NOW());
+	COMMIT;
+  LEAVE LABEL;
+END IF;
+
+CALL QTRCALCRECORD(3,'计算总奖金',PCPID,NOW());
+COMMIT;
+
+-- 按照条件,查询当前季度所有月的总PV,计算总奖金
+SET QTRSTARTMONTH = THISMONTH - 2;
+
+SELECT 
+   SUM(PV_PCS) * 0.02 
+INTO TBONUS
+  FROM AR_PERF_MONTH 
+WHERE CALC_MONTH >= CONCAT(THISYEAR, lpad(QTRSTARTMONTH,2,0)) AND CALC_MONTH <= CONCAT(THISYEAR, lpad(THISMONTH,2,0));
+
+CALL QTRCALCRECORD(4,'计算总人数及加权',PCPID,NOW());
+COMMIT;
+
+
+-- 查找,所有星级用户
+INSERT INTO AR_QTR_CALC_WEIGHT
+	SELECT 
+		NULL AS ID,
+		QY.USER_ID,
+		MAX(CL.SORT) AS MAX_SORT,
+		(MAX(CL.SORT) - 1)/2 + 1 AS WEIGHT,
+		PERIOD_NUM,
+		CALC_MONTH,
+		CALC_YEAR
+	FROM
+		AR_CALC_BONUS_QY AS QY
+	 INNER JOIN 
+		AR_CROWN_LEVEL AS CL
+	 ON QY.LAST_CROWN_LV = CL.ID
+	 INNER JOIN 
+		AR_USER AS U
+	 ON QY.USER_ID = U.ID
+	 
+	WHERE
+		QY.LAST_CROWN_LV != (SELECT ID FROM AR_CROWN_LEVEL WHERE SORT = 0)
+		AND U.DEC_LV = '67ABCE0ECE705575E055736AECE8644D'
+		AND QY.CALC_MONTH >= CONCAT(THISYEAR, lpad(QTRSTARTMONTH,2,0)) 
+		AND QY.CALC_MONTH <= CONCAT(THISYEAR, lpad(THISMONTH,2,0))
+
+	GROUP BY USER_ID, CALC_MONTH;
+
+COMMIT;
+
+INSERT INTO AR_QTR_CALC_SCORE
+	SELECT
+		NULL AS ID,
+		USER_ID, 
+		COUNT(*) AS CNT,
+		SUM(WEIGHT) AS SCORE,
+		CALC_MONTH,
+		CALC_YEAR
+	FROM 
+		AR_QTR_CALC_WEIGHT
+	GROUP BY USER_ID;
+
+COMMIT;
+	
+SELECT SUM(SCORE) INTO TOTALU FROM AR_QTR_CALC_SCORE;
+
+SET BONUSPERU = TBONUS / TOTALU;
+
+
+CALL QTRCALCRECORD(5,'计算每一份奖金',PCPID,NOW());
+COMMIT;
+
+INSERT INTO AR_QTR_CALC_USER
+	SELECT 
+		NULL AS ID,
+		SC.USER_ID,
+		BONUSPERU * SC.SCORE AS AMOUNT,
+		CALC_YEAR,
+		CALC_MONTH,
+		PCPID AS PERIOD_NUM
+	FROM
+		AR_QTR_CALC_SCORE AS SC;
+
+CALL QTRCALCRECORD(6,'写入user表',PCPID,NOW());
+
+COMMIT;
+
+INSERT INTO AR_CALC_BONUS_QUARTER
+	SELECT
+		NULL AS ID,
+		AU.USER_ID,
+		AU.AMOUNT AS ORI_BONUS,
+		0 AS MANAGE_TAX,
+		AU.AMOUNT,
+		0 AS RECONSUME_POINTS,
+		U.DEC_LV,
+		AU.CALC_MONTH, 
+		AU.PERIOD_NUM,
+		NOW() AS CREATE_AT
+	FROM
+		AR_QTR_CALC_USER AS AU
+	 LEFT JOIN
+	  AR_USER AS U
+	 ON AU.USER_ID = U.ID;
+
+CALL QTRCALCRECORD(20,'写入季度奖金表',PCPID,NOW());
+COMMIT;	
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `QTRCALCRECORD` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `QTRCALCRECORD`(IN `PID` INT, IN `PEVENT` VARCHAR ( 255 ), IN `PCPID` INT, IN `PNOW` DATETIME)
+BEGIN
+	INSERT INTO AR_QTR_CALC_RECORD ( ID, EVENT, CREATION_TIME, CALC_PERIOD_ID )
+	VALUES
+		( PID, PEVENT, NOW(), PCPID );
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `QTRCLEAN` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `QTRCLEAN`(IN `PCPID` INT)
+BEGIN-- 删除当期奖金
+	DELETE 
+	FROM
+		AR_CALC_BONUS_QUARTER
+	WHERE
+		PERIOD_NUM >= PCPID;
+  TRUNCATE
+		AR_QTR_CALC_USER;
+	TRUNCATE
+		AR_QTR_CALC_WEIGHT;
+	TRUNCATE
+		AR_QTR_CALC_SCORE;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `UPPERCASE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`black_tea_0309`@`%` PROCEDURE `UPPERCASE`(IN DBNAME VARCHAR(200))
+BEGIN 
+  
+DECLARE DONE INT DEFAULT 0;  
+  
+DECLARE OLDNAME VARCHAR(200);  
+  
+DECLARE CUR CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DBNAME;  
+  
+DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;  
+  
+OPEN CUR;  
+  
+REPEAT  
+  
+FETCH CUR INTO OLDNAME;  
+  
+SET @NEWNAME = UPPER(OLDNAME);  
+SET @ISNOTSAME = @NEWNAME <> BINARY OLDNAME;   
+IF NOT DONE && @ISNOTSAME THEN   
+SET @SQL = CONCAT('RENAME TABLE `',OLDNAME,'` TO `', LOWER(@NEWNAME), '_TMP` ');   
+PREPARE TMPSTMT FROM @SQL;   
+EXECUTE TMPSTMT;  
+
+SET @SQL = CONCAT('RENAME TABLE `',LOWER(@NEWNAME),'_TMP` TO `',@NEWNAME, '`');   
+PREPARE TMPSTMT FROM @SQL;   
+EXECUTE TMPSTMT; 
+  
+DEALLOCATE PREPARE TMPSTMT;  
+  
+END IF;   
+UNTIL DONE END REPEAT;   
+CLOSE CUR;   
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2022-09-30  6:50:45

+ 2715 - 0
sql/coco_milk_0524_fc.sql

@@ -0,0 +1,2715 @@
+-- MariaDB dump 10.19  Distrib 10.7.4-MariaDB, for Linux (x86_64)
+--
+-- Host: ngds-db-live.cdehazle30lc.ap-east-1.rds.amazonaws.com    Database: coco_milk_0524
+-- ------------------------------------------------------
+-- Server version	10.6.7-MariaDB-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping routines for database 'coco_milk_0524'
+--
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALC10` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALC10`(IN `PCPID` INT)
+BEGIN
+    DECLARE
+        MLAYER,
+        MMAXLAYER INT;
+    DECLARE
+        MRATE,
+        MLIMITPV DECIMAL ( 10, 2 );-- 查询第一个级别的限制以及等奖比例
+    SELECT
+        T.ACHIEVE_PV,
+        T.BS_PERCENT / 100 INTO MLIMITPV,
+        MRATE
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = 'E121497617216708615';
+    SELECT
+        MAX( LAYER ) INTO MLAYER
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            PV > 0;
+
+    SET MMAXLAYER := MLAYER;
+    WHILE
+            MLAYER >= 0 DO
+            IF
+                ( MLAYER < MMAXLAYER ) THEN-- 向上累计
+                UPDATE AR_BS_BONUS_103_CALC T1
+                    INNER JOIN (
+                        SELECT
+                            INTRODUCER_ID,
+                            SUM( GPV10 ) GPV10
+                        FROM
+                            AR_BS_BONUS_103_CALC
+                        WHERE
+                                LAYER = MLAYER + 1
+                          AND USER_TYPE10 = 0
+                          AND GPV10 > 0
+                        GROUP BY
+                            INTRODUCER_ID
+                    ) T2 ON T1.USER_ID = T2.INTRODUCER_ID
+                        AND T1.LAYER = MLAYER
+                SET T1.GPV10 = T2.GPV10;-- 没有升级的会员需要将自己的小组业绩清零
+                UPDATE AR_BS_BONUS_103_CALC T
+                SET T.GPV10 = 0
+                WHERE
+                        T.GPV10 < T.ACHIEVE_PERF_PV AND T.LAYER = MLAYER + 1 AND USER_TYPE10 = 0 AND T.GPV10 > 0;
+
+            END IF;
+            UPDATE AR_BS_BONUS_103_CALC T1
+            SET T1.GPV10 = T1.GPV10 + T1.PV
+            WHERE
+                    T1.LAYER = MLAYER
+              AND T1.PV > 0;-- 是否达标 如果达标
+            UPDATE AR_BS_BONUS_103_CALC T
+            SET T.USER_TYPE10 = 10
+            WHERE
+                    T.GPV10 >= T.ACHIEVE_PERF_PV
+              AND T.LAYER = MLAYER
+              AND T.USER_TYPE10 = 0;
+            IF
+                ( MLAYER > 0 ) THEN-- 升级为蓝星A
+                CALL CALCUPGARDE ( MLAYER );
+
+            END IF;
+
+            SET MLAYER := MLAYER - 1;
+
+        END WHILE;
+    UPDATE AR_BS_BONUS_103_CALC T
+    SET T.BONUS10 = T.GPV10 * MRATE
+    WHERE
+            T.USER_TYPE10 = 10
+      AND T.GPV10 > 0;
+    UPDATE AR_BS_BONUS_103_CALC
+    SET USER_TYPE = 0;
+
+    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+    SELECT USER_ID, NULL, 10, GPV10 * MRATE, GPV10, MRATE ,PCPID FROM AR_BS_BONUS_103_CALC WHERE USER_TYPE10 = 10
+                                                                                             AND GPV10 > 0;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALC20` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALC20`(IN `PCPID` INT)
+BEGIN
+    DECLARE
+        MLAYER,
+        MMAXLAYER,
+        MCOUNT INT;
+    DECLARE
+        MRATE,
+        MLIMITPV DECIMAL ( 10, 2 );
+    START TRANSACTION;-- 第一个级别的限制
+    SELECT
+        T.ACHIEVE_PV INTO MLIMITPV
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = 'E121497617216708615';-- 第二个级别得奖的比例
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE5FE7857C216AE055736AECE8644D';
+    SELECT
+        MAX( LAYER ) INTO MLAYER
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            PV > 0;
+
+    SET MMAXLAYER := MLAYER;
+    WHILE
+            MLAYER >= 0 DO
+            IF
+                ( MLAYER < MMAXLAYER ) THEN-- 向上累计
+                UPDATE AR_BS_BONUS_103_CALC T1
+                    INNER JOIN (
+                        SELECT
+                            INTRODUCER_ID,
+                            SUM( GPV ) GPV
+                        FROM
+                            AR_BS_BONUS_103_CALC
+                        WHERE
+                                LAYER = MLAYER + 1
+                          AND USER_TYPE = 0
+                          AND GPV > 0
+                        GROUP BY
+                            INTRODUCER_ID
+                    ) T2 ON T1.USER_ID = T2.INTRODUCER_ID
+                        AND T1.LAYER = MLAYER
+                SET T1.GPV = T2.GPV;-- 没有升级的会员需要将自己的小组业绩清零
+                UPDATE AR_BS_BONUS_103_CALC T
+                SET T.GPV = 0
+                WHERE
+                        T.GPV < T.ACHIEVE_PERF_PV AND T.LAYER = MLAYER + 1 AND GPV > 0;
+
+            END IF;
+            UPDATE AR_BS_BONUS_103_CALC T1
+            SET T1.GPV = T1.GPV + T1.PV
+            WHERE
+                    T1.LAYER = MLAYER;-- 是否达标 如果达标
+            UPDATE AR_BS_BONUS_103_CALC T
+            SET T.USER_TYPE = 10
+            WHERE
+                    T.GPV >= T.ACHIEVE_PERF_PV
+              AND T.LAYER = MLAYER;
+
+            SET MLAYER := MLAYER - 1;
+
+        END WHILE;
+    UPDATE AR_BS_BONUS_103_CALC
+    SET GPV = 0
+    WHERE
+            USER_TYPE = 0
+      AND GPV > 0;
+    SELECT
+        MAX( LAYER ) INTO MLAYER
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            USER_TYPE > 0;
+
+    SET MMAXLAYER := MLAYER;-- 添加至新网体页面
+    INSERT INTO AR_BS_BONUS_103_CALC_NET ( USER_ID, INTRODUCER_ID, CALC_PERIOD_ID, USER_TYPE, GPV, DIRECTLY_UNDER, LAYER, TEAM_GPV ) SELECT
+                                                                                                                                         USER_ID,
+                                                                                                                                         INTRODUCER_ID,
+                                                                                                                                         CALC_PERIOD_ID,
+                                                                                                                                         USER_TYPE,
+                                                                                                                                         GPV,
+                                                                                                                                         0,
+                                                                                                                                         LAYER,
+                                                                                                                                         0
+    FROM
+        AR_BS_BONUS_103_CALC
+    WHERE
+            LAYER <= MLAYER; -- 处理新的网体
+    DELETE FROM AR_BS_BONUS_103_CALC_NET WHERE LAYER = MLAYER AND USER_TYPE = 0; SET MLAYER := MLAYER - 1; WHILE MLAYER >= 0 DO-- 计算直属宽度
+    UPDATE AR_BS_BONUS_103_CALC_NET T1
+        INNER JOIN ( SELECT INTRODUCER_ID, COUNT( * ) SONS FROM AR_BS_BONUS_103_CALC_NET WHERE LAYER = MLAYER + 1 GROUP BY INTRODUCER_ID ) T2 ON T1.USER_ID = T2.INTRODUCER_ID
+            AND T1.LAYER = MLAYER
+    SET T1.DIRECTLY_UNDER = T2.SONS;-- 本人达标并且下属满足一个及以上的达标数升级为第二个级别
+    UPDATE AR_BS_BONUS_103_CALC_NET T1
+    SET T1.USER_TYPE = 20
+    WHERE
+            T1.LAYER = MLAYER
+      AND USER_TYPE = 10
+      AND DIRECTLY_UNDER >= 1;-- 计算本层达标人员
+    SELECT
+        COUNT( * ) INTO MCOUNT
+    FROM
+        AR_BS_BONUS_103_CALC_NET C
+    WHERE
+            C.DIRECTLY_UNDER >= 2
+      AND C.USER_TYPE = 0
+      AND LAYER = MLAYER;
+    IF
+        ( MCOUNT > 0 ) THEN
+        CALL CALC20_0 ( MLAYER, PCPID );
+
+    END IF;-- 删除未达标人员
+    CALL CALCDELNET ( MLAYER );
+
+    SET MLAYER := MLAYER - 1;
+
+        END WHILE;-- 计算GPV_4_CALC,会员级别
+    UPDATE AR_BS_BONUS_103_CALC C1
+        INNER JOIN AR_BS_BONUS_103_CALC_NET C2 ON C1.USER_ID = C2.USER_ID
+    SET C1.GPV_4_CALC = C2.GPV,
+        C1.USER_TYPE = C2.USER_TYPE;-- 计算见习奖金
+    UPDATE AR_BS_BONUS_103_CALC C1
+        INNER JOIN ( SELECT INTRODUCER_ID, SUM( GPV ) ALL_GPV FROM AR_BS_BONUS_103_CALC_NET GROUP BY INTRODUCER_ID ) C2 ON C1.USER_ID = C2.INTRODUCER_ID
+            AND C1.USER_TYPE = 20
+    SET C1.BONUS20 = C2.ALL_GPV * MRATE;
+    COMMIT;
+    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE, PERIOD_NUM ) SELECT
+                                                                                                                           C1.USER_ID,
+                                                                                                                           NULL,
+                                                                                                                           20,
+                                                                                                                           C2.ALL_GPV * MRATE,
+                                                                                                                           C2.ALL_GPV,
+                                                                                                                           MRATE,
+                                                                                                                           PCPID
+    FROM
+        AR_BS_BONUS_103_CALC C1
+            INNER JOIN ( SELECT INTRODUCER_ID, SUM( GPV ) ALL_GPV FROM AR_BS_BONUS_103_CALC_NET GROUP BY INTRODUCER_ID ) C2 ON C1.USER_ID = C2.INTRODUCER_ID
+            AND C1.USER_TYPE = 20
+            AND ALL_GPV > 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALC20_0` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALC20_0`(IN PLAYER INT,IN `PCPID` INT)
+BEGIN
+	DECLARE
+		FLAG INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MMAXUSERID VARCHAR ( 50 );
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		MC CURSOR FOR SELECT
+		C.USER_ID 
+	FROM
+		AR_BS_BONUS_103_CALC_NET C 
+	WHERE
+		C.DIRECTLY_UNDER >= 2 
+		AND C.USER_TYPE = 0 
+		AND LAYER = PLAYER;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;-- 打开游标
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MUSERID;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;-- 这里是为了显示获取结果
+		SELECT
+			MIN( GPV ) INTO MGPV 
+		FROM
+			AR_BS_BONUS_103_CALC_NET C 
+		WHERE
+			C.INTRODUCER_ID = MUSERID 
+			AND C.USER_TYPE >= 10;
+		SELECT
+			MAX( USER_ID ) INTO MMAXUSERID 
+		FROM
+			AR_BS_BONUS_103_CALC_NET C 
+		WHERE
+			C.INTRODUCER_ID = MUSERID 
+			AND C.GPV = MGPV;
+		UPDATE AR_BS_BONUS_103_CALC_NET C 
+		SET C.USER_TYPE = 20,
+		C.GPV = MGPV 
+		WHERE
+			USER_ID = MUSERID;
+		UPDATE AR_BS_BONUS_103_CALC_NET C 
+		SET C.GPV = 0 
+		WHERE
+			USER_ID = MMAXUSERID;-- 关闭游标
+		
+		INSERT INTO AR_CALC_BONUS_BS_DETAIL_GPV(USER_ID,INTRODUCER_ID,GPV,PERIOD_NUM)
+		VALUES(MMAXUSERID,MUSERID,MGPV,PCPID);
+	END LOOP;
+	CLOSE MC;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCBLUE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCBLUE`(IN `PCPID` INT)
+LABEL: BEGIN
+DECLARE MCALCYEAR INT;
+DECLARE MISMONTH,MCALCMONTH,MISSENT TINYINT;
+
+START TRANSACTION;
+-- 日志;
+DELETE FROM AR_BS_BONUS_103_CALC_EVENT ;-- WHERE CALC_PERIOD_ID >= PCPID;
+CALL CALCRECORD(-1,'开始',PCPID,NOW());
+COMMIT;
+-- SELECT USER_ID INTO MISMONTH FROM ZR_USER;
+SELECT AP.IS_MONTH,AP.CALC_MONTH,AP.CALC_YEAR,AP.IS_SENT
+INTO MISMONTH,MCALCMONTH,MCALCYEAR,MISSENT
+FROM AR_PERIOD AP WHERE AP.PERIOD_NUM = PCPID;
+
+	-- 查看是否月结
+-- IF(MISMONTH  =  0 OR MISSENT = 1)THEN
+-- LEAVE LABEL;
+-- END IF;
+
+
+-- 清除数据
+CALL CALCRECORD(1,'清除数据',PCPID,NOW());
+COMMIT;
+CALL CALCCLEAN(PCPID);
+COMMIT;
+
+-- 初始化
+CALL CALCRECORD(2,'初始化',PCPID,NOW());
+COMMIT;
+CALL CALCINIT(PCPID,MCALCMONTH,MCALCYEAR);
+COMMIT;
+
+
+-- 初始业绩
+-- 3.蓝星奖
+CALL CALCRECORD(3,'蓝星奖',PCPID,NOW());
+COMMIT;
+CALL CALC10(PCPID);
+COMMIT;
+
+-- 4.新网体
+CALL CALCRECORD(4,'新网体',PCPID,NOW());
+COMMIT;
+CALL CALC20(PCPID);
+COMMIT;
+
+-- 5.升级主任
+CALL CALCRECORD(5,'升级主任',PCPID,NOW());
+COMMIT;
+CALL CALCUP30;
+COMMIT;
+
+-- 6.计算主任自己第一层的总业绩
+CALL CALCRECORD(6,'计算主任自己第一层的总业绩',PCPID,NOW());
+COMMIT;
+CALL CALCTOTALGPV;
+COMMIT;
+
+-- 7.计算平级奖
+CALL CALCRECORD(7,'计算平级奖',PCPID,NOW());
+COMMIT;
+CALL CALCLEVEL(PCPID);
+COMMIT;
+
+-- 8.积分
+CALL CALCRECORD(8,'积分',PCPID,NOW());
+COMMIT;
+CALL CALCPOINT;
+COMMIT;
+
+-- 9.汇总
+CALL CALCRECORD(9,'汇总',PCPID,NOW());
+COMMIT;
+CALL CALCSUMMARY;
+COMMIT;
+
+-- 10.记录总表
+CALL CALCRECORD(10,'记录总表',PCPID,NOW());
+COMMIT;
+CALL CALCKEEP(MCALCYEAR,MCALCMONTH);
+COMMIT;
+
+-- 11.计算拨出比
+CALL CALCRECORD(11,'计算拨出比',PCPID,NOW());
+COMMIT;
+CALL CALCSTAT(PCPID);
+COMMIT;
+
+CALL CALCRECORD(12,'结束',PCPID,NOW());
+COMMIT;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCCHECKING` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCCHECKING`(IN `PCPID` INT)
+LABEL : BEGIN-- 遍历数据结束标志
+	DECLARE
+		MCOLUMNNAME,
+		MVALUES,
+		MVALUES0,
+		MVALUES1,
+		MVALUES2 VARCHAR ( 100 );-- 定义预处理SQL语句
+	DECLARE
+		SQL_FOR_SELECT VARCHAR ( 2000 );
+	DECLARE
+		MCOUNT INT DEFAULT 0;
+	DECLARE
+		DONE INT DEFAULT FALSE;
+	DECLARE
+		MISMONTH,
+		MISSEND TINYINT;-- 游标
+	DECLARE
+		CUR_ACCOUNT CURSOR FOR SELECT
+		COLUMN_NAME 
+	FROM
+		INFORMATION_SCHEMA.COLUMNS 
+	WHERE
+		TABLE_NAME = 'AR_CALC_BONUS_BS_DETAIL' 
+		AND TABLE_SCHEMA = 'aikang_db_28' 
+		AND COLUMN_NAME NOT IN ( 'CALC_YEAR', 'CALC_MONTH', 'P_CALC_MONTH', 'CREATED_AT', 'ID', 'LAYER' ) 
+		AND DATA_TYPE IN ( 'DECIMAL', 'DOUBLE', 'INT' );-- 将结束标志绑定到游标
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET DONE = TRUE;
+	START TRANSACTION;
+	SELECT
+		AP.IS_MONTH,
+		AP.IS_SENT INTO MISMONTH,
+		MISSEND 
+	FROM
+		AR_PERIOD AP 
+	WHERE
+		AP.PERIOD_NUM = PCPID;-- 查看是否月结
+	IF
+		( MISMONTH = 0 OR MISSEND = 1 ) THEN
+			LEAVE LABEL;
+		
+	END IF;-- 打开游标
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_CHECKING 
+	WHERE
+		PERIOD_NUM >= PCPID;
+	OPEN CUR_ACCOUNT;-- 遍历
+	READ_LOOP :
+	LOOP-- 取值 取多个字段
+		FETCH NEXT 
+		FROM
+			CUR_ACCOUNT INTO MCOLUMNNAME;
+		IF
+			DONE THEN
+				LEAVE READ_LOOP;
+			
+		END IF;
+		
+		SET SQL_FOR_SELECT = CONCAT(
+			"SELECT COUNT(*) INTO @MVALUES0 FROM (SELECT IFNULL(A1.USER_ID,'-1') MAIN_ID,IFNULL(A2.USER_ID,'-1') TEST_ID,IFNULL(A1.",
+			MCOLUMNNAME,
+			",0) NAME1,IFNULL(A2.",
+			MCOLUMNNAME,
+			",0) NAME2 FROM AR_CALC_BONUS_BS_DETAIL A1 LEFT JOIN AR_CALC_BONUS_BS_DETAIL_CALC A2 ON A1.USER_ID = A2.USER_ID WHERE A1.PERIOD_NUM = ",
+			PCPID,
+			" AND A2.PERIOD_NUM = ",
+			PCPID,
+			" UNION SELECT IFNULL(A2.USER_ID,'-1') MAIN_ID,IFNULL(A1.USER_ID,'-1') TEST_ID,IFNULL(A2.",
+			MCOLUMNNAME,
+			",0) NAME1,IFNULL(A1.",
+			MCOLUMNNAME,
+			",0) NAME2 FROM AR_CALC_BONUS_BS_DETAIL_CALC A1 LEFT JOIN AR_CALC_BONUS_BS_DETAIL A2 ON A1.USER_ID = A2.USER_ID WHERE A1.PERIOD_NUM = ",
+			PCPID,
+			" AND A2.PERIOD_NUM = ",
+			PCPID,
+			") B WHERE B.MAIN_ID != B.TEST_ID OR ABS(B.NAME1-B.NAME2)>0.5" 
+		);-- 拼接查询SQL语句
+		
+		SET @SQL = SQL_FOR_SELECT;
+		PREPARE STMT 
+		FROM
+			@SQL;-- 预处理动态SQL语句
+		EXECUTE STMT;-- 执行SQL语句
+		DEALLOCATE PREPARE STMT;
+		
+		SET MVALUES0 := @MVALUES0;
+		
+		SET SQL_FOR_SELECT = CONCAT( "SELECT IFNULL(SUM(", MCOLUMNNAME, "),0) INTO @MVALUES1 FROM  AR_CALC_BONUS_BS_DETAIL  WHERE PERIOD_NUM = '", PCPID, "'" );-- 拼接查询SQL语句
+		
+		SET @SQL = SQL_FOR_SELECT;
+		PREPARE STMT 
+		FROM
+			@SQL;-- 预处理动态SQL语句
+		EXECUTE STMT;-- 执行SQL语句
+		DEALLOCATE PREPARE STMT;
+		
+		SET MVALUES1 := @MVALUES1;
+		
+		SET SQL_FOR_SELECT = CONCAT( "SELECT IFNULL(SUM(", MCOLUMNNAME, "),0) INTO @MVALUES2 FROM  AR_CALC_BONUS_BS_DETAIL_CALC  WHERE USER_ID != '0' AND PERIOD_NUM = '", PCPID, "'" );-- 拼接查询SQL语句
+		
+		SET @SQL = SQL_FOR_SELECT;
+		PREPARE STMT 
+		FROM
+			@SQL;-- 预处理动态SQL语句
+		EXECUTE STMT;-- 执行SQL语句
+		DEALLOCATE PREPARE STMT;
+		
+		SET MVALUES2 := @MVALUES2;
+		INSERT INTO AR_CALC_BONUS_BS_CHECKING ( PERIOD_NUM, COLUMN_NAME, DIFF_COUNT, MAIN_SUM, CALC_SUM, DIFF_SUM )
+		VALUES
+			(
+				PCPID,
+				MCOLUMNNAME,
+				MVALUES0,
+				MVALUES1,
+				MVALUES2,
+				ABS(
+					CONVERT (
+						MVALUES1,
+						DECIMAL ( 12, 2 ))- CONVERT (
+						MVALUES2,
+					DECIMAL ( 12, 2 ))));
+		COMMIT;
+		
+	END LOOP;
+	CLOSE CUR_ACCOUNT;
+	SELECT
+		COUNT(*) INTO MCOUNT 
+	FROM
+		AR_CALC_BONUS_BS_CHECKING 
+	WHERE
+		( DIFF_COUNT > 0 OR DIFF_SUM >= 1 ) 
+		AND COLUMN_NAME IN (
+			'USER_TYPE10',
+			'USER_TYPE',
+			'BONUS10',
+			'BONUS20',
+			'BONUS30',
+			'BONUS40',
+			'BONUS50',
+			'BONUS60',
+			'BONUS70',
+			'BONUS80',
+			'BONUS90',
+			'BONUS100',
+			'BONUS110',
+			'ORI_BONUS',
+			'AMOUNT',
+			'PRODUCT_POINT' 
+		);
+	IF
+		( MCOUNT = 0 ) THEN
+			UPDATE AR_CALC_BONUS_BS_STAT T 
+			SET T.CHECK_STATUS = 1 
+		WHERE
+			T.PERIOD_NUM = PCPID;
+		
+	END IF;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCCLEAN` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCCLEAN`(IN `PCPID` INT)
+BEGIN-- 删除当期奖金
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_CALC;
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_TEST 
+	WHERE
+		CALC_PERIOD_ID >= PCPID;-- 使用的奖金表
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS 
+	WHERE
+		PERIOD_NUM >= PCPID;
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_DETAIL 
+	WHERE
+		PERIOD_NUM >= PCPID;-- 删除当期网体
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_CALC_NET;
+	DELETE 
+	FROM
+		AR_BS_BONUS_103_TEST_NET 
+	WHERE
+		CALC_PERIOD_ID >= PCPID;-- 删除拨出表
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_STAT 
+	WHERE
+		PERIOD_NUM >= PCPID;-- 删除明细表
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_DETAIL_BONUS 
+	WHERE
+		PERIOD_NUM >= PCPID;-- 删除日志
+	DELETE 
+	FROM
+		AR_CALC_BONUS_BS_DETAIL_GPV 
+	WHERE
+		PERIOD_NUM >= PCPID;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCDELNET` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCDELNET`(IN `PLAYER` INT)
+BEGIN
+	DECLARE
+		FLAG INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MMAXUSERID,
+		MINTRODUCERID VARCHAR ( 50 );
+	/*DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		DN CURSOR FOR SELECT
+		USER_ID 
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		LAYER = PLAYER 
+		AND USER_TYPE = 0;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;*/
+	START TRANSACTION;-- 打开游标
+	/*OPEN DN;-- 获取结果
+	L2 :
+	LOOP
+			FETCH DN INTO MUSERID;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;-- 查询需要删除会员的推荐人ID
+		SELECT
+			T.INTRODUCER_ID INTO MINTRODUCERID 
+		FROM
+			AR_BS_BONUS_103_CALC_NET T 
+		WHERE
+			T.USER_ID = MUSERID;-- 更改需要删除会员第一代的推荐人ID以及层数
+		UPDATE AR_BS_BONUS_103_CALC_NET T 
+		SET T.INTRODUCER_ID = MINTRODUCERID,
+		T.LAYER = T.LAYER - 1 
+		WHERE
+			T.INTRODUCER_ID = MUSERID;-- 关闭游标
+		
+	END LOOP;
+	CLOSE DN;*/
+	UPDATE AR_BS_BONUS_103_CALC_NET
+	SET DELETED = 1
+	WHERE
+		LAYER = PLAYER 
+		AND USER_TYPE = 0;
+	UPDATE AR_BS_BONUS_103_CALC_NET T1
+	INNER JOIN AR_BS_BONUS_103_CALC_NET T2
+	ON T1.INTRODUCER_ID = T2.USER_ID AND T1.LAYER = PLAYER+1 AND T2.LAYER =  PLAYER AND T2.USER_TYPE = 0
+	SET T1.INTRODUCER_ID = T2.INTRODUCER_ID,T1.LAYER = PLAYER;
+	DELETE
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		LAYER = PLAYER 
+		AND USER_TYPE = 0
+		AND DELETED = 1;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCINIT` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCINIT`(IN `PCPID` INT, IN `PCALCMONTH` TINYINT, IN `PCALCYEAR` INT)
+BEGIN
+
+    DECLARE
+        AC_USER_NO INT;     -- 邀请会员达标数
+    DECLARE
+        MLIMITPV,   -- 邀请会员不及格达标PV
+        AC_PERF_PV DECIMAL ( 10, 2 );   -- 邀请会员及格达标PV
+
+    -- 查询第一个级别的邀请会员数、达标PV值以及等奖比例
+    SELECT
+        T.ACHIEVE_PV,
+        T.ACHIEVE_PERF_PV,
+        T.ACHIEVE_MEMBER_NUM
+    INTO MLIMITPV, AC_PERF_PV, AC_USER_NO
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+        T.ID = 'E121497617216708615';
+
+    INSERT INTO AR_BS_BONUS_103_CALC (
+        LAST_DEC_LV,
+        LAST_EMP_LV,
+        LAST_STATUS,
+        USER_ID,
+        INTRODUCER_ID,
+        LAYER,
+        PV,
+        GPV10,
+        GPV,
+        GPV_4_CALC,
+        USER_TYPE10,
+        USER_TYPE,
+        BONUS10,
+        BONUS20,
+        BONUS30,
+        BONUS40,
+        BONUS50,
+        BONUS60,
+        BONUS70,
+        BONUS80,
+        BONUS90,
+        BONUS100,
+        BONUS110,
+        BONUS,
+        PRODUCT_POINT,
+        CALC_PERIOD_ID,
+        ACHIEVE_MEMBER_NUM,
+        ACHIEVE_PERF_PV
+    ) SELECT
+          AU.LAST_DEC_LV,
+          AU.EMP_LV,
+          AU.STATUS,
+          AU.ID,
+          IFNULL( AURN.PARENT_UID, 0 ),
+          AURN.TOP_DEEP,
+          IFNULL( AO.PV, 0 ),
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          0,
+          PCPID,
+          IFNULL(DO.ACHIEVE_MEMBER_NUM, 0),
+          IF(DO.ACHIEVE_MEMBER_NUM >= AC_USER_NO, AC_PERF_PV, MLIMITPV)
+    FROM
+        AR_USER AU
+    INNER JOIN AR_USER_RELATION_NEW AURN ON AU.ID = AURN.USER_ID
+    LEFT JOIN (
+        SELECT
+            USER_ID,
+            SUM( PV ) PV
+        FROM
+            AR_PERF_ORDER
+        WHERE
+                PERIOD_NUM IN ( SELECT PERIOD_NUM FROM AR_PERIOD WHERE CALC_YEAR = PCALCYEAR AND CALC_MONTH = PCALCMONTH )
+        GROUP BY
+            USER_ID
+    ) AO ON AO.USER_ID = AU.ID
+    LEFT JOIN (
+        SELECT
+            R.PARENT_UID,
+            COUNT(R.USER_ID) AS ACHIEVE_MEMBER_NUM
+        FROM
+            AR_PERF_ORDER O
+            INNER JOIN AR_USER_RELATION_NEW R ON O.USER_ID = R.USER_ID
+        WHERE
+            O.DEC_TYPE = 'ZC' AND O.PERIOD_NUM IN ( SELECT PERIOD_NUM FROM AR_PERIOD WHERE CALC_YEAR = PCALCYEAR AND CALC_MONTH = PCALCMONTH )
+        GROUP BY R.PARENT_UID
+    ) DO ON DO.PARENT_UID = AU.ID
+    WHERE
+            AU.DELETED = 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCKEEP` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCKEEP`(IN PCALCYEAR int, IN PCALCMONTH int)
+BEGIN
+    INSERT INTO AR_BS_BONUS_103_TEST SELECT
+        *
+    FROM
+        AR_BS_BONUS_103_CALC;
+    INSERT INTO AR_BS_BONUS_103_TEST_NET SELECT
+        *
+    FROM
+        AR_BS_BONUS_103_CALC_NET;
+    INSERT INTO AR_CALC_BONUS_BS (
+        USER_ID,
+        INTRODUCER_ID,
+        LAST_DEC_LV,
+        LAST_EMP_LV,
+        LAST_STATUS,
+        LEVEL_ID,
+        ORI_BONUS,
+        MANAGE_TAX,
+        AMOUNT,
+        PRODUCT_POINT,
+        PERIOD_NUM,
+        CALC_YEAR,
+        CALC_MONTH,
+        P_CALC_MONTH,
+        CREATED_AT,
+        ORI_BONUS_MNT,
+        MANAGE_TAX_MNT,
+        AMOUNT_MNT,
+        ORI_BONUS_ABBR,
+        MANAGE_TAX_ABBR,
+        AMOUNT_ABBR,
+        ACHIEVE_MEMBER_NUM,
+        ACHIEVE_PERF_PV
+    ) SELECT
+          A.USER_ID,
+          A.INTRODUCER_ID,
+          A.LAST_DEC_LV,
+          A.LAST_EMP_LV,
+          A.LAST_STATUS,
+          B.ID,
+          IFNULL( A.BONUS, 0 ),
+          0,
+          IFNULL( A.BONUS, 0 ),
+          IFNULL( A.PRODUCT_POINT, 0 ),
+          CALC_PERIOD_ID,
+          PCALCYEAR,
+          PCALCYEAR*100+PCALCMONTH,
+          NOW(),
+          UNIX_TIMESTAMP(
+                  NOW()),
+          IFNULL( A.BONUS_MNT, 0 ),
+          0,
+          IFNULL( A.BONUS_MNT, 0 ),
+          IFNULL( A.BONUS_ABBR, 0 ),
+          0,
+          IFNULL( A.BONUS_ABBR, 0 ),
+          A.ACHIEVE_MEMBER_NUM,
+          A.ACHIEVE_PERF_PV
+    FROM
+        AR_BS_BONUS_103_CALC A
+            LEFT JOIN AR_EMPLOY_LEVEL B ON A.USER_TYPE = B.SORT * 10
+    WHERE
+            A.BONUS > 0
+       OR A.PRODUCT_POINT > 0;
+    INSERT INTO AR_CALC_BONUS_BS_DETAIL (
+        USER_ID,
+        INTRODUCER_ID,
+        LAST_DEC_LV,
+        LAST_EMP_LV,
+        LAST_STATUS,
+        LEVEL_ID,
+        ORI_BONUS,
+        MANAGE_TAX,
+        AMOUNT,
+        PRODUCT_POINT,
+        PERIOD_NUM,
+        LAYER,
+        PV,
+        GPV10,
+        GPV,
+        GPV_4_CALC,
+        USER_TYPE10,
+        USER_TYPE,
+        BONUS10,
+        BONUS20,
+        BONUS30,
+        BONUS40,
+        BONUS50,
+        BONUS60,
+        BONUS70,
+        BONUS80,
+        BONUS90,
+        BONUS100,
+        BONUS110,
+        CALC_YEAR,
+        CALC_MONTH,
+        P_CALC_MONTH,
+        CREATED_AT,
+        ORI_BONUS_MNT,
+        MANAGE_TAX_MNT,
+        AMOUNT_MNT,
+        ORI_BONUS_ABBR,
+        MANAGE_TAX_ABBR,
+        AMOUNT_ABBR
+    ) SELECT
+          USER_ID,
+          INTRODUCER_ID,
+          LAST_DEC_LV,
+          LAST_EMP_LV,
+          LAST_STATUS,
+          B.ID,
+          IFNULL( BONUS, 0 ),
+          0,
+          IFNULL( BONUS, 0 ),
+          IFNULL( PRODUCT_POINT, 0 ),
+          CALC_PERIOD_ID,
+          LAYER,
+          PV,
+          GPV10,
+          GPV,
+          GPV_4_CALC,
+          USER_TYPE10,
+          USER_TYPE,
+          BONUS10,
+          BONUS20,
+          BONUS30,
+          BONUS40,
+          BONUS50,
+          BONUS60,
+          BONUS70,
+          BONUS80,
+          BONUS90,
+          BONUS100,
+          BONUS110,
+          PCALCYEAR,
+          PCALCYEAR*100+PCALCMONTH,
+          NOW(),
+          UNIX_TIMESTAMP(
+                  NOW()),
+          IFNULL( A.BONUS_MNT, 0 ),
+          0,
+          IFNULL( A.BONUS_MNT, 0 ),
+          IFNULL( A.BONUS_ABBR, 0 ),
+          0,
+          IFNULL( A.BONUS_ABBR, 0 )
+    FROM
+        AR_BS_BONUS_103_CALC A
+            LEFT JOIN ( SELECT ID, SORT FROM AR_EMPLOY_LEVEL ) B ON A.USER_TYPE = B.SORT * 10;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCLEVEL` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCLEVEL`(IN `PCPID` INT)
+BEGIN
+	DECLARE
+		FLAG,
+		MLAYER,
+		MUSERTYPE INT DEFAULT 0;
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	
+		DECLARE
+		MC CURSOR FOR SELECT
+		LAYER
+	FROM
+		AR_BS_BONUS_103_CALC_NET T 
+	WHERE
+		T.USER_TYPE = 30 GROUP BY LAYER ORDER BY LAYER DESC;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;
+	START TRANSACTION;-- 打开游标
+
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MLAYER;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;
+		
+-- 计算当前层数的奖金以及向上所贡献的奖金
+			CALL CALCLEVEL_ ( MLAYER ,PCPID);
+	END LOOP;
+	CLOSE MC;
+	/*WHILE
+			( MLAYER >= 0 ) DO-- 计算当前层数的奖金以及向上所贡献的奖金
+			CALL CALCLEVEL_ ( MLAYER );
+		
+		SET MLAYER := MLAYER - 1;
+		
+	END WHILE;*/-- 级别更新
+	
+
+	UPDATE AR_BS_BONUS_103_CALC C1
+	INNER JOIN AR_BS_BONUS_103_CALC_NET C2 ON C1.USER_ID = C2.USER_ID 
+	AND C1.USER_TYPE <> C2.USER_TYPE 
+	SET C1.USER_TYPE = C2.USER_TYPE;
+
+
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCLEVEL_` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCLEVEL_`(IN PLAYER int, IN PCPID int)
+BEGIN
+	DECLARE
+		FLAG,
+		MLAYER,
+		MUSERTYPE INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MBONUSID,
+		MNEWBONUSID VARCHAR ( 50 );
+	DECLARE
+		MRATE,
+		MRATE30,
+		MRATE40,
+		MRATE50,
+		MRATE60,
+		MRATE70,
+		MRATE80,
+		MRATE90,
+		MRATE100,
+		MRATE110,
+		MBONUS,
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		MC CURSOR FOR SELECT
+		C.USER_ID,
+		C.TEAM_GPV 
+	FROM
+		AR_BS_BONUS_103_CALC_NET C 
+	WHERE
+		C.USER_TYPE >= 30 
+		AND LAYER = PLAYER;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;
+
+	START TRANSACTION;
+
+	-- 取各级别蓝星奖比例【开始】
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE30 
+	FROM
+		AR_EMPLOY_LEVEL T 
+	WHERE
+		T.ID = 'E121497617216708616';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE40 
+	FROM
+		AR_EMPLOY_LEVEL T 
+	WHERE
+		T.ID = '67BE6A4D03C52288E055736AECE8644D';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE50 
+	FROM
+		AR_EMPLOY_LEVEL T 
+	WHERE
+		T.ID = '67BE6EA2070D22EBE055736AECE8644D';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE60
+	FROM
+		AR_EMPLOY_LEVEL T
+	WHERE
+		T.ID = '67BE742A336F2370E055736AECE8644D';
+
+	SELECT
+		T.BS_PERCENT / 100 INTO MRATE70
+	FROM
+		AR_EMPLOY_LEVEL T
+	WHERE
+		T.ID = '67BE805032C22492E055736AECE8644D';
+
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE80
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '67BE82019BE524CAE055736AECE8644D';
+#
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE90
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '99BE5FE7857C216AE055736AECE8644D';
+#
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE100
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '99BE5FE9008C216AE055736AECE8644D';
+#
+# 	SELECT
+# 		T.BS_PERCENT / 100 INTO MRATE110
+# 	FROM
+# 		AR_EMPLOY_LEVEL T
+# 	WHERE
+# 		T.ID = '99BE5FE7857C216AE000223AECE8644D';
+    -- 取各级别蓝星奖比例【结束】
+
+    -- 打开游标
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MUSERID,
+			MGPV;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;-- 这里是为了显示获取结果
+		
+		SET MLAYER := 1;
+		
+		SET MBONUSID := MUSERID;
+		OUTER_LABEL :
+		WHILE ( MLAYER <= 5 ) DO
+			IF ( MLAYER > 1 ) THEN
+					CALL CALCREFEREE ( MBONUSID, MNEWBONUSID );
+				IF ( ISNULL( MNEWBONUSID ) OR MNEWBONUSID = 0 ) THEN
+						LEAVE OUTER_LABEL;
+					ELSE 
+						SET MBONUSID := MNEWBONUSID;
+					
+				END IF;
+				
+			END IF;
+			IF
+				( MLAYER = 1 ) THEN
+					
+					SET MRATE := MRATE30;
+				
+				ELSEIF ( MLAYER = 2 ) THEN
+				
+				SET MRATE := MRATE40;
+				
+				ELSEIF ( MLAYER = 3 ) THEN
+				
+				SET MRATE := MRATE50;
+				
+				ELSEIF ( MLAYER = 4 ) THEN
+				
+				SET MRATE := MRATE60;
+				
+				ELSEIF ( MLAYER = 5 ) THEN
+				
+				SET MRATE := MRATE70;
+				
+				ELSEIF ( MLAYER = 6 ) THEN
+				
+				SET MRATE := MRATE80;
+				
+				ELSEIF ( MLAYER = 7 ) THEN
+				
+				SET MRATE := MRATE90;
+				
+				ELSEIF ( MLAYER = 8 ) THEN
+				
+				SET MRATE := MRATE100;
+				
+				ELSEIF ( MLAYER = 9 ) THEN
+				
+				SET MRATE := MRATE110;
+				
+			END IF;
+			
+			SET MBONUS := MGPV * MRATE;
+			IF
+				( MLAYER = 1 ) THEN
+					UPDATE AR_BS_BONUS_103_CALC T 
+					SET T.BONUS30 = T.BONUS30 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, NULL, 30, MBONUS, MGPV, MRATE ,PCPID);
+				
+				ELSEIF ( MLAYER = 2 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS40 = T.BONUS40 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 40, MBONUS, MGPV, MRATE ,PCPID);
+				
+				ELSEIF ( MLAYER = 3 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS50 = T.BONUS50 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 50, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 4 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS60 = T.BONUS60 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 60, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 5 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS70 = T.BONUS70 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 70, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 6 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS80 = T.BONUS80 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 80, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 7 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS90 = T.BONUS90 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 90, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 8 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS100 = T.BONUS100 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 100, MBONUS, MGPV, MRATE,PCPID );
+				
+				ELSEIF ( MLAYER = 9 ) THEN
+				UPDATE AR_BS_BONUS_103_CALC T 
+				SET T.BONUS110 = T.BONUS110 + MBONUS 
+				WHERE
+					T.USER_ID = MBONUSID;
+				INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+				VALUES
+					( MBONUSID, MUSERID, 110, MBONUS, MGPV, MRATE,PCPID );
+				
+			END IF;-- 计算会员的级别
+			UPDATE AR_BS_BONUS_103_CALC_NET T 
+			SET T.USER_TYPE = ( MLAYER + 2 )* 10 
+			WHERE
+				T.USER_ID = MBONUSID 
+				AND USER_TYPE <=(
+					MLAYER + 1 
+				)* 10;
+			
+			SET MLAYER := MLAYER + 1;
+			
+		END WHILE;-- 关闭游标
+		
+	END LOOP;
+	CLOSE MC;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCLEVEL_kevin_01` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCLEVEL_kevin_01`(IN PLAYER int, IN PCPID int)
+BEGIN
+    DECLARE
+        FLAG,
+        MLAYER,
+        MUSERTYPE INT DEFAULT 0;
+    DECLARE
+        MUSERID,
+        MBONUSID,
+        MNEWBONUSID VARCHAR ( 50 );
+    DECLARE
+        MRATE,
+        MRATE30,
+        MRATE40,
+        MRATE50,
+        MRATE60,
+        MRATE70,
+        MRATE80,
+        MRATE90,
+        MRATE100,
+        MRATE110,
+        MBONUS,
+        MGPV DECIMAL ( 10, 2 );
+    DECLARE
+        MC CURSOR FOR SELECT
+                          C.USER_ID,
+                          C.TEAM_GPV
+                      FROM
+                          AR_BS_BONUS_103_CALC_NET C
+                      WHERE
+                              C.USER_TYPE >= 30
+                        AND LAYER = PLAYER;
+    DECLARE
+        CONTINUE HANDLER FOR NOT FOUND
+        SET FLAG = 1;
+    START TRANSACTION;
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE30
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = 'E121497617216708616';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE40
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE6A4D03C52288E055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE50
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE6EA2070D22EBE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE60
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE742A336F2370E055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE70
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE805032C22492E055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE80
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '67BE82019BE524CAE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE90
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '99BE5FE7857C216AE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE100
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '99BE5FE9008C216AE055736AECE8644D';
+    SELECT
+            T.BS_PERCENT / 100 INTO MRATE110
+    FROM
+        AR_EMPLOY_LEVEL T
+    WHERE
+            T.ID = '99BE5FE7857C216AE000223AECE8644D';-- 打开游标
+    OPEN MC;-- 获取结果
+    L2 :
+    LOOP
+        FETCH MC INTO MUSERID,
+            MGPV;
+        IF
+                FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+            LEAVE L2;
+
+        END IF;-- 这里是为了显示获取结果
+
+        SET MLAYER := 1;
+
+        SET MBONUSID := MUSERID;
+        OUTER_LABEL :
+        WHILE
+            ( MLAYER <= 9 ) DO
+                IF
+                    ( MLAYER > 1 ) THEN
+                    CALL CALCREFEREE ( MBONUSID, MNEWBONUSID );
+                    IF
+                        ( ISNULL( MNEWBONUSID ) OR MNEWBONUSID = 0 ) THEN
+                        LEAVE OUTER_LABEL;
+                    ELSE
+                        SET MBONUSID := MNEWBONUSID;
+
+                    END IF;
+
+                END IF;
+                IF
+                    ( MLAYER = 1 ) THEN
+
+                    SET MRATE := MRATE30;
+
+                ELSEIF ( MLAYER = 2 ) THEN
+
+                    SET MRATE := MRATE40;
+
+                ELSEIF ( MLAYER = 3 ) THEN
+
+                    SET MRATE := MRATE50;
+
+                ELSEIF ( MLAYER = 4 ) THEN
+
+                    SET MRATE := MRATE60;
+
+                ELSEIF ( MLAYER = 5 ) THEN
+
+                    SET MRATE := MRATE70;
+
+                ELSEIF ( MLAYER = 6 ) THEN
+
+                    SET MRATE := MRATE80;
+
+                ELSEIF ( MLAYER = 7 ) THEN
+
+                    SET MRATE := MRATE90;
+
+                ELSEIF ( MLAYER = 8 ) THEN
+
+                    SET MRATE := MRATE100;
+
+                ELSEIF ( MLAYER = 9 ) THEN
+
+                    SET MRATE := MRATE110;
+
+                END IF;
+
+                SET MBONUS := MGPV * MRATE;
+                IF
+                    ( MLAYER = 1 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS30 = T.BONUS30 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, NULL, 30, MBONUS, MGPV, MRATE ,PCPID);
+
+                ELSEIF ( MLAYER = 2 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS40 = T.BONUS40 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 40, MBONUS, MGPV, MRATE ,PCPID);
+
+                ELSEIF ( MLAYER = 3 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS50 = T.BONUS50 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 50, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 4 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS60 = T.BONUS60 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 60, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 5 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS70 = T.BONUS70 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 70, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 6 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS80 = T.BONUS80 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 80, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 7 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS90 = T.BONUS90 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 90, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 8 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS100 = T.BONUS100 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 100, MBONUS, MGPV, MRATE,PCPID );
+
+                ELSEIF ( MLAYER = 9 ) THEN
+                    UPDATE AR_BS_BONUS_103_CALC T
+                    SET T.BONUS110 = T.BONUS110 + MBONUS
+                    WHERE
+                            T.USER_ID = MBONUSID;
+                    INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
+                    VALUES
+                        ( MBONUSID, MUSERID, 110, MBONUS, MGPV, MRATE,PCPID );
+
+                END IF;-- 计算会员的级别
+                UPDATE AR_BS_BONUS_103_CALC_NET T
+                SET T.USER_TYPE = ( MLAYER + 2 )* 10
+                WHERE
+                        T.USER_ID = MBONUSID
+                  AND USER_TYPE <=(
+                                          MLAYER + 1
+                                      )* 10;
+
+                SET MLAYER := MLAYER + 1;
+
+            END WHILE;-- 关闭游标
+
+    END LOOP;
+    CLOSE MC;
+    COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCMAIN` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCMAIN`(IN `PCPID` int,OUT `PRESULT` varchar(100))
+BEGIN
+	#Routine body goes here...
+DECLARE EXIT HANDLER FOR SQLEXCEPTION  
+SET PRESULT = 'FAIL';
+ CALL CalcBlue(PCPID);
+SET PRESULT = 'SUCCESS';
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCPOINT` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCPOINT`()
+BEGIN
+	DECLARE
+		MPOINTRATE DECIMAL ( 10, 2 );
+	SELECT 
+	VALUE
+		/ 100 INTO MPOINTRATE 
+	FROM
+		AR_CONFIG 
+	WHERE
+		CONFIG_NAME = 'bsNoPvPointsPercent';
+	UPDATE AR_BS_BONUS_103_CALC 
+	SET PRODUCT_POINT = PV * MPOINTRATE 
+	WHERE
+		USER_TYPE10 = 0 
+		AND USER_TYPE = 0 
+		AND PV > 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCRECORD` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCRECORD`(IN `PID` INT, IN `PEVENT` VARCHAR ( 255 ), IN `PCPID` INT, IN `PNOW` DATETIME)
+BEGIN
+	INSERT INTO AR_BS_BONUS_103_CALC_EVENT ( ID, EVENT, CREATION_TIME, CALC_PERIOD_ID )
+	VALUES
+		( PID, PEVENT, NOW(), PCPID );
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCREFEREE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCREFEREE`(IN `PBONUSID` VARCHAR ( 50 ),
+	OUT `PNEWBONUSID` VARCHAR ( 50 ))
+BEGIN
+	DECLARE
+		MUSERID,
+		MBONUSID VARCHAR ( 50 );
+	DECLARE
+		MUSERTYPE INT;
+	
+	/*SET MUSERID := PBONUSID;
+	OUTER_LABEL :
+	WHILE
+			(
+			ISNULL( MBONUSID )) DO
+		SELECT
+			INTRODUCER_ID INTO MUSERID 
+		FROM
+			AR_BS_BONUS_103_CALC_NET T 
+		WHERE
+			T.USER_ID = MUSERID;
+		IF
+			( MUSERID = 0 ) THEN
+				
+				SET PNEWBONUSID := NULL;
+			LEAVE OUTER_LABEL;
+			
+		END IF;
+		SELECT
+			USER_TYPE INTO MUSERTYPE 
+		FROM
+			AR_BS_BONUS_103_CALC_NET T 
+		WHERE
+			T.USER_ID = MUSERID;
+		IF
+			( MUSERTYPE >= 30 ) THEN
+				
+				SET PNEWBONUSID := MUSERID;
+			LEAVE OUTER_LABEL;
+			
+		END IF;
+		
+	END WHILE;*/
+  SELECT INTRODUCER_ID30 INTO PNEWBONUSID FROM AR_BS_BONUS_103_CALC_NET WHERE USER_ID = PBONUSID;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCSTAT` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCSTAT`(IN PCPID int)
+BEGIN
+	INSERT INTO AR_CALC_BONUS_BS_STAT (
+		PERIOD_NUM,
+		TOTAL_PV,
+		BONUS10,
+		PERCENT10,
+		BONUS20,
+		PERCENT20,
+		BONUS30,
+		PERCENT30,
+		BONUS40,
+		PERCENT40,
+		BONUS50,
+		PERCENT50,
+		BONUS60,
+		PERCENT60,
+		BONUS70,
+		PERCENT70,
+		BONUS80,
+		PERCENT80,
+		BONUS90,
+		PERCENT90,
+		BONUS100,
+		PERCENT100,
+		BONUS110,
+		PERCENT110,
+		BONUS,
+		PERCENT,
+		CHECK_STATUS,
+        BONUS_MNT,
+        BONUS_MNT_PERCENT,
+        BONUS_ABBR,
+        BONUS_ABBR_PERCENT
+	) SELECT
+	PCPID,
+	SUM( PV ),
+	SUM( BONUS10 ),
+	0,
+	SUM( BONUS20 ),
+	0,
+	SUM( BONUS30 ),
+	0,
+	SUM( BONUS40 ),
+	0,
+	SUM( BONUS50 ),
+	0,
+	SUM( BONUS60 ),
+	0,
+	SUM( BONUS70 ),
+	0,
+	SUM( BONUS80 ),
+	0,
+	SUM( BONUS90 ),
+	0,
+	SUM( BONUS100 ),
+	0,
+	SUM( BONUS110 ),
+	0,
+	SUM( BONUS ),
+	0,
+	0,
+    SUM(BONUS_MNT),
+    0,
+	SUM(BONUS_ABBR),
+    0
+	FROM
+		AR_BS_BONUS_103_CALC;
+
+	UPDATE AR_CALC_BONUS_BS_STAT 
+        SET PERCENT10 = BONUS10 / TOTAL_PV,
+        PERCENT20 = BONUS20 / TOTAL_PV,
+        PERCENT30 = BONUS30 / TOTAL_PV,
+        PERCENT40 = BONUS40 / TOTAL_PV,
+        PERCENT50 = BONUS50 / TOTAL_PV,
+        PERCENT60 = BONUS60 / TOTAL_PV,
+        PERCENT70 = BONUS70 / TOTAL_PV,
+        PERCENT80 = BONUS80 / TOTAL_PV,
+        PERCENT90 = BONUS90 / TOTAL_PV,
+        PERCENT100 = BONUS100 / TOTAL_PV,
+        PERCENT110 = BONUS110 / TOTAL_PV,
+        PERCENT = BONUS / TOTAL_PV,
+        BONUS_MNT_PERCENT = BONUS_MNT / TOTAL_PV,
+        BONUS_ABBR_PERCENT = BONUS_ABBR / TOTAL_PV
+	WHERE
+		PERIOD_NUM = PCPID AND TOTAL_PV > 0;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCSUMMARY` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCSUMMARY`()
+BEGIN
+	UPDATE AR_BS_BONUS_103_CALC T 
+	    SET T.BONUS = BONUS10 + BONUS20 + BONUS30 + BONUS40 + BONUS50 + BONUS60 + BONUS70 + BONUS80 + BONUS90 + BONUS100 + BONUS110,
+	        T.BONUS_MNT = BONUS30 + BONUS40 + BONUS50 + BONUS60 + BONUS70 + BONUS80 + BONUS90 + BONUS100 + BONUS110,
+	        T.BONUS_ABBR = BONUS10 + BONUS20
+	WHERE
+		T.BONUS10 > 0 
+		OR T.BONUS20 > 0 
+		OR T.BONUS30 > 0 
+		OR T.BONUS40 > 0 
+		OR T.BONUS50 > 0 
+		OR T.BONUS60 > 0 
+		OR T.BONUS70 > 0 
+		OR T.BONUS80 > 0 
+		OR T.BONUS90 > 0 
+		OR T.BONUS100 > 0 
+		OR T.BONUS110 > 0;
+	UPDATE AR_BS_BONUS_103_CALC T 
+	SET GPV = 0 
+	WHERE
+		T.INTRODUCER_ID = '0' 
+		AND USER_TYPE = 0;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCTOTALGPV` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCTOTALGPV`()
+BEGIN
+	DECLARE
+		MLAYER,
+		MMINLAYER,
+		MUSERTYPE INT DEFAULT 0;
+	DECLARE
+		MUSERID,
+		MMAXUSERID VARCHAR ( 50 );
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	SELECT
+		MAX( LAYER ) INTO MLAYER 
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		GPV > 0;
+	SELECT
+		MIN( LAYER ) INTO MMINLAYER 
+	FROM
+		AR_BS_BONUS_103_CALC_NET 
+	WHERE
+		USER_TYPE = 30;
+	UPDATE AR_BS_BONUS_103_CALC_NET T1
+	INNER JOIN AR_BS_BONUS_103_CALC_NET T2 ON IFNULL( T1.INTRODUCER_ID, '0' ) = T2.USER_ID 
+	AND T1.USER_TYPE = 30 
+	AND T2.USER_TYPE = 30 
+	SET T1.INTRODUCER_ID30 = T2.USER_ID;
+	WHILE
+			MLAYER > MMINLAYER DO
+			CALL CALCTOTALGPV_ ( MLAYER, MMINLAYER );
+		
+		SET MLAYER = MLAYER - 1;
+		
+	END WHILE;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCTOTALGPV_` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCTOTALGPV_`(IN `PLAYER` INT, -- 第几层
+	IN `PMINLAYER` INT)
+BEGIN
+	DECLARE
+		FLAG,
+		MLAYER,
+		MINTLAYER,
+		MUSERTYPE,
+		MINTTYPE INT DEFAULT 0;
+	DECLARE
+		MGPV DECIMAL ( 10, 2 );
+	DECLARE
+		MUSERID,
+		MUSERINTID,
+		MINTUSERID,
+		MINTRODUCERID VARCHAR ( 50 );
+	DECLARE
+		MC CURSOR FOR SELECT
+		C.USER_ID,
+		C.INTRODUCER_ID,
+		C.USER_TYPE,
+		C.GPV 
+	FROM
+		(
+		SELECT
+			USER_ID,
+			IFNULL( INTRODUCER_ID, '0' ) INTRODUCER_ID,
+			USER_TYPE,
+			GPV 
+		FROM
+			AR_BS_BONUS_103_CALC_NET 
+		WHERE
+			LAYER = PLAYER 
+			AND GPV > 0 
+			OR ( GPV = 0 AND USER_TYPE = 30 ) 
+		ORDER BY
+			USER_ID DESC 
+		) C;
+	DECLARE
+		CONTINUE HANDLER FOR NOT FOUND 
+		SET FLAG = 1;
+	START TRANSACTION;-- 打开游标
+	OPEN MC;-- 获取结果
+	L2 :
+	LOOP
+			FETCH MC INTO MUSERID,
+			MUSERINTID,
+			MUSERTYPE,
+			MGPV;
+		IF
+			FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
+				LEAVE L2;
+			
+		END IF;
+		SET MLAYER = PLAYER;
+		
+		SET MINTUSERID = MUSERINTID;
+		IF
+			( MINTUSERID != '0' ) THEN
+				OUTLABEL :
+			WHILE
+					MLAYER > PMINLAYER DO
+				SELECT
+					INTRODUCER_ID,
+					USER_TYPE,
+					LAYER INTO MINTRODUCERID,
+					MINTTYPE,
+					MLAYER 
+				FROM
+					AR_BS_BONUS_103_CALC_NET 
+				WHERE
+					USER_ID = MINTUSERID;
+				IF
+					( MINTUSERID != MUSERINTID AND MINTTYPE = 30 ) THEN
+						UPDATE AR_BS_BONUS_103_CALC_NET 
+						SET TEAM_GPV = TEAM_GPV + MGPV 
+					WHERE
+						USER_ID = MINTUSERID;
+					IF
+						( MUSERTYPE = 30 ) THEN
+							UPDATE AR_BS_BONUS_103_CALC_NET 
+							SET INTRODUCER_ID30 = MINTUSERID 
+						WHERE
+							USER_ID = MUSERID 
+							AND INTRODUCER_ID30 IS NULL;
+						
+					END IF;
+					LEAVE OUTLABEL;
+					
+				END IF;
+				
+				SET MINTUSERID = MINTRODUCERID;
+				
+			END WHILE;
+			
+		END IF;-- 关闭游标
+		
+	END LOOP;
+	CLOSE MC;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCUP30` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCUP30`()
+BEGIN
+	START TRANSACTION;
+	UPDATE AR_BS_BONUS_103_CALC_NET T1 
+	SET T1.USER_TYPE = 30 
+	WHERE
+		USER_TYPE >= 10 
+		AND DIRECTLY_UNDER >= 3;
+	COMMIT;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CALCUPGARDE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CALCUPGARDE`(IN `PLAYER` INT)
+BEGIN
+	DECLARE
+		MLAYER,
+		MCOUNT,
+		MCOUNT1,
+		MCOUNT2 INT;
+	
+	SET MLAYER := PLAYER;
+	SELECT
+		COUNT(*) INTO MCOUNT 
+	FROM
+		AR_BS_BONUS_103_CALC T 
+	WHERE
+		T.LAYER = MLAYER 
+		AND USER_TYPE10 = 10 
+		AND USER_TYPE = 0;
+	IF
+		( MCOUNT > 0 ) THEN
+			BREAKLABLE :
+		WHILE
+				MLAYER > 0 DO
+			SELECT
+				COUNT(*) INTO MCOUNT1 
+			FROM
+				AR_BS_BONUS_103_CALC T1 
+			WHERE
+				T1.USER_TYPE10 = 10 
+				AND T1.LAYER = MLAYER - 1;
+			UPDATE AR_BS_BONUS_103_CALC T1
+			INNER JOIN ( SELECT INTRODUCER_ID FROM AR_BS_BONUS_103_CALC WHERE LAYER = MLAYER AND USER_TYPE10 = 10 GROUP BY INTRODUCER_ID ) T2 ON T1.USER_ID = T2.INTRODUCER_ID 
+			AND T1.USER_TYPE10 = 0 
+			AND T1.LAYER = MLAYER - 1 
+			SET T1.USER_TYPE10 = 10,
+			T1.USER_TYPE = 10;
+			SELECT
+				COUNT(*) INTO MCOUNT2 
+			FROM
+				AR_BS_BONUS_103_CALC T1 
+			WHERE
+				T1.USER_TYPE10 = 10 
+				AND T1.LAYER = MLAYER - 1;
+			IF
+				( MCOUNT1 = MCOUNT2 ) THEN
+					LEAVE BREAKLABLE;
+				
+			END IF;
+			
+			SET MLAYER := MLAYER - 1;
+			
+		END WHILE;
+		
+	END IF;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CLEANACTIVE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CLEANACTIVE`(IN `UNUMBER` VARCHAR(32))
+BEGIN
+DECLARE t_error INTEGER DEFAULT 0;    
+DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
+
+START TRANSACTION;
+  -- 备份用户的余额 奖金 兑换积分 复消积分
+	INSERT INTO `AR_ACTIVED_ACCOUNT_BACK` ( `USER_ID`, `USER_NAME`, `USER_CASH`, `EXCHANGE_POINTS`, `EXCHANGE_POINTS_TOTAL`, `RECONSUME_POINTS`, `RECONSUME_POINTS_TOTAL`, `USER_BONUS`, `RECONSUME_POINTS_EXPIRED` ) SELECT
+`AR_USER_BONUS`.`USER_ID`,
+`AR_USER`.`USER_NAME`,
+`AR_USER_WALLET`.`CASH`,
+`AR_USER_BONUS`.`EXCHANGE_POINTS`,
+`AR_USER_BONUS`.`EXCHANGE_POINTS_TOTAL`,
+`AR_USER_BONUS`.`RECONSUME_POINTS`,
+`AR_USER_BONUS`.`RECONSUME_POINTS_TOTAL`,
+`AR_USER_BONUS`.`BONUS`,
+`AR_USER_BONUS`.`RECONSUME_POINTS_EXPIRED` 
+FROM
+	`AR_USER_BONUS`
+	INNER JOIN `AR_USER` ON `AR_USER`.`ID` = `AR_USER_BONUS`.`USER_ID`
+	LEFT JOIN `AR_USER_WALLET` ON `AR_USER_WALLET`.`USER_ID` = `AR_USER_BONUS`.`USER_ID` 
+WHERE
+	`AR_USER`.`USER_NAME` = `UNUMBER`;
+
+	-- 删除用户奖金
+	DELETE  `UB`  FROM  `AR_USER_BONUS` `UB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	
+	-- 清除用户的cash余额
+	UPDATE `AR_USER_WALLET` INNER JOIN `AR_USER` ON `AR_USER`.`ID`=`AR_USER_WALLET`.`USER_ID`      SET  `AR_USER_WALLET`.`CASH`=0 WHERE `AR_USER`.`USER_NAME` = `UNUMBER`; 
+	
+	
+	-- 删除用户累计业绩
+	DELETE  `UP`  FROM  `AR_USER_PERF` `UP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	
+	-- 删除用户总奖金发送记录
+	DELETE  `CB`  FROM  `AR_CALC_BONUS` `CB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	
+	-- 删除用户各个奖金发送记录
+	DELETE  `CBBD`  FROM  `AR_CALC_BONUS_BD` `CBBD` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBBD`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBBS`  FROM  `AR_CALC_BONUS_BS` `CBBS` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBBS`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBBT`  FROM  `AR_CALC_BONUS_BT` `CBBT` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBBT`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBCF`  FROM  `AR_CALC_BONUS_CF` `CBCF` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBCF`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBFL`  FROM  `AR_CALC_BONUS_FL` `CBFL` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBFL`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBFW`  FROM  `AR_CALC_BONUS_FW` `CBFW` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBFW`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBFX`  FROM  `AR_CALC_BONUS_FX` `CBFX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBFX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBGL`  FROM  `AR_CALC_BONUS_GL` `CBGL` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBGL`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBGX`  FROM  `AR_CALC_BONUS_GX` `CBGX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBGX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBLS`  FROM  `AR_CALC_BONUS_LS` `CBLS` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBLS`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBLX`  FROM  `AR_CALC_BONUS_LX` `CBLX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBLX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBQY`  FROM  `AR_CALC_BONUS_QY` `CBQY` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBQY`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBST`  FROM  `AR_CALC_BONUS_STANDARD` `CBST` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBST`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBTG`  FROM  `AR_CALC_BONUS_TG` `CBTG` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBTG`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBVIP`  FROM  `AR_CALC_BONUS_VIP` `CBVIP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBVIP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBXF`  FROM  `AR_CALC_BONUS_XF` `CBXF` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBXF`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBYC`  FROM  `AR_CALC_BONUS_YC` `CBYC` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBYC`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CBYJ`  FROM  `AR_CALC_BONUS_YJ` `CBYJ` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CBYJ`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `CMBU`  FROM  `AR_CALC_MONTH_BONUS_USER` `CMBU` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`CMBU`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FB`  FROM  `AR_FLOW_BONUS` `FB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FC`  FROM  `AR_FLOW_CF` `FC` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FC`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FDZ`  FROM  `AR_FLOW_DEDUCT_ZR` `FDZ` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FDZ`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FEP`  FROM  `AR_FLOW_EXCHANGE_POINTS` `FEP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FEP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FLX`  FROM  `AR_FLOW_LX` `FLX` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FLX`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FRP`  FROM  `AR_FLOW_RECONSUME_POINTS` `FRP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FRP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `FW`  FROM  `AR_FLOW_WALLET` `FW` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`FW`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `HB`  FROM  `AR_HISTORY_BONUS` `HB` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`HB`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `UPEP`  FROM  `AR_USER_PERIOD_EXCHANGE_POINTS` `UPEP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UPEP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `UPP`  FROM  `AR_USER_PERIOD_POINTS` `UPP` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`UPP`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `AW`  FROM  `AR_WITHDRAW` `AW` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`AW`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `AT`  FROM  `AR_TRANSFER` `AT` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`AT`.`OUT_UID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `ABA`  FROM  `AR_BALANCE_AUDIT` `ABA` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`ABA`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `R`  FROM  `AR_RECHARGE` `R` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`R`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	DELETE  `ASM`  FROM  `AR_SCORE_MONTH` `ASM` INNER JOIN `AR_USER` `U` ON `U`.`ID`=`ASM`.`USER_ID` 
+	WHERE `U`.`USER_NAME` = `UNUMBER`;
+	
+	IF t_error = 1 THEN    
+      ROLLBACK;    
+  ELSE
+	    COMMIT;
+	END IF;
+	select t_error;  -- 返回标识位的结果集
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `CONFOUNDING_DATA` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `CONFOUNDING_DATA`()
+BEGIN
+	#Routine body goes here...
+	UPDATE AR_BALANCE_AUDIT SET CREATE_REMARK = '';
+	
+	UPDATE AR_CALC_BONUS SET LAST_REAL_NAME = CONCAT(LAST_USER_NAME,'REAL_NAME'),LAST_REC_REAL_NAME = CONCAT(LAST_REC_USER_NAME,'REAL_NAME'),LAST_CON_REAL_NAME = CONCAT(LAST_CON_USER_NAME,'REAL_NAME');
+
+	UPDATE AR_FLOW_BONUS SET REMARK ='';
+	
+	UPDATE AR_FLOW_WALLET SET REMARK ='';
+	
+	UPDATE AR_ORDER SET CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),MOBILE = '18888888888',ADDRESS = 'Virtual Address';
+	
+	UPDATE AR_ORDER_DEC SET MOBILE = '18888888888',CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),ADDRESS = 'Virtual Address';
+	
+	UPDATE AR_ORDER_SHOP SET MOBILE = '18888888888',CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),ADDRESS = 'Virtual Address';
+
+	UPDATE AR_RECEIVE_ADDRESS SET CONSIGNEE = CONCAT(USER_NAME,'CONSIGNEE_NAME'),MOBILE = '18888888888',ADDRESS = 'Virtual Address';
+
+	UPDATE AR_RECHARGE SET REAL_NAME = USER_ID;
+
+	UPDATE AR_TRANSFER SET LAST_OUT_REAL_NAME = CONCAT(LAST_OUT_USER_NAME,'REAL_NAME'),LAST_IN_REAL_NAME = CONCAT(LAST_IN_USER_NAME,'REAL_NAME'),REMARK = '';
+
+	UPDATE AR_USER SET REAL_NAME = CONCAT(USER_NAME,'REAL_NAME'),MOBILE = '18888888888',ADDRESS = 'Virtual Address';
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `QTRCALC` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `QTRCALC`(IN `PCPID` INT)
+LABEL: BEGIN
+-- DECLARE QTRSTARTPID, QTRSTARTMONTH, THISYEAR, THISMONTH, MISMONTH INT;
+
+DECLARE TBONUS,BONUSPERU DECIMAL; -- 奖金总额,每份奖金
+DECLARE QTRSTARTMONTH, THISYEAR, THISMONTH, MISMONTH INT; -- 这个月
+
+-- DECLARE OCROWN1NUM,OCROWN2NUM,OCROWN3NUM,OCROWN4NUM,OCROWN5NUM,OCROWN6NUM,OCROWN7NUM INT; -- 各星级的人数,原始不加权
+-- DECLARE  CROWN1U, CROWN2U, CROWN3U, CROWN4U, CROWN5U, CROWN6U, CROWN7U INT; -- 各星级的人数(加权)
+
+DECLARE TOTALU INT; -- 加权的总份数
+
+DECLARE MAXID, USERTBID INT;
+DECLARE Q, R INT;
+
+START TRANSACTION;
+-- 日志;
+DELETE FROM AR_QTR_CALC_RECORD ;
+CALL QTRCALCRECORD(-1,'开始',PCPID,NOW());
+COMMIT;
+
+CALL QTRCLEAN(PCPID);
+CALL QTRCALCRECORD(1,'清除数据',PCPID,NOW());
+COMMIT;
+
+SELECT
+ CALC_YEAR, CALC_MONTH, IS_MONTH INTO THISYEAR, THISMONTH, MISMONTH FROM AR_PERIOD WHERE PERIOD_NUM = PCPID;
+
+CALL QTRCALCRECORD(2,'初始化',PCPID,NOW());
+COMMIT;
+
+-- 查看是否季度结
+
+IF(THISMONTH!=3 AND THISMONTH!=6 AND THISMONTH!=9 AND THISMONTH!=12) OR MISMONTH!=1 THEN
+  CALL QTRCALCRECORD(12,'非季结,结束',PCPID,NOW());
+	COMMIT;
+  LEAVE LABEL;
+END IF;
+
+CALL QTRCALCRECORD(3,'计算总奖金',PCPID,NOW());
+COMMIT;
+
+-- 按照条件,查询当前季度所有月的总PV,计算总奖金
+SET QTRSTARTMONTH = THISMONTH - 2;
+
+SELECT 
+   SUM(PV_PCS) * 0.02 
+INTO TBONUS
+  FROM AR_PERF_MONTH 
+WHERE CALC_MONTH >= CONCAT(THISYEAR, lpad(QTRSTARTMONTH,2,0)) AND CALC_MONTH <= CONCAT(THISYEAR, lpad(THISMONTH,2,0));
+
+CALL QTRCALCRECORD(4,'计算总人数及加权',PCPID,NOW());
+COMMIT;
+
+
+-- 查找,所有星级用户
+INSERT INTO AR_QTR_CALC_WEIGHT
+	SELECT 
+		NULL AS ID,
+		QY.USER_ID,
+		MAX(CL.SORT) AS MAX_SORT,
+		(MAX(CL.SORT) - 1)/2 + 1 AS WEIGHT,
+		PERIOD_NUM,
+		CALC_MONTH,
+		CALC_YEAR
+	FROM
+		AR_CALC_BONUS_QY AS QY
+	 INNER JOIN 
+		AR_CROWN_LEVEL AS CL
+	 ON QY.LAST_CROWN_LV = CL.ID
+	 INNER JOIN 
+		AR_USER AS U
+	 ON QY.USER_ID = U.ID
+	 
+	WHERE
+		QY.LAST_CROWN_LV != (SELECT ID FROM AR_CROWN_LEVEL WHERE SORT = 0)
+		AND U.DEC_LV = '67ABCE0ECE705575E055736AECE8644D'
+		AND QY.CALC_MONTH >= CONCAT(THISYEAR, lpad(QTRSTARTMONTH,2,0)) 
+		AND QY.CALC_MONTH <= CONCAT(THISYEAR, lpad(THISMONTH,2,0))
+
+	GROUP BY USER_ID, CALC_MONTH;
+
+COMMIT;
+
+INSERT INTO AR_QTR_CALC_SCORE
+	SELECT
+		NULL AS ID,
+		USER_ID, 
+		COUNT(*) AS CNT,
+		SUM(WEIGHT) AS SCORE,
+		CALC_MONTH,
+		CALC_YEAR
+	FROM 
+		AR_QTR_CALC_WEIGHT
+	GROUP BY USER_ID;
+
+COMMIT;
+	
+SELECT SUM(SCORE) INTO TOTALU FROM AR_QTR_CALC_SCORE;
+
+SET BONUSPERU = TBONUS / TOTALU;
+
+
+CALL QTRCALCRECORD(5,'计算每一份奖金',PCPID,NOW());
+COMMIT;
+
+INSERT INTO AR_QTR_CALC_USER
+	SELECT 
+		NULL AS ID,
+		SC.USER_ID,
+		BONUSPERU * SC.SCORE AS AMOUNT,
+		CALC_YEAR,
+		CALC_MONTH,
+		PCPID AS PERIOD_NUM
+	FROM
+		AR_QTR_CALC_SCORE AS SC;
+
+CALL QTRCALCRECORD(6,'写入user表',PCPID,NOW());
+
+COMMIT;
+
+INSERT INTO AR_CALC_BONUS_QUARTER
+	SELECT
+		NULL AS ID,
+		AU.USER_ID,
+		AU.AMOUNT AS ORI_BONUS,
+		0 AS MANAGE_TAX,
+		AU.AMOUNT,
+		0 AS RECONSUME_POINTS,
+		U.DEC_LV,
+		AU.CALC_MONTH, 
+		AU.PERIOD_NUM,
+		NOW() AS CREATE_AT
+	FROM
+		AR_QTR_CALC_USER AS AU
+	 LEFT JOIN
+	  AR_USER AS U
+	 ON AU.USER_ID = U.ID;
+
+CALL QTRCALCRECORD(20,'写入季度奖金表',PCPID,NOW());
+COMMIT;	
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `QTRCALCRECORD` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `QTRCALCRECORD`(IN `PID` INT, IN `PEVENT` VARCHAR ( 255 ), IN `PCPID` INT, IN `PNOW` DATETIME)
+BEGIN
+	INSERT INTO AR_QTR_CALC_RECORD ( ID, EVENT, CREATION_TIME, CALC_PERIOD_ID )
+	VALUES
+		( PID, PEVENT, NOW(), PCPID );
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `QTRCLEAN` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `QTRCLEAN`(IN `PCPID` INT)
+BEGIN-- 删除当期奖金
+	DELETE 
+	FROM
+		AR_CALC_BONUS_QUARTER
+	WHERE
+		PERIOD_NUM >= PCPID;
+  TRUNCATE
+		AR_QTR_CALC_USER;
+	TRUNCATE
+		AR_QTR_CALC_WEIGHT;
+	TRUNCATE
+		AR_QTR_CALC_SCORE;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
+/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `UPPERCASE` */;
+/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client  = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`babysbreath`@`%` PROCEDURE `UPPERCASE`(IN DBNAME VARCHAR(200))
+BEGIN 
+  
+DECLARE DONE INT DEFAULT 0;  
+  
+DECLARE OLDNAME VARCHAR(200);  
+  
+DECLARE CUR CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DBNAME;  
+  
+DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;  
+  
+OPEN CUR;  
+  
+REPEAT  
+  
+FETCH CUR INTO OLDNAME;  
+  
+SET @NEWNAME = UPPER(OLDNAME);  
+SET @ISNOTSAME = @NEWNAME <> BINARY OLDNAME;   
+IF NOT DONE && @ISNOTSAME THEN   
+SET @SQL = CONCAT('RENAME TABLE `',OLDNAME,'` TO `', LOWER(@NEWNAME), '_TMP` ');   
+PREPARE TMPSTMT FROM @SQL;   
+EXECUTE TMPSTMT;  
+
+SET @SQL = CONCAT('RENAME TABLE `',LOWER(@NEWNAME),'_TMP` TO `',@NEWNAME, '`');   
+PREPARE TMPSTMT FROM @SQL;   
+EXECUTE TMPSTMT; 
+  
+DEALLOCATE PREPARE TMPSTMT;  
+  
+END IF;   
+UNTIL DONE END REPEAT;   
+CLOSE CUR;   
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode              = @saved_sql_mode */ ;
+/*!50003 SET character_set_client  = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection  = @saved_col_connection */ ;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2022-10-08  2:33:02

+ 26 - 28
sql/upgrade/1988.sql

@@ -35,7 +35,7 @@ BEGIN
     FROM
         AR_EMPLOY_LEVEL T
     WHERE
-        T.ID = 'E121497617216708615';
+            T.ID = 'E121497617216708615';
 
     INSERT INTO AR_BS_BONUS_103_CALC (
         LAST_DEC_LV,
@@ -93,35 +93,33 @@ BEGIN
           0,
           0,
           PCPID,
-          IFNULL(DO.ACHIEVE_MEMBER_NUM, 0) AS ACHIEVE_NUM,
-          IF(DO.ACHIEVE_MEMBER_NUM >= AC_USER_NO, AC_PERF_PV, MLIMITPV) AS ACHIEVE_PV
+          IFNULL(DO.ACHIEVE_MEMBER_NUM, 0),
+          IF(DO.ACHIEVE_MEMBER_NUM >= AC_USER_NO, AC_PERF_PV, MLIMITPV)
     FROM
         AR_USER AU
-    INNER JOIN AR_USER_RELATION_NEW AURN ON AU.ID = AURN.USER_ID
-    LEFT JOIN (
-        SELECT
-            USER_ID,
-            SUM( PV ) PV
-        FROM
-            AR_PERF_ORDER
-        WHERE
-                PERIOD_NUM IN ( SELECT PERIOD_NUM FROM AR_PERIOD WHERE CALC_YEAR = PCALCYEAR AND CALC_MONTH = PCALCMONTH )
-        GROUP BY
-            USER_ID
-    ) AO ON AO.USER_ID = AU.ID
-    LEFT JOIN (
-        SELECT
-            R.PARENT_UID,
-            COUNT(O.USER_ID) AS ACHIEVE_MEMBER_NUM,
-            GROUP_CONCAT(CONCAT(O.USER_ID, '_', U.USER_NAME, '_', O.PERIOD_NUM) separator ' | ') AS ACHIEVE_MEMBER
-        FROM
-            AR_PERF_ORDER O
-                INNER JOIN AR_USER_RELATION_NEW R ON O.USER_ID = R.USER_ID
-                INNER JOIN AR_USER U ON O.USER_ID = U.ID
-        WHERE
-                O.CALC_MONTH = PCALCMONTH AND O.DEC_TYPE = 'ZC'
-        GROUP BY R.PARENT_UID
-    ) DO ON DO.PARENT_UID = AU.ID
+            INNER JOIN AR_USER_RELATION_NEW AURN ON AU.ID = AURN.USER_ID
+            LEFT JOIN (
+            SELECT
+                USER_ID,
+                SUM( PV ) PV
+            FROM
+                AR_PERF_ORDER
+            WHERE
+                    PERIOD_NUM IN ( SELECT PERIOD_NUM FROM AR_PERIOD WHERE CALC_YEAR = PCALCYEAR AND CALC_MONTH = PCALCMONTH )
+            GROUP BY
+                USER_ID
+        ) AO ON AO.USER_ID = AU.ID
+            LEFT JOIN (
+            SELECT
+                R.PARENT_UID,
+                COUNT(R.USER_ID) AS ACHIEVE_MEMBER_NUM
+            FROM
+                AR_PERF_ORDER O
+                    INNER JOIN AR_USER_RELATION_NEW R ON O.USER_ID = R.USER_ID
+            WHERE
+                    O.DEC_TYPE = 'ZC' AND O.PERIOD_NUM IN ( SELECT PERIOD_NUM FROM AR_PERIOD WHERE CALC_YEAR = PCALCYEAR AND CALC_MONTH = PCALCMONTH )
+            GROUP BY R.PARENT_UID
+        ) DO ON DO.PARENT_UID = AU.ID
     WHERE
             AU.DELETED = 0;