AdController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\AdServiceInterface;
  5. use App\Tools\PublicData;
  6. use Hyperf\Di\Annotation\Inject;
  7. use Hyperf\HttpServer\Annotation\AutoController;
  8. use App\Tools\Result;
  9. use App\Constants\ErrorCode;
  10. use Hyperf\Logger;
  11. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  12. use Hyperf\Context\Context;
  13. /**
  14. * Class AdController
  15. * @package App\Controller
  16. */
  17. //#[AutoController]
  18. class AdController extends AbstractController
  19. {
  20. #[Inject]
  21. protected ValidatorFactoryInterface $validationFactory;
  22. /**
  23. * @var AdServiceInterface
  24. */
  25. #[Inject]
  26. private $adServiceClient;
  27. /**
  28. * 创建广告-todo
  29. * @return array
  30. */
  31. public function createAd()
  32. {
  33. $requireData = $this->request->all();
  34. $validator = $this->validationFactory->make(
  35. $requireData,
  36. [
  37. 'name' => 'required',
  38. 'website_id' => 'required',
  39. 'price' => 'required',
  40. ],
  41. [
  42. 'name.required' => '名称不能为空',
  43. 'website_id.required' => '站点不能为空',
  44. 'price.required' => '价格不能为空',
  45. ]
  46. );
  47. if ($validator->fails()){
  48. $errorMessage = $validator->errors()->first();
  49. return Result::error($errorMessage);
  50. }
  51. $result = $this->adServiceClient->createAd($requireData);
  52. return $result?Result::success($result['data']):Result::error($result['message']);
  53. }
  54. /**
  55. * @return array|void
  56. */
  57. public function getAdInfo()
  58. {
  59. $requireData = $this->request->all();
  60. $validator = $this->validationFactory->make(
  61. $requireData,
  62. [
  63. 'id' => 'required',
  64. ],
  65. [
  66. 'id.required' => 'id不能为空',
  67. ]
  68. );
  69. if ($validator->fails()){
  70. $errorMessage = $validator->errors()->first();
  71. return Result::error($errorMessage);
  72. }
  73. $id = (int)$requireData['id'];
  74. $result = $this->adServiceClient->getAdInfo($id);
  75. if ($result['code'] != ErrorCode::SUCCESS) {
  76. return Result::error($result['message'],0);
  77. }
  78. return Result::success($result['data']);
  79. }
  80. /**
  81. * 获取广告列表
  82. * @return array
  83. */
  84. public function getAdList()
  85. {
  86. $requireData = $this->request->all();
  87. $validator = $this->validationFactory->make(
  88. $requireData,
  89. [
  90. 'pid'=> 'required',
  91. 'page' => 'required',
  92. 'pageSize' => 'required',
  93. ],
  94. [
  95. 'pid.required' => '广告位id不能为空',
  96. 'page.required' => '页码数不能为空',
  97. 'pageSize.required' => '每页显示条数不能为空',
  98. ]
  99. );
  100. if ($validator->fails()){
  101. $errorMessage = $validator->errors()->first();
  102. return Result::error($errorMessage);
  103. }
  104. $nowTime = date("Y-m-d H:i:s");
  105. $result = $this->adServiceClient->getAdList($requireData);
  106. if($result['data']){
  107. $typeList = ['1'=>'文字','2'=>'图文'];
  108. $statusName = ['1'=>'通过','2'=>'待审'];
  109. foreach ($result['data']['rows'] as $k=>$v) {
  110. $result['data']['rows'][$k]['type_name'] = $typeList[$v['typeid']];
  111. $result['data']['rows'][$k]['status_name'] = $statusName[$v['status']];
  112. $result['data']['rows'][$k]['day'] = PublicData::residueDay(date("Y-m-d H:i:s"),$v['totime'])>0?PublicData::residueDay(date("Y-m-d H:i:s"),$v['totime']):0;
  113. if($nowTime<$v['fromtime']){
  114. $result['data']['rows'][$k]['runing_name'] = '未开始';
  115. }else if($nowTime>$v['totime']){
  116. $result['data']['rows'][$k]['runing_name'] = '已过期';
  117. }else{
  118. $result['data']['rows'][$k]['runing_name'] = '投放中';
  119. }
  120. }
  121. }
  122. return $result?Result::success($result['data']):Result::error($result['message']);
  123. }
  124. public function updateAd()
  125. {
  126. $requireData = $this->request->all();
  127. $validator = $this->validationFactory->make(
  128. $requireData,
  129. [
  130. 'name' => 'required',
  131. 'status' => 'required',
  132. ],
  133. [
  134. 'name.required' => '名称不能为空',
  135. 'status.required' => '状态不能为空',
  136. ]
  137. );
  138. if ($validator->fails()){
  139. $errorMessage = $validator->errors()->first();
  140. return Result::error($errorMessage);
  141. }
  142. $requireData = $this->request->all();
  143. $result = $this->adServiceClient->updateAd($requireData);
  144. return $result?Result::success($result['data']):Result::error($result['message']);
  145. }
  146. public function delAd()
  147. {
  148. $requireData = $this->request->all();
  149. $validator = $this->validationFactory->make(
  150. $requireData,
  151. [
  152. 'id' => 'required',
  153. ],
  154. [
  155. 'id.required' => 'id不能为空',
  156. ]
  157. );
  158. if ($validator->fails()){
  159. $errorMessage = $validator->errors()->first();
  160. return Result::error($errorMessage);
  161. }
  162. $result = $this->adServiceClient->delAd($requireData);
  163. var_dump($result);
  164. return $result?Result::success($result['data']):Result::error($result['message']);
  165. }
  166. /**
  167. * 获取广告位列表
  168. * @return array
  169. */
  170. public function getAdPlaceList()
  171. {
  172. $requireData = $this->request->all();
  173. $validator = $this->validationFactory->make(
  174. $requireData,
  175. [
  176. 'page' => 'required',
  177. 'pageSize' => 'required',
  178. ],
  179. [
  180. 'page.required' => '页码数不能为空',
  181. 'pageSize.required' => '每页显示条数不能为空',
  182. ]
  183. );
  184. if ($validator->fails()){
  185. $errorMessage = $validator->errors()->first();
  186. return Result::error($errorMessage);
  187. }
  188. $result = $this->adServiceClient->getAdPlaceList($requireData);
  189. if($result['data']){
  190. $typeList = ['1'=>'文字','2'=>'图文'];
  191. $statusName = ['1'=>'通过','2'=>'待审'];
  192. if(!empty($result['data']['rows'])){
  193. foreach ($result['data']['rows'] as $k=>$v) {
  194. if(!empty($result['data']['rows'][$k]['type_name']) && !empty($result['data']['rows'][$k]['status_name'])){
  195. $result['data']['rows'][$k]['type_name'] = $typeList[$v['typeid']];
  196. $result['data']['rows'][$k]['status_name'] = $statusName[$v['status']];
  197. }
  198. }
  199. }
  200. }
  201. return $result?Result::success($result['data']):Result::error($result['message']);
  202. }
  203. /**
  204. * 创建广告位
  205. * @return array
  206. */
  207. public function createAdPlace()
  208. {
  209. $requireData = $this->request->all();
  210. $validator = $this->validationFactory->make(
  211. $requireData,
  212. [
  213. 'name' => 'required', //广告位名称
  214. 'website_id' => 'required',//关联的网站id
  215. 'price' => 'required',//价格
  216. 'thumb'=>'required', //广告示意图
  217. 'typeid'=>'required', //广告类型
  218. 'ad_size_id'=>'required', //广告位大小
  219. 'status'=>'required', //状态
  220. ],
  221. [
  222. 'name.required' => '名称不能为空',
  223. 'website_id.required' => '站点不能为空',
  224. 'price.required' => '价格不能为空',
  225. 'thumb.required'=>'广告示意图必传', //广告示意图
  226. 'typeid.required'=>'广告类型必选', //广告类型
  227. 'ad_size_id.required'=>'广告大小必选', //广告位大小
  228. 'status.required'=>'广告状态必选', //状态
  229. ]
  230. );
  231. if ($validator->fails()){
  232. $errorMessage = $validator->errors()->first();
  233. return Result::error($errorMessage);
  234. }
  235. $result = $this->adServiceClient->createAdPlace($requireData);
  236. return $result?Result::success($result['data']):Result::error($result['message']);
  237. }
  238. public function updateAdPlace()
  239. {
  240. $requireData = $this->request->all();
  241. $validator = $this->validationFactory->make(
  242. $requireData,
  243. [
  244. 'id' => 'required',
  245. 'name' => 'required', //广告位名称
  246. 'website_id' => 'required',//关联的网站id
  247. 'price' => 'required',//价格
  248. 'thumb'=>'required', //广告示意图
  249. 'typeid'=>'required', //广告类型
  250. 'ad_size_id'=>'required', //广告位大小
  251. 'status'=>'required', //状态
  252. ],
  253. [
  254. 'id.required' => 'id不能为空',
  255. 'name.required' => '名称不能为空',
  256. 'website_id.required' => '站点不能为空',
  257. 'price.required' => '价格不能为空',
  258. 'thumb.required'=>'广告示意图必传', //广告示意图
  259. 'typeid.required'=>'广告类型必选', //广告类型
  260. 'ad_size_id.required'=>'广告大小必选', //广告位大小
  261. 'status.required'=>'广告状态必选', //状态
  262. ]
  263. );
  264. if ($validator->fails()){
  265. $errorMessage = $validator->errors()->first();
  266. return Result::error($errorMessage);
  267. }
  268. $result = $this->adServiceClient->updateAdPlace($requireData);
  269. return $result?Result::success($result['data']):Result::error($result['message']);
  270. }
  271. /**
  272. * 删除广告位
  273. * @return array
  274. */
  275. public function delAdPlace()
  276. {
  277. $requireData = $this->request->all();
  278. $validator = $this->validationFactory->make(
  279. $requireData,
  280. [
  281. 'id' => 'required',
  282. ],
  283. [
  284. 'id.required' => 'id不能为空',
  285. ]
  286. );
  287. if ($validator->fails()){
  288. $errorMessage = $validator->errors()->first();
  289. return Result::error($errorMessage);
  290. }
  291. $result = $this->adServiceClient->delAdPlace($requireData);
  292. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  293. }
  294. /**
  295. * 获取广告位详情
  296. * @return array
  297. */
  298. public function getAdPlaceInfo()
  299. {
  300. $requireData = $this->request->all();
  301. $validator = $this->validationFactory->make(
  302. $requireData,
  303. [
  304. 'id' => 'required',
  305. ],
  306. [
  307. 'id.required' => 'id不能为空',
  308. ]
  309. );
  310. if ($validator->fails()){
  311. $errorMessage = $validator->errors()->first();
  312. return Result::error($errorMessage);
  313. }
  314. $result = $this->adServiceClient->getAdPlaceInfo(intval($requireData['id']));
  315. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  316. }
  317. }