| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | <?phpnamespace 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',        );        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_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);        }    }}
 |