dongxiaoqin vor 1 Jahr
Ursprung
Commit
fd81549e98

+ 21 - 0
app/adminapi/controller/group_activity/GroupUserOrderController.php

@@ -16,6 +16,8 @@
 namespace app\adminapi\controller\group_activity;
 
 
+use app\adminapi\logic\export\ExportLogic;
+use app\common\service\ExcelExportService;
 use app\adminapi\controller\BaseAdminController;
 use app\adminapi\lists\group_activity\GroupUserOrderLists;
 use app\adminapi\logic\group_activity\GroupUserOrderLogic;
@@ -53,4 +55,23 @@ class GroupUserOrderController extends BaseAdminController
         return $this->fail(GroupUserOrderLogic::getError());
     }
 
+    
+    public function download()
+    {
+        $params = $this->request->post();
+        $filename = "用户拼团订单列表";
+        $result = ExportLogic::add([
+            'download_type' => 10,
+            'params' => $params,
+            'name' => $filename,
+            'admin_id' => $this->adminId,
+        ]);
+        if (false === $result) {
+            return $this->fail(ExportLogic::getError());
+        }
+        
+        (new ExcelExportService)->download($result);
+        return $this->success('添加成功-'.$result, [], 1, 1);
+    }
+
 }

+ 4 - 1
app/adminapi/logic/group_activity/GroupActivityCategoryLogic.php

@@ -22,6 +22,7 @@ use app\common\logic\BaseLogic;
 use app\common\service\wechat\WeChatMnpService;
 use app\common\model\group_activity\GroupActivity;
 use app\common\model\group_activity\GroupActivityCategory;
+use app\common\model\master_worker\MasterWorker;
 
 /**
  * 拼团活动分类逻辑
@@ -62,6 +63,7 @@ class GroupActivityCategoryLogic extends BaseLogic
                 'start_time' => strtotime($params['start_time']),
                 'end_time' => strtotime($params['end_time']),
                 'service_time' => strtotime($params['service_time']),
+                'master_worker_id' => $params['master_worker_id'],
                 'participant_num' => $params['participant_num'],
                 'type' => $params['type'],
                 'form_time_limit' => $params['form_time_limit'],
@@ -163,6 +165,7 @@ class GroupActivityCategoryLogic extends BaseLogic
                 'start_time' => strtotime($params['start_time']),
                 'end_time' => strtotime($params['end_time']),
                 'service_time' => strtotime($params['service_time']),
+                'master_worker_id' => $params['master_worker_id'],
                 'participant_num' => $params['participant_num'],
                 'type' => $params['type'],
                 'form_time_limit' => $params['form_time_limit'],
@@ -217,7 +220,7 @@ class GroupActivityCategoryLogic extends BaseLogic
         $detail['area'] = explode(",",$detail['area']);
         $detail['images'] = $detail['images'] ? explode(",",$detail['images']) : [];
         $detail['block_data'] = json_decode($detail['block_data'],true);
-
+        $detail['master_worker_name'] = MasterWorker::where('id',$detail['master_worker_id'])->value('real_name');
         foreach($detail['block_data'] as $key => $item) {
             $detail['block_data'][$key]['activity'] = GroupActivity::where(['block_key' => $item['block_key'],'group_category_id' => $detail['id']])
                     ->field('id,id as data_id,title,image,equity_id,block_key,origin_price,price,work_amount')

+ 19 - 46
app/api/logic/GroupActivityLogic.php

@@ -124,7 +124,7 @@ class GroupActivityLogic extends BaseLogic
      * @notes 用户订单详情
      */
     public static function userOrderDetail($order_id,$userId){
-        $detail = GroupUserOrder::with('groupOrder')->where(['id'=>$order_id, 'user_id' => $userId])->field('id,sn,status,pay_way,pay_time,pay_status,refund_status,remark,create_time,group_order_id,group_activity_id,user_equity_id,area,address')->findOrEmpty()->toArray();
+        $detail = GroupUserOrder::with('groupOrder')->where(['id'=>$order_id, 'user_id' => $userId])->field('id,mobile,sn,status,pay_way,pay_time,pay_status,refund_status,remark,create_time,group_order_id,group_activity_id,user_equity_id,area,address')->findOrEmpty()->toArray();
         if ($detail) {
             $detail['is_refund'] = 0;
             if ($detail['pay_status'] == 1 && $detail['refund_status'] == 0) {
@@ -154,23 +154,23 @@ class GroupActivityLogic extends BaseLogic
             if ($userOrder && $userOrder['pay_status'] == 1) {
                 throw new Exception('您已参加过该活动!');
             }
+
+            $activity = GroupActivity::getDetail($params['group_activity_id']); //活动详情
+            if (!$activity) {
+                throw new Exception('拼团活动不存在!'); //拼团活动不存在
+            }
+            //校验活动时间
+            if (time() < strtotime($activity['start_time'])) {
+                throw new Exception('拼团活动未开始!'); //拼团活动未开始
+            }
+            if (time() > $activity['end_time']) {
+                throw new Exception('拼团活动已结束!'); //拼团活动已结束
+            }
+            $order_amount = $activity['price'][0];
             
-            //校验拼团活动
-            if (empty($params['order_id'])) {
-                //新开团
-                $activity = GroupActivity::getDetail($params['group_activity_id']); //活动详情
-                if (!$activity) {
-                    throw new Exception('拼团活动不存在!'); //拼团活动不存在
-                }
-                //校验活动时间
-                if (time() < strtotime($activity['start_time'])) {
-                    throw new Exception('拼团活动未开始!'); //拼团活动未开始
-                }
-                if (time() > $activity['end_time']) {
-                    throw new Exception('拼团活动已结束!'); //拼团活动已结束
-                }
-                    
-                $order_amount = $activity['price'][0];
+            //加入已开的拼团单
+            $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'status' => 0])->where('num','<',100)->findOrEmpty()->toArray();
+            if (empty($groupOrder)) {
                 //生成拼团单
                 $data = [
                     'sn' => generate_sn(GroupOrder::class, 'sn'),
@@ -183,40 +183,13 @@ class GroupActivityLogic extends BaseLogic
                     'create_time' => time(),
                     'end_time'   => time() + $activity['form_time_limit'] * 60 * 60,
                 ];
-
-                //如果已有数据,直接覆盖
-                $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'],'user_id' => $params['user_id']])->findOrEmpty()->toArray();
-                if (!$groupOrder) {
-                    $groupOrder = GroupOrder::create($data);
-                } else {
-                    GroupOrder::where('id',$groupOrder['id'])->update($data); 
-                    $data['id'] = $groupOrder['id'];
-                    $groupOrder = $data;
-                }
-            } else {
-                //加入已开的拼团单
-                $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'id' => $params['order_id']])->findOrEmpty()->toArray();
-                if (empty($groupOrder)) {
-                    throw new Exception('拼团订单不存在!'); //拼团活动不存在
-                }
-                if ($groupOrder['num'] >= 100) {
-                    throw new Exception('拼团人数已满!'); //拼团人数已满
-                }
-                if ($groupOrder['status'] == 1 ) {
-                    throw new Exception('活动已成团');
-                }
-                if ($groupOrder['status'] >= 1 ) {
-                    throw new Exception('拼团已取消!');
-                }
-                if ($groupOrder['end_time'] < time()) {
-                    throw new Exception('拼团活动已结束!'); //拼团活动已结束
-                }
-                $order_amount = $groupOrder['price'];
+                $groupOrder = GroupOrder::create($data);
             }
 
             //生成用户拼单订单
             $data = [
                 'sn' => generate_sn(groupUserOrder::class, 'sn'),
+                'mobile' => $params['mobile'],
                 'group_order_id' => $groupOrder['id'],
                 'group_activity_id' => $params['group_activity_id'],
                 'user_id' => $params['user_id'],

+ 3 - 1
app/api/validate/GroupOrderValidate.php

@@ -19,6 +19,7 @@ class GroupOrderValidate extends BaseValidate
         'area' => 'require',
         'address' =>'require',
         'category_id' => 'require',
+        'mobile' => 'require',
     ];
 
 
@@ -30,12 +31,13 @@ class GroupOrderValidate extends BaseValidate
         'area' => '小区',
         'address' => '详细地址',
         'category_id' => '分类ID',
+        'mobile' => '手机号',
     ];
 
 
     public function sceneAdd()
     {
-        return $this->only(['pay_way','group_activity_id','remark','area','address']);
+        return $this->only(['pay_way','group_activity_id','remark','area','address','mobile']);
     }
 
     public function sceneDetail()

+ 2 - 1
app/common/command/GroupOrder.php

@@ -41,10 +41,11 @@ class GroupOrder extends Command
         while($last_id >= 0) {
             $list = GroupOrderModel::alias('a')
                         ->leftJoin('group_activity b','a.group_activity_id=b.id')
+                        ->leftJoin('group_activity_category c','b.group_category_id=c.id')
                         ->where('a.status',0)
                         ->where('a.end_time','<',time())
                         ->where('a.id','>',$last_id)
-                        ->field('a.id,a.num,a.equity_id,b.participant_num,b.is_simulate_form,b.simulate_num')
+                        ->field('a.id,a.num,a.equity_id,c.participant_num,c.is_simulate_form,c.simulate_num')
                         ->order('a.id','asc')
                         ->limit(30)
                         ->select()->toArray();

+ 53 - 1
app/common/service/ExcelExportService.php

@@ -25,6 +25,7 @@ use app\common\model\financial\FinancialPaymentRecords;
 use app\common\model\goods_category\GoodsCategory;
 use app\common\model\user\User;
 use app\common\model\works\ServiceWorkAllocateWorkerLog;
+use app\common\model\group_activity\GroupUserOrder;
 use app\common\service\storage\Driver as StorageDriver;
 use excel\ExcelWriter;
 use Exception;
@@ -73,7 +74,7 @@ class ExcelExportService
         }
     }
     // 获取下载文件路径
-    public function getDownloadFileUrl($downloadObj){
+    public function getDownloadFileUrl($downloadObj){print_r($downloadObj);exit;
         $lists = $downloadObj->excelExportList($this->infoExport['params']?:[]);
         $filename = $downloadObj->setFileName()?:($this->infoExport['name']?:'');
         $fields = $downloadObj->setExcelComplexFields();
@@ -262,4 +263,55 @@ class ExcelExportService
         }
     }
 
+
+    //用户拼团订单列表导出
+    public function GroupUserOrderDownload($infoExport){
+        try{
+            $filename = $infoExport['name'];
+            $params = $infoExport['params']?:[];
+            $where = [];
+            if($params){
+                if (isset($params['select_ids']) && !empty($params['select_ids'])) {
+                    $where[] = ['id','in' ,$params['select_ids']];
+                }
+                if (isset($params['sn']) && !empty($params['sn'])) {
+                    $where[] = ['a.sn','=' ,$params['sn']];
+                }
+                if (isset($params['mobile']) && !empty($params['mobile'])) {
+                    $where[] = ['a.mobile','=' ,$params['mobile']];
+                }
+                if(!empty($this->params['area'])){
+                    $where[] = ['a.area', 'like', '%'.$this->params['area'].'%'];
+                }
+                if(!empty($this->params['title'])){
+                    $where[] = ['b.title', 'like', '%'.$this->params['title'].'%'];
+                }
+                if (isset($this->params['group_order_status'])) {
+                    $where[] = ['c.status', '=', $this->params['group_order_status']];
+                }
+            }
+            
+            $lists = GroupUserOrder::alias('a')
+                ->leftJoin('group_activity b', 'b.id = a.group_activity_id')
+                ->leftJoin('group_order c', 'c.id = a.group_order_id')
+                ->leftJoin('user d', 'd.id = a.user_id')
+                ->where($where)
+                ->field(['a.*', 'b.title','b.image','c.sn as group_order_sn','c.status as group_order_status','d.mobile'])
+                ->order(['a.id' => 'desc'])
+                ->select()
+                ->toArray();
+            
+            $this->sheet->generateExcelFile([
+                '订单ID','活动标题', '拼团编号','拼团状态','用户ID','手机号','小区','详细地址','订单状态','应付金额','已付金额','支付方式','支付状态','支付时间','退款状态','下单时间'
+            ], $lists,$filename.'-'.$infoExport->id, ['id','title','group_order_sn','group_order_status','user_id','mobile','area','address','status','order_amount','paid_amount','pay_way','pay_status','pay_time','refund_status','create_time']);
+            $infoExport->file_url = $this->sheet->fileUrl();
+            $infoExport->generate_status = 1;
+            $infoExport->updatetime = time();
+            $infoExport->save();
+            return $infoExport->file_url;
+        }catch (\Exception $e){
+            throw new Exception($e->getMessage());
+        }    
+    }
+
 }

+ 1 - 0
config/export.php

@@ -17,5 +17,6 @@ return [
         '2' =>  'master_worker.MasterWorkerServiceOrderLists',
         '8' =>  'property.PropertyHeadLists',
         '9' =>  'sale.SalePerformanceLists',
+        '10' =>  'group_activity.GroupUserOrderLists',
     ],
 ];