NoticesController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. <?php
  2. namespace App\Http\Controllers\Manage\Notice;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Controllers\Manage\Notice\Transformers\NoticeSmsTransformer;
  5. use App\Http\Controllers\Manage\Notice\Transformers\NoticeTransformer;
  6. use App\Libs\SMS;
  7. use App\Modules\Channel\Services\ChannelUserService;
  8. use App\Modules\Notice\Models\Notice;
  9. use App\Modules\Notice\Services\NoticeService;
  10. use App\Modules\Notice\Services\NoticeSmsService;
  11. use Illuminate\Http\Request;
  12. class NoticesController extends Controller
  13. {
  14. /**
  15. * @apiDefine Notice 公告
  16. */
  17. /**
  18. * @apiVersion 1.0.0
  19. * @apiDescription 获取公告列表
  20. * @api {GET} notices 获取公告列表
  21. * @apiGroup Notice
  22. * @apiName notices
  23. * @apiParam {Number} [notice_type_id] 公告分类id.(可不传,不传获取所有分类公告)
  24. * @apiParam {Number} [status] 状态.0:正常状态; -1:删除 (可不传,不传获取所有分类公告)
  25. * @apiSuccess {Number} id 公告ID.
  26. * @apiSuccess {String} is_popup 是否弹出. 0:普通;1:弹框;
  27. * @apiSuccess {String} title 标题.
  28. * @apiSuccess {String} content 内容.
  29. * @apiSuccess {status} status 状态.0:正常状态; -1:删除
  30. * @apiSuccess {String} updated_time 更新时间.
  31. * @apiSuccess {String} type_name 类型名称
  32. * @apiSuccess {Number} type_id 类型ID
  33. * @apiSuccessExample {json} Success-Response:
  34. *
  35. * {
  36. * "code": 0,
  37. * "msg": "",
  38. * "data":
  39. * {
  40. * "list":[
  41. * {
  42. * "id": "121",
  43. * "is_popup": "1",
  44. * "title": "1212-12-12-12",
  45. * "content": "对不起,我爱你",
  46. * "status": 0,
  47. * "updated_time": "2017-12-12 12:12:12"
  48. * "type_name": "测试类型",
  49. * "type_id": 1
  50. * }
  51. * ],
  52. * "meta":{
  53. * "total"=>224,
  54. * "per_page"=>15,
  55. * "current_page"=>1,
  56. * "last_page"=>15,
  57. * "next_page_url"=>"",
  58. * "prev_page_url"=>""
  59. * }
  60. * }
  61. * }
  62. */
  63. function get_list(Request $request)
  64. {
  65. $notice_type_id = $request->has('notice_type_id') ? $request->input('notice_type_id') : '';
  66. $status = $request->has('status') ? $request->input('status') : '';
  67. $notices = NoticeService::getAllNoticeList($notice_type_id, $status);
  68. return response()->pagination(new NoticeTransformer(), $notices);
  69. }
  70. /**
  71. * @apiVersion 1.0.0
  72. * @apiDescription 获取一个公告
  73. * @api {get} getNotice 获取一个公告
  74. * @apiGroup Notice
  75. * @apiName getNotice
  76. * @apiParam {Number} id 公告ID.
  77. * @apiSuccess {String} is_popup 是否弹出. 0:普通;1:弹框;
  78. * @apiSuccess {String} title 标题.
  79. * @apiSuccess {String} content 内容.
  80. * @apiSuccess {status} status 状态.0:正常状态; -1:删除
  81. * @apiSuccess {String} updated_time 更新时间.
  82. * @apiSuccess {String} type_name 类型名称
  83. * @apiSuccess {Number} type_id 类型ID
  84. * @apiSuccessExample {json} Success-Response:
  85. * {
  86. * "code": 0,
  87. * "msg": "",
  88. * "data":{
  89. * "id": "121",
  90. * "is_popup": "1",
  91. * "title": "1212-12-12-12",
  92. * "content": "对不起,我爱你",
  93. * "status": 0,
  94. * "updated_time": "2017-12-12 12:12:12"
  95. * "type_name": "测试类型",
  96. * "type_id": 1
  97. * }
  98. * }
  99. */
  100. function get_notice(Request $request)
  101. {
  102. $id = $request->has('id') ? $request->input('id') : '';
  103. if (!is_numeric($id)) {
  104. return response()->error("PARAM_ERROR");
  105. }
  106. $notice = NoticeService::getNotice($id);
  107. if (empty($notice)) {
  108. return response()->error("PARAM_ERROR");
  109. }
  110. return response()->item(new NoticeTransformer(), $notice);
  111. }
  112. /**
  113. * @apiVersion 1.0.0
  114. * @apiDescription 添加一个公告
  115. * @api {POST} addNotice 添加公告
  116. * @apiGroup Notice
  117. * @apiName addNotice
  118. * @apiParam {Number} [notice_type_id] 公告分类id.
  119. * @apiParam {String} title 公告标题.
  120. * @apiParam {String} content 公告内容.
  121. * @apiParam {Number} is_popup 通知方式. 0:普通;1:弹框;
  122. * @apiSuccessExample {json} Success-Response:
  123. *
  124. * {
  125. * "code": 0,
  126. * "msg": "",
  127. * "data":{}
  128. * }
  129. */
  130. function add_notice(Request $request)
  131. {
  132. $data = $request->all();
  133. $title = $request->has('title') ? $request->input('title') : '';
  134. if (empty($title)) {
  135. return response()->error("PARAM_EMPTY");
  136. }
  137. $content = $request->has('content') ? $request->input('content') : '';
  138. if (empty($content)) {
  139. return response()->error("PARAM_EMPTY");
  140. }
  141. $notice_type_id = $request->has('notice_type_id') ? $request->input('notice_type_id') : '';
  142. $data['is_popup'] = 0;
  143. $data = NoticeService::addNotice($data);
  144. return response()->success();
  145. }
  146. /**
  147. * @apiVersion 1.0.0
  148. * @apiDescription 修改一个公告
  149. * @api {POST} updateNotice 修改一个公告
  150. * @apiGroup Notice
  151. * @apiName updateNotice
  152. * @apiParam {Number} id 公告id.
  153. * @apiParam {Number} [notice_type_id] 公告分类id.
  154. * @apiParam {String} title 公告标题.
  155. * @apiParam {String} content 公告内容.
  156. * @apiParam {Number} [is_popup] 通知方式.0:普通;1:弹框;
  157. * @apiSuccessExample {json} Success-Response:
  158. *
  159. * {
  160. * "code": 0,
  161. * "msg": "",
  162. * "data":{}
  163. * }
  164. */
  165. function update_notice(Request $request)
  166. {
  167. $id = $request->has('id') ? $request->input('id') : '';
  168. if (!is_numeric($id)) {
  169. return response()->error("PARAM_ERROR");
  170. }
  171. $title = $request->has('title') ? $request->input('title') : '';
  172. if (empty($title)) {
  173. return response()->error("PARAM_EMPTY");
  174. }
  175. $content = $request->has('content') ? $request->input('content') : '';
  176. if (empty($content)) {
  177. return response()->error("PARAM_EMPTY");
  178. }
  179. $notice_type_id = $request->has('notice_type_id') ? $request->input('notice_type_id') : '';
  180. $is_popup = $request->has('is_popup') ? $request->input('is_popup') : '';
  181. if (!is_numeric($is_popup)) {
  182. $is_popup = 0;
  183. }
  184. $data['is_popup'] = $is_popup;
  185. $notice = NoticeService::getNotice($id);
  186. if (empty($notice)) {
  187. return response()->error("PARAM_ERROR");
  188. }
  189. $notice['title'] = $title;
  190. $notice['content'] = $content;
  191. $notice['notice_type_id'] = $notice_type_id;
  192. $notice['is_popup'] = $is_popup;
  193. $noticeUp = NoticeService::updateNotice($notice);
  194. return response()->success();
  195. }
  196. /**
  197. * @apiVersion 1.0.0
  198. * @apiDescription 删除一个公告
  199. * @api {POST} rmNotice 删除一个公告
  200. * @apiGroup Notice
  201. * @apiName rmNotice
  202. * @apiParam {Number} id 公告id.
  203. * @apiSuccessExample {json} Success-Response:
  204. *
  205. * {
  206. * "code": 0,
  207. * "msg": "",
  208. * "data":{}
  209. * }
  210. */
  211. function rm_notice(Request $request)
  212. {
  213. $id = $request->has('id') ? $request->input('id') : '';
  214. if (!is_numeric($id)) {
  215. return response()->error("PARAM_ERROR");
  216. }
  217. $notice = NoticeService::getNotice($id);
  218. if (empty($notice)) {
  219. return response()->error("PARAM_ERROR");
  220. }
  221. $notice['status'] = -1;
  222. $noticeUp = NoticeService::updateNotice($notice);
  223. return response()->success();
  224. }
  225. /**
  226. * @apiVersion 1.0.0
  227. * @apiDescription 发送短信通知
  228. * @api {POST} noticeSms 发送短信通知
  229. * @apiGroup Notice
  230. * @apiName noticeSms
  231. * @apiParam {String} phones 公告标题.多个用小写逗号分开 13245677654,13256778989,
  232. * @apiParam {String} content 公告内容.
  233. * @apiSuccessExample {json} Success-Response:
  234. *
  235. * {
  236. * "code": 0,
  237. * "msg": "",
  238. * "data":{}
  239. * }
  240. */
  241. function send_sms(Request $request)
  242. {
  243. $content = $request->has('content') ? $request->input('content') : '';
  244. if (empty($content)) {
  245. return response()->error("PARAM_ERROR");
  246. }
  247. $phoneInput = $request->has('phones') ? $request->input('phones') : '';
  248. if (empty($phoneInput)) {
  249. return response()->error("PARAM_ERROR");
  250. }
  251. if ($phoneInput == 'all') {
  252. $isEnabled = 1;
  253. $params = [
  254. 'is_enabled' => $isEnabled,
  255. ];
  256. $result = ChannelUserService::getChannelList($params, true);
  257. foreach ($result as $rr) {
  258. $phone = $rr->phone;
  259. if (!empty($phone) && strlen($phone) > 10 && strlen($phone) < 15) {
  260. $code = SMS::send($phone, $content);
  261. if ($code && $code == 1) {
  262. //成功
  263. } else {
  264. }
  265. }
  266. }
  267. } else {
  268. $phones = '';
  269. if ($phoneInput) {
  270. $phones = explode(',', $phoneInput);
  271. }
  272. if (empty($phones) || count($phones) == 0) {
  273. return response()->error("PARAM_ERROR");
  274. }
  275. foreach ($phones as $p) {
  276. if (!empty($p) && strlen($p) > 10 && strlen($p) < 15) {
  277. $code = SMS::send($p, $content);
  278. if ($code && $code == 1) {
  279. //成功
  280. } else {
  281. }
  282. }
  283. }
  284. }
  285. $dataSms['phons'] = $phoneInput;
  286. $dataSms['content'] = $content;
  287. $data = NoticeSmsService::addNoticeSms($dataSms);
  288. return response()->success($data);
  289. }
  290. /**
  291. * @apiVersion 1.0.0
  292. * @apiDescription 短信通知列表
  293. * @api {POST} noticeSmsList 短信通知列表
  294. * @apiGroup Notice
  295. * @apiName noticeSmsList
  296. * @apiParam {String} phones 公告标题.多个用小写逗号分开 13245677654,13256778989,
  297. * @apiParam {String} content 公告内容.
  298. * @apiSuccessExample {json} Success-Response:
  299. *
  300. * {
  301. * "code": 0,
  302. * "msg": "",
  303. * "data":{}
  304. * }
  305. */
  306. function send_sms_list(Request $request)
  307. {
  308. $data = NoticeSmsService::getNoticeSms();
  309. return response()->pagination(new NoticeSmsTransformer(), $data);
  310. }
  311. function getNoticeContent(Request $request)
  312. {
  313. $content = $request->has('content') ? $request->input('content') : '';
  314. if (empty($content)) {
  315. return response()->error("PARAM_EMPTY");
  316. }
  317. $content = Notice::getReplyConent($content);
  318. return response()->success(compact('content'));
  319. }
  320. }