LiveController.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\plugins\wxlive\controllers;
  8. use app\models\Level;
  9. use app\models\LiveRoomPurview;
  10. use app\models\SaasUser;
  11. use app\models\User;
  12. use app\plugins\wxlive\models\live\LiveDetailForm;
  13. class LiveController
  14. {
  15. // 获取直播列表
  16. public function actionIndex () {
  17. $liveForm = new LiveDetailForm();
  18. $liveForm->store_id = get_store_id();
  19. $liveForm->page = get_params('pageNo',1);
  20. $liveForm->limit = get_params('pageSize',10);
  21. $res = $liveForm->getLiveList();
  22. if ($res['errcode'] == 0) {
  23. foreach ($res['room_info'] as $k=>$v){
  24. $res['room_info'][$k]['start_time'] = date('Y-m-d H:i:s',$res['room_info'][$k]['start_time']);
  25. $res['room_info'][$k]['end_time'] = date('Y-m-d H:i:s',$res['room_info'][$k]['end_time']);
  26. }
  27. }
  28. return [
  29. 'code' => 0,
  30. 'data' => [
  31. 'list' => $res['errcode'] == 0 ? $res['room_info'] : [],
  32. 'total' => $res['total'],
  33. 'pageNo' => get_params('pageNo',1),
  34. 'pageSize' => get_params('pageSize',10)
  35. ]
  36. ];
  37. }
  38. /**
  39. * @return array|string
  40. * 添加直播间
  41. */
  42. public function actionEdit()
  43. {
  44. $data = post_params();
  45. $liveForm = new LiveDetailForm();
  46. $liveForm->store_id = get_store_id();
  47. $liveForm->data = $data;
  48. $res = $liveForm->submitLive();
  49. if ($res['errcode'] == 0) {
  50. return [
  51. 'code' => 0,
  52. 'msg' => '添加成功'
  53. ];
  54. }
  55. $errorMsg = $res['errmsg'];
  56. if (strpos($errorMsg, 'startTime or endTime is invalid') !== false) {
  57. $errorMsg = '开播时间需要在当前时间的10分钟后 并且 开始时间不能在 6 个月后,开播时间和结束时间间隔不得短于30分钟,不得超过24小时';
  58. }
  59. if (strpos($errorMsg, 'name length is invalid') !== false) {
  60. $errorMsg = '直播间名字,最短3个汉字,最长17个汉字,1个汉字相当于2个字符';
  61. }
  62. return [
  63. 'code' => 1,
  64. 'msg' => $errorMsg,
  65. ];
  66. }
  67. public function actionDelete()
  68. {
  69. $liveForm = new LiveDetailForm();
  70. $liveForm->store_id = get_store_id();
  71. $liveForm->roomId = post_params('roomId');
  72. $res = $liveForm->deleteRoom();
  73. if ($res['errcode'] == 0) {
  74. return [
  75. 'code' => 0,
  76. 'msg' => '删除成功'
  77. ];
  78. }
  79. return [
  80. 'code' => 1,
  81. 'msg' => $res['errmsg']
  82. ];
  83. }
  84. /**
  85. * 直播间添加商品
  86. */
  87. public function actionGoodsAdd () {
  88. $data = post_params();
  89. $liveForm = new LiveDetailForm();
  90. $liveForm->store_id = get_store_id();
  91. $liveForm->goods_id = $data['goods_group'];
  92. $liveForm->roomId = $data['roomId'];
  93. $res = $liveForm->addGoods();
  94. if ($res['errcode'] == 0) {
  95. return [
  96. 'code' => 0,
  97. 'msg' => '添加成功'
  98. ];
  99. }
  100. return [
  101. 'code' => 1,
  102. 'msg' => $res['errmsg']
  103. ];
  104. }
  105. /**
  106. * 回放列表
  107. */
  108. public function actionHuifang () {
  109. $liveForm = new LiveDetailForm();
  110. $liveForm->store_id = get_store_id();
  111. $liveForm->roomid = get_params('roomid',0);
  112. $res = $liveForm->getHuifang();
  113. return [
  114. 'code' => 0,
  115. 'data' => [
  116. 'list' => $res['errcode'] == 0 ? $res['live_replay'] : []
  117. ]
  118. ];
  119. }
  120. /**
  121. * 获取media
  122. */
  123. public function actionGetMedia () {
  124. $liveForm = new LiveDetailForm();
  125. $liveForm->store_id = get_store_id();
  126. $liveForm->file = get_params('img_url');
  127. $res = $liveForm->getMedia();
  128. if (!empty($res['errcode'])) {
  129. return [
  130. 'code' => 1,
  131. 'msg' => '网络异常,请稍后再试',
  132. ];
  133. }
  134. return [
  135. 'code' => 0,
  136. 'data' => $res
  137. ];
  138. }
  139. /**
  140. * 获取已经审核通过的商品列表
  141. * @return array
  142. * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
  143. * @throws \GuzzleHttp\Exception\GuzzleException
  144. */
  145. public function actionGetGoods()
  146. {
  147. $liveForm = new LiveDetailForm();
  148. $liveForm->store_id = get_store_id();
  149. $liveForm->page = get_params('pageNo',1);
  150. $liveForm->limit = get_params('pageSize',10);
  151. $res = $liveForm->getGoodsList();
  152. if ($res['errcode'] == 0) {
  153. return [
  154. 'code' => 0,
  155. 'data' => [
  156. 'total' => $res['total'],
  157. 'list' => $res['goods'],
  158. ]
  159. ];
  160. }
  161. return [
  162. 'code' => 1,
  163. 'msg' => $res['errmsg']
  164. ];
  165. }
  166. /* begin 2023/12/11 16:53:03 WPing丶 */
  167. /**
  168. * 模块名:actionLiveRoomPurviewEdit
  169. * 代码描述:直播间权限修改
  170. * 作者:WPing丶
  171. * 请求方式:GET/POST
  172. * 创建时间:2023/12/11 16:53:45
  173. * @param int room_id 直播间ID
  174. * @param int type 可见范围:0=所有人;1=指定用户;2=指定会员;
  175. * @param array user_id 用户ID
  176. * @param array level_id 会员等级ID
  177. */
  178. public function actionLiveRoomPurviewEdit()
  179. {
  180. $request = \Yii::$app->request;
  181. $store_id = get_store_id();
  182. if($request->isGet) {//获取
  183. $room_id = get_params('room_id');
  184. $lrp = LiveRoomPurview::findOne(['room_id' => $room_id, 'store_id' => $store_id, 'is_delete' => 0]);
  185. $checked_level = explode(',', $lrp->level_id);
  186. $level_list = Level::find()->where(['store_id' => $store_id, 'is_delete' => 0, 'status' => 1])->select('id,name')->asArray()->all();
  187. foreach($level_list as &$level) {
  188. if(in_array($level['id'], $checked_level)) {
  189. $level['checked'] = 1;
  190. } else {
  191. $level['checked'] = 0;
  192. }
  193. }
  194. $user_checked_list = [];
  195. $checked_user = explode(',', $lrp->user_id);
  196. if(count($checked_user) > 0) {
  197. $user_checked_list = User::find()->alias('u')
  198. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  199. ->where(['u.id' => $checked_user])
  200. ->select('u.id,su.name,su.avatar')
  201. ->asArray()->all();
  202. }
  203. return [
  204. 'code' => 0,
  205. 'data' => [
  206. 'level_list' => $level_list,
  207. 'checked_level' => $checked_level,
  208. 'type' => $lrp->type,
  209. 'user_checked_list' => $user_checked_list,
  210. ]
  211. ];
  212. }
  213. if ($request->isPost){//保存
  214. $post_params = post_params();
  215. $lrp = LiveRoomPurview::findOne(['room_id' => $post_params['room_id'], 'store_id' => $store_id, 'is_delete' => 0]);
  216. if(!$lrp) {
  217. $lrp = new LiveRoomPurview();
  218. $lrp->room_id = $post_params['room_id'];
  219. $lrp->store_id = $store_id;
  220. }
  221. $lrp->type = $post_params['type'];
  222. $lrp->user_id = implode(',',$post_params['user_list']);
  223. $lrp->level_id = implode(',',$post_params['level_list']);
  224. if(!$lrp->save()) {
  225. return [
  226. 'code' => 1,
  227. 'msg' => '修改失败'
  228. ];
  229. }
  230. return [
  231. 'code' => 0,
  232. 'msg' => '修改成功'
  233. ];
  234. }
  235. }
  236. /* end */
  237. }