where('id',$params['property_activity_id'])->findOrEmpty(); if($propertyActivity->isEmpty()){ throw new \Exception('活动不存在'); } if(!empty($propertyActivity->getData('activity_start_time')) && $propertyActivity->getData('activity_start_time') > time()){ throw new \Exception('活动未开始'); } if(!empty($propertyActivity->getData('activity_end_time')) && $propertyActivity->getData('activity_end_time') < time()){ throw new \Exception('活动已结束'); } Log::info('getHomepageByActivityId params:'.json_encode($params)); if($params['user_id']){ // property_head_id householder_mobile householder_name address $userInfo = User::where('id',$params['user_id'])->findOrEmpty(); if (!$userInfo->isEmpty()) { // 检查/注册 Log::info('getHomepageByActivityId params-102:'.json_encode([$userInfo])); PropertyUserLogic::getPropertyUserIdByMobile([ 'householder_mobile' => $userInfo['mobile'], 'householder_name' => $userInfo['real_name'], 'address' => '', 'property_head_id' => $propertyActivity['property_head_id'] ]); } } $res['activity_info'] = $propertyActivity->toArray(); if(in_array($res['activity_info']['url_page'],['adver','adver1','adver2'])){ array_multisort(array_column($res['activity_info']['block_data'], 'sort'), SORT_DESC, $res['activity_info']['block_data']); foreach ($res['activity_info']['block_data'] as &$v){ array_multisort(array_column($v['goods'], 'recommend_weight'), SORT_DESC, $v['goods']); if(!empty($v['goods'])){ foreach ($v['goods'] as &$item){ $item['service_fee'] = $item['base_service_fee']; } } $v['goods'] = self::groupArrays($v['goods']); } }else{ $res['block_data_structure'] = self::blockDataStructure($res['activity_info']['url_page'],$res['activity_info']['block_data']); } $res['coupons'] = CouponRules::with(['couponCategoryOne'])->where('property_activity_id',$params['property_activity_id']) ->select() ->toArray(); foreach ($res['coupons'] as &$coupon) { $coupon['goods_category_id'] = $coupon['couponCategoryOne']['goods_category_id']; } $res['goods'] = Goods::where('property_activity_id',$params['property_activity_id']) ->where('is_agent',1) ->visible(['id','goods_name','goods_image','base_service_fee','service_total','service_fee','goods_type']) ->order('is_recommend desc') ->select() ->toArray(); // 临时添加 foreach ($res['goods'] as &$good){ $good['service_fee'] = $good['base_service_fee']; } return $res; }catch(\Exception $e){ throw new \Exception($e->getMessage()); } } public static function blockDataStructure(string $url_page,array $data): array { if (empty($data)) return []; array_multisort(array_column($data, 'sort'), SORT_DESC, $data); foreach ($data as &$v){ array_multisort(array_column($v['goods'], 'recommend_weight'), SORT_DESC, $v['goods']); // 临时改价 11-28 if(!empty($v['goods'])){ foreach ($v['goods'] as &$item){ $item['service_fee'] = $item['base_service_fee']; } } // 不同模板 - 板块内商品数据结构不同 switch ($url_page){ case 'adver5': break; default: $v['goods'] = self::groupArrays($v['goods']); break; } } return $data; } public static function groupArrays($array) { $result = []; $groupSize = 2; $totalElements = count($array); for ($i = 0; $i < $totalElements; $i += $groupSize) { $end = min($i + $groupSize, $totalElements); $result[] = array_slice($array, $i, $end - $i); } return $result; } public static function createPropertyOrder($params,$serviceOrder){ try{ // 判断商品是否为 代理活动商品 $goods = Goods::findOrEmpty($params['goods_id']); if($goods->isEmpty()){ throw new \Exception('产品不存在!'); } if($goods->property_activity_id > 0){ $propertyActivity = PropertyActivity::findOrEmpty($goods->property_activity_id); if($propertyActivity->isEmpty()){ throw new \Exception('活动不存在'); } if(!empty($propertyActivity->getData('activity_start_time')) && $propertyActivity->getData('activity_start_time') > time()){ throw new \Exception('活动未开始'); } if(!empty($propertyActivity->getData('activity_end_time')) && $propertyActivity->getData('activity_end_time') < time()){ throw new \Exception('活动已结束'); } // 生成代理单 user_info // remark address property_head_id householder_name householder_mobile $result = PropertyOrderLogic::add(array_merge($params,[ 'property_head_id' => $propertyActivity['property_head_id'], 'householder_mobile' => $params['user_info']['mobile'], 'householder_name' => $params['user_info']['real_name'], 'address' => $params['address'], 'remark' => '', 'order_status' => 1, 'work_id' => $serviceOrder['work_id'], ])); if($result === false){ throw new \Exception('生成代理单失败'); } } return true; }catch(\Exception $e){ throw new \Exception($e->getMessage()); } } }