Member.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkAdmin
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2014~2019 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://demo.thinkadmin.top
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( https://mit-license.org )
  10. // +----------------------------------------------------------------------
  11. // | gitee 代码仓库:https://gitee.com/zoujingli/ThinkAdmin
  12. // | github 代码仓库:https://github.com/zoujingli/ThinkAdmin
  13. // +----------------------------------------------------------------------
  14. namespace app\api\controller;
  15. use app\api\controller\Base;
  16. use app\api\model\Member as MemberModel;
  17. use think\Db;
  18. use think\db\Query;
  19. use think\Model;
  20. use app\api\controller\Login;
  21. /**
  22. * @title 会员管理
  23. * @controller Member
  24. * @group base
  25. */
  26. class Member extends Base
  27. {
  28. function initialize()
  29. {
  30. $this->check_login();
  31. }
  32. /**
  33. * @title 个人信息
  34. * @desc 个人信息
  35. * @author QGF
  36. * @url /api/Member/member_info
  37. * @method GET
  38. * @tag 个人信息
  39. * @header name:Authorization require:1 desc:Token
  40. * @return name:phone type:int default:-- desc:手机号
  41. * @return name:name type:string default:-- desc:姓名
  42. * @return name:headimg type:string default:-- desc:头像地址
  43. * @return name:openid_app type:string default:-- desc:微信openid(APP端)
  44. * @return name:hx_username type:string default:-- desc:环信注册的用户名
  45. * @return name:hx_password type:string default:-- desc:环信注册的密码
  46. * @return name:hx_uid type:string default:-- desc:环信注册的ID
  47. * @return name:is_anchor type:string default:-- desc:是不是主播(0:不是,1:是)
  48. * @return name:not_start_broadcast type:string default:-- desc:是否有未开播的直播间(0:没有,1:有(只要主播该字段可能为1,有未开播的直播间就不能再创建新的直播间了))
  49. */
  50. public function member_info(){
  51. $uid = $this->uid;
  52. $field = 'phone,name,headimg,status,openid_app,is_anchor,hx_username,hx_password,hx_uid';
  53. $user_info = Db::name('store_member')->field($field)->where('id',$uid)->find();
  54. if(empty($user_info)){
  55. $this->error('用户信息不正确');
  56. }
  57. if($user_info['status'] == 0){
  58. $this->error('该用户已被禁用');
  59. }
  60. //如果是主播查看是否有待开播的直播间
  61. $user_info['not_start_broadcast'] = 0;
  62. if($user_info['is_anchor']){
  63. $broadcast_id = Db::name('store_broadcast_room')->where('user_id',$uid)->where('status',0)->value('id');
  64. $user_info['not_start_broadcast'] = $broadcast_id?1:0;
  65. }
  66. unset($user_info['status']);
  67. $this->success('获取成功',$user_info);
  68. }
  69. /**
  70. * @title 编辑个人信息
  71. * @desc 编辑个人信息
  72. * @author QGF
  73. * @url /api/Member/edit_member_info
  74. * @method POST
  75. * @tag 编辑信息
  76. * @header name:Authorization require:1 desc:Token
  77. * @param name:headimg type:string require:0 default:-- desc:头像地址
  78. * @param name:name type:string require:0 default:-- desc:姓名
  79. * @param name:phone type:string require:0 default:-- desc:手机号
  80. */
  81. public function edit_member_info(){
  82. $uid = $this->uid;
  83. $headimg = input('headimg');
  84. $name = input('name');
  85. $phone = input('phone');
  86. if(empty($headimg) && empty($name) && empty($phone)){
  87. $this->error('参数错误');
  88. }
  89. $member_info = Db::name('store_member')->field('phone,name,headimg')->where('id',$uid)->find();
  90. if($member_info['headimg'] == $headimg && $member_info['name'] == $name && $member_info['phone'] == $phone){
  91. $this->error('没有要修改的信息');
  92. }
  93. $updata = array();
  94. if($headimg){
  95. $updata['headimg'] = $headimg;
  96. }
  97. if($name){
  98. $updata['name'] = $name;
  99. }
  100. if($phone){
  101. //查看该手机号是否已注册
  102. $member_id = Db::name('store_member')->where('phone',$phone)->where('id','<>',$uid)->value('id');
  103. if($member_id){
  104. $this->error('改手机号已被注册');
  105. }
  106. $updata['phone'] = $phone;
  107. }
  108. Db::name('store_member')->where('id',$uid)->update($updata);
  109. $this->success('编辑成功');
  110. }
  111. /**
  112. * @title 验证手机号
  113. * @desc 验证手机号
  114. * @author QGF
  115. * @url /api/Member/verify_phone
  116. * @method POST
  117. * @tag 验证手机号
  118. * @header name:Authorization require:1 desc:Token
  119. * @param name:phone type:string require:1 default:-- desc:手机号
  120. * @param name:code type:string require:1 default:-- desc:验证码
  121. */
  122. public function verify_phone(){
  123. $phone = input('phone');
  124. $code = input('code');
  125. if(empty($phone) || empty($code)){
  126. $this->error('参数错误');
  127. }
  128. $login_obj = new Login();
  129. $sms_id = $login_obj->verify_sms($phone,$code);
  130. if(empty($sms_id)){
  131. $this->error('验证码不正确');
  132. }
  133. Db::name('store_member_sms')->where('id',$sms_id)->update(array('used'=>1));
  134. $this->success('验证成功');
  135. }
  136. /**
  137. * @title 修改登录密码
  138. * @desc 修改登录密码
  139. * @author QGF
  140. * @url /api/Member/update_password
  141. * @method POST
  142. * @tag 修改登录密码
  143. * @header name:Authorization require:1 desc:Token
  144. * @param name:password_old type:string require:0 default:-- desc:原密码
  145. * @param name:password type:string require:1 default:-- desc:修改的密码
  146. * @param name:password_again type:string require:1 default:-- desc:修改的密码(重复)
  147. */
  148. public function update_password(){
  149. $uid = $this->uid;
  150. $password = input('password');
  151. $password_again = input('password_again');
  152. $password_old = input('password_old');
  153. if(empty($password_old) ||empty($password) || empty($password_again)){
  154. $this ->error('参数错误');
  155. }
  156. if($password != $password_again){
  157. $this ->error('两次密码不一致');
  158. }
  159. $member_password = Db::name('store_member')->where('id',$uid)->value('decode_password');
  160. if($password_old != $member_password){
  161. $this ->error('原密码不正确');
  162. }
  163. if($password == $member_password){
  164. $this ->error('要修改的密码和原密码一致,无需修改');
  165. }
  166. $update_data = array(
  167. 'password'=>md5($password),
  168. 'decode_password'=>$password
  169. );
  170. Db::name('store_member')->where('id',$uid)->update($update_data);
  171. $this->success('设置成功');
  172. }
  173. /**
  174. * @title 绑定微信(app)
  175. * @desc 绑定微信
  176. * @author QGF
  177. * @url /api/Member/bind_we_chat
  178. * @method POST
  179. * @tag 绑定微信
  180. * @param name:code type:int require:1 default:-- desc:code值
  181. */
  182. public function bind_we_chat(){
  183. $uid = $this->uid;
  184. $code = input('code');
  185. if(empty($code)){
  186. $this->error('参数错误');
  187. }
  188. $res = requestGet('https://api.weixin.qq.com/sns/oauth2/access_token?appid='.config('app_program')['app_id'].'&secret='.config('app_program')['secret'].'&code='.$code.'&grant_type=authorization_code');
  189. $res = json_decode($res,true);
  190. $user_info = requestGet('https://api.weixin.qq.com/sns/userinfo?access_token='.$res['access_token'].'&openid='.$res['openid']);
  191. $user_info = json_decode($user_info,true);
  192. $data['openid'] = $user_info['openid'];
  193. $openid_app = Db::name('store_member')->where('id',$uid)->value('openid_app');
  194. if($openid_app){
  195. $this->error('你已经绑定微信了');
  196. }
  197. $member_id = Db::name('store_member')->where('openid_app',$data['openid'])->value('id');
  198. if($member_id){
  199. $this->error('该微信已被其他账号绑定');
  200. }else{
  201. Db::name('store_member')->where('openid_app',$data['openid'])->update(array('openid_app'=>$data['openid']));
  202. $this->success('绑定成功');
  203. }
  204. }
  205. /**
  206. * @title 我的课程列表
  207. * @desc 我的课程列表
  208. * @author QGF
  209. * @url /api/Member/my_course_list
  210. * @method GET
  211. * @tag 我的课程列表
  212. * @param name:page type:int require:0 default:1 desc:页数(默认为1)
  213. * @param name:page_size type:int require:0 default:10 desc:每页数量(默认为10)
  214. * @param name:type type:int require:1 default:1 desc:类型(1:付费课程(默认),2:直播课程)
  215. * @return name:-- type:array default:-- desc:课程信息(goods_id:课程ID,goods_name:课程名称,goods_cover:封面图片地址)
  216. */
  217. public function my_course_list(){
  218. $uid = $this->uid;
  219. $type = input('type',1);
  220. $page = input('page',1);
  221. $pageSize = input('page_size',10);
  222. if($type == 1){
  223. $list = Db::name('store_order')->field('goods_id')->where('type',1)->where('user_id',$uid)->where('status','in',[1,2])->order('id desc')->page($page,$pageSize)->select();
  224. if($list){
  225. foreach ($list as &$value){
  226. $goods_info = Db::name('store_goods')->field('name,cover')->where('id',$value['goods_id'])->find();
  227. $value['goods_name'] = $goods_info['name'];
  228. $value['goods_cover'] = $goods_info['cover'];
  229. }
  230. }
  231. }else{
  232. $list = Db::name('store_order_live')->field('course_id')->where('user_id',$uid)->where('status','in',[1,2])->order('id desc')->page($page,$pageSize)->select();
  233. if($list){
  234. foreach ($list as &$value){
  235. $value['goods_id'] = $value['course_id'];
  236. $goods_info = Db::name('store_live_course')->field('title,image')->where('id',$value['course_id'])->find();
  237. $value['goods_name'] = $goods_info['title'];
  238. $value['goods_cover'] = $goods_info['image'];
  239. unset($value['course_id']);
  240. }
  241. }
  242. }
  243. $this->success('获取成功',$list);
  244. }
  245. /**
  246. * @title 获取配置信息
  247. * @desc 获取配置信息
  248. * @author QGF
  249. * @url /api/Member/information
  250. * @method GET
  251. * @tag 信息
  252. * @header name:Authorization require:1 desc:Token
  253. * @return name:wx_service_code type:string default:-- desc:微信客服二维码地址
  254. * @return name:service_phone_two type:string default:-- desc:QQ客服二维码地址
  255. * @return name:we_chat_one type:string default:-- desc:客服手机号
  256. */
  257. public function information(){
  258. $data = array(
  259. 'wx_service_code' => sysconf('wx_service_code'),
  260. 'qq_service_code' => sysconf('qq_service_code'),
  261. 'serve_phone' => sysconf('serve_phone'),
  262. );
  263. $this->success('获取成功',$data);
  264. }
  265. }