Member.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544
  1. <?php
  2. namespace Agent\Lib;
  3. use Dever;
  4. class Member
  5. {
  6. public function getOne($id, $table = 'agent/member')
  7. {
  8. if ($id < 0) {
  9. return '无';
  10. }
  11. $member = Dever::db($table)->find($id);
  12. if ($member) {
  13. $member['role'] = Dever::db('setting/role')->find($member['role']);
  14. $string = $member['name'] . '<br />' . $member['mobile'] . '<br />' . $member['role']['name'];
  15. if (isset($member['level_id']) && $member['level_id'] && $member['level_id'] > 0) {
  16. $member['level'] = Dever::db('setting/level')->find($member['level_id']);
  17. $string .= '('.$member['level']['name'].')';
  18. }
  19. return $string;
  20. } else {
  21. return '';
  22. }
  23. }
  24. public function getInfoString($member)
  25. {
  26. $member = $this->getInfo($member);
  27. $info = '代理商信息:'.$member['name'].' '.$member['mobile'].' ' . $member['role']['name'];
  28. if ($member && isset($member['level']) && $member['level']) {
  29. $info .= '('.$member['level']['name'].')';
  30. }
  31. return $info;
  32. }
  33. public function getInfo($member)
  34. {
  35. Dever::setInput('getInfo', 1);
  36. if (is_numeric($member)) {
  37. $member = Dever::db('agent/member')->find($member);
  38. }
  39. $member['area_string'] = Dever::load("area/api.string", $member['area'], '/', true, '');
  40. $member['role'] = Dever::db('setting/role')->find($member['role']);
  41. $member['level'] = Dever::db('setting/level')->find($member['level_id']);
  42. $member['shop'] = array();
  43. if ($member['shop_id'] && $member['shop_id'] > 0) {
  44. $member['shop'] = Dever::db('shop/info')->getOne($member['shop_id']);
  45. }
  46. $data = Dever::load('passport/reg')->getSign($member['id']);
  47. if ($data['signature']) {
  48. $member['signature'] = $data['signature'];
  49. }
  50. $member['birthday'] = date('Y-m-d', $member['birthday']);
  51. return $member;
  52. }
  53. /**
  54. * 检测邀请码
  55. *
  56. * @return mixed
  57. */
  58. public function checkCode()
  59. {
  60. $code = Dever::input('code');
  61. if (!$code) {
  62. Dever::alert('请输入邀请码');
  63. }
  64. $uid = Dever::load('invite/api')->getUid($code);
  65. if (!$uid) {
  66. Dever::alert('邀请码错误');
  67. }
  68. $user = Dever::db('agent/member')->find($uid);
  69. if (!$user) {
  70. Dever::alert('邀请码错误');
  71. }
  72. if ($user['status'] == 2) {
  73. return $user;
  74. }
  75. Dever::alert('邀请人状态不正常');
  76. }
  77. /**
  78. * 验证手机号
  79. * @return mixed
  80. */
  81. public function checkMobile($mobile)
  82. {
  83. $rule = Dever::rule('mobile');
  84. if (!$mobile) {
  85. Dever::alert('手机号不能为空');
  86. }
  87. if (!preg_match($rule, $mobile)) {
  88. Dever::alert('手机号码格式错误');
  89. }
  90. return $mobile;
  91. }
  92. /**
  93. * 验证验证码
  94. * @return mixed
  95. */
  96. public function checkMcode($mobile)
  97. {
  98. $code = Dever::input('mcode');
  99. if (!$code) {
  100. Dever::alert('请输入验证码');
  101. }
  102. $code = Dever::load('passport/reg')->mcode($mobile, $code, 1);
  103. if (!$code) {
  104. Dever::alert('验证码输入错误');
  105. }
  106. }
  107. /**
  108. * 更新余额和业绩
  109. * @return mixed
  110. */
  111. public function up($member, $order_id, $role, $type, $mid, $cash, $sell, $level_id = false, $desc = '', $group_num = 0)
  112. {
  113. $data['where_id'] = $mid;
  114. if ($cash) {
  115. Dever::load('bill/lib/cash')->up($mid, $type, $cash, $role, $order_id, $desc, 2);
  116. $data['cash'] = $cash;
  117. }
  118. Dever::load('bill/lib/sell')->up($mid, $type, $sell, $role, $order_id, $desc);
  119. $data['upcol'] = $sell;
  120. if ($level_id) {
  121. $data['level_id'] = $level_id;
  122. }
  123. //$method = 'upGroupSell';
  124. if ($type == 1) {
  125. $method = 'upSell';
  126. } else {
  127. $method = 'upGroupSell';
  128. }
  129. $data['clear'] = true;
  130. Dever::db('agent/member')->$method($data);
  131. if ($level_id) {
  132. Dever::load('agent/lib/level_log')->up($mid, $order_id, $member['level_id'], $level_id, $sell, $member['sell'] + $sell, $group_num);
  133. }
  134. }
  135. /**
  136. * 查看详情
  137. * @return mixed
  138. */
  139. public function show()
  140. {
  141. $mid = Dever::input('mid');
  142. $member = Dever::db('agent/member')->one($mid);
  143. $config_type = Dever::db('agent/member')->config['config_type'];
  144. $config_status = Dever::db('agent/member')->config['config_status'];
  145. $result['代理商信息'] = $this->getShowInfo($member);
  146. if ($member['parent_mid'] && $member['parent_mid'] > 0) {
  147. $parent = Dever::db('agent/member')->one($member['parent_mid']);
  148. $result['邀请人信息'] = $this->getShowInfo($parent);
  149. }
  150. $idcard_pic = '<a href="'.$member['idcard_front'].'" target="_blank"><img src="'.$member['idcard_front'].'" width="100" /></a>';
  151. if ($member['idcard_back']) {
  152. $idcard_pic .= '&nbsp;&nbsp;<a href="'.$member['idcard_back'].'" target="_blank"><img src="'.$member['idcard_back'].'" width="100" /></a>';
  153. }
  154. $member_name = $member['name'];
  155. $member_number = $member['idcard'];
  156. $result['认证信息'] = array
  157. (
  158. 'type' => 'info',
  159. 'content' => array
  160. (
  161. array
  162. (
  163. array('类型', $config_type[$member['type']]),
  164. array('姓名', $member_name),
  165. array('身份证号', $member_number),
  166. ),
  167. ),
  168. );
  169. if ($member['type'] == 2) {
  170. $company_pic = '<a href="'.$member['company_pic'].'" target="_blank"><img src="'.$member['company_pic'].'" width="100" /></a>';
  171. $member_name = $member['company_name'];
  172. $member_number = $member['company_number'];
  173. $result['认证信息']['content'][] = array
  174. (
  175. array('企业名称', $member_name),
  176. array('营业执照', $member_number),
  177. array('营业执照照片', $company_pic),
  178. );
  179. }
  180. $result['认证信息']['content'][] = array
  181. (
  182. array('身份证照片', $idcard_pic),
  183. );
  184. $button = array();
  185. $button[0]['btn'][] = array
  186. (
  187. 'type' => 'edit',
  188. 'link' => Dever::url('project/database/update?project=agent&table=member&where_id='.$member['id'].'&status=1&col=name,mobile,password,email,shop_id,area,role,level_id', 'manage'),
  189. 'name' => '修改基础资料',
  190. );
  191. $button[0]['btn'][] = array
  192. (
  193. 'type' => 'edit',
  194. 'link' => Dever::url('project/database/update?project=agent&table=member&where_id='.$member['id'].'&status=1&col=type,idcard,idcard_front,idcard_back,company_name,company_pic,company_number', 'manage'),
  195. 'name' => '修改认证资料',
  196. );
  197. /*
  198. $button[] = array
  199. (
  200. 'type' => 'edit',
  201. 'link' => Dever::url('project/database/update?project=agent&table=member&where_id='.$member['id'].'&status=1&col=shop_id', 'manage'),
  202. 'name' => '修改归属门店',
  203. );
  204. */
  205. $url = '';
  206. if ($member['status'] == 5) {
  207. $button[0]['btn'][] = array
  208. (
  209. 'type' => 'action',
  210. 'link' => Dever::url('lib/member.setStatus?id=' . $member['id'] . '&value=2', 'agent'),
  211. 'name' => '恢复账号',
  212. );
  213. } elseif ($member['status'] == 2) {
  214. $button[0]['btn'][] = array
  215. (
  216. 'type' => 'action',
  217. 'link' => Dever::url('lib/member.setStatus?id=' . $member['id'] . '&value=5', 'agent'),
  218. 'name' => '禁用账号',
  219. );
  220. }
  221. $button[0]['btn'][] = array
  222. (
  223. 'type' => 'link',
  224. 'link' => Dever::url('project/database/list?project=agent&table=order&search_option_mid='.$member['id'].'', 'manage'),
  225. 'name' => '代理订单',
  226. );
  227. $button[0]['btn'][] = array
  228. (
  229. 'type' => 'link',
  230. 'link' => Dever::url('project/database/list?project=agent&table=order&search_option_parent_mid='.$member['id'].'', 'manage'),
  231. 'name' => '直推代理订单',
  232. );
  233. $button[0]['btn'][] = array
  234. (
  235. 'type' => 'link',
  236. 'link' => Dever::url('project/database/list?project=agent&table=member_level_log&search_option_mid='.$member['id'].'', 'manage'),
  237. 'name' => '升级日志',
  238. );
  239. $button[1]['btn'][] = array
  240. (
  241. 'type' => 'edit',
  242. 'link' => Dever::url('project/database/update?project=bill&table=push_cash&search_option_mid='.$member['id'], 'manage'),
  243. 'name' => '发放资金',
  244. );
  245. $button[1]['btn'][] = array
  246. (
  247. 'type' => 'edit',
  248. 'link' => Dever::url('project/database/update?project=bill&table=push_sell&search_option_mid='.$member['id'], 'manage'),
  249. 'name' => '发放业绩',
  250. );
  251. $button[1]['btn'][] = array
  252. (
  253. 'type' => 'link',
  254. 'link' => Dever::url('project/database/list?project=bill&table=cash&search_option_mid='.$member['id'].'', 'manage'),
  255. 'name' => '资金账户',
  256. );
  257. $button[1]['btn'][] = array
  258. (
  259. 'type' => 'link',
  260. 'link' => Dever::url('project/database/list?project=bill&table=sell&search_option_mid='.$member['id'].'', 'manage'),
  261. 'name' => '业绩流水',
  262. );
  263. $button[1]['btn'][] = array
  264. (
  265. 'type' => 'link',
  266. 'link' => Dever::url('project/database/list?project=agent&table=member_goods&search_option_mid='.$member['id'].'', 'manage'),
  267. 'name' => '代理商权益',
  268. );
  269. $button[1]['btn'][] = array
  270. (
  271. 'type' => 'link',
  272. 'link' => Dever::url('project/database/list?project=agent&table=dh_order&search_option_mid='.$member['id'].'', 'manage'),
  273. 'name' => '权益订单',
  274. );
  275. $button[2]['btn'][] = array
  276. (
  277. 'type' => 'link',
  278. 'link' => Dever::url('project/database/list?project=agent&table=member_agreement&search_option_mid='.$member['id'].'', 'manage'),
  279. 'name' => '代理商合同',
  280. );
  281. $button[2]['btn'][] = array
  282. (
  283. 'type' => 'link',
  284. 'link' => Dever::url('project/database/list?project=agent&table=member&search_option_parent_mid='.$member['id'].'', 'manage'),
  285. 'name' => '查看直推团队',
  286. );
  287. /*
  288. $button[2]['btn'][] = array
  289. (
  290. 'type' => 'edit',
  291. 'link' => Dever::url('lib/member.setStatus?id=' . $member['id'] . '&value=5', 'agent'),
  292. 'name' => '查看邀请关系',
  293. );
  294. */
  295. $furl = '';
  296. $button[2]['btn'][] = array
  297. (
  298. 'type' => 'edit',
  299. 'link' => Dever::url('project/database/update?project=agent&table=member_parent&mid='.$member['id'], 'manage'),
  300. 'name' => '设置直推上级',
  301. );
  302. $head_btn[] = array
  303. (
  304. 'type' => 'link',
  305. 'link' => Dever::url('project/database/list?project=agent&table=member', 'manage'),
  306. 'name' => '返回上一页',
  307. );
  308. $head = array
  309. (
  310. 'name' => '基本信息',
  311. 'btn' => $head_btn,
  312. );
  313. $foot = $button;
  314. $html = Dever::show($head, $result, $foot);
  315. return $html;
  316. }
  317. private function getShowInfo($member)
  318. {
  319. $role = Dever::db('setting/role')->one($member['role']);
  320. $level = Dever::db('setting/level')->one($member['level_id']);
  321. $area = Dever::load("area/api.string", $member['area'], '-', true, '');
  322. $code = Dever::load("invite/api.code", $member['id']);
  323. if ($member['shop_id']) {
  324. $shop = Dever::db('shop/info')->one($member['shop_id']);
  325. } else {
  326. $shop['id'] = -1;
  327. $shop['name'] = '无';
  328. }
  329. $result = array();
  330. if ($level) {
  331. $role['name'] .= '(' . $level['name'] . ')';
  332. }
  333. if (!$member['cash']) {
  334. $member['cash'] = 0;
  335. }
  336. if (!$member['sell']) {
  337. $member['sell'] = 0;
  338. }
  339. if (!$member['group_sell']) {
  340. $member['group_sell'] = 0;
  341. }
  342. $result = array
  343. (
  344. 'type' => 'info',
  345. 'content' => array
  346. (
  347. array
  348. (
  349. array('代理商姓名', $member['name']),
  350. array('手机号', $member['mobile']),
  351. array('邀请码', $code),
  352. ),
  353. array
  354. (
  355. array('代理角色', $role['name']),
  356. array('代理区域', $area),
  357. array('所属店铺', $shop['name']),
  358. ),
  359. array
  360. (
  361. array('资金余额', '<span style="color:blue">¥' . $member['cash'] . '元</span>'),
  362. array('直推业绩', '<span style="color:blue">¥' . $member['sell'] . '元</span>'),
  363. array('团队业绩', '<span style="color:blue">¥' . $member['group_sell'] . '元</span>'),
  364. ),
  365. ),
  366. );
  367. return $result;
  368. }
  369. public function setStatus_api()
  370. {
  371. $where['where_id'] = Dever::input('id');
  372. $where['status'] = Dever::input('value');
  373. Dever::db('agent/member')->update($where);
  374. return 'reload';
  375. }
  376. public function create($data)
  377. {
  378. $insert['mobile'] = $data['mobile'];
  379. $info = Dever::db('agent/member')->find(array('mobile' => $data['mobile']));
  380. if (!$info) {
  381. $insert['role'] = 1;
  382. $insert['level_id'] = -1;
  383. $insert['name'] = $data['name'];
  384. $insert['idcard'] = $data['idcard'];
  385. $insert['idcard_front'] = $data['idcard_front'];
  386. $insert['idcard_back'] = $data['idcard_back'];
  387. $insert['company_name'] = $data['company_name'];
  388. $insert['company_pic'] = $data['company_pic'];
  389. $insert['company_number'] = $data['company_number'];
  390. $insert['parent_mid'] = $data['parent_mid'];
  391. $insert['source_id'] = $data['source_id'];
  392. $insert['type'] = $data['type'];
  393. $mid = Dever::db('agent/member')->insert($insert);
  394. if ($mid && $data['parent_mid'] && $data['parent_mid'] > 0) {
  395. Dever::load('invite/api')->setRelation($mid, $data['parent_mid']);
  396. }
  397. return $mid;
  398. } else {
  399. return $info['id'];
  400. }
  401. }
  402. #认证时间
  403. public function set_rdate($id){
  404. $info=Dever::db('agent/member')->one(array('id'=>$id,'state'=>1));
  405. if($info['cdate']){
  406. $data['注册时间']=date('Y-m-d H:i',$info['cdate']);
  407. }else{
  408. $data['注册时间']='-';
  409. }
  410. if($info['status']==2){
  411. if($info['rdate']){
  412. $data['认证完成时间']=date('Y-m-d H:i',$info['rdate']);
  413. }else{
  414. $data['认证完成时间']='-';
  415. }
  416. }else{
  417. $data['认证完成时间']='-';
  418. }
  419. // $html = Dever::table($data);
  420. return '注册时间:'.$data['注册时间'].'<br/>认证完成时间:'.$data['认证完成时间'];
  421. }
  422. #更改收件人信息
  423. public function set_mobile($id){
  424. $info=Dever::db('agent/dh_order')->one(array('id'=>$id,'state'=>1));
  425. $data=array();
  426. if($info['name']=='兑换商品'){
  427. $address=Dever::db('agent/member_address')->one(array('id'=>$info['address_id'],'state'=>1));
  428. $data['联系人']=$address['contact'];
  429. $data['联系电话']=$address['mobile'];
  430. $res=Dever::load('agent/address')->getOne($address['mid'],$address['id']);
  431. $data['详细地址']=$res['address_info'].$address['house_number'];
  432. // $data['门牌号']=$address['house_number'];
  433. return $data['联系人'].'<br/>'.$data['联系电话'].'<br/>'.$data['详细地址'];
  434. }else{
  435. return '';
  436. }
  437. // $html=Dever::table($data);
  438. // return $html;
  439. }
  440. public function daili($id){
  441. $info=Dever::db('agent/member')->one(array('id'=>$id,'state'=>1));
  442. $member['role'] = Dever::db('setting/role')->find($info['role']);
  443. $data['姓名']='<a href='.Dever::url('project/database/list&project=bill&table=sell&menu=bill&search_option_state=1&function=&method=search&search_api_mid='.$info['mobile'].'&search_fulltext_order_num=&search_option_start_cdate=&search_option_end_cdate=&excel=2&page_type=2', 'manage').'>'.$info['name'].'</a>';
  444. $data['电话']=$info['mobile'];
  445. $data['角色']=$member['role']['name'];
  446. if (isset($info['level_id']) && $info['level_id'] && $info['level_id'] > 0) {
  447. $info['level'] = Dever::db('setting/level')->find($info['level_id']);
  448. $data['角色'] .= '('.$info['level']['name'].')';
  449. }
  450. $html=Dever::table($data);
  451. return $html;
  452. }
  453. #上级信息
  454. public function sdaili($id){
  455. $res=Dever::db('agent/member')->one(array('id'=>$id,'state'=>1));
  456. if($res['parent_mid']>0){
  457. $info=Dever::db('agent/member')->one(array('id'=>$res['parent_mid'],'state'=>1));
  458. $member['role'] = Dever::db('setting/role')->find($info['role']);
  459. $data['姓名']='<a href='.Dever::url('project/database/list&project=bill&table=sell&menu=bill&search_option_state=1&function=&method=search&search_api_mid='.$info['mobile'].'&search_fulltext_order_num=&search_option_start_cdate=&search_option_end_cdate=&excel=2&page_type=2', 'manage').'>'.$info['name'].'</a>';
  460. $data['电话']=$info['mobile'];
  461. $data['角色']=$member['role']['name'];
  462. if (isset($info['level_id']) && $info['level_id'] && $info['level_id'] > 0) {
  463. $info['level'] = Dever::db('setting/level')->find($info['level_id']);
  464. $data['角色'] .= '('.$info['level']['name'].')';
  465. }
  466. $data['团队业绩']=$info['group_sell'];
  467. }elseif($res['source_id']){
  468. $source=Dever::db('setting/source')->one(array('id'=>$res['source_id'],'state'=>1));
  469. $data['来源']=$source['name'];
  470. }else{
  471. return '无';
  472. }
  473. $html=Dever::table($data);
  474. return $html;
  475. }
  476. }