afa 9 сар өмнө
parent
commit
685029ff4e

+ 1 - 2
application/admin/controller/offline/Order.php

@@ -80,8 +80,7 @@ class Order extends Backend
         }
  
         if (false === $this->request->isPost()) {
-            
-            $area = UserArea::where('order_id', $ids)->find();
+            $area = UserArea::where('order_id', $ids)->where('type_id', UserArea::TakeAdders)->find();
             $this->view->assign('row', $row);
             $this->view->assign('area', $area);
             return $this->view->fetch();

+ 2 - 1
application/admin/lang/zh-cn.php

@@ -216,5 +216,6 @@ return [
     'User Module'                                           => '会员模块',
     'Register'                                              => '注册',
     'User Center'                                           => '会员中心',
-    'Transfes txt'                                          => '转让手续费说明'
+    'Transfes txt'                                          => '转让手续费说明',
+    'Logistics freight'                                     => '物流运费'
 ];

+ 11 - 1
application/api/common.php

@@ -34,9 +34,19 @@ function checkSign(string $msg, $sign, $address): bool
     }
 }
 
+/**
+ * 获取全部配置
+ * @param string $msg
+ * @return string
+ */
+function getAllConfig(): array
+{
+    return (new \app\common\model\Config())->where('group', 'basic')->column('name,value');
+}
+
 
 /**
- * 获取配置
+ * 获取单独配置
  * @param string $msg
  * @return string
  */

+ 9 - 7
application/api/controller/Ledger.php

@@ -27,18 +27,20 @@ class Ledger extends Api
     protected array $noNeedLogin = ['withdrawCallback'];
 
     /**
-     * 资产首页  
+     * 资产首页   
      */
     public function assets()
     {
+        $config = getAllConfig();
         $chabao = LedgerWalletModel::getWalletChaBao($this->auth->id);
         $res['assets']       = $chabao;
-        $res['chabao_rate']  = getConfig('chabao_rate');    //茶宝汇率
-        $res['withdrawal_fee']= getConfig('withdrawal_fee');//提现收费
-        $res['transfes_fee']  = getConfig('transfer_fee');  //转让手续费比例
-        $res['transfes_txt']  = getConfig('transfes_txt');     //转让文字表述
-        $res['giveaway']      = getConfig('giveaway');      //赠送手续费比例
-        $res['giveaway_txt']  = getConfig('giveaway_txt');  //赠送文字表述
+        $res['chabao_rate']  = $config['chabao_rate'];    //茶宝汇率
+        $res['withdrawal_fee']= $config['withdrawal_fee'];//提现收费
+        $res['transfes_fee']  = $config['transfer_fee'];  //转让手续费比例
+        $res['transfes_txt']  = $config['transfes_txt'];     //转让文字表述
+        $res['giveaway']      = $config['giveaway'];      //赠送手续费比例
+        $res['giveaway_txt']  = $config['giveaway_txt'];  //赠送文字表述
+        $res['logistics_freight']= $config['logistics_freight'];  //物流运费
         $res['coin_list'] = [
             [
                 'coin_name' => '茶宝',

+ 26 - 16
application/api/controller/Order.php

@@ -53,7 +53,7 @@ class Order extends Api
                 $order_arr['price'] = $order_info->price;
                 $order_arr['product_id']= $params['product_id'];
                 $order_arr['area_id']   = $item;
-                $productOrder::setCreateOrder($params['order_id'], $order_arr, $productOrder::Popular, $this->auth->id, 0, getOrderSN('R'), 0);
+                $productOrder::setCreateOrder($params['order_id'], $order_arr, $productOrder::Popular, $this->auth->id, 0, getOrderSN('R'), 0, $order_info->price);
                 //修改区域状态
                 $productArea->where('id', $item)->setField('status', ProductLists::STOP);
             }
@@ -71,7 +71,7 @@ class Order extends Api
             }
       
             //更新Rwa持有数量
-            $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, $areaNum, '+');
+            if($order_info->price > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, $areaNum, '+');
             //扣除库存
             if(($order_info->stock - $areaNum) == 0 || time() >= $order_info->end_time) $order_info->status= $productPopular::STOP;
             $order_info->num  += $areaNum;
@@ -91,22 +91,29 @@ class Order extends Api
     /**
      * 提货订单
      */
-    public function pickupOrder(UserArea $userArea, ProductOrder $productOrder, UserModel $userModel)
+    public function pickupOrder(UserArea $userArea, ProductOrder $productOrder, UserModel $userModel, LedgerWalletModel $ledgerWalletModel)
     {
         $params = $this->request->post();
         $validate = \think\Loader::validate('Order');
         if(!$validate->scene('pick')->check($params)) $this->error($validate->getError());
         $order_info = $productOrder->where('id', $params['order_id'])->find();
         if(empty($order_info)) $this->error( __("参数有误,无可用产品"));
-
         // 启动事务
         Db::startTrans();
         try {
+
+            $freight= getConfig('logistics_freight');
+            $amount = $ledgerWalletModel::getWalletChaBao($this->auth->id);
+            if(bccomp($freight, $amount, 2) > 0) throw new Exception(__("余额不足请前往充值"), 15001);
+
             // 生成订单
-            $userArea->create(['name'=>$params['name'], 'phone'=>$params['phone'],'address'=>$params['address'],'order_id'=>$params['order_id']]);
+            $userArea->create(['name'=>$params['name'], 'type_id'=>$userArea::TakeAdders, 'phone'=>$params['phone'],'address'=>$params['address'],'order_id'=>$params['order_id']]);
 
             //扣除Rwa数量
-            $userModel::updateForRwaNum($order_info->user_id, $userModel::getByParentId($order_info->user_id), 1, '-');
+            if($order_info->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($order_info->user_id, $userModel::getByParentId($order_info->user_id), 1, '-');
+
+            //扣除运费
+            $ledgerWalletModel->changeWalletAccount($this->auth->parent_id, Asset::TOKEN, $freight, $ledgerWalletModel::Freight, $this->auth->id);
 
             $order_info->status= $productOrder::Shipped; 
             $order_info->save();
@@ -175,24 +182,27 @@ class Order extends Api
             $chabao = $ledgerWalletModel::getWalletChaBao($this->auth->id);
             if(bccomp($order_info['price'], $chabao, 2) > 0) throw new Exception(__("余额不足请前往充值"), 15001);
 
+            //抢购订单
+            $popular_order = $productOrder->where('id', $order_info['order_id'])->find();   
             // 生成订单
-            $productOrder::setCreateOrder($params['order_id'], $order_info, $productOrder::Transfer, $this->auth->id, $order_info['user_id'], getOrderSN('Z'), $order_info['fees']);
+            $productOrder::setCreateOrder($params['order_id'], $order_info, $productOrder::Transfer, $this->auth->id, $order_info['user_id'], getOrderSN('Z'), $order_info['fees'], $popular_order->popular_price);
            
             //扣除余额记录 
             $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$order_info['price'], $ledgerWalletModel::Payment, $order_info['user_id']);
             
-            //扣除Rwa有效 
-            $userModel::updateForRwaNum($order_info['user_id'], $userModel::getByParentId($order_info['user_id']), 1, '-');
+            //扣除Rwa有效  
+            if($popular_order->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($order_info['user_id'], $userModel::getByParentId($order_info['user_id']), 1, '-');
           
             //增加转让人余额
             $amount = bcsub($order_info['price'], $order_info['fees'], 2);
             $ledgerWalletModel->changeWalletAccount($order_info['user_id'], Asset::TOKEN, $amount, $ledgerWalletModel::Receive, $this->auth->id);
 
             //增加Rwa有效
-            $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, 1, '+');
+            if($popular_order->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, 1, '+');
 
             //修改原订单状态
-            $productOrder->where('id', $order_info['order_id'])->setField('status', $productOrder::Closure);    
+            $popular_order->status->$productOrder::Closure;
+            $popular_order->save();
             //修改状态
             $order_info->status = $productTransfer::STOP;
             $order_info->save();
@@ -225,16 +235,16 @@ class Order extends Api
             if(bccomp($fees, $chabao, 2) > 0) throw new Exception(__("余额不足请前往充值"), 15001);
            
             //添加记录
-            $productOrder::setCreateOrder($params['order_id'], $order_info, $productOrder::Giveaway, $user['id'], $this->auth->id, getOrderSN('G'), $fees);
+            $productOrder::setCreateOrder($params['order_id'], $order_info, $productOrder::Giveaway, $user['id'], $this->auth->id, getOrderSN('G'), $fees, $order_info->popular_price);
 
             //对方Rwa+1
-            $userModel::updateForRwaNum($user['id'], $userModel::getByParentId($user['id']), 1, '+');
+            if($order_info->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($user['id'], $userModel::getByParentId($user['id']), 1, '+');
 
             //扣除手续费
             $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$fees, $ledgerWalletModel::Giveaway, $user['id']);
 
             //扣除Rwa有效-1
-            $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, 1, '-');
+            if($order_info->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, 1, '-');
 
             //修改:类型状态
             $order_info->type_id= $productOrder::Giveaway; 
@@ -269,7 +279,7 @@ class Order extends Api
             $productTransfer::where('order_id',$params['order_id'])->setField('status', $productTransfer::STOP);
 
             //新增记录
-            $productOrder::setCreateOrder($order_info['order_id'], $order_info, $productOrder::Popular, $order_info['user_id'], $order_info['from_user'], getOrderSN('R'), 0);
+            $productOrder::setCreateOrder($order_info['order_id'], $order_info, $productOrder::Popular, $order_info['user_id'], $order_info['from_user'], getOrderSN('R'), 0, $order_info->popular_pric);
 
             //修改:类型状态
             $order_info->type_id= $productOrder::Transfer; 
@@ -291,7 +301,7 @@ class Order extends Api
         $order_id    = $this->request->post('order_id'); // 订单id
         if(empty($order_id)) $this->error(__("参数有误,无可用产品"));
 
-        $tracking_no = $userArea->where('order_id', $order_id)->value('tracking_no');
+        $tracking_no = $userArea->where('order_id', $order_id)->where('type_id', $userArea::TakeAdders)->value('tracking_no');
         if(empty($tracking_no)) $this->error(__("暂无物流信息"));
 
         $this->success('ok', $tracking_no);

+ 9 - 3
application/api/controller/User.php

@@ -12,6 +12,7 @@ use app\common\model\OfflineWithdrawRecordModel;
 use app\common\model\TeamLevelModel;
 use app\common\model\UserModel;
 use app\common\model\ParametersModel;
+use app\common\model\UserArea;
 use fast\Action;
 use fast\Asset;
 use fast\Random;
@@ -133,14 +134,19 @@ class User extends Api
      * 修改个人信息
      * @return void
      */
-    public function setUserInfo(UserModel $userModel)
+    public function setUserInfo(UserModel $userModel, UserArea $userArea)
     {
         // 启动事务
         Db::startTrans();
         try {
             $param = $this->request->post();
-            if(!isset($param['name']) && !isset($param['nickname']) && !isset($param['phone'])) throw new Exception(__("Invalid parameters"));
-            $resp = $userModel::where('id', $this->auth->id)->update($param);
+            $validate = \think\Loader::validate('User');
+            if(!$validate->scene(key($param))->check($param) || count($param) > 2 || empty($param)) $this->error(__("Invalid parameters"));
+            if(!empty($param['area_code']) && !empty($param['address'])){
+                $resp = $userArea::setUserAddress($this->auth->id, $param['area_code'], $param['address']);
+            }else{
+                $resp = $userModel::where('id', $this->auth->id)->update($param);
+            }
             // 提交事务
             Db::commit();
         } catch (Exception $e) {

+ 7 - 6
application/api/lang/en.php

@@ -27,10 +27,11 @@ return [
     '赠送收款'                                                                    => 'Gift Receipt',
     '抢购未开始'                                                                  => 'The flash sale has not started yet',
     '当前订单最低转让金额为'                                                       => 'The current minimum transfer amount for an order is',
-    '已购买'                                                                        => 'Purchased',
-    '转让中'                                                                        => 'Transferring',
-    '已赠送'                                                                        => 'Gifted',
-    '已转让'                                                                        => 'Transferred',
-    '已提货'                                                                        => 'Gifted',
-    '已取消'                                                                        => 'Cancelled'   
+    '已购买'                                                                      => 'Purchased',
+    '转让中'                                                                      => 'Transferring',
+    '已赠送'                                                                      => 'Gifted',
+    '已转让'                                                                      => 'Transferred',
+    '已提货'                                                                      => 'Gifted',
+    '已取消'                                                                      => 'Cancelled',
+    '物流运费'                                                                    => 'Logistics freight'
 ]; 

+ 7 - 6
application/api/lang/zh-cn.php

@@ -116,12 +116,13 @@ return [
     '服务津贴'                                                                    => '服务津贴',
     '共创津贴'                                                                    => '共创津贴',
     '当前订单最低转让金额为'                                                       => '当前订单最低转让金额为',
-    '已购买'                                                                        => '已购买',
-    '转让中'                                                                        => '转让中',
-    '已赠送'                                                                        => '已赠送',
-    '已转让'                                                                        => '已转让',
-    '已提货'                                                                        => '已提货',
-    '已取消'                                                                        => '已取消'  
+    '已购买'                                                                      => '已购买',
+    '转让中'                                                                      => '转让中',
+    '已赠送'                                                                      => '已赠送',
+    '已转让'                                                                      => '已转让',
+    '已提货'                                                                      => '已提货',
+    '已取消'                                                                      => '已取消',
+    '物流运费'                                                                    => '物流运费'
 
 
 ];

+ 39 - 0
application/api/validate/User.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace app\api\validate;
+
+use think\Validate;
+
+class User extends Validate
+{
+    /**
+     * 验证规则 |in:name,nickname,phone,area_code,address
+     */
+    protected $rule = [
+      'name'       => 'require',
+      'nickname'   => 'require',
+      'phone'      => 'require',
+      'area_code'  => 'require',
+      'address'    => 'require',
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+      'name.require'      => '参数有误',
+      'nickname.require'  => '参数有误', //
+      'phone.require'     => '参数有误',
+      'area_code.require' => '参数有误',
+      'address.require'   => '参数有误',
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'name'      => ['name'],
+        'nickname'  => ['nickname'],
+        'phone'     => ['phone'],
+        'address'   => ['area_code', 'address'],
+    ];
+  
+}

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

@@ -40,6 +40,7 @@ class LedgerWalletModel extends Model
     const Community         = 12; //社区津贴
     const Service           = 13; //服务津贴
     const Together          = 14; //共创津贴
+    const Freight           = 15; //物流运费 
     /*
      * 支付状态
      * 0未支付 100支付中 200支付成功 400支付失败
@@ -61,6 +62,7 @@ class LedgerWalletModel extends Model
         self::Community         => '社区津贴',
         self::Service           => '服务津贴',
         self::Together          => '共创津贴',
+        self::Freight           => '物流运费',
     ];
 
     public static function getWalletChaBao($userID)
@@ -89,7 +91,8 @@ class LedgerWalletModel extends Model
     {
         return [self::Popular => __('热销支付'), self::Payment  => __('转让支付'), self::Receive => __('转让收款'), self::Recharge => __('充值'), 
         self::Withdraw  => __('提现'), self::Share => __('分享'), self::Return => __('退回'), self::Giveaway => __('赠送'), self::Direct => __('布道津贴'),
-        self::System => __('系统调整'),self::GiftPay => __('赠送支出'),self::GiftReceipt => __('赠送收款'), self::Community => __('社区津贴'), self::Service => __('服务津贴'), self::Together => __('共创津贴')];
+        self::System => __('系统调整'),self::GiftPay => __('赠送支出'),self::GiftReceipt => __('赠送收款'), self::Community => __('社区津贴'), 
+        self::Service => __('服务津贴'), self::Together => __('共创津贴'), self::Freight => __('物流运费')];
     }
 
     /**

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

@@ -56,8 +56,9 @@ class ProductOrder extends Model
      * @param int   $userId    用户id
      * @param int   $fromUser  来源id
      * @param float $fees      手续费
+     * @param float $fees      抢购价
      */
-    public static function setCreateOrder(int $orderId, $orderInfo, $typeId, $userId, $fromUser, string $orderNo, float $fees): object
+    public static function setCreateOrder(int $orderId, $orderInfo, $typeId, $userId, $fromUser, string $orderNo, float $fees, float $price): object
     {   
 
         return self::create([
@@ -70,6 +71,7 @@ class ProductOrder extends Model
                 'user_id'    => $userId,
                 'from_user'  => $fromUser,
                 'price'      => $orderInfo['price'],
+                'popular_price'=> $price,
                 'fees'       => $fees,
                 'num'        => 1
         ]);

+ 23 - 0
application/common/model/UserArea.php

@@ -2,6 +2,7 @@
 
 namespace app\common\model;
 
+use EasyWeChat\Kernel\Support\Str;
 use think\Model;
 
 class UserArea  extends Model
@@ -22,6 +23,9 @@ class UserArea  extends Model
         'update_time_text'
     ];
 
+   
+    const DefaultAdders     =0; //默认地址
+    const TakeAdders        =1; //收货地址
 
     const Waiting           = 0;
     const Shipped           = 1;
@@ -36,6 +40,25 @@ class UserArea  extends Model
         self::Finish            => '完成'
     ];
 
+    //获取用户默认地址
+    public static function getUserDefaultAdders(int $uid)
+    {
+        return self::where()->find();
+    }
+
+    //  修改默认地址
+    public static function setUserAddress(int $uid, string $areaCode, string $address)
+    {
+        $row = self::where('user_id', $uid)->where('type_id', self::DefaultAdders)->find();
+        if($row){
+            $row->area_code = $areaCode;
+            $row->address   = $address;
+            return $row->save();
+        }else{
+            return self::create(['user_id'=>$uid, 'area_code'=>$areaCode, 'address'=>$address]);
+        }
+
+    }
     
     public function getCreateTimeTextAttr($value, $data)
     {

+ 1 - 0
application/config.php

@@ -318,4 +318,5 @@ return [
     'service_ratio'   => 0.05, //服务津贴
     'together_ratio'  => 0.05, //共创津贴
     'google_secret'   => 'EHAO77VUMH5XHFR6', //谷歌验证私钥
+    'min_rwa_price'   => 499, //Rwa最低价格统计数量
 ];

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

@@ -49,6 +49,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                 12: '社区津贴',
                                 13: '服务津贴',
                                 14: '共创津贴',
+                                15: '物流运费',
                             }, operate: 'FIND_IN_SET', formatter: Table.api.formatter.label
                         },
                     ]