PromoteYearController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Models\PryAnalyzeSummary;
  5. use App\Http\Models\PryAnalyzeSummaryScope;
  6. use App\Http\Models\PryOptimizeData;
  7. use App\Http\Models\PryOptimizeDataScope;
  8. use App\Http\Models\PrySeoItem;
  9. use App\Http\Models\PrySeoItemScope;
  10. use App\Http\Models\PrySocial;
  11. use App\Http\Models\Role;
  12. use App\Http\Models\Site;
  13. use Illuminate\Http\Request;
  14. /**
  15. * 项目管理下 项目概况下的 推广月报
  16. * Class PromoteYearController
  17. * @package App\Http\Controllers\Admin
  18. */
  19. class PromoteYearController extends Controller
  20. {
  21. //主页
  22. public function index($siteId)
  23. {
  24. $where = ['site_id' => $siteId];
  25. $optimizeDataList = PryOptimizeData::query()->where($where)->get()->groupBy('type');
  26. $optimizeScopeList=PryOptimizeDataScope::query()->get()->groupBy('type');
  27. $seoItemSingle = PrySeoItem::query()->where($where)->first();
  28. $authUser = auth()->user();
  29. if ($authUser->is_super || in_array($authUser->role_id, [Role::TYPE_MANAGE_LEADER])) {
  30. $scope = true;
  31. }
  32. $analyzeSummaryList=PryAnalyzeSummary::query()->where($where)->get();
  33. $analyzeSummaryScopeList=PryAnalyzeSummaryScope::query()->get();
  34. return view('admin.promote_year.index', [
  35. 'siteId' => $siteId,
  36. 'optimizeDataList' => $optimizeDataList,
  37. 'optimizeDataScopeList' => $optimizeScopeList,
  38. 'seoItemSingle' => $seoItemSingle,
  39. 'seoItemScopeList' => PrySeoItemScope::query()->get(),
  40. 'analyzeSummaryList'=>$analyzeSummaryList,
  41. 'analyzeSummaryScopeList'=>$analyzeSummaryScopeList,
  42. 'scope' => $scope ?? false
  43. ]);
  44. }
  45. //优化师数据保存
  46. public function saveOptimizeData(Request $request, $siteId)
  47. {
  48. $dataList = $request->input('dataList') ?? [];
  49. $type= $request->input('type');
  50. if (!in_array($type,['keyword','inquire','profile','traffic'])) {
  51. return response()->json(['message' => '参数类型错误'], 400);
  52. }
  53. $site = Site::query()->select(['old_id'])->find($siteId);
  54. if (!$site) {
  55. return response()->json(['message' => '站点不存在'], 400);
  56. }
  57. $scopeIds=PryOptimizeData::query()->where(['type'=>$type,'site_id'=>$siteId])->pluck('id')->toArray();
  58. $requestIds=array_column($dataList,'id');
  59. $delIds=array_diff($scopeIds,$requestIds);
  60. if ($delIds) {
  61. PryOptimizeData::destroy($delIds);
  62. }
  63. foreach ($dataList as $item){
  64. if (empty($item['id'])) {
  65. PryOptimizeData::query()->create([
  66. 'site_id'=>$siteId,
  67. 'old_id'=>$site->old_id,
  68. 'content'=>$item['content'],
  69. 'type'=>$type
  70. ]);
  71. }else {
  72. PryOptimizeData::query()->where(['id'=>$item['id']])
  73. ->update(['content'=>$item['content']]);
  74. }
  75. }
  76. return response()->json(['message' => '操作成功','data'=>PryOptimizeData::query()->where(['site_id'=>$siteId,'type'=>$type])->get()]);
  77. }
  78. //优化师数据固定话语保存
  79. public function saveOptimizeDataScope(Request $request)
  80. {
  81. $dataList = $request->input('dataList') ?? [];
  82. $type= $request->input('type');
  83. if (!in_array($type,['keyword','inquire','profile','traffic'])) {
  84. return response()->json(['message' => '参数类型错误'], 400);
  85. }
  86. $scopeIds=PryOptimizeDataScope::query()->where(['type'=>$type])->pluck('id')->toArray();
  87. $requestIds=array_column($dataList,'id');
  88. $delIds=array_diff($scopeIds,$requestIds);
  89. if ($delIds) {
  90. PryOptimizeDataScope::destroy($delIds);
  91. }
  92. foreach ($dataList as $item){
  93. if (empty($item['id'])) {
  94. PryOptimizeDataScope::query()->create([
  95. 'content'=>$item['content'],
  96. 'type'=>$type
  97. ]);
  98. }else {
  99. PryOptimizeDataScope::query()->where(['id'=>$item['id']])
  100. ->update(['content'=>$item['content']]);
  101. }
  102. }
  103. return response()->json(['message' => '操作成功','data'=>PryOptimizeDataScope::query()->where(['type'=>$type])->get()]);
  104. }
  105. //获取seo固定选项
  106. public function getSeoItemScope()
  107. {
  108. $result = PrySeoItemScope::query()->get();
  109. return response()->json(['data' => $result]);
  110. }
  111. //保存seo
  112. public function saveSeoItem(Request $request, $siteId)
  113. {
  114. $site = Site::query()->select(['old_id'])->find($siteId);
  115. if (!$site) {
  116. return response()->json(['message' => '站点不存在'], 400);
  117. }
  118. $checked_list = $request->input('checked_list') ?? [];
  119. $data = PrySeoItem::query()->where(['site_id' => $siteId])->first();
  120. if ($data) {
  121. $data->checked_list = $checked_list;
  122. $data->save();
  123. } else {
  124. PrySeoItem::query()->create([
  125. 'site_id' => $siteId,
  126. 'old_id' => $site->old_id,
  127. 'checked_list' => $checked_list
  128. ]);
  129. }
  130. return response()->json(['message' => '操作成功']);
  131. }
  132. //seo固定选项保存
  133. public function saveSeoItemScope(Request $request)
  134. {
  135. $dataList = $request->input('dataList') ?? [];
  136. $insertData = [];
  137. $datetime = date('Y-m-d H:i:s');
  138. $idMapList = PrySeoItemScope::query()->get();
  139. $seoItemIds = array_filter(array_column($dataList, 'seoItemId'));
  140. foreach ($idMapList as $item) {
  141. if (!in_array($item->id, $seoItemIds)) {
  142. $item->delete();
  143. }
  144. foreach ($dataList as $v) {
  145. if ($v['seoItemId'] == $item->id && $v['content'] != $item->content) {
  146. $item->update(['content' => $v['content']]);
  147. }
  148. }
  149. }
  150. foreach ($dataList as $value) {
  151. if (empty($value['seoItemId'])) {
  152. $insertData[] = [
  153. 'content' => $value['content'],
  154. 'created_at' => $datetime,
  155. 'updated_at' => $datetime
  156. ];
  157. }
  158. }
  159. if ($dataList) {
  160. PrySeoItemScope::query()->insert($insertData);
  161. }
  162. return response()->json(['message' => '操作成功']);
  163. }
  164. //优化师分析保存
  165. public function saveAnalyzeSummary(Request $request, $siteId)
  166. {
  167. $dataList = $request->input('dataList') ?? [];
  168. $site = Site::query()->select(['old_id'])->find($siteId);
  169. if (!$site) {
  170. return response()->json(['message' => '站点不存在'], 400);
  171. }
  172. $scopeIds=PryAnalyzeSummary::query()->where(['site_id'=>$siteId])->pluck('id')->toArray();
  173. $requestIds=array_column($dataList,'id');
  174. $delIds=array_diff($scopeIds,$requestIds);
  175. if ($delIds) {
  176. PryAnalyzeSummary::destroy($delIds);
  177. }
  178. foreach ($dataList as $item){
  179. if (empty($item['id'])) {
  180. PryAnalyzeSummary::query()->create([
  181. 'site_id'=>$siteId,
  182. 'old_id'=>$site->old_id,
  183. 'content'=>$item['content'],
  184. ]);
  185. }else {
  186. PryAnalyzeSummary::query()->where(['id'=>$item['id']])
  187. ->update(['content'=>$item['content']]);
  188. }
  189. }
  190. return response()->json(['message' => '操作成功','data'=>PryAnalyzeSummary::query()->where(['site_id'=>$siteId])->get()]);
  191. }
  192. //优化师分析固定话语保存
  193. public function saveAnalyzeSummaryScope(Request $request)
  194. {
  195. $dataList = $request->input('dataList') ?? [];
  196. $scopeIds=PryAnalyzeSummaryScope::query()->pluck('id')->toArray();
  197. $requestIds=array_column($dataList,'id');
  198. $delIds=array_diff($scopeIds,$requestIds);
  199. if ($delIds) {
  200. PryAnalyzeSummaryScope::destroy($delIds);
  201. }
  202. foreach ($dataList as $item){
  203. if (empty($item['id'])) {
  204. PryAnalyzeSummaryScope::query()->create([
  205. 'content'=>$item['content'],
  206. ]);
  207. }else {
  208. PryAnalyzeSummaryScope::query()->where(['id'=>$item['id']])
  209. ->update(['content'=>$item['content']]);
  210. }
  211. }
  212. return response()->json(['message' => '操作成功','data'=>PryAnalyzeSummaryScope::query()->get()]);
  213. }
  214. //社交推广保存
  215. public function saveSocial(Request $request, $siteId)
  216. {
  217. $site = Site::query()->select(['old_id'])->find($siteId);
  218. if (!$site) {
  219. return response()->json(['message' => '站点不存在'], 400);
  220. }
  221. $facebook = $request->input('facebook');
  222. $linkedIn = $request->input('linkedIn');
  223. $twitter = $request->input('twitter');
  224. $pin = $request->input('pin');
  225. $facebookHide = $request->input('facebookHide');
  226. $linkedInHide= $request->input('linkedInHide');
  227. $twitterHide = $request->input('twitterHide');
  228. $pinHide = $request->input('pinHide');
  229. if (PrySocial::query()->where(['site_id' => $siteId])->exists()) {
  230. PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'facebook'])->update([
  231. 'data_list' => json_encode($facebook),
  232. 'hide'=>$facebookHide,
  233. ]);
  234. PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'linkedIn'])->update([
  235. 'data_list' => json_encode($linkedIn),
  236. 'hide'=>$linkedInHide,
  237. ]);
  238. PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'twitter'])->update([
  239. 'data_list' => json_encode($twitter),
  240. 'hide'=>$twitterHide,
  241. ]);
  242. PrySocial::query()->where(['site_id' => $siteId])->where(['type' => 'pin'])->update([
  243. 'data_list' => json_encode($pin),
  244. 'hide'=>$pinHide,
  245. ]);
  246. } else {
  247. PrySocial::query()->create([
  248. 'type' => 'facebook',
  249. 'site_id' => $siteId,
  250. 'old_id' => $site->old_id,
  251. 'data_list' => $facebook,
  252. 'hide'=>$facebookHide
  253. ]);
  254. PrySocial::query()->create([
  255. 'type' => 'linkedIn',
  256. 'site_id' => $siteId,
  257. 'old_id' => $site->old_id,
  258. 'data_list' => $linkedIn,
  259. 'hide'=>$linkedInHide
  260. ]);
  261. PrySocial::query()->create([
  262. 'type' => 'twitter',
  263. 'site_id' => $siteId,
  264. 'old_id' => $site->old_id,
  265. 'data_list' => $twitter,
  266. 'hide'=>$twitterHide
  267. ]);
  268. PrySocial::query()->create([
  269. 'type' => 'pin',
  270. 'site_id' => $siteId,
  271. 'old_id' => $site->old_id,
  272. 'data_list' => $pin,
  273. 'hide'=>$pinHide
  274. ]);
  275. }
  276. return response()->json(['message' => '操作成功']);
  277. }
  278. }