123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace Combine\Lib;
- use Dever;
- class Core
- {
- # 合并用户数据
- public function handle($uid, $drop)
- {
- $table = array
- (
- 'passport/app',
- 'passport/wechat',
- 'act/feedback',
- 'act/comment',
- 'act/form_id',
- 'act/invite',
- 'act/like',
- 'act/live_comment',
- 'act/live_note',
- //'act/score',//积分相关的要加上,不能直接修改
- 'act/share',
- 'act/share_reflux',
- 'act/subscribe',
- 'act/watch',
- //'code/info',
- 'source/user',
- 'score/action_log',
- //'score/user',//积分相关的要加上,不能直接修改
- //'score/user_level',//等级,不做合并,保留即可
- 'score/user_log',//积分日志
- 'message/inbox',
- 'invite/relation',
- //'pay/order',//支付系统单独建立,如果通过接口会有安全问题,因为数据是独立的,暂时不做合并
- 'journal/order',
- 'act/order',
- );
- if (is_string($drop)) {
- $drop = explode(',', $drop);
- }
- foreach ($drop as $k => $v) {
- if ($v == $uid) {
- continue;
- }
- foreach ($table as $k1 => $v1) {
- Dever::db($v1)->updates(array('set_uid' => $uid, 'option_uid' => $v));
- }
- # 处理一些特殊的情况
- $this->other($uid, $v);
- # 积分相关 要把积分加上,再删掉之前的
- $this->score($uid, $v, 'score/user');
- $this->score($uid, $v, 'act/score');
- }
- }
- private function other($uid, $drop_uid)
- {
- Dever::db('code/info')->updates(array('set_uid' => $uid, 'option_uid' => $drop_uid));
- Dever::db('code/info')->updates(array('set_create_uid' => $uid, 'option_create_uid' => $drop_uid));
- $journal = Dever::db('journal/info')->state();
- if ($journal) {
- foreach ($journal as $k => $v) {
- Dever::setInput('set_product_id', $v['id']);
- Dever::db('code/info')->updates(array('set_uid' => $uid, 'option_uid' => $drop_uid));
- Dever::db('code/info')->updates(array('set_create_uid' => $uid, 'option_create_uid' => $drop_uid));
- }
- }
-
- Dever::db('invite/relation')->updates(array('set_to_uid' => $uid, 'option_to_uid' => $drop_uid));
- }
- private function score($uid, $drop_uid, $table, $col = 'score')
- {
- $db = Dever::db($table);
- $user_score = $db->one(array('uid' => $uid));
- $user_drop_score = $db->one(array('uid' => $drop_uid));
- if ($user_score && $user_drop_score) {
- $score = $user_score[$col] + $user_drop_score[$col];
- $update['where_id'] = $user_score['id'];
- $update['score'] = $score;
- $db->update($update);
-
- $db->delete($user_drop_score['id']);
- } elseif (!$user_score && $user_drop_score) {
- $score = $user_drop_score[$col];
- $update['where_id'] = $user_drop_score['id'];
- $update['uid'] = $uid;
- $update['score'] = $score;
- $db->update($update);
- }
- }
- }
|