AdController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  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. foreach ($result['data']['rows'] as $k=>$v) {
  193. $result['data']['rows'][$k]['type_name'] = $typeList[$v['typeid']];
  194. $result['data']['rows'][$k]['status_name'] = $statusName[$v['status']];
  195. }
  196. }
  197. return $result?Result::success($result['data']):Result::error($result['message']);
  198. }
  199. /**
  200. * 创建广告位
  201. * @return array
  202. */
  203. public function createAdPlace()
  204. {
  205. $requireData = $this->request->all();
  206. $validator = $this->validationFactory->make(
  207. $requireData,
  208. [
  209. 'name' => 'required', //广告位名称
  210. 'website_id' => 'required',//关联的网站id
  211. 'price' => 'required',//价格
  212. 'thumb'=>'required', //广告示意图
  213. 'typeid'=>'required', //广告类型
  214. 'ad_size_id'=>'required', //广告位大小
  215. 'status'=>'required', //状态
  216. ],
  217. [
  218. 'name.required' => '名称不能为空',
  219. 'website_id.required' => '站点不能为空',
  220. 'price.required' => '价格不能为空',
  221. 'thumb.required'=>'广告示意图必传', //广告示意图
  222. 'typeid.required'=>'广告类型必选', //广告类型
  223. 'ad_size_id.required'=>'广告大小必选', //广告位大小
  224. 'status.required'=>'广告状态必选', //状态
  225. ]
  226. );
  227. if ($validator->fails()){
  228. $errorMessage = $validator->errors()->first();
  229. return Result::error($errorMessage);
  230. }
  231. $result = $this->adServiceClient->createAdPlace($requireData);
  232. return $result?Result::success($result['data']):Result::error($result['message']);
  233. }
  234. public function updateAdPlace()
  235. {
  236. $requireData = $this->request->all();
  237. $validator = $this->validationFactory->make(
  238. $requireData,
  239. [
  240. 'id' => 'required',
  241. 'name' => 'required', //广告位名称
  242. 'website_id' => 'required',//关联的网站id
  243. 'price' => 'required',//价格
  244. 'thumb'=>'required', //广告示意图
  245. 'typeid'=>'required', //广告类型
  246. 'ad_size_id'=>'required', //广告位大小
  247. 'status'=>'required', //状态
  248. ],
  249. [
  250. 'id.required' => 'id不能为空',
  251. 'name.required' => '名称不能为空',
  252. 'website_id.required' => '站点不能为空',
  253. 'price.required' => '价格不能为空',
  254. 'thumb.required'=>'广告示意图必传', //广告示意图
  255. 'typeid.required'=>'广告类型必选', //广告类型
  256. 'ad_size_id.required'=>'广告大小必选', //广告位大小
  257. 'status.required'=>'广告状态必选', //状态
  258. ]
  259. );
  260. if ($validator->fails()){
  261. $errorMessage = $validator->errors()->first();
  262. return Result::error($errorMessage);
  263. }
  264. $result = $this->adServiceClient->updateAdPlace($requireData);
  265. return $result?Result::success($result['data']):Result::error($result['message']);
  266. }
  267. /**
  268. * 删除广告位
  269. * @return array
  270. */
  271. public function delAdPlace()
  272. {
  273. $requireData = $this->request->all();
  274. $validator = $this->validationFactory->make(
  275. $requireData,
  276. [
  277. 'id' => 'required',
  278. ],
  279. [
  280. 'id.required' => 'id不能为空',
  281. ]
  282. );
  283. if ($validator->fails()){
  284. $errorMessage = $validator->errors()->first();
  285. return Result::error($errorMessage);
  286. }
  287. $result = $this->adServiceClient->delAdPlace($requireData);
  288. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  289. }
  290. /**
  291. * 获取广告位详情
  292. * @return array
  293. */
  294. public function getAdPlaceInfo()
  295. {
  296. $requireData = $this->request->all();
  297. $validator = $this->validationFactory->make(
  298. $requireData,
  299. [
  300. 'id' => 'required',
  301. ],
  302. [
  303. 'id.required' => 'id不能为空',
  304. ]
  305. );
  306. if ($validator->fails()){
  307. $errorMessage = $validator->errors()->first();
  308. return Result::error($errorMessage);
  309. }
  310. $result = $this->adServiceClient->getAdPlaceInfo(intval($requireData['id']));
  311. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  312. }
  313. }