dongxiaoqin hace 1 año
padre
commit
ca0c3c7421

+ 1 - 1
app/api/controller/GroupActivityController.php

@@ -32,7 +32,7 @@ class GroupActivityController extends BaseApiController
      */
     public function orderDetail(){
         $sn = $this->request->param('sn');
-        $result = GroupActivityLogic::orderDetail($sn,$this->userId);
+        $result = GroupActivityLogic::orderDetail($sn,$this->request->domain());
         return $this->data($result);
     }
 

+ 1 - 1
app/api/lists/group_activity/UserOrderLists.php

@@ -39,7 +39,7 @@ class UserOrderLists extends BaseApiDataLists implements ListsSearchInterface
             ])
             ->where($this->searchWhere)
             ->limit($this->limitOffset, $this->limitLength)
-            ->order('a.id', 'desc')
+            ->order('a.create_time', 'desc')
             ->select()
             ->toArray();
         return $lists;

+ 60 - 27
app/api/logic/GroupActivityLogic.php

@@ -49,7 +49,7 @@ class GroupActivityLogic extends BaseLogic
     /**
      * @notes 拼团订单详情
      */
-    public static function orderDetail($sn){
+    public static function orderDetail($sn,$url){
         $detail = GroupOrder::where(['sn'=>$sn])->findOrEmpty()->toArray();
         if(!empty($detail)){
            
@@ -64,11 +64,39 @@ class GroupActivityLogic extends BaseLogic
                                 ->order('a.create_time','asc')
                                 ->select()
                                 ->toArray();
+            foreach($detail['users'] as &$item){
+                $item['avatar'] = config('custom.cdn_url').$item['avatar'];
+            }
+            //如果开启了模拟成团,成团后,自动填补剩余人数
+            if ($detail['status'] == 1 && $detail['num'] < $detail['activity']['participant_num']) {
+                $num = $detail['activity']['participant_num'] - $detail['num'];
+                $robot = self::getRobot($num,$url);
+                $detail['users'] = array_merge($detail['users'],$robot);
+            }
             $detail['timestamp'] = time();
         }
         return $detail;
     }
 
+    //模拟用户
+    private static function getRobot($num,$url){
+
+        $nicknames = ["草莓啵啵熊","甜心小奶喵","清风吟月","浅梦逸云","静听花落","星辰浅语","云卷云舒间","花影舞流年","月色如水柔","暖阳","星辰","云舒","悠然","素心","晚晴","素心","清风","月白","静雅","不羁的灵魂","独行侠逸风","叛逆的旋律","冷傲冰爵","烈焰狂歌者","酷玩潮咖","神秘暗影侠","朋克精灵","暴走的音符","个性涂鸦师","墨染书香","青衫烟雨客","素笺淡墨痕","简逸","微光","清风","浅笑","逸梦","逸尘","浅念","澜影","默言","素笺","心屿","墨染","弦音","竹影","浅酌","暮雪","星辰","雨薇","凝霜","云岫","流萤","晨曦","浅夏","诗韵","逸云","浅唱"];
+        shuffle($nicknames);
+        $users = [];
+        $num = $num > 10 ? 10 : $num;
+        for ($i=0; $i < $num; $i++) {
+            $users[] = [
+                'id' => 0,
+                'user_id' => 0,
+                'status' => 1,
+                'avatar' => $url.'/uploads/group_activity/robot/0be648e5767f18d6af2dbb630c53ba28'.rand(1,33).'.jpg',
+                'nickname' => $nicknames[$i],
+            ];
+        }
+        return $users;
+    }
+
     /**
      * @notes 用户订单详情
      */
@@ -106,33 +134,38 @@ class GroupActivityLogic extends BaseLogic
             
             //校验拼团活动
             if (empty($params['sn'])) {
-                //新开团
-                $activity = GroupActivity::findOrEmpty($params['group_activity_id']); //活动详情
-                if ($activity->isEmpty()) {
-                    throw new Exception('拼团活动不存在!'); //拼团活动不存在
-                }
-                //校验活动时间
-                if (time() < strtotime($activity['start_time'])) {
-                    throw new Exception('拼团活动未开始!'); //拼团活动未开始
-                }
-                if (time() > $activity['end_time']) {
-                    throw new Exception('拼团活动已结束!'); //拼团活动已结束
+
+                //如果已有团单,直接加入
+                $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'],'user_id' => $params['user_id']])->findOrEmpty()->toArray();
+                if (!$groupOrder) {
+                    //新开团
+                    $activity = GroupActivity::findOrEmpty($params['group_activity_id']); //活动详情
+                    if ($activity->isEmpty()) {
+                        throw new Exception('拼团活动不存在!'); //拼团活动不存在
+                    }
+                    //校验活动时间
+                    if (time() < strtotime($activity['start_time'])) {
+                        throw new Exception('拼团活动未开始!'); //拼团活动未开始
+                    }
+                    if (time() > $activity['end_time']) {
+                        throw new Exception('拼团活动已结束!'); //拼团活动已结束
+                    }
+                        
+                    $order_amount = explode(",",$activity['price'])[0];
+                    //生成拼团单
+                    $data = [
+                        'sn' => generate_sn(GroupOrder::class, 'sn'),
+                        'group_activity_id' => $params['group_activity_id'],
+                        'equity_id' => $activity['equity_id'],
+                        'goods_id' => EquityConfig::where('id', $activity['equity_id'])->value('goods_id'),
+                        'user_id' => $params['user_id'],
+                        'origin_price' => $activity['origin_price'],
+                        'price' => $order_amount,
+                        'create_time' => time(),
+                        'end_time'   => time() + $activity['form_time_limit'] * 60 * 60,
+                    ];
+                    $group_order = GroupOrder::create($data);
                 }
-                    
-                $order_amount = explode(",",$activity['price'])[0];
-                //生成拼团单
-                $data = [
-                    'sn' => generate_sn(GroupOrder::class, 'sn'),
-                    'group_activity_id' => $params['group_activity_id'],
-                    'equity_id' => $activity['equity_id'],
-                    'goods_id' => EquityConfig::where('id', $activity['equity_id'])->value('goods_id'),
-                    'user_id' => $params['user_id'],
-                    'origin_price' => $activity['origin_price'],
-                    'price' => $order_amount,
-                    'create_time' => time(),
-                    'end_time'   => time() + $activity['form_time_limit'] * 60 * 60,
-                ];
-                $group_order = GroupOrder::create($data);
             } else {
                 //加入已开的拼团单
                 $group_order = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'sn' => $params['sn']])->findOrEmpty()->toArray();

+ 8 - 0
config/custom.php

@@ -0,0 +1,8 @@
+<?php
+// +----------------------------------------------------------------------
+// | 应用设置
+// +----------------------------------------------------------------------
+
+return [
+    'cdn_url' => 'https://cdnweixiu.kyjlkj.com/',
+];