User.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <?php
  2. namespace Task\Src;
  3. use Dever;
  4. use Task\Lib\Base;
  5. class User extends Base
  6. {
  7. public function __construct()
  8. {
  9. parent::__construct();
  10. $this->checkLogin();
  11. }
  12. public function menu()
  13. {
  14. $menu = Dever::db('main/menu')->state();
  15. # 获取消息
  16. $msg = Dever::load('message/lib/data.num', $this->data['uid']);
  17. foreach ($menu as $k => $v) {
  18. $menu[$k]['icon'] = $v['icon'];
  19. if ($v['icon'] == 'ico-account' && $msg) {
  20. $menu[$k]['icon'] .= ' ico-msg';
  21. }
  22. }
  23. return $menu;
  24. }
  25. public function config()
  26. {
  27. # 资料认证
  28. $config['submit'] = $this->url('task/user.submit', array('uid' => $this->data['uid']));
  29. # 完善资料
  30. $config['set'] = $this->url('task/user.set', array('uid' => $this->data['uid']));
  31. return $config;
  32. }
  33. /**
  34. * 用户基本信息
  35. *
  36. * @return mixed
  37. */
  38. public function one()
  39. {
  40. $user = $this->user;
  41. # 获取消息
  42. $user['msg'] = Dever::load('message/lib/data.num', $this->data['uid']);
  43. # 获取退出链接
  44. $user['quit'] = Dever::url('login.quit', 'passport');
  45. # 获取头衔
  46. $user['group_name'] = $this->group();
  47. # 获取手机号
  48. $user['mobile'] = Dever::hide($user['mobile']);
  49. return $user;
  50. }
  51. # 获取头衔
  52. private function group()
  53. {
  54. $name = '';
  55. $where['uid'] = $this->data['uid'];
  56. $score = Dever::db('task/user_score')->one($where);
  57. $score = $score['score'];
  58. $group = Dever::db('task/user_group')->one(array('uid' => $this->data['uid']));
  59. if ($group) {
  60. $group_num = Dever::db('task/user_group')->total(array('group_id' => $group['id']));
  61. } else {
  62. $group_num = 0;
  63. }
  64. # 获取用户等级
  65. $level = Dever::db('task/user_level')->state();
  66. if ($level) {
  67. foreach ($level as $k => $v) {
  68. if ($v['member'] > 0 && $group_num >= $v['member'] && $v['score'] > 0 && $score >= $v['score']) {
  69. $name = $v['name'];
  70. break;
  71. } elseif ($v['member'] <= 0 && $v['score'] >= 0 && $score >= $v['score']) {
  72. $name = $v['name'];
  73. break;
  74. }
  75. }
  76. }
  77. return $name;
  78. }
  79. /**
  80. * 用户消息列表
  81. *
  82. * @return mixed
  83. */
  84. public function msg()
  85. {
  86. $data = Dever::load('message/lib/data.read', $this->data['uid'], false, true);
  87. return $data;
  88. }
  89. /**
  90. * 检测是否已经完善资料
  91. *
  92. * @return mixed
  93. */
  94. public function set_check()
  95. {
  96. $where['uid'] = $this->data['uid'];
  97. $user = Dever::db('task/user_score')->one($where);
  98. if ($user) {
  99. return Dever::location($this->refer());
  100. }
  101. }
  102. /**
  103. * 完善资料
  104. *
  105. * @return mixed
  106. */
  107. public function set()
  108. {
  109. return $this->set_action();
  110. }
  111. /**
  112. * 填写资料
  113. *
  114. * @return mixed
  115. */
  116. private function set_action()
  117. {
  118. $where['uid'] = $this->data['uid'];
  119. $user = Dever::db('task/user_score')->one($where);
  120. $edit = Dever::input('edit');
  121. if ($user && !$edit) {
  122. Dever::alert('你已经填写过资料了');
  123. }
  124. $username = Dever::input('username');
  125. $code = Dever::input('code');
  126. $sex = Dever::input('sex');
  127. if (!$username) {
  128. Dever::alert('用户昵称不能为空');
  129. }
  130. if (!$sex && $sex != 0) {
  131. Dever::alert('性别不能为空');
  132. }
  133. if ($code) {
  134. # 加入小队
  135. $group = Dever::db('task/user_group')->one(array('code' => $code));
  136. if ($group && $group['uid'] != $this->data['uid']) {
  137. $info = Dever::db('task/user_group_member')->one(array('uid' => $this->data['uid'], 'group_id' => $group['id']));
  138. if (!$info) {
  139. $member['group_id'] = $group['id'];
  140. $member['uid'] = $this->data['uid'];
  141. $member['status'] = 2;
  142. Dever::db('task/user_group_member')->insert($member);
  143. }
  144. } else {
  145. Dever::alert('邀请码错误');
  146. }
  147. }
  148. $avatar = Dever::input('avatar');
  149. if (!$avatar) {
  150. # 设置默认头像
  151. $config = Dever::db('main/config-one');
  152. Dever::setInput('avatar', $config['avatar']);
  153. }
  154. Dever::load('passport/user')->updateInfo();
  155. if (!$user) {
  156. $insert['uid'] = $this->data['uid'];
  157. $insert['score'] = 0;
  158. $insert['code'] = $code;
  159. Dever::db('task/user_score')->insert($insert);
  160. }
  161. return $this->refer();
  162. }
  163. /**
  164. * 检测是否已经认证
  165. *
  166. * @return mixed
  167. */
  168. public function info_check()
  169. {
  170. $info = $this->info();
  171. if (!$info) {
  172. return Dever::location(Dever::url('user/info_certify', 'main'));
  173. }
  174. if ($info['status'] == 1) {
  175. $info['show'] = '审核中';
  176. $info['class'] = 'disable';
  177. } elseif ($info['status'] == 2) {
  178. $info['show'] = '已认证';
  179. $info['class'] = 'mb-success';
  180. } else {
  181. $info['show'] = '未通过';
  182. $info['class'] = '';
  183. }
  184. return $info;
  185. }
  186. /**
  187. * 用户资料
  188. *
  189. * @return mixed
  190. */
  191. public function info()
  192. {
  193. # 检测用户是否认证
  194. $where['uid'] = $this->data['uid'];
  195. return Dever::db('task/user_info')->one($where);
  196. }
  197. /**
  198. * 资料认证
  199. *
  200. * @return mixed
  201. */
  202. public function submit()
  203. {
  204. return $this->submit_action();
  205. }
  206. /**
  207. * 立刻认证
  208. *
  209. * @return mixed
  210. */
  211. private function submit_action()
  212. {
  213. $user = $this->info();
  214. $truename = Dever::input('truename');
  215. $card = Dever::input('card');
  216. $card_front = Dever::input('card_front');
  217. $card_end = Dever::input('card_end');
  218. $wechat = Dever::input('wechat');
  219. $alipay = Dever::input('alipay');
  220. $refresh = array('element' => '#submit', 'attr' => 'dever-refresh', 'value' => Dever::load("task/user.config#submit"));
  221. if (!$truename) {
  222. Dever::alert('真实姓名不能为空', $refresh);
  223. }
  224. if (!$card) {
  225. Dever::alert('身份证号不能为空', $refresh);
  226. }
  227. if (!$card_front) {
  228. Dever::alert('身份证正面不能为空', $refresh);
  229. }
  230. if (!$card_end) {
  231. Dever::alert('身份证反面不能为空', $refresh);
  232. }
  233. if (!$wechat && !$alipay) {
  234. Dever::alert('微信号或者支付宝账号不能为空', $refresh);
  235. }
  236. if (!$user) {
  237. $insert['uid'] = $this->data['uid'];
  238. $insert['truename'] = $truename;
  239. $insert['card'] = $card;
  240. $insert['card_front'] = $card_front;
  241. $insert['card_end'] = $card_end;
  242. $insert['wechat'] = $wechat;
  243. $insert['alipay'] = $alipay;
  244. $insert['status'] = 1;
  245. Dever::db('task/user_info')->insert($insert);
  246. } else {
  247. $update['truename'] = $truename;
  248. $update['card'] = $card;
  249. $update['card_front'] = $card_front;
  250. $update['card_end'] = $card_end;
  251. $update['wechat'] = $wechat;
  252. $update['alipay'] = $alipay;
  253. $update['status'] = 1;
  254. $update['where_id'] = $user['id'];
  255. Dever::db('task/user_info')->update($update);
  256. }
  257. return Dever::url('user/info', 'main');
  258. }
  259. }