member.model.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637
  1. <?php
  2. /**
  3. * 会员模型
  4. *
  5. *
  6. *
  7. *
  8. */
  9. defined('InShopNC') or exit('Access Invalid!');
  10. require_once(BASE_CORE_PATH . '/framework/libraries/validator.php');
  11. class memberModel extends Model
  12. {
  13. public function __construct()
  14. {
  15. parent::__construct('member');
  16. }
  17. /**
  18. * 会员详细信息(查库)
  19. * @param array $condition
  20. * @param string $field
  21. * @return array
  22. */
  23. public function getMemberInfo($condition, $field = '*', $master = false)
  24. {
  25. return $this->table('member')->field($field)->where($condition)->master($master)->find();
  26. }
  27. /**
  28. * 取得会员详细信息(优先查询缓存)
  29. * 如果未找到,则缓存所有字段
  30. * @param int $member_id
  31. * @param string $field 需要取得的缓存键值, 例如:'*','member_name,member_sex'
  32. * @return array
  33. */
  34. public function getMemberInfoByID($member_id, $fields = '*')
  35. {
  36. $member_info = rcache($member_id, 'member', $fields);
  37. if (empty($member_info)) {
  38. $member_info = $this->getMemberInfo(array('member_id' => $member_id), '*', true);
  39. wcache($member_id, $member_info, 'member');
  40. }
  41. return $member_info;
  42. }
  43. /**
  44. * 会员列表
  45. * @param array $condition
  46. * @param string $field
  47. * @param number $page
  48. * @param string $order
  49. */
  50. public function getMemberList($condition = array(), $field = '*', $page = 0, $order = 'member_id desc', $limit = '')
  51. {
  52. return $this->table('member')->field($field)->where($condition)->page($page)->order($order)->limit($limit)->select();
  53. }
  54. /**
  55. * 会员数量
  56. * @param array $condition
  57. * @return int
  58. */
  59. public function getMemberCount($condition)
  60. {
  61. return $this->table('member')->where($condition)->count();
  62. }
  63. /**
  64. * 编辑会员
  65. * @param array $condition
  66. * @param array $data
  67. */
  68. public function editMember($condition, $data)
  69. {
  70. $update = $this->table('member')->where($condition)->update($data);
  71. if ($update && $condition['member_id']) {
  72. dcache($condition['member_id'], 'member');
  73. }
  74. return $update;
  75. }
  76. /**
  77. * 登录时创建会话SESSION
  78. *
  79. * @param array $member_info 会员信息
  80. */
  81. public function createSession($member_info = array(), $reg = false)
  82. {
  83. if (empty($member_info) || !is_array($member_info)) return;
  84. $_SESSION['is_login'] = '1';
  85. $_SESSION['member_id'] = $member_info['member_id'];
  86. $_SESSION['member_mobile'] = $member_info['member_mobile'];
  87. $_SESSION['member_wxunionid'] = $member_info['member_wxunionid'];
  88. $_SESSION['member_wxopenid'] = $member_info['member_wxopenid'];
  89. $_SESSION['member_name'] = $member_info['member_name'];
  90. $_SESSION['member_email'] = $member_info['member_email'];
  91. $_SESSION['is_buy'] = isset($member_info['is_buy']) ? $member_info['is_buy'] : 1;
  92. $_SESSION['avatar'] = $member_info['member_avatar'];
  93. $_SESSION['member_avatar'] = $member_info['member_avatar'];
  94. $_SESSION['member_truename'] = $member_info['member_truename'];
  95. $_SESSION['member_nickname'] = $member_info['member_nickname'];
  96. $_SESSION['member_signname'] = $member_info['member_signname'];
  97. $_SESSION['member_sex'] = $member_info['member_sex'];
  98. $_SESSION['member_birthday'] = $member_info['member_birthday'];
  99. $_SESSION['member_mobile_bind'] = $member_info['member_mobile_bind'];
  100. $_SESSION['member_state'] = $member_info['member_state'];
  101. $seller_info = Model('seller')->getSellerInfo(array('member_id' => $_SESSION['member_id']));
  102. $_SESSION['store_id'] = $seller_info['store_id'];
  103. if (trim($member_info['member_qqopenid'])) {
  104. $_SESSION['openid'] = $member_info['member_qqopenid'];
  105. }
  106. if (trim($member_info['member_sinaopenid'])) {
  107. $_SESSION['slast_key']['uid'] = $member_info['member_sinaopenid'];
  108. }
  109. if (!$reg) {
  110. //添加会员积分
  111. $this->addPoint($member_info);
  112. //添加会员经验值
  113. $this->addExppoint($member_info);
  114. }
  115. if (!empty($member_info['member_login_time'])) {
  116. $update_info = array(
  117. 'member_login_num' => ($member_info['member_login_num'] + 1),
  118. 'member_login_time' => time(),
  119. 'member_old_login_time' => $member_info['member_login_time'],
  120. 'member_login_ip' => getIp(),
  121. 'member_old_login_ip' => $member_info['member_login_ip']
  122. );
  123. $this->editMember(array('member_id' => $member_info['member_id']), $update_info);
  124. }
  125. if(is_mobile() == false) {
  126. setNcCookie('cart_goods_num', '', -3600);
  127. }
  128. }
  129. /**
  130. * 获取会员信息
  131. * @param array $param 会员条件
  132. * @param string $field 显示字段
  133. * @return array 数组格式的返回结果
  134. */
  135. public function infoMember($param, $field = '*')
  136. {
  137. if (empty($param)) return false;
  138. //得到条件语句
  139. $condition_str = $this->getCondition($param);
  140. $param = array();
  141. $param['table'] = 'member';
  142. $param['where'] = $condition_str;
  143. $param['field'] = $field;
  144. $param['limit'] = 1;
  145. $member_list = Db::select($param);
  146. $member_info = $member_list[0];
  147. if (intval($member_info['store_id']) > 0) {
  148. $param = array();
  149. $param['table'] = 'store';
  150. $param['field'] = 'store_id';
  151. $param['value'] = $member_info['store_id'];
  152. $field = 'store_id,store_name,grade_id';
  153. $store_info = Db::getRow($param, $field);
  154. if (!empty($store_info) && is_array($store_info)) {
  155. $member_info['store_name'] = $store_info['store_name'];
  156. $member_info['grade_id'] = $store_info['grade_id'];
  157. }
  158. }
  159. return $member_info;
  160. }
  161. /**
  162. * 注册
  163. */
  164. public function register($register_info)
  165. {
  166. // 注册验证
  167. $obj_validate = new Validator();
  168. $obj_validate->validateparam = array(
  169. array("input" => $register_info["username"], "require" => "true", "message" => '用户名不能为空'),
  170. array("input" => $register_info["password"], "require" => "true", "message" => '密码不能为空'),
  171. array("input" => $register_info["password_confirm"], "require" => "true", "validator" => "Compare", "operator" => "==", "to" => $register_info["password"], "message" => '密码与确认密码不相同'),
  172. //array("input"=>$register_info["email"], "require"=>"true", "validator"=>"email", "message"=>'电子邮件格式不正确'),
  173. );
  174. $error = $obj_validate->validate();
  175. if ($error != '') {
  176. return array('error' => $error);
  177. }
  178. // 验证用户名是否重复
  179. $check_member_name = $this->getMemberInfo(array('member_name' => $register_info['username']));
  180. if (is_array($check_member_name) and count($check_member_name) > 0) {
  181. return array('error' => '用户名已存在');
  182. }
  183. // 验证邮箱是否重复
  184. $check_member_email = $this->getMemberInfo(array('member_email' => $register_info['email']));
  185. if (is_array($check_member_email) and count($check_member_email) > 0) {
  186. return array('error' => '邮箱已存在');
  187. }
  188. // 会员添加
  189. $member_info = array();
  190. $member_info['member_name'] = $register_info['username'];
  191. $member_info['member_passwd'] = $register_info['password'];
  192. $member_info['member_email'] = $register_info['email'];
  193. //添加邀请人(推荐人)会员积分 by abc.com
  194. $member_info['inviter_id'] = $register_info['inviter_id'];
  195. $insert_id = $this->addMember($member_info);
  196. if ($insert_id) {
  197. //添加会员积分
  198. if (C('points_isuse')) {
  199. Model('points')->savePointsLog('regist', array('pl_memberid' => $insert_id, 'pl_membername' => $register_info['username']), false);
  200. //添加邀请人(推荐人)会员积分 by abc.com
  201. $inviter_name = Model('member')->table('member')->getfby_member_id($member_info['inviter_id'], 'member_name');
  202. Model('points')->savePointsLog('inviter', array('pl_memberid' => $register_info['inviter_id'], 'pl_membername' => $inviter_name, 'invited' => $member_info['member_name']));
  203. }
  204. // 添加默认相册
  205. $insert['ac_name'] = '买家秀';
  206. $insert['member_id'] = $insert_id;
  207. $insert['ac_des'] = '买家秀默认相册';
  208. $insert['ac_sort'] = 1;
  209. $insert['is_default'] = 1;
  210. $insert['upload_time'] = time();
  211. $this->table('sns_albumclass')->insert($insert);
  212. $member_info['member_id'] = $insert_id;
  213. $member_info['is_buy'] = 1;
  214. return $member_info;
  215. } else {
  216. return array('error' => '注册失败');
  217. }
  218. }
  219. private function empty_model()
  220. {
  221. $member = [];
  222. $member['member_time'] = time();
  223. $member['member_login_time'] = time();
  224. $member['member_old_login_time'] = time();
  225. $member['member_login_ip'] = getIp();
  226. $member['member_old_login_ip'] = $member['member_login_ip'];
  227. return $member;
  228. }
  229. /**
  230. * 注册商城会员
  231. *
  232. * @param array $param 会员信息
  233. * @return array 数组格式的返回结果
  234. */
  235. public function addMember($param)
  236. {
  237. if (empty($param)) {
  238. return false;
  239. }
  240. $info = $this->empty_model();
  241. foreach ($param as $key => $value)
  242. {
  243. if ($key == 'member_passwd') {
  244. $passwd = trim($param['member_passwd']);
  245. $info['member_passwd'] = empty($passwd) ? $passwd : md5($passwd);
  246. } elseif ($key == 'member_time') {
  247. $info['member_time'] = time();
  248. } elseif ($key == 'member_login_time') {
  249. $info['member_login_time'] = time();
  250. } elseif ($key == 'member_login_ip') {
  251. $info['member_login_ip'] = getIp();
  252. } else {
  253. $info[$key] = $value;
  254. }
  255. }
  256. if(is_mobile())
  257. {
  258. $mobile = $info['member_mobile'];
  259. if(!empty($mobile))
  260. {
  261. $member = $this->getMemberInfo(array('member_mobile' => $mobile));
  262. if(!empty($member)) return false;
  263. }
  264. }
  265. try
  266. {
  267. $trans = new trans_wapper($this,__METHOD__);
  268. $insert_id = $this->table('member')->insert($info);
  269. if (!$insert_id) {
  270. throw new Exception();
  271. }
  272. $insert = $this->addMemberCommon(array('member_id' => $insert_id));
  273. if (!$insert) {
  274. throw new Exception();
  275. }
  276. $trans->commit();
  277. return $insert_id;
  278. } catch (Exception $e) {
  279. $trans->rollback();
  280. return false;
  281. }
  282. }
  283. /**
  284. * 会员登录检查
  285. *
  286. */
  287. public function checkloginMember()
  288. {
  289. if ($_SESSION['is_login'] == '1') {
  290. @header("Location: index.php");
  291. exit();
  292. }
  293. }
  294. /**
  295. * 检查会员是否允许举报商品
  296. *
  297. */
  298. public function isMemberAllowInform($member_id)
  299. {
  300. $condition = array();
  301. $condition['member_id'] = $member_id;
  302. $member_info = $this->getMemberInfo($condition, 'inform_allow');
  303. if (intval($member_info['inform_allow']) === 1) {
  304. return true;
  305. } else {
  306. return false;
  307. }
  308. }
  309. /**
  310. * 取单条信息
  311. * @param unknown $condition
  312. * @param string $fields
  313. */
  314. public function getMemberCommonInfo($condition = array(), $fields = '*')
  315. {
  316. return $this->table('member_common')->where($condition)->field($fields)->find();
  317. }
  318. /**
  319. * 插入扩展表信息
  320. * @param unknown $data
  321. * @return Ambigous <mixed, boolean, number, unknown, resource>
  322. */
  323. public function addMemberCommon($data)
  324. {
  325. return $this->table('member_common')->insert($data);
  326. }
  327. /**
  328. * 编辑会员扩展表
  329. * @param unknown $data
  330. * @param unknown $condition
  331. * @return Ambigous <mixed, boolean, number, unknown, resource>
  332. */
  333. public function editMemberCommon($data, $condition)
  334. {
  335. return $this->table('member_common')->where($condition)->update($data);
  336. }
  337. /**
  338. * 添加会员积分
  339. * @param unknown $member_info
  340. */
  341. public function addPoint($member_info)
  342. {
  343. if (!C('points_isuse') || empty($member_info)) return;
  344. //一天内只有第一次登录赠送积分
  345. if (trim(@date('Y-m-d', $member_info['member_login_time'])) == trim(date('Y-m-d'))) return;
  346. //加入队列
  347. $queue_content = array();
  348. $queue_content['member_id'] = $member_info['member_id'];
  349. $queue_content['member_name'] = $member_info['member_name'];
  350. QueueClient::push('addPoint', $queue_content);
  351. }
  352. /**
  353. * 添加会员经验值
  354. * @param unknown $member_info
  355. */
  356. public function addExppoint($member_info)
  357. {
  358. if (empty($member_info)) return;
  359. //一天内只有第一次登录赠送经验值
  360. if (trim(@date('Y-m-d', $member_info['member_login_time'])) == trim(date('Y-m-d'))) return;
  361. //加入队列
  362. $queue_content = array();
  363. $queue_content['member_id'] = $member_info['member_id'];
  364. $queue_content['member_name'] = $member_info['member_name'];
  365. QueueClient::push('addExppoint', $queue_content);
  366. }
  367. /**
  368. * 取得会员安全级别
  369. * @param unknown $member_info
  370. */
  371. public function getMemberSecurityLevel($member_info = array())
  372. {
  373. $tmp_level = 0;
  374. if ($member_info['member_email_bind'] == '1') {
  375. $tmp_level += 1;
  376. }
  377. if ($member_info['member_mobile_bind'] == '1') {
  378. $tmp_level += 1;
  379. }
  380. if ($member_info['member_paypwd'] != '') {
  381. $tmp_level += 1;
  382. }
  383. return $tmp_level;
  384. }
  385. /**
  386. * 获得会员等级
  387. * @param bool $show_progress 是否计算其当前等级进度
  388. * @param int $exppoints 会员经验值
  389. * @param array $cur_level 会员当前等级
  390. */
  391. public function getMemberGradeArr($show_progress = false, $exppoints = 0, $cur_level = '')
  392. {
  393. $member_grade = C('member_grade') ? unserialize(C('member_grade')) : array();
  394. //处理会员等级进度
  395. if ($member_grade && $show_progress) {
  396. $is_max = false;
  397. if ($cur_level === '') {
  398. $cur_gradearr = $this->getOneMemberGrade($exppoints, false, $member_grade);
  399. $cur_level = $cur_gradearr['level'];
  400. }
  401. foreach ($member_grade as $k => $v) {
  402. if ($cur_level == $v['level']) {
  403. $v['is_cur'] = true;
  404. }
  405. $member_grade[$k] = $v;
  406. }
  407. }
  408. return $member_grade;
  409. }
  410. /**
  411. * 将条件数组组合为SQL语句的条件部分
  412. *
  413. * @param array $conditon_array
  414. * @return string
  415. */
  416. private function getCondition($conditon_array)
  417. {
  418. $condition_sql = '';
  419. if ($conditon_array['member_id'] != '') {
  420. $condition_sql .= " and member_id= '" . intval($conditon_array['member_id']) . "'";
  421. }
  422. if ($conditon_array['member_name'] != '') {
  423. $condition_sql .= " and member_name='" . $conditon_array['member_name'] . "'";
  424. }
  425. if ($conditon_array['member_passwd'] != '') {
  426. $condition_sql .= " and member_passwd='" . $conditon_array['member_passwd'] . "'";
  427. }
  428. //是否允许举报
  429. if ($conditon_array['inform_allow'] != '') {
  430. $condition_sql .= " and inform_allow='{$conditon_array['inform_allow']}'";
  431. }
  432. //是否允许购买
  433. if ($conditon_array['is_buy'] != '') {
  434. $condition_sql .= " and is_buy='{$conditon_array['is_buy']}'";
  435. }
  436. //是否允许发言
  437. if ($conditon_array['is_allowtalk'] != '') {
  438. $condition_sql .= " and is_allowtalk='{$conditon_array['is_allowtalk']}'";
  439. }
  440. //是否允许登录
  441. if ($conditon_array['member_state'] != '') {
  442. $condition_sql .= " and member_state='{$conditon_array['member_state']}'";
  443. }
  444. if ($conditon_array['friend_list'] != '') {
  445. $condition_sql .= " and member_name IN (" . $conditon_array['friend_list'] . ")";
  446. }
  447. if ($conditon_array['member_email'] != '') {
  448. $condition_sql .= " and member_email='" . $conditon_array['member_email'] . "'";
  449. }
  450. if ($conditon_array['no_member_id'] != '') {
  451. $condition_sql .= " and member_id != '" . $conditon_array['no_member_id'] . "'";
  452. }
  453. if ($conditon_array['like_member_name'] != '') {
  454. $condition_sql .= " and member_name like '%" . $conditon_array['like_member_name'] . "%'";
  455. }
  456. if ($conditon_array['like_member_email'] != '') {
  457. $condition_sql .= " and member_email like '%" . $conditon_array['like_member_email'] . "%'";
  458. }
  459. if ($conditon_array['like_member_truename'] != '') {
  460. $condition_sql .= " and member_truename like '%" . $conditon_array['like_member_truename'] . "%'";
  461. }
  462. if ($conditon_array['in_member_id'] != '') {
  463. $condition_sql .= " and member_id IN (" . $conditon_array['in_member_id'] . ")";
  464. }
  465. if ($conditon_array['in_member_name'] != '') {
  466. $condition_sql .= " and member_name IN (" . $conditon_array['in_member_name'] . ")";
  467. }
  468. if ($conditon_array['member_qqopenid'] != '') {
  469. $condition_sql .= " and member_qqopenid = '{$conditon_array['member_qqopenid']}'";
  470. }
  471. if ($conditon_array['member_sinaopenid'] != '') {
  472. $condition_sql .= " and member_sinaopenid = '{$conditon_array['member_sinaopenid']}'";
  473. }
  474. return $condition_sql;
  475. }
  476. /**
  477. * 删除会员
  478. *
  479. * @param int $id 记录ID
  480. * @return array $rs_row 返回数组形式的查询结果
  481. */
  482. public function del($id)
  483. {
  484. if (intval($id) > 0) {
  485. $where = " member_id = '" . intval($id) . "'";
  486. $result = Db::delete('member', $where);
  487. return $result;
  488. } else {
  489. return false;
  490. }
  491. }
  492. /**
  493. * 获得某一会员等级
  494. * @param int $exppoints
  495. * @param bool $show_progress 是否计算其当前等级进度
  496. * @param array $member_grade 会员等级
  497. */
  498. public function getOneMemberGrade($exppoints, $show_progress = false, $member_grade = array())
  499. {
  500. if (!$member_grade) {
  501. $member_grade = C('member_grade') ? unserialize(C('member_grade')) : array();
  502. }
  503. if (empty($member_grade)) {//如果会员等级设置为空
  504. $grade_arr['level'] = -1;
  505. $grade_arr['level_name'] = '暂无等级';
  506. return $grade_arr;
  507. }
  508. $exppoints = intval($exppoints);
  509. $grade_arr = array();
  510. if ($member_grade) {
  511. foreach ($member_grade as $k => $v) {
  512. if ($exppoints >= $v['exppoints']) {
  513. $grade_arr = $v;
  514. }
  515. }
  516. }
  517. //计算提升进度
  518. if ($show_progress == true) {
  519. if (intval($grade_arr['level']) >= (count($member_grade) - 1)) {//如果已达到顶级会员
  520. $grade_arr['downgrade'] = $grade_arr['level'] - 1;//下一级会员等级
  521. $grade_arr['downgrade_name'] = $member_grade[$grade_arr['downgrade']]['level_name'];
  522. $grade_arr['downgrade_exppoints'] = $member_grade[$grade_arr['downgrade']]['exppoints'];
  523. $grade_arr['upgrade'] = $grade_arr['level'];//上一级会员等级
  524. $grade_arr['upgrade_name'] = $member_grade[$grade_arr['upgrade']]['level_name'];
  525. $grade_arr['upgrade_exppoints'] = $member_grade[$grade_arr['upgrade']]['exppoints'];
  526. $grade_arr['less_exppoints'] = 0;
  527. $grade_arr['exppoints_rate'] = 100;
  528. } else {
  529. $grade_arr['downgrade'] = $grade_arr['level'];//下一级会员等级
  530. $grade_arr['downgrade_name'] = $member_grade[$grade_arr['downgrade']]['level_name'];
  531. $grade_arr['downgrade_exppoints'] = $member_grade[$grade_arr['downgrade']]['exppoints'];
  532. $grade_arr['upgrade'] = $member_grade[$grade_arr['level'] + 1]['level'];//上一级会员等级
  533. $grade_arr['upgrade_name'] = $member_grade[$grade_arr['upgrade']]['level_name'];
  534. $grade_arr['upgrade_exppoints'] = $member_grade[$grade_arr['upgrade']]['exppoints'];
  535. $grade_arr['less_exppoints'] = $grade_arr['upgrade_exppoints'] - $exppoints;
  536. $grade_arr['exppoints_rate'] = round(($exppoints - $member_grade[$grade_arr['level']]['exppoints']) / ($grade_arr['upgrade_exppoints'] - $member_grade[$grade_arr['level']]['exppoints']) * 100, 2);
  537. }
  538. }
  539. return $grade_arr;
  540. }
  541. /**
  542. * @param $user_id 用户ID
  543. * @return float 获取用户预存款金额
  544. */
  545. public function getPdAmount($member_id){
  546. //查询会员信息
  547. $member_id = intval($member_id);
  548. $member_info = $this->getMemberInfo(array('member_id'=>$member_id));
  549. if (!is_array($member_info) || count($member_info)<=0){
  550. return 0.0; // 用户信息不对
  551. }
  552. return floatval($member_info['available_predeposit']);
  553. }
  554. /**
  555. * @param $user_id 用户ID
  556. * @return array 获取用户预存款, 冻结预存款金额
  557. */
  558. public function getMemberPdInfo($member_id)
  559. {
  560. //查询会员信息
  561. $member_id = intval($member_id);
  562. $member_info = $this->getMemberInfo(array('member_id'=>$member_id));
  563. if (!is_array($member_info) || count($member_info)<=0){
  564. return 0; // 用户信息不对
  565. }
  566. $available_predeposit=floatval($member_info['available_predeposit']);
  567. $freeze_predeposit=floatval($member_info['freeze_predeposit']);
  568. $available_relay_balance=floatval($member_info['available_relay_balance']);
  569. $freeze_relay_balance=floatval($member_info['freeze_relay_balance']);
  570. $rate_version = intval($member_info['rate_version']);
  571. return array('available_predeposit' => $available_predeposit,
  572. 'freeze_predeposit' => $freeze_predeposit,
  573. 'available_relay_balance' => $available_relay_balance,
  574. 'freeze_relay_balance' => $freeze_relay_balance,
  575. 'rate_version' => $rate_version);
  576. }
  577. public function inc_rate_version($member_id)
  578. {
  579. $this->table('member')->where(array('member_id' => $member_id))->update(array('rate_version' => array('exp', "rate_version+1")));
  580. }
  581. }