| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | <?php/** * Role.php UTF-8 * 角色处理 * * @date    : 2018/1/19 21:01 * * @license 这不是一个自由软件,未经授权不许任何使用和传播。 * @author  : wuyonghong <wyh@huosdk.com> * @version : HUOSDK 8.0 */namespace huo\controller\member;use huo\controller\common\Base;use huo\controller\request\Device;use huo\controller\request\Game as GameRq;use huo\controller\request\Mem;use huo\controller\request\Role as RoleRq;use huo\model\game\GameServerSwitchModel;use huo\model\log\MemRoleLogModel;use huo\model\member\MgRoleModel;use huolib\constant\OrderConst;use huoMpAd\MpReportData;class Role extends Base {    /**     * 插入记录     *     * @param Mem         $mem     * @param RoleRq      $role     * @param GameRq      $game_rq     * @param float       $money     *     * @param Device|null $device_rq     *     * @return bool|mixed     */    public function insertLog(Mem $mem, RoleRq $role, GameRq $game_rq, $money = 0.00, Device $device_rq = null) {        $_role_model = new MemRoleLogModel();        $_data = $role->toArray();        $_data['mg_mem_id'] = $mem->getMgMemId();        $_data['app_id'] = $game_rq->getHAppId();        $_data['money'] = $money;        $_data['create_time'] = time();        /* 异步处理数据 */        (new \huo\controller\queue\Role($game_rq->getHAppId()))->upRole($game_rq, $mem, $role, $device_rq);        return $_role_model->insertLog($_data);    }    /**     * 更新橘色数据     *     * @param $data     *     * @return bool     */    public function updateData($data) {        if (empty($data['mg_mem_id']) || empty($data['app_id']) || empty($data['server_id'])            || empty($data['role_id'])) {            return false;        }        $_mg_mem_id = $data['mg_mem_id'];        $_app_id = $data['app_id'];        $_server_id = $data['server_id'];        $_role_id = $data['role_id'];        $_model = new MgRoleModel();        $_data = $_model->getDetailByMemGameServerRole($_mg_mem_id, $_app_id, $_server_id, $_role_id);        if (empty($_data)) {            /* 新增插入 */            $_data = $data;            if (!empty($data['last_login_time'])) {                $_data['ext']['last_login_time'] = time();            }            $_rs = $_model->addData($_data);            if (false != $_rs && !empty($_app_id) && 81234702 != $_app_id && !empty($_server_id)) {                /* 魔龙契约 传入的游戏区服有问题暂时不写入 */                /* 查找区服是否存在,不存在则插入数据 */                $_gss_model = new GameServerSwitchModel();                $_ser_data = $_gss_model->getInfo($_app_id, $_server_id);                if (empty($_ser_data)) {                    $_ser_data = [                        'app_id'      => $_app_id,                        'server_id'   => $_server_id,                        'server_name' => $data['server_name'],                        'is_switch'   => OrderConst::PAY_SWITCH_YES,                    ];                    $_gss_model->addData($_ser_data);                }            }            return $_rs;        } else {            if (empty($data['money']) && $_data['role_level'] >= $data['role_level']                && empty($data['last_login_time'])) {                /* 角色未升级或者未更新 不更新数据 */                return true;            }            if (empty($_data['os']) && !empty($data['os'])) {                $_data['os'] = $data['os'];            }            if (!empty($data['money'])) {                $_data['money'] += $data['money'];            }            if (!empty($data['combat_num'])) {                $_data['combat_num'] = $data['combat_num'];            }            if (!empty($data['role_name'])) {                $_data['role_name'] = $data['role_name'];            }            if (!empty($data['server_name'])) {                $_data['server_name'] = $data['server_name'];            }            if ($_data['role_level'] < $data['role_level']) {                $_data['role_level'] = $data['role_level'];            }            if (!empty($data['last_login_time'])) {                $_data['ext']['last_login_time'] = $data['last_login_time'];            }            if (empty($_data['ext']['last_login_time'])) {                $_data['ext']['last_login_time'] = time();            }            if (empty($data['ext']['login_day'])) {                $data['ext']['login_day'] = 1;            } elseif (date('Y-m-d') != date('Y-m-d', $_data['ext']['last_login_time'])) {                $data['ext']['login_day'] += 1;            }            $_data['update_time'] = \time();            return $_model->updateData($_data, $_data['id']);        }    }}
 |