|  | @@ -0,0 +1,80 @@
 | 
	
		
			
				|  |  | +package com.zanxiang.game.module.sdk.service.impl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.mybatis.entity.RoleOperate;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.mybatis.entity.User;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.mybatis.mapper.RoleOperateMapper;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.sdk.service.IAgentService;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.sdk.service.IRoleOperateService;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.sdk.service.IUserService;
 | 
	
		
			
				|  |  | +import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @author : lingfeng
 | 
	
		
			
				|  |  | + * @time : 2023-09-09
 | 
	
		
			
				|  |  | + * @description : 角色操作表
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@Slf4j
 | 
	
		
			
				|  |  | +@Service
 | 
	
		
			
				|  |  | +public class RoleOperateServiceImpl extends ServiceImpl<RoleOperateMapper, RoleOperate> implements IRoleOperateService {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IUserService userService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IAgentService agentService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void systemRoleOperate(GameUserRole gameUserRole) {
 | 
	
		
			
				|  |  | +        //查询玩家信息
 | 
	
		
			
				|  |  | +        User user = userService.getById(gameUserRole.getUserId());
 | 
	
		
			
				|  |  | +        //解析玩家渠道信息
 | 
	
		
			
				|  |  | +        Map<String, String> channelMap = agentService.channelTransform(user.getChannel());
 | 
	
		
			
				|  |  | +        if (!channelMap.containsKey("corpId") || !channelMap.containsKey("corpUserId")
 | 
	
		
			
				|  |  | +                || !channelMap.containsKey("externalUserId")) {
 | 
	
		
			
				|  |  | +            log.error("创角事件 : 非企微链路, 不做操作! gameId : {}, roleId : {}", gameUserRole.getGameId(), gameUserRole.getRoleId());
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //查询操作记录
 | 
	
		
			
				|  |  | +        RoleOperate roleOperate = super.getOne(new LambdaQueryWrapper<RoleOperate>()
 | 
	
		
			
				|  |  | +                .eq(RoleOperate::getGameId, gameUserRole.getGameId())
 | 
	
		
			
				|  |  | +                .eq(RoleOperate::getServerId, gameUserRole.getServerId())
 | 
	
		
			
				|  |  | +                .eq(RoleOperate::getUserId, gameUserRole.getUserId())
 | 
	
		
			
				|  |  | +                .eq(RoleOperate::getRoleId, gameUserRole.getRoleId()));
 | 
	
		
			
				|  |  | +        if (roleOperate == null) {
 | 
	
		
			
				|  |  | +            roleOperate = this.transform(gameUserRole, channelMap);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            roleOperate.setCorpId(channelMap.get("corpId"));
 | 
	
		
			
				|  |  | +            roleOperate.setExternalUserId(channelMap.get("externalUserId"));
 | 
	
		
			
				|  |  | +            roleOperate.setAddCorpUserId(channelMap.get("corpUserId"));
 | 
	
		
			
				|  |  | +            roleOperate.setIsAddCorpWechat(1);
 | 
	
		
			
				|  |  | +            roleOperate.setUpdateBy(RoleOperate.SYSTEM_OPERATE);
 | 
	
		
			
				|  |  | +            roleOperate.setUpdateTime(LocalDateTime.now());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        super.saveOrUpdate(roleOperate);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private RoleOperate transform(GameUserRole gameUserRole, Map<String, String> channelMap) {
 | 
	
		
			
				|  |  | +        return RoleOperate.builder()
 | 
	
		
			
				|  |  | +                .gameId(gameUserRole.getGameId())
 | 
	
		
			
				|  |  | +                .serverId(gameUserRole.getServerId())
 | 
	
		
			
				|  |  | +                .userId(gameUserRole.getUserId())
 | 
	
		
			
				|  |  | +                .roleId(gameUserRole.getRoleId())
 | 
	
		
			
				|  |  | +                .corpId(channelMap.get("corpId"))
 | 
	
		
			
				|  |  | +                .externalUserId(channelMap.get("externalUserId"))
 | 
	
		
			
				|  |  | +                .addCorpUserId(channelMap.get("corpUserId"))
 | 
	
		
			
				|  |  | +                .isAddCorpWechat(1)
 | 
	
		
			
				|  |  | +                .createBy(RoleOperate.SYSTEM_OPERATE)
 | 
	
		
			
				|  |  | +                .createTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                .updateBy(RoleOperate.SYSTEM_OPERATE)
 | 
	
		
			
				|  |  | +                .updateTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                .build();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |