فهرست منبع

Merge branch 'master' of https://git.hxiaoju.top/Teapay/RWACha-API

* 'master' of https://git.hxiaoju.top/Teapay/RWACha-API:
  修改订单状态
  质押存储
  添加质抵押订单
  添加用户存储产品
  解除质押
  解除质抵押订单
  解除质押
  解除
  扣除
  社区节点
  存储服务费
jason 6 ماه پیش
والد
کامیت
ee4ee6040a

+ 3 - 0
application/admin/controller/product/Pledges.php

@@ -23,6 +23,9 @@ class Pledges extends Backend
      */
     protected $model = null;
 
+    protected $multiFields = ['status','is_renew'];
+    
+
     public function _initialize()
     {
         parent::_initialize();

+ 2 - 0
application/admin/lang/zh-cn/product/pledges.php

@@ -12,6 +12,8 @@ return [
     'Detail'      => '详情',
     'Weigh'       => '权重',
     'Status'      => '状态',
+    'Token'       => '茶宝',
+    'Teac'        => 'TeaC',
     'Create_time' => '创建时间',
     'Update_time' => '更新时间'
 ];

+ 12 - 1
application/admin/view/product/pledges/add.html

@@ -52,13 +52,24 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Day_num')}:</label>
         <div class="col-xs-12 col-sm-3">
-            <input id="c-day_num" data-rule="required;range(1~)" class="form-control" name="row[day_num]" type="number" value="0">
+            <input id="c-day_num" data-rule="required;range(0.01~)" class="form-control" name="row[day_num]" type="number" value="0">
         </div>
         <label class="control-label col-xs-12 col-sm-2">{:__('Income_reta')}:</label>
         <div class="col-xs-12 col-sm-3">
             <input id="c-income_reta" data-rule="required;range(0.01~)" min="0" class="form-control" step="0.01" name="row[income_reta]" type="number" value="0.00">
         </div>
     </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Token')}:</label>
+        <div class="col-xs-12 col-sm-3">
+            <input id="c-token" data-rule="required;range(0.01~)" class="form-control" name="row[token]" type="number" value="0">
+        </div>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Teac')}:</label>
+        <div class="col-xs-12 col-sm-3">
+            <input id="c-teac" data-rule="required;range(0.01~)" min="0" class="form-control" step="0.01" name="row[teac]" type="number" value="0.00">
+        </div>
+    </div>
+    
 
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Detail')}:</label>

+ 11 - 1
application/admin/view/product/pledges/edit.html

@@ -53,13 +53,23 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Day_num')}:</label>
         <div class="col-xs-12 col-sm-3">
-            <input id="c-day_num" data-rule="required;range(1~)" class="form-control" name="row[day_num]" type="number" value="{$row.day_num|htmlentities}">
+            <input id="c-day_num" data-rule="required;range(0.01~)" class="form-control" name="row[day_num]" type="number" value="{$row.day_num|htmlentities}">
         </div>
         <label class="control-label col-xs-12 col-sm-2">{:__('Income_reta')}:</label>
         <div class="col-xs-12 col-sm-3">
             <input id="c-income_reta" data-rule="required" min="0" class="form-control" step="0.01" name="row[income_reta]" type="number" value="{$row.income_reta|htmlentities}">
         </div>
     </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Token')}:</label>
+        <div class="col-xs-12 col-sm-3">
+            <input id="c-token" data-rule="required;range(0.01~)" class="form-control" name="row[token]" type="number" value="{$row.token|htmlentities}">
+        </div>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Teac')}:</label>
+        <div class="col-xs-12 col-sm-3">
+            <input id="c-teac" data-rule="required;range(0.01~)" min="0" class="form-control" step="0.01" name="row[teac]" type="number" value="{$row.teac|htmlentities}">
+        </div>
+    </div>
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Detail')}:</label>
         <div class="col-xs-12 col-sm-8">

+ 1 - 1
application/api/controller/Order.php

@@ -66,7 +66,7 @@ class Order extends Api
             }
             
             //生态节点标识
-            WelfareLoginc::setUserEcologyAirdrop($this->auth->id, $params['product_id']);
+            WelfareLoginc::setUserEcologyAirdrop($this->auth->id, $params['product_id'], $this->auth->parent_id);
 
             //更新Rwa持有数量
             if($order_info->price > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, $areaNum, '+');

+ 75 - 10
application/api/controller/Pledge.php

@@ -5,19 +5,20 @@ namespace app\api\controller;
 
 use app\common\controller\Api;
 use app\common\model\ProductLists;
-use app\common\model\ProductOrder;
+use app\common\model\LedgerWalletModel;
 use app\common\model\ProductPledges;
 use Exception;
 use app\common\model\UserModel;
 use think\Db;
 use app\api\logic\PledgeLogic;
-
+use app\common\model\UserPledge;
 
 //质押抵扣
 class Pledge extends Api
 {
 
       protected string $lan = '';
+      protected $pay = [1=>'token', 2=>'teac'];
 
       public function _initialize()
       {
@@ -72,23 +73,30 @@ class Pledge extends Api
       /*
       * 质押存储
       */
-      public function create(ProductPledges $productPledges, PledgeLogic $pledgeLogic)
+      public function create(ProductPledges $productPledges, PledgeLogic $pledgeLogic, LedgerWalletModel $ledgerWalletModel)
       {
         $pledge_id  = $this->request->post('pledge_id', 0, 'intval');
         $order_no   = $this->request->post('order_no/a', '');
-        if(empty($pledge_id) || empty($order_no)) $this->error(__("参数有误,无可用产品"));
+        $pay_type   = $this->request->post('pay_type/d', 1);//支付方式 1 茶宝 2 Teac
+        if(empty($pledge_id) || empty($order_no) || in_array($pay_type, [1,2]) == false) $this->error(__("参数有误,无可用产品"));
 
         $pledge = $productPledges::get($pledge_id);
+        $count  = count($order_no);//选择商品数量    
+        if($pledge->type_id == $productPledges::Combin && count(explode(',', $pledge->product_id)) !=  $count) $this->error(__("质押商品数量与订单数量不匹配"));
 
-        if($pledge->type_id == $productPledges::Combin && count(explode(',', $pledge->product_id)) != count($order_no)) $this->error(__("质押商品数量与订单数量不匹配"));
-
+        //单品最大三个限制
+        if($pledge->type_id == $productPledges::Single &&  $count > config('pledge_single_max')) $this->error(__("单品最大三个限制"));
         if (empty($pledge)) $this->error(__("质抵活动不存在"));
         if (empty($pledge->status) )$this->error(__("质抵活动已结束"));
+
+        //余额判断
+        $user = $ledgerWalletModel::getWallet($this->auth->id);
+        if($user[$this->pay[$pay_type]] < $pledge[$this->pay[$pay_type]]) $this->error(__("余额不足"));
         Db::startTrans();
         try {
-         
+
             // 质抵押订单 
-            $pledgeLogic::setPledgeOrder($pledge, $order_no, $this->auth->id);
+            $res = $pledgeLogic::setPledgeOrder($pledge, $order_no, $this->auth->id, $count, $this->pay[$pay_type], $pledge[$this->pay[$pay_type]]);
             // 提交事务
             Db::commit();
         } catch (Exception $e) {
@@ -96,6 +104,9 @@ class Pledge extends Api
             Db::rollback();
             $this->error($e->getMessage(), null, $e->getCode());
         }
+        if ($res === false)    {
+            $this->error(__("订单创建失败"));
+        }
         $this->success('ok');
       }
 
@@ -144,11 +155,12 @@ class Pledge extends Api
       public function remove(PledgeLogic $pledgeLogic)
       {
             $pledge_id  = $this->request->post('pledge_id', 0, 'intval');
-            if(empty($pledge_id)) $this->error(__("参数有误,无可用产品"));
+            $order_id  = $this->request->post('order_id/s', '');
+            if(empty($pledge_id) || empty($order_id)) $this->error(__("参数有误,无可用产品"));
             Db::startTrans();
             try {
                   // 质抵押订单 
-                  $res = $pledgeLogic::setPledgeRemove($pledge_id,  $this->auth->id);
+                  $res = $pledgeLogic::setPledgeRemove($pledge_id, $order_id, $this->auth->id);
                   
                   // 提交事务
                   Db::commit();
@@ -160,5 +172,58 @@ class Pledge extends Api
             $this->success('ok', $res);
       }
    
+      //存储续费
+      public function setRenew(UserPledge $userPledge, PledgeLogic $pledgeLogic, LedgerWalletModel $ledgerWalletModel)
+      {
+            $pledge_id  = $this->request->post('pledge_id', 0, 'intval');
+            $pay_type   = $this->request->post('pay_type/d', 1);//支付方式 1 茶宝 2 Teac
+            if(empty($pledge_id) || in_array($pay_type, [1,2]) == false) $this->error(__("参数有误,无可用产品"));
+            //记录
+            $pledge = $userPledge::alias('a')->where('a.id', $pledge_id)->join('product_pledge p', 'p.id = a.pledge_id')->field('a.*,p.token,p.teac,p.type_id,p.is_renew,p.status as p_status')->find();
+            if (empty($pledge)) $this->error(__("质抵活动不存在"));
+            if ($pledge->status != $userPledge::Ongoing || empty($pledge->is_renew) || empty($pledge->p_status))$this->error(__("质抵活动已结束"));
+            //余额判断
+            $user = $ledgerWalletModel::getWallet($this->auth->id);
+            if($user[$this->pay[$pay_type]] < $pledge[$this->pay[$pay_type]]) $this->error(__("余额不足"));
+            
+            Db::startTrans();
+            try {
+                  // 质抵押订单 
+                  $pledgeLogic::setPledgeOrderRenew($pledge, $this->auth->id, $this->pay[$pay_type]);
+                  // 提交事务
+                  Db::commit();
+            } catch (Exception $e) {
+                  // 回滚事务
+                  Db::rollback();
+                  $this->error($e->getMessage(), null, $e->getCode());
+            }
+            $this->success('ok');
+      }
  
+      //添加用户存储产品
+      public function addPledgeProduct(UserPledge $userPledge, PledgeLogic $pledgeLogic, ProductPledges $productPledges)
+      {
+            $order_no  = $this->request->post('order_no/s', '');
+            $pledge_id   = $this->request->post('pledge_id/d', 0);//存储Id
+            if(empty($order_no) || empty($pledge_id)) $this->error(__("参数有误,无可用产品"));  
+            $order_arr= explode(',', $order_no);   
+            $count    = count($order_arr);
+            $pledge = $userPledge::alias('a')->where('a.id', $pledge_id)->join('product_pledge p', 'p.id = a.pledge_id')->field('a.*,p.type_id,p.status as p_status')->find();
+            if (empty($pledge) || $pledge->status != $userPledge::Ongoing ||  empty($pledge->p_status) || $pledge->type_id != $productPledges::Single) $this->error(__("产品质抵活动不存在不存在"));  
+            if(($count + $pledge->num) > config('pledge_single_max')) $this->error(__("产品数量超出限制"));
+            Db::startTrans();
+            try {
+
+                  // 质抵押订单 
+                  $pledgeLogic::setPledgeProductAdd($pledge, $this->auth->id, $count, $order_arr);
+                  // 提交事务
+                  Db::commit();
+            } catch (Exception $e) {
+                  // 回滚事务
+                  Db::rollback();
+                  $this->error($e->getMessage(), null, $e->getCode());
+            }
+            $this->success('ok');
+      }
+
 }

+ 80 - 28
application/api/logic/PledgeLogic.php

@@ -7,6 +7,8 @@ use think\Env;
 use think\Cache;
 use think\Loader ;
 use fast\Asset;
+use app\common\model\LedgerTokenChangeModel;
+use app\common\model\LedgerWalletModel;
 use app\common\model\ProductOrder;
 use app\common\model\LedgerTeacChangeModel;
 use app\common\model\ProductPledges;
@@ -38,34 +40,30 @@ class PledgeLogic
     }
 
     //添加质抵押订单
-    public static function setPledgeOrder(object $pledge, array $order_no, int $user_id)
+    public static function setPledgeOrder(object $pledge, array $order_no, int $user_id, int $count, string $pay_type, float $price)
     {
-        $model  = Loader::model('ProductOrder');
-        $count = count($order_no);
-        $product= $model::alias('a')
-            ->join('product_list b', 'a.product_id = b.id', 'left')
-            ->where('a.user_id', $user_id)
-            ->where('a.status', $model::Paid)
-            ->whereIn('a.order_no', $order_no)->field('a.id,b.zh_name,b.thum,a.order_no')->limit($count)->select();
-        
+        $product=  self::getOrderProductList($user_id, $order_no, $count);
+
         if(empty($product) || count($product) < $count)  throw new Exception('订单不存在');
         $pledge_num = 1;
-        if($pledge->type_id == ProductPledges::Single){
-            $pledge_num = $count;
-        }
-
+        if($pledge->type_id == ProductPledges::Single) $pledge_num = $count;
+        
         //添加订单 
         Loader::model('UserPledge')::setPledgeData($user_id, $pledge->id, $pledge->product_id, 
         $product, //订单信息
         $pledge->day_num, $pledge_num);
 
+        //扣除支付金额
+        $action = ($pay_type == Asset::TEAC)? LedgerTeacChangeModel::PledgeFee: LedgerTokenChangeModel::Pledge; //类型
+        (new LedgerWalletModel())->changeWalletAccount($user_id, $pay_type, -$price, $action, 0);
+  
         //修改状态
-        return $model->whereIn('id', array_column($product, 'id'))->setField('status', $model::Freeze);
+        $model  = Loader::model('ProductOrder');
+        return $model->whereIn('order_no', $order_no)->setField('status', $model::Freeze);
     }
 
 
     //获取质抵押订单列表
-    //(60*60*24)*(当前时间-最后一次收取时间)
     public static function getPledgeOrderList(int $user_id)//: array
     {
         $model  = Loader::model('UserPledge');
@@ -73,7 +71,7 @@ class PledgeLogic
             ->join('product_pledge b', 'a.pledge_id = b.id', 'left')
             ->where('a.user_id', $user_id)
             ->where('a.status', '>', $model::Close)
-            ->field('a.*,b.title,b.day_num')
+            ->field('a.*,b.title,b.type_id,b.day_num,b.token,b.teac,b.is_renew')
             ->select();
         if(empty($list)) throw new Exception('暂无质押订单');
         $day   = 86400;
@@ -96,52 +94,69 @@ class PledgeLogic
     }
 
     //解除质抵押订单
-    public static function setPledgeRemove(int $pledge_id, int $user_id)
+    public static function setPledgeRemove(int $pledge_id, string $order_id, int $user_id)
     {
         $model  = Loader::model('UserPledge');
+        $time  = time();
         $rows   = $model::alias('a')
                 ->join('product_pledge b', 'a.pledge_id = b.id', 'left')
                 ->where('a.user_id', $user_id)
-                ->where('a.id', $pledge_id)->where('a.status', $model::Ongoing)
+                ->where('a.id', $pledge_id)
+                ->where('a.status', $model::Ongoing)
+                ->where('a.end_time', '>', $time)
                 ->field('a.*,b.day_num')
                 ->find();
         if(empty($rows))  throw new Exception('暂无质押订单');
+
+        $orderId  = explode(',', $order_id);
+        $detail   = json_decode($rows->details, true);
+        $count    = count($orderId);
+        $num = $rows->num;
+        if(count($orderId) == count($detail)) {
+            $rows->status  = $model::Remove;
+        }else{
+           
+            $result = [];
+            foreach ($detail as &$item) 
+                if(!in_array($item['id'], $orderId)) $result[] = $item;
+            $num             = $count;
+            $rows->num       = count($result);
+            $rows->details   = json_encode($result, JSON_UNESCAPED_UNICODE);
+        }
+
         $day   = 86400;
         $total = 0; //当前累计收益
-        $time  = time();
         $reta  = bcdiv($rows->day_num, $day, 6); //天数
         $inter = ($rows->last_time == 0) ? $time - $rows->create_time: $time - $rows->last_time; //最后收取时间
-        $total = bcmul($reta, $inter, 6) * $rows->num; //累计收益
+        $total = bcmul($reta, $inter, 6) * $num; //累计收益
         $rows->total_self= bcadd($total, $rows->total_self, 6);
 
         //修改状态
-        $detail =json_decode($rows->details, true);
-        Loader::model('ProductOrder')::where('user_id', $user_id)->whereIn('id', array_column($detail, 'id'))->setField('status', ProductOrder::Paid);
+        Loader::model('ProductOrder')::where('user_id', $user_id)->whereIn('id', $orderId)->setField('status', ProductOrder::Paid);
 
-        $rows->status    = $model::Remove;
+        //更新领取状态
         $rows->last_time = $time;
         return  $rows->save();   
     }
 
     
-    //收取质抵押订单列表
-    //(60*60*24)*(当前时间-最后一次收取时间)
+    //收取质抵押订单列表:(60*60*24)*(当前时间-最后一次收取时间)
     public static function getPledgeCollect(int $user_id)
     {   
         $model  = Loader::model('UserPledge');
+        $time  = time();
         $list   = $model::alias('a')
                 ->join('product_pledge b', 'a.pledge_id = b.id', 'left')
                 ->where('a.user_id', $user_id)
                 ->where('a.status', '>', $model::Close)
+                ->where('a.end_time', '>', $time)
                 ->field('a.*,b.day_num')
                 ->select();
 
         if(empty($list)) throw new Exception('暂无质押订单');
         $day   = 86400;
         $total = 0; //当前累计收益
-        $time  = time();
-        foreach ($list as $item) 
-        {
+        foreach ($list as $item) {
             //解冻
             if($item->status == $model::Remove) {
                 $total += $item->total_self;
@@ -161,5 +176,42 @@ class PledgeLogic
         return Loader::model('LedgerWalletModel')->changeWalletAccount($user_id, Asset::TEAC, $total, LedgerTeacChangeModel::Pledge, 0);  
     }
 
+    //存储订单续费
+    public static function setPledgeOrderRenew(object $pledge, int $user_id, string $pay_type)
+    {   
+        //扣除支付金额
+        $action = ($pay_type == Asset::TEAC)? LedgerTeacChangeModel::PledgeFee: LedgerTokenChangeModel::Pledge; //类型
+        (new LedgerWalletModel())->changeWalletAccount($user_id, $pay_type, -$pledge[$pay_type], $action, 0);
+  
+        $pledge->end_time = $pledge->end_time + config('pledge_end_time');
+        return $pledge->save();
+    }
+
+
+    //添加用户存储产品
+    public static function setPledgeProductAdd(object $pledge, int $user_id, int $count, array $order_no)
+    {
+        $product = self::getOrderProductList($user_id, $order_no, $count);
+        if(empty($product) || count($product) < $count)  throw new Exception('订单不存在');
+        
+        //修改订单状态
+        Loader::model('ProductOrder')::where('user_id', $user_id)->whereIn('order_no', $order_no)->setField('status', ProductOrder::Freeze);
+
+        //添加产品
+        $detail = json_decode($pledge->details, true);
+        $pledge->details = json_encode(array_merge($detail, $product), JSON_UNESCAPED_UNICODE);   
+        $pledge->num =   $pledge->num + $count ; 
+        return $pledge->save();
+    }
+
 
+    //获取订单产品
+    private static function getOrderProductList(int $user_id, array $order_no, int $count)
+    {
+        return Loader::model('ProductOrder')::alias('a')
+            ->join('product_list b', 'a.product_id = b.id', 'left')
+            ->where('a.user_id', $user_id)
+            ->where('a.status', ProductOrder::Paid)
+            ->whereIn('a.order_no', $order_no)->field('a.id,b.zh_name,b.thum,a.order_no')->limit($count)->select();
+    }
 }

+ 12 - 5
application/api/logic/WelfareLoginc.php

@@ -5,6 +5,7 @@ namespace app\api\logic;
 
 use app\common\model\ProductArea;
 use fast\Asset;
+use app\common\model\LedgerTokenChangeModel;
 use app\common\model\LedgerFrozenChangeModel;
 use app\common\model\ProductLists;
 use app\common\model\ProductOrder;
@@ -44,9 +45,6 @@ class WelfareLoginc
     向持有A茶超过10套的用户,空投持有 数量X20%套B茶,数量取整
     */
-    /** $mod 0指定数量 1比
-     * 获取用户Rwa数量
-     */
     public static function getUserRwaProductNum(int $productId, int $rwa_num, $mod, $num): int
     {   
         //读取当前持有RWa数据
@@ -149,7 +147,7 @@ class WelfareLoginc
     }
 
     //推广空投产品
-    public static function setUserEcologyAirdrop(int $uid, int $productId): bool
+    public static function setUserEcologyAirdrop(int $uid, int $productId, int $parentId): bool
     {
         $ecology = config('ecology');
         if(!in_array($productId, $ecology['product_id'])){
@@ -173,7 +171,16 @@ class WelfareLoginc
             }
         }
 
-        //发放标记茶宝
+        //发放上级推广奖励
+        $ecologyCount = UserModel::where('parent_id', $parentId)->where('is_ecology', 1)->count() + 1;
+        $mod = bcmod($ecologyCount, 3);
+        $parent_chabao = $ecology['parent_chabao'][$mod];
+        if($mod == 0) Loader::model('ProductOrder')::setCreateOrder(0, ['product_id'=> $ecology['parent_product_id'], 'area_id'=>0, 'price'=>0], ProductOrder::Airdrop, $parentId, 0, 0, 0, 0);
+        //发放上级茶宝奖励
+        Loader::model('LedgerWalletModel')->changeWalletAccount($parentId, Asset::TOKEN, $parent_chabao, LedgerTokenChangeModel::Ecology, 0);
+        
+
+        //发放自己标记茶宝
         Loader::model('LedgerWalletModel')->changeWalletAccount($uid, Asset::FROZEN, $ecology['frozen'], LedgerFrozenChangeModel::Ecology, 0);
         //修改生态节点标识
         $user->is_ecology  = 1;

+ 4 - 1
application/common/model/LedgerTeacChangeModel.php

@@ -18,6 +18,7 @@ class LedgerTeacChangeModel extends Model
     const BuySell          = 4;
     const SellCancel       = 5;
     const Exchange         = 6;
+    const PledgeFee        = 7; //存储服务费
     /*
      * 支付状态
      * 0未支付 100支付中 200支付成功 400支付失败
@@ -31,6 +32,7 @@ class LedgerTeacChangeModel extends Model
         self::BuySell          => '存储出售',
         self::SellCancel       => '取消出售',
         self::SellCancel       => '兑换产品',
+        self::PledgeFee        => '存储服务费',
     ];
 
     //getStatusList
@@ -43,7 +45,8 @@ class LedgerTeacChangeModel extends Model
             self::Buying    => __('存储'),
             self::BuySell   => __('存储出售'),
             self::SellCancel   => __('取消出售'),
-            self::Exchange     =>__('兑换产品') 
+            self::Exchange     =>__('兑换产品') ,
+            self::PledgeFee    =>__('存储服务费'),
         ];
     }
 

+ 9 - 4
application/common/model/LedgerTokenChangeModel.php

@@ -30,7 +30,9 @@ class LedgerTokenChangeModel extends Model
      const Buying            = 16; //求购购买
      const BuySellg          = 17; //求购出售
      const BuyCancel         = 18; //求购取消
- 
+     const Ecology           = 19; //生态节点奖励
+     const Pledge            = 20; //存储服务费
+
      /*
       * 支付状态
       * 0未支付 100支付中 200支付成功 400支付失败
@@ -51,7 +53,8 @@ class LedgerTokenChangeModel extends Model
          self::Community         => '社区津贴',
          self::Service           => '服务津贴',
          self::Together          => '共创津贴',
-       
+         self::Ecology           => '生态节点奖励',
+         self::Pledge            => '存储服务费'
      ];
 
            
@@ -75,8 +78,10 @@ class LedgerTokenChangeModel extends Model
             self::Together => __('共创津贴'),
             self::Super => __('茶宝标记激活'),
             self::Buying => __('求购购买'),
-            self::BuySellg => __('求购出售'),
-            self::BuyCancel => __('求购取消')
+            self::BuySellg => __('求购出售'),   
+            self::BuyCancel => __('求购取消'),
+            self::Ecology => __('生态节点奖励'),
+            self::Pledge => __('存储服务费'),
            ];
     }
    

+ 3 - 1
application/common/model/UserPledge.php

@@ -34,14 +34,16 @@ class UserPledge extends Model
     const Ongoing= 1;
     const Remove = 2;
 
+    //添加存储
     public static function setPledgeData($user_id, $pledge_id, $product_id, $product,$day_num, $num)
-    {
+    {   
         return self::create([
             'user_id'   => $user_id,
             'pledge_id' => $pledge_id,
             'product_id' => $product_id,
             'details'    => json_encode($product, JSON_UNESCAPED_UNICODE),
             'day_num'    => $day_num,
+            'end_time'   => time() + config('pledge_end_time'), //结束时间
             'num'        => $num
         ]);
     }

+ 6 - 6
application/config.php

@@ -322,6 +322,8 @@ return [
     'withdraw_in_amount' => 300, //提现金额手续费600
     'super_weal_end_time' => 168 * 3600, //168小时
     'min_frozen'          => 9.9, //最小保留标记金额
+    'pledge_end_time'     => 24 * 3600 * 30, //质押存储结束时间 30天
+    'pledge_single_max'   => 3, //单品最大数量
     //提现说明
     'withdraw_desc'       => "
         1.茶宝提现指的是将茶宝转化为 USDT,并提到指定地址。<br/>
@@ -361,11 +363,7 @@ return [
             2.成交顺序以发起求购成功的时间,顺序成交。<br/>
             3.求购期间成交,无法撤销。',   //求购说明
     ],
-    //福利对换配置
-    'welfare_rede_desc' => '1.转账数量务必准确,多转或者少转都会导致兑换失败。<BR>
-                            2.转入的 USDT 需为币安链钱包地址上的。<BR>
-                            3.每个地址最多可兑换 2 套。<BR>
-                            4.开放兑换时间:6 月 1 日~6 月 10 日。',
+  
     //生态节点推广
     'ecology' => [
         'product_id'    => [17],//购买指定产品
@@ -377,7 +375,9 @@ return [
             3 => ['product_id'=>40, 'num'=>8],   //4.RWACHA·破茧化蝶 8套(id 40)
             4 => ['product_id'=>52, 'num'=>1]   //4.TeaC·生态发展,空投卡 1 张(id 52)
         ],
-        'frozen' => '999', //发放标记茶宝 999个
+        'frozen'            => '999', //发放标记茶宝 999个
+        'parent_product_id' => 26,    //上级空投指定产品
+        'parent_chabao'     => [0=>699.3, 1=>99.9, 2=>199.8], //上级奖励茶宝
     ],
     //超级福利奖励
     'super_welfare' => [

+ 1 - 1
public/assets/js/backend/ledger/ledger_teac_change.js

@@ -41,7 +41,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                 '4': '求购出售',
                                 '5': '取消出售',
                                 '6': 'Teac兑换',
-                                '30': '团队平级奖励',
+                                '7': '存储服务费',
                                 '99': '系统调整',
                             }, operate: 'FIND_IN_SET', formatter: Table.api.formatter.label
                         },

+ 2 - 1
public/assets/js/backend/ledger/ledger_token_change.js

@@ -52,7 +52,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                 16: '求购购买',
                                 17: '求购出售',
                                 18: '求购取消',
-                            
+                                19: '生态节点奖励',
+                                20: '存储服务费',
                             }, operate: 'FIND_IN_SET', formatter: Table.api.formatter.label
                         },
                     ]

+ 3 - 0
public/assets/js/backend/product/pledges.js

@@ -34,7 +34,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'to_lang', title: __('To_lang'), searchList: {"en":__('英文'),"zh":__('中文')}, formatter: Table.api.formatter.label},
                         {field: 'day_num', title: __('Day_num')},
                         {field: 'income_reta', title: __('Income_reta'), operate: false},
+                        {field: 'token', title: __('Token'), operate: false},
+                        {field: 'teac', title: __('Teac'), operate: false},
                         {field: 'weigh', title: __('Weigh'), operate: false},
+                        {field: 'is_renew', title: __('续费'), searchList: {0:__('关闭'),1 :__('开启')}, formatter: Table.api.formatter.toggle},
                         {field: 'status', title: __('Status'), searchList: {0:__('关闭'),1 :__('正常')}, formatter: Table.api.formatter.toggle},
                         {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
                         {field: 'update_time', title: __('Update_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},