kevin_zhangl 3 سال پیش
والد
کامیت
de853c3d5b

+ 11 - 0
common/models/forms/ApproachOrderForm.php

@@ -14,6 +14,7 @@ use common\libs\logging\operate\AdminOperate;
 use common\models\ApproachDecOrder;
 use common\models\ApproachOrder;
 use common\models\ApproachOrderGoods;
+use common\models\BaUser;
 use common\models\DealType;
 use common\models\DecLevelLog;
 use common\models\DecOrder;
@@ -299,6 +300,9 @@ class ApproachOrderForm extends Model
             throw new Exception(Form::formatErrorsForApi('支付金额与订单金额不符'));
         }
 
+        // 是否给BA升级的单子
+        $isBrandAmbassadorUpgrade = $this->note['customer'][2]['value'] ?? false;
+
         $db = \Yii::$app->db;
         $transaction = $db->beginTransaction();
         try {
@@ -353,6 +357,13 @@ class ApproachOrderForm extends Model
             ApproachOrderGoods::deleteAll('ORDER_SN = :ORDER_SN', [':ORDER_SN' => $this->sn]);
             ApproachDecOrder::deleteAll('ORDER_SN = :ORDER_SN', [':ORDER_SN' => $this->sn]);
 
+            if ($isBrandAmbassadorUpgrade) {
+                // 修改BA会员升级状态
+                if (!BaUser::updateAll(['WHETHER_UPGRADE' => 1, 'BA_UPGRADE_AT' => time()], 'USER_NAME=:USER_NAME', [':USER_NAME' => $isBrandAmbassadorUpgrade])) {
+                    throw new Exception(Form::formatErrorsForApi('BA升级状态错误'));
+                }
+            }
+
             $transaction->commit();
         } catch (Exception $e) {
             $transaction->rollBack();

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

@@ -8,6 +8,7 @@ use common\helpers\Form;
 use common\helpers\user\Cash;
 use common\helpers\user\Reconsume;
 use common\helpers\user\Info;
+use common\models\BaUser;
 use common\models\DeclarationPackage;
 use common\models\DecOrder;
 use common\models\EmployLevel;
@@ -731,6 +732,10 @@ class DeclarationForm extends Model
             if(!($decResult = $this->addDecOrder())) {
                 throw new Exception(Form::formatErrorsForApi($decResult->getErrors()));
             }
+            // 修改BA会员升级状态
+            if (!BaUser::updateAll(['WHETHER_UPGRADE' => 1, 'BA_UPGRADE_AT' => time()], 'USER_NAME=:USER_NAME', [':USER_NAME' => $this->insertUserName])) {
+                throw new Exception(Form::formatErrorsForApi('BA升级状态错误'));
+            }
         }
         return true;
     }

+ 3 - 4
frontendApi/config/menu.php

@@ -26,8 +26,6 @@ return [
         'action'=>'',
         'routePath'=>'shop',
         'show'=>1,
-        'brandAmbassador' => 1,
-        'isTop' => 1,
         'child'=>[
             ['name'=>'Products list', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'index', 'routePath'=>'shop/index', 'show'=>1],//商品列表
             ['name'=>'Welcome Pack management', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'dec', 'routePath'=>'user/dec', 'show'=>1,'allow'=>'declarer',],
@@ -36,8 +34,8 @@ return [
 //            ['name'=>'Repeat sales products', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'reconsume', 'routePath'=>'shop/reconsume', 'show'=>1,'allow'=>'studio'],//复消商品
 //            ['name'=>'申请退货', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-backing-out', 'routePath'=>'shop/order-backing-out', 'show'=>1,],//申请退货
             ['name'=>'Order List', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-list', 'routePath'=>'shop/order-list', 'show'=>1,],//订单列表
-            ['name'=>'Welcome Brand Ambassador', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'ba-dec', 'routePath'=>'user/ba-dec', 'show'=>1,'allow'=>'declarer',],
-            ['name'=>'Welcome BA List', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'ba-dec-order-list', 'routePath'=>'shop/ba-dec-order-list', 'show'=>1,'allow'=>'declarer',],
+            ['name'=>'Brand Ambassador', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'ba-dec', 'routePath'=>'user/ba-dec', 'show'=>1,'allow'=>'declarer',],
+            ['name'=>'BA Order List', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'ba-dec-order-list', 'routePath'=>'shop/ba-dec-order-list', 'show'=>1,'allow'=>'declarer',],
         ]
     ],
     'user'=>[
@@ -68,6 +66,7 @@ return [
         '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,],
+            ['name'=>'Brand Ambassador List', 'class'=>'', 'icon'=>'', 'controller'=>'atlas', 'action'=>'brand-ambassador-list', 'routePath'=>'atlas/brand-ambassador-list', 'show'=>1,],
         ]
     ],
     'bonus'=>[

+ 1 - 0
frontendApi/config/urlManagerRules.php

@@ -130,6 +130,7 @@ return [
             'GET relation' => 'relation',
             'GET relation-list' => 'relation-list',
             'GET get-period' => 'get-period',
+            'GET brand-ambassador-list' => 'brand-ambassador-list',
         ],
     ],
     [

+ 21 - 0
frontendApi/modules/v1/controllers/AtlasController.php

@@ -8,8 +8,11 @@
 
 namespace frontendApi\modules\v1\controllers;
 
+use backendApi\modules\v1\models\lists\shop\BaUserList;
 use common\helpers\Cache;
 use common\helpers\user\Info;
+use common\models\BaUser;
+use common\models\BaUserInfo;
 use common\models\DeclarationLevel;
 use common\models\EmployLevel;
 use common\models\Period;
@@ -214,4 +217,22 @@ class AtlasController extends BaseController {
 
         return static::notice($data);
     }
+
+    /**
+     * 会员推荐的BA会员
+     * @return mixed
+     * @throws \yii\web\HttpException
+     */
+    public function actionBrandAmbassadorList()
+    {
+        $data = BaUserInfo::find()->alias('I')
+            ->select('I.USER_ID, I.USER_NAME, U.REAL_NAME, U.PERIOD_AT, U.WHETHER_UPGRADE, U.BA_UPGRADE_AT')
+            ->where('I.REC_UID = :REC_UID', ['REC_UID' => \Yii::$app->user->id])
+            ->join('INNER JOIN', BaUser::tableName() . ' AS U', 'I.USER_ID = U.ID')
+            ->orderBy('I.CREATED_AT DESC')
+            ->asArray()
+            ->all();
+
+        return static::notice($data);
+    }
 }

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

@@ -213,6 +213,7 @@ class ShopController extends BaseController {
                 $customFields = $data['metadata']['custom_fields'] ?? [];
                 $oderSn = $customFields[0]['value'] ?? '';
                 $isBrandAmbassador = $customFields[1]['value'] ?? false;
+                $isBrandAmbassadorUpgrade = $customFields[2]['value'] ?? false;
 
                 $formModel = !$isBrandAmbassador ? new ApproachOrderForm() : new BaApproachOrderForm();
                 $formModel->scenario = 'verifyPayStack';

+ 6 - 4
frontendApi/modules/v1/controllers/UserController.php

@@ -555,12 +555,14 @@ class UserController extends BaseController {
      */
     public function actionBaInfo()
     {
-        $allNation = \Yii::$app->params['nation'];
-        $allOpenBank = OpenBank::findAllAsArray('STATUS=1');
-        $data['allNation'] = $allNation;
-        $data['allOpenBank'] = $allOpenBank;
         $data['userInfo'] = BaUser::getEnCodeInfo(\Yii::$app->user->id);
         $data['userInfo']['NATION'] = $data['userInfo']['NATION_ID'];
+        // 推荐人
+        $baUserInfo = BaUserInfo::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => \Yii::$app->user->id]);
+        $sponsor = User::findOneAsArray('ID=:USER_ID', [':USER_ID' => $baUserInfo['REC_UID']]);
+        $data['userInfo']['SponsorCode'] = $sponsor['USER_NAME'];
+        $data['userInfo']['SponsorName'] = $sponsor['REAL_NAME'];
+
         return static::notice($data);
     }
 

+ 12 - 0
frontendEle/src/router/index.js

@@ -389,6 +389,18 @@ export const constantRouterMap = [
             {title: 'Sponsor Chart', path: '/atlas/relation'}
           ]
         }
+      },
+      {
+        path: '/atlas/brand-ambassador-list',
+        component: _import('atlas/brand-ambassador-list'),
+        name: 'brand-ambassador-list',
+        meta: {
+          title: 'Brand Ambassador List',
+          breadcrumb: [
+            {title: 'Dashboard', path: '/dashboard/index'},
+            {title: 'Brand Ambassador List', path: '/atlas/brand-ambassador-list'}
+          ]
+        }
       }
     ]
   },

+ 52 - 0
frontendEle/src/views/atlas/brand-ambassador-list.vue

@@ -0,0 +1,52 @@
+<template>
+  <div v-loading="loading">
+    <div class="white-box">
+      <el-table class="withdraw-table" :data="tableData" style="width: 100%;">
+        <el-table-column label="Member Code" prop="USER_NAME"></el-table-column><!--BA会员编号-->
+        <el-table-column label="Member Name" prop="REAL_NAME"></el-table-column><!--BA会员名字-->
+        <el-table-column label="Joining Period" prop="PERIOD_AT"></el-table-column><!--加入期数-->
+        <el-table-column label="Whether Upgrade" prop="WHETHER_UPGRADE">
+          <template slot-scope="scope">
+            <el-tag :type="scope.row.WHETHER_UPGRADE == 1 ? 'primary' : 'info'" >{{ scope.row.WHETHER_UPGRADE == 1 ? 'YES' : 'NO' }}</el-tag>
+          </template>
+        </el-table-column><!--是否已转正-->
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<script>
+import network from '@/utils/network'
+
+export default {
+  name: 'brand-ambassador-list',
+  mounted () {
+    this.getData();
+  },
+  data () {
+    return {
+      tableData: [],
+      loading: false,
+    }
+  },
+  methods: {
+    getData () {
+      let _this = this;
+      _this.loading = true;
+      network.getData('atlas/brand-ambassador-list').then(response => {
+        _this.tableData = response;
+        _this.loading = false;
+      }).catch(() => {
+        _this.loading = false;
+      });
+    },
+  }
+}
+
+</script>
+
+<style scoped>
+  .white-box a {
+    color: #606266;
+  }
+</style>

+ 6 - 1
frontendEle/src/views/shop/ba-shopping-cart.vue

@@ -170,13 +170,18 @@ export default{
                         {
                             display_name: 'orderSn',
                             variable_name: 'orderSn',
-                            value: this.sn
+                            value: this.sn,
                         },
                         {
                             display_name: 'isBrandAmbassador',
                             variable_name: 'isBrandAmbassador',
                             value: true,
                         },
+                        {
+                          display_name: 'isBrandAmbassadorUpgrade',
+                          variable_name: 'isBrandAmbassadorUpgrade',
+                          value: '',
+                        }
                     ]
             },
           },

+ 10 - 4
frontendEle/src/views/user/ba-info.vue

@@ -16,6 +16,14 @@
               <el-input v-model="infoData.MOBILE" :disabled="true"></el-input>
             </el-form-item>
 
+            <el-form-item label="Sponsor Code"><!-- 推荐人编号 -->
+              <el-input v-model="infoData.SponsorCode" :disabled="true"></el-input>
+            </el-form-item>
+
+            <el-form-item label="Sponsor Name"><!-- 推荐人名字 -->
+              <el-input v-model="infoData.SponsorName" :disabled="true"></el-input>
+            </el-form-item>
+
             <el-form-item label="Email"><!-- Email -->
               <el-input v-model="infoData.EMAIL"></el-input>
             </el-form-item>
@@ -50,9 +58,9 @@ export default {
         BANK_ADDRESS: '',
         BANK_NO: '',
         EMAIL: '',
+        SponsorCode: '',
+        SponsorName: '',
       },
-      allOpenBank: null,
-      allNation: null,
       tabActive: 'baseInfo',
       loading: true,
       submitButtonStat: false,
@@ -62,8 +70,6 @@ export default {
     getData () {
       network.getData('user/ba-info').then(response => {
         this.infoData = response.userInfo
-        this.allOpenBank = response.allOpenBank
-        this.allNation = response.allNation
         this.loading = false
       })
     },

+ 13 - 0
frontendEle/src/views/user/dec.vue

@@ -442,6 +442,16 @@ export default {
               display_name: 'orderSn',
               variable_name: 'orderSn',
               value: this.sn
+            },
+            {
+              display_name: 'isBrandAmbassador',
+              variable_name: 'isBrandAmbassador',
+              value: false,
+            },
+            {
+              display_name: 'isBrandAmbassadorUpgrade',
+              variable_name: 'isBrandAmbassadorUpgrade',
+              value: '',
             }
           ]
         }
@@ -619,6 +629,9 @@ export default {
           _this.PayStackForm.orderSn = response.SN
           _this.PayStackForm.amount = response.ORDER_AMOUNT
           _this.PayStackForm.metadata.custom_fields[0].value = response.SN
+          if (_this.form.decType === 'ba') {
+            _this.PayStackForm.metadata.custom_fields[2].value = _this.form.insertUserName
+          }
           _this.visible = true
         }
       }).catch(response => {

+ 2 - 0
sql/upgrade/1962.sql

@@ -327,6 +327,8 @@ CREATE TABLE `AR_BA_USER` (
   `LAST_CROWN_LV` varchar(32) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '最新Crown级别',
   `LAST_CROWN_LV_UPDATED_AT` int(11) NOT NULL DEFAULT 0 COMMENT '最新Crown级别更新时间',
   `LAST_CROWN_LV_UPDATED_PERIOD` int(11) NOT NULL DEFAULT 0 COMMENT '最新Crown级别更新期数',
+  `WHETHER_UPGRADE` TINYINT NOT NULL DEFAULT '0' COMMENT '是否已升级:0-未升级 1-已升级',
+  `BA_UPGRADE_AT` int(10) NOT NULL DEFAULT '0' COMMENT 'BA会员升级时间',
   PRIMARY KEY (`ID`) USING BTREE,
   UNIQUE KEY `USER_NAME` (`USER_NAME`) USING BTREE,
   UNIQUE KEY `ID` (`ID`) USING BTREE,