hrjy 3 years ago
parent
commit
606b5d2a0e

+ 15 - 15
app/admin/controller/user/User.php

@@ -118,8 +118,8 @@ class User extends AuthController
         $f = array();
         $f[] = Form::radio('money_status', '修改余额', 1)->options([['value' => 1, 'label' => '增加'], ['value' => 2, 'label' => '减少']]);
         $f[] = Form::number('money', '余额')->min(0);
-        $f[] = Form::radio('integration_status', '修改积分', 1)->options([['value' => 1, 'label' => '增加'], ['value' => 2, 'label' => '减少']]);
-        $f[] = Form::number('integration', '积分')->min(0);
+        $f[] = Form::radio('sp_final_status', '修改购物积分', 1)->options([['value' => 1, 'label' => '增加'], ['value' => 2, 'label' => '减少']]);
+        $f[] = Form::number('sp_final', '购物积分')->min(0);
         $form = Form::make_post_form('修改其他', $f, Url::buildUrl('update_other', array('uid' => $uid)));
         $this->assign(compact('form'));
         return $this->fetch('public/form-builder');
@@ -130,8 +130,8 @@ class User extends AuthController
         $data = Util::postMore([
             ['money_status', 0],
             ['money', 0],
-            ['integration_status', 0],
-            ['integration', 0],
+            ['sp_final_status', 0],
+            ['sp_final', 0],
         ], $this->request);
         if (!$uid) return $this->failed('数据不存在');
         $user = UserModel::get($uid);
@@ -143,7 +143,7 @@ class User extends AuthController
         if ($data['money_status'] && $data['money']) {//余额增加或者减少
             if ($data['money_status'] == 1) {//增加
                 $edit['now_money'] = bcadd($user['now_money'], $data['money'], 2);
-                $res1 = UserBillAdmin::income('系统增加余额', $user['uid'], 'now_money', 'system_add', $data['money'], $this->adminId, $edit['now_money'], '系统增加了' . floatval($data['money']) . '余额');
+                $res1 = UserBillAdmin::income('系统增加消费积分', $user['uid'], 'now_money', 'system_add', $data['money'], $this->adminId, $edit['now_money'], '系统增加了' . floatval($data['money']) . '消费积分');
                 try {
                     UserRepository::adminAddMoney($user, $data['money']);
                 } catch (\Exception $e) {
@@ -152,7 +152,7 @@ class User extends AuthController
                 }
             } else if ($data['money_status'] == 2) {//减少
                 $edit['now_money'] = bcsub($user['now_money'], $data['money'], 2);
-                $res1 = UserBillAdmin::expend('系统减少余额', $user['uid'], 'now_money', 'system_sub', $data['money'], $this->adminId, $edit['now_money'], '系统扣除了' . floatval($data['money']) . '余额');
+                $res1 = UserBillAdmin::expend('系统减少消费积分', $user['uid'], 'now_money', 'system_sub', $data['money'], $this->adminId, $edit['now_money'], '系统扣除了' . floatval($data['money']) . '消费积分');
                 try {
                     UserRepository::adminSubMoney($user, $data['money']);
                 } catch (\Exception $e) {
@@ -163,21 +163,21 @@ class User extends AuthController
         } else {
             $res1 = true;
         }
-        if ($data['integration_status'] && $data['integration']) {//积分增加或者减少
-            if ($data['integration_status'] == 1) {//增加
-                $edit['integral'] = bcadd($user['integral'], $data['integration'], 2);
-                $res2 = UserBillAdmin::income('系统增加积分', $user['uid'], 'integral', 'system_add', $data['integration'], $this->adminId, $edit['integral'], '系统增加了' . floatval($data['integration']) . '积分');
+        if ($data['sp_final_status'] && $data['sp_final']) {//积分增加或者减少
+            if ($data['sp_final_status'] == 1) {//增加
+                $edit['sp_final'] = bcadd($user['sp_final'], $data['sp_final'], 2);
+                $res2 = UserBillAdmin::income('系统增加积分', $user['uid'], 'sp_final', 'add_sp_final', $data['sp_final'], $this->adminId, $edit['sp_final'], '系统增加了' . floatval($data['sp_final']) . '积分');
                 try {
-                    UserRepository::adminAddIntegral($user, $data['integration']);
+                    UserRepository::adminAddIntegral($user, $data['sp_final']);
                 } catch (\Exception $e) {
                     BaseModel::rollbackTrans();
                     return Json::fail($e->getMessage());
                 }
-            } else if ($data['integration_status'] == 2) {//减少
-                $edit['integral'] = bcsub($user['integral'], $data['integration'], 2);
-                $res2 = UserBillAdmin::expend('系统减少积分', $user['uid'], 'integral', 'system_sub', $data['integration'], $this->adminId, $edit['integral'], '系统扣除了' . floatval($data['integration']) . '积分');
+            } else if ($data['sp_final_status'] == 2) {//减少
+                $edit['sp_final'] = bcsub($user['sp_final'], $data['sp_final'], 2);
+                $res2 = UserBillAdmin::expend('系统减少积分', $user['uid'], 'sp_final', 'sub_sp_final', $data['sp_final'], $this->adminId, $edit['sp_final'], '系统扣除了' . floatval($data['sp_final']) . '积分');
                 try {
-                    UserRepository::adminSubIntegral($user, $data['integration']);
+                    UserRepository::adminSubIntegral($user, $data['sp_final']);
                 } catch (\Exception $e) {
                     BaseModel::rollbackTrans();
                     return Json::fail($e->getMessage());

+ 5 - 5
app/admin/view/user/user/index.php

@@ -238,10 +238,10 @@
                                 <a href="javascript:void(0);" lay-event="see">
                                     <i class="layui-icon layui-icon-edit"></i> 会员详情</a>
                             </li>
-                            <li>
-                                <a href="javascript:void(0);" lay-event="give_level">
-                                    <i class="layui-icon layui-icon-star-fill" aria-hidden="true"></i> 修改会员等级</a>
-                            </li>
+<!--                            <li>-->
+<!--                                <a href="javascript:void(0);" lay-event="give_level">-->
+<!--                                    <i class="layui-icon layui-icon-star-fill" aria-hidden="true"></i> 修改会员等级</a>-->
+<!--                            </li>-->
                             <li>
                                 <a href="javascript:void(0);" lay-event="set_group">
                                     <i class="layui-icon layui-icon-star-fill" aria-hidden="true"></i> 设置分组</a>
@@ -312,7 +312,7 @@
             {field: 'now_money', title: '余额',width:'6%',sort:true,event:'now_money',align:'center'},
             {field: 'pay_count', title: '购买次数',align:'center',width:'6%'},
             {field: 'extract_count_price', title: '累计提现',align:'center',width:'6%'},
-            {field: 'integral', title: '积分',width:'6%',sort:true,event:'integral',align:'center'},
+            {field: 'sp_final', title: '购物积分',width:'6%',sort:true,event:'integral',align:'center'},
             {field: 'spread_uid_nickname', title: '推荐人',align:'center'},
             {field: 'sex', title: '性别',width:'4%',align:'center'},
             {field: 'data_time', title: '访问日期',align:'center',width:'12%',templet:'#data_time'},

+ 41 - 19
app/api/controller/auction/AuctionController.php

@@ -62,34 +62,56 @@ class AuctionController
         $auctionModel = new Auction();
         $auction = $auctionModel->find($data['id']);
         if (!$auction)return app('json')->fail('没有此数据');
+        if (strtotime($auction['rend_time']) < time()){
+            if (AuctionBooking::where([['uid', '=', $request->uid()], ['auction_id' , '=', $auction['id']], ['frequency', '=', ($auction['frequency']+1)]])->find()){
+                return app('json')->fail('当前场馆已预约');
+            }
+            $userModel = new User();
+            $user = $userModel->find($request->uid());
+            if($auction['lowest'] > $user['now_money'] or $auction['minimum'] > $user['aid_val']) return app('json')->fail('未达到预约门槛');
+            if ($user['aid_val'] < $auction['advert']) return app('json')->fail('广告值不够');
+            $user['aid_val'] = $user['aid_val'] - $auction['advert'];// 扣除广告值
+            User::rollbackTrans();
+            $res = $user->save();
 
-        if (strtotime($auction['radd_time']) < time() or (strtotime($auction['radd_time'])-1800) < time()) return app('json')->fail('预约时间已过');
+            if ($res){
+                $auction['frequency'] += 1; //预约每天的场次
+                AuctionBooking::booking($user['uid'], $auction);
+                UserBill::expend('预约场馆', $user['uid'], 'aid_val','sub_aid_val', $auction['advert'], 0, $user['aid_val'], '预约冻结广告值'); // 写入记录
 
-        if (AuctionBooking::where([['uid', '=', $request->uid()], ['auction_id' , '=', $auction['id']], ['frequency', '=', $auction['frequency']]])->find()){
-            return app('json')->fail('当前场馆已预约');
-        }
-        $userModel = new User();
-        $user = $userModel->find($request->uid());
-        if($auction['lowest'] > $user['now_money'] or $auction['minimum'] > $user['aid_val']) return app('json')->fail('未达到预约门槛');
-        if ($user['aid_val'] < $auction['advert']) return app('json')->fail('广告值不够');
-        $user['aid_val'] = $user['aid_val'] - $auction['advert'];// 扣除广告值
-        User::rollbackTrans();
-        $res = $user->save();
+                User::commitTrans();
+                return app('json')->successful('预约成功');
+            }else{
 
-        if ($res){
-            AuctionBooking::booking($user['uid'], $auction);
-            UserBill::expend('预约场馆', $user['uid'], 'aid_val','sub_aid_val', $auction['advert'], 0, $user['aid_val'], '预约冻结广告值'); // 写入记录
+                User::rollbackTrans();
+                return app('json')->fail('预约失败');
+            }
 
-            User::commitTrans();
-            return app('json')->successful('预约成功');
         }else{
-
+            if (strtotime($auction['radd_time']) < time() or (strtotime($auction['radd_time'])-1800) < time()) return app('json')->fail('预约时间已过');
+            if (AuctionBooking::where([['uid', '=', $request->uid()], ['auction_id' , '=', $auction['id']], ['frequency', '=', $auction['frequency']]])->find()){
+                return app('json')->fail('当前场馆已预约');
+            }
+            $userModel = new User();
+            $user = $userModel->find($request->uid());
+            if($auction['lowest'] > $user['now_money'] or $auction['minimum'] > $user['aid_val']) return app('json')->fail('未达到预约门槛');
+            if ($user['aid_val'] < $auction['advert']) return app('json')->fail('广告值不够');
+            $user['aid_val'] = $user['aid_val'] - $auction['advert'];// 扣除广告值
             User::rollbackTrans();
-            return app('json')->fail('预约失败');
-        }
+            $res = $user->save();
 
+            if ($res){
+                AuctionBooking::booking($user['uid'], $auction);
+                UserBill::expend('预约场馆', $user['uid'], 'aid_val','sub_aid_val', $auction['advert'], 0, $user['aid_val'], '预约冻结广告值'); // 写入记录
 
+                User::commitTrans();
+                return app('json')->successful('预约成功');
+            }else{
 
+                User::rollbackTrans();
+                return app('json')->fail('预约失败');
+            }
+        }
     }
 
     /**

+ 15 - 5
app/api/controller/auction/AuctionProductController.php

@@ -193,20 +193,29 @@ class AuctionProductController
         $hanging_price = round((int)$product['hanging_price'] + $product['hanging_price'] * 0.06, 2); // 第二天溢价
         if ($user['aid_val'] < $aid_val) return app('json')->fail('挂售需要广告值不足');
 
+        $order = AuctionOrder::where([['uid', '=', $request->uid()], ['product_id', '=', $product['id']]])->find();
+
+        $bk = AuctionBooking::where([['uid', '=', $request->uid()], ['auction_id', '=', $order['auction_id']], ['frequency', '=', $order['frequency']], ['status', '=', 1]])->find();
+        if ($bk){
+            $bk['status'] = 0; //解冻广告值
+            $user['aid_val'] += $bk['advert']; // 退回用户广告值
+        }
+
         $product['hanging_price'] = $hanging_price;
         $product['is_show'] = 1;
         $user['aid_val'] -= $aid_val;
 
         try {
-            Db::startTrans();
+            User::beginTrans();
             $product->save();
             $user->save();
+            $bk->save();
             UserBill::expend('挂售扣除广告值', $user['uid'], 'aid_val', 'sub_aid_val', $aid_val, $user['spread_uid'], $user['aid_val'], '挂售商品扣除广告值');
-
-            Db::commit();
+            UserBill::income('广告值退回', $request->uid(), 'aid_val', 'add_aid_val', $bk['advert'], $user['spread_uid'], $user['aid_val'], '寄售商品成功退回广告值');
+            User::commitTrans();
             return app('json')->successful('挂售成功');
         } catch (\Exception $e) {
-            Db::rollback();
+            User::rollbackTrans();
             return app('json')->fail('挂售失败');
         }
 
@@ -229,7 +238,8 @@ class AuctionProductController
         ]);
         $product = AuctionProduct::where('id', $data['id'])->find();
         if (!$product)  return app('json')->fail('没有此商品');
-        $product['slider_image'] = json_decode($product['slider_image']);
+        $product['slider_image'] = is_string($product['slider_image']) ? json_decode($product['slider_image'], true) : [];
+        $product['description'] = !empty($product['description']) ? html_entity_decode($product['description'], ENT_COMPAT) : '';
         $product = $product->toArray();
         return app('json')->successful($product);
     }

+ 17 - 0
app/api/controller/user/UserController.php

@@ -251,11 +251,13 @@ class UserController
         $datas['type']=$data['type'];
         //  消费余额转购物积分
         if($data['type']==1){
+            if ($request->user()['now_money'] < $datas['amount'])  return app('json')->fail('消费积分不足!');
             $datas['type1']='now_money';
             $datas['type2']='sp_final';
         }
         // 购物积分转换成提货券
         if($data['type']==2){
+            if ($request->user()['sp_final'] < $datas['amount'])  return app('json')->fail('购物积分不足!');
             $datas['type1']='sp_final';
             $datas['type2']='top_ticket';
         }
@@ -753,4 +755,19 @@ class UserController
         }
 
     }
+
+    /**
+     * 用户下级
+     * @param Request $request
+     * @return mixed
+     * @throws DataNotFoundException
+     * @throws DbException
+     * @throws ModelNotFoundException
+     */
+    public function subordinate(Request $request)
+    {
+        $user = User::where('spread_uid', $request->uid())->field('uid,nickname,avatar')->select();
+        $user = count($user) < 1? [] :$user->toArray();
+        return app('json')->success($user);
+    }
 }

+ 1 - 0
app/http/middleware/AllowOriginMiddleware.php

@@ -59,6 +59,7 @@ class AllowOriginMiddleware implements MiddlewareInterface
         }
         $request->filter(['htmlspecialchars', 'strip_tags', 'addslashes', 'trim']);
         Auction::frequency(); // 更新场次
+        User::direct_push();//直推奖励
 
         try {
             Db::startTrans();

+ 3 - 11
app/models/auction/AuctionOrder.php

@@ -155,12 +155,11 @@ class AuctionOrder extends BaseModel
      */
     public static function th()
     {
-        $auction = Auction::where('rend_time', '<', time())->select();
+        $auction = Auction::where('rend_time', '<', date('H:i:d', time()))->select();
         if ($auction){
             foreach ($auction as $k => $v){
 
-                $booking = AuctionBooking::where([['auction_id', '=', $v['id']], ['status','=' , 1]])->select();
-
+                $booking = AuctionBooking::where([['auction_id', '=', $v['id']], ['status','=' , 1], ['frequency', '=', $v['frequency']]])->select();
                 if ($booking){
                     foreach ($booking as $key => $value){
                         $product = AuctionProduct::where('auction_id', $value['auction_id'])->column('id');
@@ -196,14 +195,10 @@ class AuctionOrder extends BaseModel
     {
         $user = User::where('uid', $uid)->find();
 
-        $bk = AuctionBooking::where([['uid', '=', $uid], ['auction_id', '=', $order['auction_id']], ['frequency', '=', $order['frequency']]])->find();
-        $bk['status'] = 0; //解冻广告值
-        $user['now_money'] -= $order['actual_price']; // 扣除用户余额
-        $user['aid_val'] += $bk['advert']; // 退回用户广告值
 
+        $user['now_money'] -= $order['actual_price']; // 扣除用户余额
         AuctionProduct::where('id', $order['product_id'])->update(['uid' => $uid, 'is_show' => 0]); // 修改商品拥有人,商品下架等待挂售
         $user->save();
-        $bk->save();
         if ($order['collection_id'] > 0){
             self::m_user($order['collection_id'], $order['actual_price']);
         }
@@ -218,9 +213,6 @@ class AuctionOrder extends BaseModel
 
         AuctionOrder::where('id', $order['id'])->update(['status' => 2]); // 修改订单状态
         UserBill::expend('购买商品支付', $uid, 'now_money', 'sub_money', $order['actual_price'], $user['spread_uid'], $user['now_money'], '购买商品支付订单');
-        UserBill::income('广告值退回', $uid, 'aid_val', 'add_aid_val', $bk['advert'], $user['spread_uid'], $user['aid_val'], '购买商品成功退回广告值');
-
-
     }
 
     /**

+ 32 - 0
app/models/auction/AuctionPush.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace app\models\auction;
+
+use app\models\store\StoreProduct;
+use crmeb\services\SystemConfigService;
+use think\facade\Db;
+use crmeb\traits\ModelTrait;
+use crmeb\basic\BaseModel;
+
+/**
+ * TODO 场馆model
+ * Class Article
+ * @package app\models\article
+ */
+class AuctionPush extends BaseModel
+{
+    /**
+     * 数据表主键
+     * @var string
+     */
+    protected $pk = 'id';
+
+    /**
+     * 模型名称
+     * @var string
+     */
+    protected $name = 'auction_push';
+
+    use ModelTrait;
+
+}

+ 37 - 16
app/models/user/User.php

@@ -3,8 +3,10 @@
 
 namespace app\models\user;
 
+use app\models\auction\Auction;
 use app\models\auction\AuctionBooking;
 use app\models\auction\AuctionOrder;
+use app\models\auction\AuctionPush;
 use app\models\auction\AuctionReward;
 use app\models\store\StoreOrder;
 use app\models\store\StoreProduct;
@@ -743,24 +745,36 @@ class User extends BaseModel
      */
     public static function direct_push()
     {
-        if (!AuctionReward::where('create_time', strtotime(date('Y-m-d', time())))->find()){
-            // 查找到今天没有分发奖励
-            $time = strtotime(date('Y-m-d', strtotime('-1 day'))); // 昨天的时间
-            $timet = strtotime(date('Y-m-d', time())); // 今天时间
-            $order = AuctionOrder::where('status', '=',2)->where('create_time', '>=', $time)->where('create_time', '<=', $timet)->select();
-            if ($order){
-                foreach ($order as $k => $v) {
-                    $user = User::where('uid', $v['uid'])->find();
-                    if ($user['spread_uid']){
-                        $spread = User::where('uid', $user['spread_uid'])->find();
-                        $bo = AuctionBooking::where('uid', '=', $spread['uid'])->where('create_time', '>=', $time)->where('create_time', '<=', $timet)->find();
-                        if ($bo){
-                            $money =  round($v['price'] * 0.03, 2);
-                            $spread['sp_final'] += $money;
-                            $spread->save();
-                            UserBill::income('奖励购物积分', $spread['uid'], 'sp_final', 'add_sp_final', $money, $user['uid'], $spread['sp_final'], '奖励购物积分');
+        $auction = Auction::where('rend_time','<', date('H:i:s'))->select();
+        foreach ($auction as $key => $value) {
+            $auctionPush = AuctionPush::where('auction_id', '=',$value['id'])->where('add_time', '=', strtotime(date('Y-m-d',  time())))->find();
+            if (!$auctionPush){
+                if (strtotime($value['rend_time'])+1800 <= time()){
+                    //当前场次结束半个小时
+                    $order = AuctionOrder::alias('a')
+                        ->leftJoin('auction_product p', 'a.product_id = p.id')
+                        ->where([['a.auction_id', '=', $value['id']], ['a.status', '=', 2], ['p.is_show', '=', 1 ]])
+                        ->select();
+                    if ($order){
+                        foreach ($order as $k => $v) {
+                            $user = User::where('uid', $v['uid'])->find();
+                            if ($user['spread_uid']){
+                                $spread = User::where('uid', $user['spread_uid'])->find();
+                                $bo = AuctionOrder::where('uid', $spread['uid'])->where('auction_id', $value['id'])->where('status', 2)->count();
+                                if ($bo > 0){
+                                    $money =  round($v['price'] * 0.003, 2);
+                                    $spread['sp_final'] += $money;
+                                    $spread->save();
+                                    UserBill::income('奖励购物积分', $spread['uid'], 'sp_final', 'add_sp_final', $money, $user['uid'], $spread['sp_final'], '奖励购物积分');
+                                }
+
+                            }
                         }
                     }
+                    AuctionPush::create([
+                        'auction_id' => $value['id'],
+                        'add_time' => strtotime(date('Y-m-d',  time()))
+                    ]);
                 }
             }
         }
@@ -950,6 +964,13 @@ class User extends BaseModel
     }
 
 
+    /**
+     * 更新奖励发放时间
+     * @return void
+     * @throws DataNotFoundException
+     * @throws DbException
+     * @throws ModelNotFoundException
+     */
     public static function up_time()
     {
         if (!AuctionReward::where('create_time', strtotime(date('Y-m-d', time())))->find()){

+ 2 - 0
route/api/route.php

@@ -63,6 +63,7 @@ Route::group(function () {
     Route::get('user/service/list', 'user.StoreService/lst')->name('userServiceList');//客服列表
     Route::get('user/service/record/:toUid', 'user.StoreService/record')->name('userServiceRecord');//客服聊天记录
 
+
     //用户类  用户coupons/order
     Route::get('user', 'user.UserController/user')->name('user');//个人中心
     Route::post('user/spread', 'user.UserController/spread')->name('userSpread');//静默绑定授权
@@ -71,6 +72,7 @@ Route::group(function () {
     Route::get('userinfo', 'user.UserController/userinfo')->name('userinfo');// 用户信息
     Route::post('dow_user', 'user.UserController/dow_user')->name('dow_user');// 转账
     Route::post('edit_pas', 'user.UserController/edit_pas')->name('edit_pas');// 修改支付密码
+    Route::get('subordinate', 'user.UserController/subordinate')->name('subordinate');//用户下级
     //用户类  地址
     Route::get('address/detail/:id', 'user.UserController/address')->name('address');//获取单个地址
     Route::get('address/list', 'user.UserController/address_list')->name('addressList');//地址列表