| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 | <?phpnamespace App\Http\Controllers\Admin;use App\Http\Controllers\Controller;use App\Http\Models\PryAnalyzeSummary;use App\Http\Models\PryAnalyzeSummaryScope;use App\Http\Models\PryOptimizeData;use App\Http\Models\PryOptimizeDataScope;use App\Http\Models\PrySeoItem;use App\Http\Models\PrySeoItemScope;use App\Http\Models\PrySocial;use App\Http\Models\Role;use App\Http\Models\Site;use Illuminate\Http\Request;/** * 项目管理下 项目概况下的 推广月报 * Class PromoteYearController * @package App\Http\Controllers\Admin */class PromoteYearController extends Controller{    //主页    public function index($siteId)    {        $where = ['site_id' => $siteId];        $optimizeDataList = PryOptimizeData::query()->where($where)->get()->groupBy('type');        $optimizeScopeList=PryOptimizeDataScope::query()->get()->groupBy('type');        $seoItemSingle = PrySeoItem::query()->where($where)->first();        $authUser = auth()->user();        if ($authUser->is_super || in_array($authUser->role_id, [Role::TYPE_MANAGE_LEADER])) {            $scope = true;        }        $analyzeSummaryList=PryAnalyzeSummary::query()->where($where)->get();        $analyzeSummaryScopeList=PryAnalyzeSummaryScope::query()->get();        return view('admin.promote_year.index', [            'siteId' => $siteId,            'optimizeDataList' => $optimizeDataList,            'optimizeDataScopeList' => $optimizeScopeList,            'seoItemSingle' => $seoItemSingle,            'seoItemScopeList' => PrySeoItemScope::query()->get(),            'analyzeSummaryList'=>$analyzeSummaryList,            'analyzeSummaryScopeList'=>$analyzeSummaryScopeList,            'scope' => $scope ?? false        ]);    }    //优化师数据保存    public function saveOptimizeData(Request $request, $siteId)    {        $dataList = $request->input('dataList') ?? [];        $type= $request->input('type');        if (!in_array($type,['keyword','inquire','profile','traffic'])) {            return response()->json(['message' => '参数类型错误'], 400);        }        $site = Site::query()->select(['old_id'])->find($siteId);        if (!$site) {            return response()->json(['message' => '站点不存在'], 400);        }        $scopeIds=PryOptimizeData::query()->where(['type'=>$type,'site_id'=>$siteId])->pluck('id')->toArray();        $requestIds=array_column($dataList,'id');        $delIds=array_diff($scopeIds,$requestIds);        if ($delIds) {            PryOptimizeData::destroy($delIds);        }        foreach ($dataList as $item){            if (empty($item['id'])) {                PryOptimizeData::query()->create([                    'site_id'=>$siteId,                    'old_id'=>$site->old_id,                    'content'=>$item['content'],                    'type'=>$type                ]);            }else {                PryOptimizeData::query()->where(['id'=>$item['id']])                    ->update(['content'=>$item['content']]);            }        }        return response()->json(['message' => '操作成功','data'=>PryOptimizeData::query()->where(['site_id'=>$siteId,'type'=>$type])->get()]);    }    //优化师数据固定话语保存    public function saveOptimizeDataScope(Request $request)    {        $dataList = $request->input('dataList') ?? [];        $type= $request->input('type');        if (!in_array($type,['keyword','inquire','profile','traffic'])) {            return response()->json(['message' => '参数类型错误'], 400);        }        $scopeIds=PryOptimizeDataScope::query()->where(['type'=>$type])->pluck('id')->toArray();        $requestIds=array_column($dataList,'id');        $delIds=array_diff($scopeIds,$requestIds);        if ($delIds) {            PryOptimizeDataScope::destroy($delIds);        }        foreach ($dataList as $item){            if (empty($item['id'])) {                PryOptimizeDataScope::query()->create([                    'content'=>$item['content'],                    'type'=>$type                ]);            }else {                PryOptimizeDataScope::query()->where(['id'=>$item['id']])                    ->update(['content'=>$item['content']]);            }        }        return response()->json(['message' => '操作成功','data'=>PryOptimizeDataScope::query()->where(['type'=>$type])->get()]);    }    //获取seo固定选项    public function getSeoItemScope()    {        $result = PrySeoItemScope::query()->get();        return response()->json(['data' => $result]);    }    //保存seo    public function saveSeoItem(Request $request, $siteId)    {        $site = Site::query()->select(['old_id'])->find($siteId);        if (!$site) {            return response()->json(['message' => '站点不存在'], 400);        }        $checked_list = $request->input('checked_list') ?? [];        $data = PrySeoItem::query()->where(['site_id' => $siteId])->first();        if ($data) {            $data->checked_list = $checked_list;            $data->save();        } else {            PrySeoItem::query()->create([                'site_id' => $siteId,                'old_id' => $site->old_id,                'checked_list' => $checked_list            ]);        }        return response()->json(['message' => '操作成功']);    }    //seo固定选项保存    public function saveSeoItemScope(Request $request)    {        $dataList = $request->input('dataList') ?? [];        $insertData = [];        $datetime = date('Y-m-d H:i:s');        $idMapList = PrySeoItemScope::query()->get();        $seoItemIds = array_filter(array_column($dataList, 'seoItemId'));        foreach ($idMapList as $item) {            if (!in_array($item->id, $seoItemIds)) {                $item->delete();            }            foreach ($dataList as $v) {                if ($v['seoItemId'] == $item->id && $v['content'] != $item->content) {                    $item->update(['content' => $v['content']]);                }            }        }        foreach ($dataList as $value) {            if (empty($value['seoItemId'])) {                $insertData[] = [                    'content' => $value['content'],                    'created_at' => $datetime,                    'updated_at' => $datetime                ];            }        }        if ($dataList) {            PrySeoItemScope::query()->insert($insertData);        }        return response()->json(['message' => '操作成功']);    }    //优化师分析保存    public function saveAnalyzeSummary(Request $request, $siteId)    {        $dataList = $request->input('dataList') ?? [];        $site = Site::query()->select(['old_id'])->find($siteId);        if (!$site) {            return response()->json(['message' => '站点不存在'], 400);        }        $scopeIds=PryAnalyzeSummary::query()->where(['site_id'=>$siteId])->pluck('id')->toArray();        $requestIds=array_column($dataList,'id');        $delIds=array_diff($scopeIds,$requestIds);        if ($delIds) {            PryAnalyzeSummary::destroy($delIds);        }        foreach ($dataList as $item){            if (empty($item['id'])) {                PryAnalyzeSummary::query()->create([                    'site_id'=>$siteId,                    'old_id'=>$site->old_id,                    'content'=>$item['content'],                ]);            }else {                PryAnalyzeSummary::query()->where(['id'=>$item['id']])                    ->update(['content'=>$item['content']]);            }        }        return response()->json(['message' => '操作成功','data'=>PryAnalyzeSummary::query()->where(['site_id'=>$siteId])->get()]);    }    //优化师分析固定话语保存    public function saveAnalyzeSummaryScope(Request $request)    {        $dataList = $request->input('dataList') ?? [];        $scopeIds=PryAnalyzeSummaryScope::query()->pluck('id')->toArray();        $requestIds=array_column($dataList,'id');        $delIds=array_diff($scopeIds,$requestIds);        if ($delIds) {            PryAnalyzeSummaryScope::destroy($delIds);        }        foreach ($dataList as $item){            if (empty($item['id'])) {                PryAnalyzeSummaryScope::query()->create([                    'content'=>$item['content'],                ]);            }else {                PryAnalyzeSummaryScope::query()->where(['id'=>$item['id']])                    ->update(['content'=>$item['content']]);            }        }        return response()->json(['message' => '操作成功','data'=>PryAnalyzeSummaryScope::query()->get()]);    }    //社交推广保存    public function saveSocial(Request $request, $siteId)    {        $site = Site::query()->select(['old_id'])->find($siteId);        if (!$site) {            return response()->json(['message' => '站点不存在'], 400);        }        $facebook = $request->input('facebook');        $linkedIn = $request->input('linkedIn');        $twitter = $request->input('twitter');        $pin = $request->input('pin');        $facebookHide = $request->input('facebookHide');        $linkedInHide= $request->input('linkedInHide');        $twitterHide = $request->input('twitterHide');        $pinHide = $request->input('pinHide');        if (PrySocial::query()->where(['site_id' => $siteId])->exists()) {            PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'facebook'])->update([                'data_list' => json_encode($facebook),                'hide'=>$facebookHide,            ]);            PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'linkedIn'])->update([                'data_list' => json_encode($linkedIn),                'hide'=>$linkedInHide,            ]);            PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'twitter'])->update([                'data_list' => json_encode($twitter),                'hide'=>$twitterHide,            ]);            PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'pin'])->update([                'data_list' => json_encode($pin),                'hide'=>$pinHide,            ]);        } else {            PrySocial::query()->create([                'type' => 'facebook',                'site_id' => $siteId,                'old_id' => $site->old_id,                'data_list' => $facebook,                'hide'=>$facebookHide            ]);            PrySocial::query()->create([                'type' => 'linkedIn',                'site_id' => $siteId,                'old_id' => $site->old_id,                'data_list' => $linkedIn,                'hide'=>$linkedInHide            ]);            PrySocial::query()->create([                'type' => 'twitter',                'site_id' => $siteId,                'old_id' => $site->old_id,                'data_list' => $twitter,                'hide'=>$twitterHide            ]);            PrySocial::query()->create([                'type' => 'pin',                'site_id' => $siteId,                'old_id' => $site->old_id,                'data_list' => $pin,                'hide'=>$pinHide            ]);        }        return response()->json(['message' => '操作成功']);    }}
 |