Browse Source

修改拼团

dongxiaoqin 1 year ago
parent
commit
6215e3b0d9

+ 16 - 0
app/adminapi/controller/group_activity/GroupActivityCategoryController.php

@@ -120,4 +120,20 @@ class GroupActivityCategoryController extends BaseAdminController
         $result = GroupActivityCategoryValidate::total($id);
         return $this->data($result);
     }
+
+    /**
+     * @notes 复制活动分类
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function copy()
+    {
+        $params = (new GroupActivityCategoryValidate())->goCheck('detail');
+        $result = GroupActivityCategoryLogic::copy($params);
+        if (true === $result) {
+            return $this->success('复制成功', [], 1, 1);
+        } 
+        return $this->fail(GroupActivityCategoryLogic::getError());
+    }
 }

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

@@ -217,7 +217,7 @@ class GroupActivityCategoryLogic extends BaseLogic
         $detail = GroupActivityCategory::findOrEmpty($params['id'])->toArray();
         $detail['end_time'] = date('Y-m-d H:i:s',$detail['end_time']);
         $detail['participant_num'] = explode(",",$detail['participant_num']);
-        $detail['simulate_num'] = explode(",",$detail['simulate_num']);
+        $detail['simulate_num'] = $detail['simulate_num'] ? explode(",",$detail['simulate_num']) : [];
         $detail['area'] = explode(",",$detail['area']);
         $detail['images'] = $detail['images'] ? explode(",",$detail['images']) : [];
         $detail['block_data'] = json_decode($detail['block_data'],true);
@@ -261,4 +261,54 @@ class GroupActivityCategoryLogic extends BaseLogic
             return '';
         }
     }
+
+    public static function copy($params)
+    {
+        try {
+            
+            Db::startTrans();
+            $categoryDetail = self::detail($params);
+            $category = GroupActivityCategory::create([
+                'title' => $categoryDetail['title'],
+                'images' => $categoryDetail['images'] ? implode(",", $categoryDetail['images']) : '',
+                'start_time' => strtotime($categoryDetail['start_time']),
+                'end_time' => strtotime($categoryDetail['end_time']),
+                'service_time' => strtotime($categoryDetail['service_time']),
+                'property_head_id' => $categoryDetail['property_head_id'],
+                'participant_num' => implode(",", $categoryDetail['participant_num']),
+                'type' => $categoryDetail['type'],
+                'form_time_limit' => $categoryDetail['form_time_limit'],
+                'is_simulate_form' => $categoryDetail['is_simulate_form'],
+                'simulate_num' => $categoryDetail['simulate_num'] ? implode(",", $categoryDetail['simulate_num']) : '',
+                'area' => implode(",", $categoryDetail['area']),
+                'status' => $categoryDetail['status'],
+            ]);
+            
+            $block_data = $categoryDetail['block_data'];
+            foreach($block_data as $item) {
+                foreach($item['activity'] as &$activity) {
+                    
+                    $res = GroupActivity::create([
+                        'title' => $activity['title'],
+                        'image' => $activity['image'],
+                        'equity_id' => $activity['equity_id'],
+                        'block_key' => $item['block_key'],
+                        'group_category_id' => $category['id'],
+                        'origin_price' => $activity['origin_price'],
+                        'price' => $activity['price'],
+                        'work_amount' => isset($activity['work_amount']) ? $activity['work_amount'] : 0,
+                        'settlement_amount' => isset($activity['settlement_amount']) ? $activity['settlement_amount'] : 0,
+                    ]);
+                    $activity['data_id'] = $res['id'];
+                }
+            }
+            GroupActivityCategory::where('id',$category['id'])->update(['block_data' => json_encode($block_data)]);
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
 }