user_helper.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/4/17
  6. * Time: 下午6:46
  7. */
  8. require_once (BASE_ROOT_PATH . '/helper/algorithm_helper.php');
  9. require_once (BASE_ROOT_PATH . '/helper/relation_helper.php');
  10. class user_helper
  11. {
  12. const mobile_login = 1;
  13. const wxopen_login = 2;
  14. const mobile_len = 11;
  15. static public function mobile_valid($mobile)
  16. {
  17. if(!isset($mobile) || empty($mobile) || strlen($mobile) < self::mobile_len) {
  18. return false;
  19. }
  20. $mobile = substr($mobile,-self::mobile_len);
  21. $validate = new Validate();
  22. $validate->setValidate(Validate::verify_mobile($mobile));
  23. $err = $validate->validate();
  24. if(empty($err)) {
  25. return $mobile;
  26. } else {
  27. return false;
  28. }
  29. }
  30. static public function nickname()
  31. {
  32. if(isset($_SESSION['member_nickname']) && !empty($_SESSION['member_nickname'])) {
  33. return $_SESSION['member_nickname'];
  34. }
  35. if(isset($_SESSION['member_truename']) && !empty($_SESSION['member_truename'])) {
  36. return $_SESSION['member_truename'];
  37. }
  38. if(isset($_SESSION['member_mobile']) && !empty($_SESSION['member_mobile']))
  39. {
  40. $mobile = $_SESSION['member_mobile'];
  41. if(strlen($mobile) == 11) {
  42. $arData = str_split($mobile,4);
  43. return sprintf("mob%s****%s",$arData[0],$arData[2]);
  44. }
  45. }
  46. return '';
  47. }
  48. static public function isLogin() {
  49. return ($_SESSION['is_login'] == 1);
  50. }
  51. static public function isVerfiyMobile()
  52. {
  53. if(self::isLogin()) {
  54. return true;
  55. }
  56. else
  57. {
  58. if(isset($_SESSION['member_mobile']) && !empty($_SESSION['member_mobile'])) {
  59. return true;
  60. } else {
  61. return false;
  62. }
  63. }
  64. }
  65. static public function cur_mobile()
  66. {
  67. if(self::isVerfiyMobile()) {
  68. return $_SESSION['member_mobile'];
  69. } else {
  70. return '';
  71. }
  72. }
  73. static public function parase_wxinfo($wxinfo)
  74. {
  75. $user = urldecode($wxinfo);
  76. if(empty($user)) return false;
  77. $user = json_decode($user,true);
  78. if($user == false) return false;
  79. $info = array();
  80. $info['member_nickname'] = $user['nickname'];
  81. $info['member_avatar'] = $user['headimgurl'];
  82. $info['member_sex'] = intval($user['sex']);
  83. return $info;
  84. }
  85. static public function filter_info($info)
  86. {
  87. $member_info = array();
  88. if(isset($info['member_nickname']) && !empty($info['member_nickname'])) {
  89. $member_info['member_nickname'] = $info['member_nickname'];
  90. }
  91. if(isset($info['member_truename']) && !empty($info['member_truename'])) {
  92. if(!isset($member_info['member_nickname'])) {
  93. $member_info['member_nickname'] = $info['member_truename'];
  94. }
  95. $member_info['member_truename'] = $info['member_truename'];
  96. }
  97. if(isset($info['member_mobile']) && !empty($info['member_mobile']))
  98. {
  99. $mobile = $info['member_mobile'];
  100. if(!isset($member_info['member_nickname'])) {
  101. $member_info['member_nickname'] = substr_replace($mobile, '****', 3, 4);
  102. }
  103. $member_info['member_mobile'] = $info['member_mobile'];
  104. }
  105. return $member_info;
  106. }
  107. static public function notify_already_expired_bonus()
  108. {
  109. $user_bonus_model = Model("user_bonus");
  110. $expired_list = $user_bonus_model->getexpired_bonus();
  111. $bonus_ids = array();
  112. foreach ($expired_list as $key => $val) {
  113. $user_id = $val["user_id"];
  114. $param = array();
  115. $param['member_id'] = $user_id;
  116. $param['text'] = "红包过期通知:您领取的红包已经过期.";
  117. $param['go_type'] = 'bonus';
  118. QueueClient::push('upushSendMsg', $param);
  119. $bonus_ids[] = $val["bonus_id"];
  120. }
  121. if (!empty($bonus_ids))
  122. {
  123. $user_bonus_model->where(array('bonus_id' => array('in', $bonus_ids)))->update(array("bonus_status" => 4));
  124. }
  125. }
  126. static public function filter_member_info($member_info,$openid)
  127. {
  128. field_helper::validate_null_string($member_info, 'member_mobile,member_wxopenid,member_name,' .
  129. 'member_truename,member_signname,member_avatar,member_email,member_birthday');
  130. field_helper::validate_null_string($member_info, 'member_sex', '0');
  131. field_helper::validate_null_string($member_info, 'member_nickname', substr_replace($openid, '****', 3, 4));
  132. return $member_info;
  133. }
  134. static public function register_login($mobile,$password)
  135. {
  136. if($_SESSION['is_login'] == 1) {
  137. return false;
  138. }
  139. $mod_member = Model('member');
  140. $info = $mod_member->getMemberInfo(array('member_mobile' => $mobile));
  141. if(empty($info))
  142. {
  143. $member_info = array('member_mobile' => $mobile,
  144. 'member_type' => self::mobile_login,
  145. 'member_passwd' => $password,
  146. 'member_sex' => 0,
  147. 'member_name' => $mobile,
  148. 'member_nickname' => substr_replace($mobile, '****', 3, 4),
  149. 'member_mobile_bind' => 1);
  150. $member_id = $mod_member->addMember($member_info);
  151. if ($member_id != false) {
  152. sms_helper::send_nostore_message($mobile, Sms::bindbonus_register_code, $password);
  153. $info = $mod_member->getMemberInfo(array('member_mobile' => $mobile));
  154. relation_helper::onRegister($member_id,$mobile,$info['member_nickname']);
  155. } else {
  156. return false;
  157. }
  158. }
  159. $member_info = self::filter_member_info($info,$info['momber_mobile']);
  160. $mod_member->createSession($member_info);
  161. Model('cart')->mergecart($member_info, $_SESSION['store_id']);
  162. Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
  163. relation_helper::onLogin($_SESSION['member_id']);
  164. return self::outsuccess(array('HPHPSESSID' => $_SESSION['MPHPSESSID']));
  165. }
  166. static public function parse_contacts($contacts)
  167. {
  168. if(!isset($contacts)) {
  169. return false;
  170. }
  171. $contacts = json_decode(urldecode($contacts));
  172. if($contacts == false) {
  173. return false;
  174. }
  175. $ar_contact = array();
  176. foreach ($contacts as $mobile)
  177. {
  178. $mobile = user_helper::mobile_valid($mobile);
  179. if($mobile == false) {
  180. continue;
  181. }
  182. if(algorithm_helper::bsearch($mobile,$ar_contact) != -1) {
  183. continue;
  184. }
  185. array_push($ar_contact,$mobile);
  186. sort($ar_contact);
  187. }
  188. return $ar_contact;
  189. }
  190. }