|  | @@ -0,0 +1,82 @@
 | 
	
		
			
				|  |  | +package com.zanxiang.sdk.service.Impl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import com.zanxiang.module.util.JsonUtil;
 | 
	
		
			
				|  |  | +import com.zanxiang.mybatis.entity.GameUser;
 | 
	
		
			
				|  |  | +import com.zanxiang.mybatis.entity.GameUserRole;
 | 
	
		
			
				|  |  | +import com.zanxiang.mybatis.mapper.GameUserRoleMapper;
 | 
	
		
			
				|  |  | +import com.zanxiang.sdk.domain.params.GameUserRoleUpdateParam;
 | 
	
		
			
				|  |  | +import com.zanxiang.sdk.domain.params.UserData;
 | 
	
		
			
				|  |  | +import com.zanxiang.sdk.service.GameUserRoleService;
 | 
	
		
			
				|  |  | +import com.zanxiang.sdk.service.GameUserService;
 | 
	
		
			
				|  |  | +import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @author : xufeng
 | 
	
		
			
				|  |  | + * @time : 2022-07-06
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@Slf4j
 | 
	
		
			
				|  |  | +@Service
 | 
	
		
			
				|  |  | +public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, GameUserRole> implements GameUserRoleService {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private GameUserService gameUserService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public Boolean updateUserGameRole(GameUserRoleUpdateParam param, UserData userData) {
 | 
	
		
			
				|  |  | +        log.error("上报用户信息, param : {}", JsonUtil.toString(param));
 | 
	
		
			
				|  |  | +        //上报类型
 | 
	
		
			
				|  |  | +        Integer dataType = param.getDataType();
 | 
	
		
			
				|  |  | +        //查询玩家信息
 | 
	
		
			
				|  |  | +        GameUser gameUser = gameUserService.getOne(new LambdaQueryWrapper<GameUser>().eq(GameUser::getGameId, userData.getGameId())
 | 
	
		
			
				|  |  | +                .eq(GameUser::getUserId, userData.getUserId()));
 | 
	
		
			
				|  |  | +        //获取用户角色信息
 | 
	
		
			
				|  |  | +        GameUserRole userRole = this.getOne(new LambdaQueryWrapper<GameUserRole>()
 | 
	
		
			
				|  |  | +                .eq(GameUserRole::getGameId, userData.getGameId())
 | 
	
		
			
				|  |  | +                .eq(GameUserRole::getRoleId, param.getRoleId()));
 | 
	
		
			
				|  |  | +        //角色信息不存在, 创建
 | 
	
		
			
				|  |  | +        if (userRole == null) {
 | 
	
		
			
				|  |  | +            userRole = GameUserRole.builder()
 | 
	
		
			
				|  |  | +                    .userId(userData.getUserId())
 | 
	
		
			
				|  |  | +                    .gameUserId(gameUser.getId())
 | 
	
		
			
				|  |  | +                    .gameId(userData.getGameId())
 | 
	
		
			
				|  |  | +                    .serverId(param.getServerId())
 | 
	
		
			
				|  |  | +                    .serverName(param.getServerName())
 | 
	
		
			
				|  |  | +                    .roleId(param.getRoleId())
 | 
	
		
			
				|  |  | +                    .roleName(param.getRoleName())
 | 
	
		
			
				|  |  | +                    .roleLevel(param.getRoleLevel())
 | 
	
		
			
				|  |  | +                    .roleVipLevel(param.getRoleVipLevel())
 | 
	
		
			
				|  |  | +                    .rolePower(param.getRolePower())
 | 
	
		
			
				|  |  | +                    .platformCoin(param.getPlatformCoin())
 | 
	
		
			
				|  |  | +                    .os(userData.getDeviceSystem())
 | 
	
		
			
				|  |  | +                    .createTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                    .updateTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                    .lastLoginTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                    .build();
 | 
	
		
			
				|  |  | +            super.save(userRole);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            super.update(new LambdaUpdateWrapper<GameUserRole>()
 | 
	
		
			
				|  |  | +                    .set(GameUserRole::getRoleName, param.getRoleName())
 | 
	
		
			
				|  |  | +                    .set(GameUserRole::getRoleLevel, param.getRoleLevel())
 | 
	
		
			
				|  |  | +                    .set(GameUserRole::getServerId, param.getServerId())
 | 
	
		
			
				|  |  | +                    .set(GameUserRole::getServerName, param.getServerName())
 | 
	
		
			
				|  |  | +                    .set(param.getRoleCreateTime() != null, GameUserRole::getCreateTime, param.getRoleCreateTime())
 | 
	
		
			
				|  |  | +                    .set(param.getRoleGradeUpdateTime() != null, GameUserRole::getUpdateTime, param.getRoleGradeUpdateTime())
 | 
	
		
			
				|  |  | +                    .set(param.getRoleVipLevel() != null, GameUserRole::getRoleVipLevel, param.getRoleVipLevel())
 | 
	
		
			
				|  |  | +                    .set(param.getRolePower() != null, GameUserRole::getRolePower, param.getRolePower())
 | 
	
		
			
				|  |  | +                    .set(param.getPlatformCoin() != null, GameUserRole::getPlatformCoin, param.getPlatformCoin())
 | 
	
		
			
				|  |  | +                    .eq(GameUserRole::getGameId, userData.getGameId())
 | 
	
		
			
				|  |  | +                    .eq(GameUserRole::getRoleId, param.getRoleId())
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return Boolean.TRUE;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |