コード例 #1
0
ファイル: userFunc.php プロジェクト: ReadYun/vixik
function userActionUpdate($user_code, $action_code, $action_value)
{
    // 取行为规则
    $action = M(TB_DET_USER_ACTION_CONFIG)->where("action_code = {$action_code}")->select();
    for ($i = 0; $i < count($action); $i++) {
        // 可变更新值取对应的实际值
        if (!$action[$i]['update_value']) {
            $condition = $action[$i]['code_column'] . ' = ' . $action_value;
            $value = M($action[$i]['table_name'])->where("{$condition}")->find();
            $action[$i]['update_value'] = $value[$action[$i]['value_column']];
        }
        // 计算需要更新的值
        $data[$action[$i]['update_type']] = $action[$i]['update_value'] * $action[$i]['update_logic'];
    }
    // 更新用户账户信息表中的金币积分等级
    if (userAccoutUpdate($user_code, $data)) {
        // 写日志必要字段赋值
        $log['user_code'] = $user_code;
        // 用户编码
        $log['action_time'] = date('Y-m-d H:i:s');
        // 行为发生时间
        $log['action_code'] = $action_code;
        // 行为编码
        $log['action_value'] = $action_value;
        // 行为值
        // 对需要写日志的行为做处理
        for ($i = 0; $i < count($action); $i++) {
            if ($action[$i]['write_log'] == 1) {
                $condition = $action[$i]['code_column'] . ' = ' . $action_value;
                $value = M($action[$i]['table_name'])->where("{$condition}")->find();
                $log['action_name'] = $value[$action[$i]['desc_column']];
                // 行为名称
                $log['action_type'] = $action[$i]['update_type'];
                // 行为类型
                $log['change_value'] = $action[$i]['update_value'] * $action[$i]['update_logic'];
                // 数据写入日志表
                if (!insertTable(TB_BAS_USER_ACTION_LOG, $log)) {
                    return false;
                }
            }
        }
        // 判断是否需要更新用户等级
        $userAccout = M(TB_BAS_USER_ACCOUT)->where("user_code = '{$user_code}'")->find();
        // 取当前用户账户信息
        $condition = "score_lower_value <= " . $userAccout['user_score'] . " and score_upper_value >= " . $userAccout['user_score'];
        $level = M(TB_DET_USER_LEVEL)->where($condition)->find();
        // 取需要的积分规则
        // 如果计算出的最新等级与之前等级不同,更新用户最新等级
        if ($level['user_level_value'] != $userAccout['user_level']) {
            $accout['user_level'] = $level['user_level_value'];
            if (!userAccoutAlter($user_code, $accout)) {
                return false;
            }
        }
    } else {
        return false;
    }
    // 所有更新顺利完成返回true
    return true;
}
コード例 #2
0
ファイル: UserAction.class.php プロジェクト: ReadYun/vixik
 public function registSubmit()
 {
     $type = $_POST['regist_type'];
     switch ($type) {
         case '10':
             // 基本资料注册新用户
             $data_bas = json_decode($_POST['data_bas'], true);
             $user_code = userCreate($data_bas);
             echo $user_code;
             break;
         case '01':
             // 已注册用户完善资料
             $user_code = $_POST['user_code'];
             $data_exp = json_decode($_POST['data_exp'], true);
             $user_code = userInfoAlter($user_code, $data_exp);
             $data_score = array('user_score' => 200);
             $user_code = userAccoutAlter($user_code, $data_score);
             echo $user_code;
             break;
         case '11':
             // 完整资料注册新用户
             $data_bas = json_decode($_POST['data_bas'], true);
             $data_exp = json_decode($_POST['data_exp'], true);
             $user_code = userCreate($data_bas);
             $user_code = userInfoAlter($user_code, $data_exp);
             $data_score = array('user_score' => 200);
             $user_code = userAccoutAlter($user_code, $data_score);
             echo $user_code;
             break;
     }
 }