首页>代码>spring boot+mvc+mybatis+netty-sokey.io+html+js实现简单即时通讯聊天系统>/demo-spring-netty/src/main/java/com/xe/demo/Application.java
package com.xe.demo;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.corundumstudio.socketio.AuthorizationListener;
import com.corundumstudio.socketio.Configuration;
import com.corundumstudio.socketio.HandshakeData;
import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner;
import com.xe.demo.common.pojo.AjaxResult;
import com.xe.demo.common.pojo.CacheMap;
import com.xe.demo.model.User;
import com.xe.demo.service.UserService;

@Controller
@SpringBootApplication
public class Application {

	@Value("${wss.server.host}")
	private String host;

	@Value("${wss.server.port}")
	private Integer port;

	@Bean
	public SocketIOServer socketIOServer() {
		Configuration config = new Configuration();
		config.setHostname(host);
		config.setPort(port);

		// 该处可以用来进行身份验证
		config.setAuthorizationListener(new AuthorizationListener() {
			@Override
			public boolean isAuthorized(HandshakeData data) {
				// http://localhost:8081?username=test&password=test
				// 例如果使用上面的链接进行connect,可以使用如下代码获取用户密码信息,本文不做身份验证
				// String username = data.getSingleUrlParam("username");
				// String password = data.getSingleUrlParam("password");
				return true;
			}
		});

		return new SocketIOServer(config);
	}

	@Bean
	public SpringAnnotationScanner springAnnotationScanner(SocketIOServer socketServer) {
		return new SpringAnnotationScanner(socketServer);
	}

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
	
	@Autowired
	private UserService userService;
	
	/**
	 * 访问首页
	 * @param map
	 * @param username
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping("/")
	public String index(Map<String, Object> map, String username){
		List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
		if(!StringUtils.isEmpty(username)){
			User user = userService.queryUser(new User(null, username));
			map.put("user", user);
			if(null != user && 1 == user.getType()){//客服登录
				list = (List<Map<String, Object>>) CacheMap.getValue(user.getUid());
			}else{
				//获取客服列表
				list = userService.queryServiceList();
			}
		}else{
			//获取客服列表
			list = userService.queryServiceList();
		}
		map.put("list", list);
		return "chat";
	}
	
	/**
	 * 登录
	 * @param username
	 * @param password
	 * @return
	 */
	@RequestMapping("/login")
	@ResponseBody
	public AjaxResult login(String username, String password){
		User user = userService.queryUser(new User(null, username));
		if(null == user){
			return new AjaxResult(0, "用户不存在");
		}
		if(!password.equals(user.getPassword())){
			return new AjaxResult(0, "登录密码不正确");
		}
		return new AjaxResult(1, "登录成功");
	}

	@SuppressWarnings("unchecked")
	@RequestMapping("/getUserList")
	@ResponseBody
	public AjaxResult getUserList(String username){
		List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
		if(!StringUtils.isEmpty(username)){
			User user = userService.queryUser(new User(null, username));
			if(null != user && 1 == user.getType()){//客服登录
				list = (List<Map<String, Object>>) CacheMap.getValue(user.getUid());
			}else{
				//获取客服列表
				list = userService.queryServiceList();
			}
		}else{
			//获取客服列表
			list = userService.queryServiceList();
		}
		return new AjaxResult(1, "查询成功", list);
	}
	
	/**
	 * 匿名咨询
	 */
	@RequestMapping("/anonyAsk")
	@ResponseBody
	public AjaxResult anonyAsk(){
		User user = new User();
		user.setUid(getUuid());
		user.setUsername("");
		user.setNickname("");
		user.setAvatar(getAvatar());
		user.setPassword("123456");
		user.setType(0);
		user.setOnline(0);
		userService.saveAnony(user);
		int id = user.getId();
		user.setUsername("anony" +id);
		user.setNickname("游客" + id);
		userService.update(user);
		return new AjaxResult(1, "创建成功", user);
	}
	
	/**
	 * 获取随机头像
	 * @return
	 */
	public static String getAvatar(){
		String[] avatars = new String[]{"2013.jpg", "2014.jpg", "2015.jpg", "2016.jpg", "2017.jpg", "2018.jpg", "2019.jpg", "2020.jpg", "2021.jpg", "2022.jpg", "2024.jpg"};
		Random rand = new Random();
		return avatars[rand.nextInt(10)];
	}
	
	/**
	 * 获取32为uuid
	 * @return
	 */
	public static String getUuid() {
		return UUID.randomUUID().toString().replace("-", "");
	}
}
最近下载更多
xb12369  LV7 11月21日
2509878298  LV5 2月29日
百里守寡  LV5 2023年8月29日
你好啊呐  LV19 2023年8月23日
annazhang  LV29 2023年2月17日
pureshyness  LV6 2022年9月29日
骑着导弹让蜗牛追去  LV8 2022年1月16日
wanglinddad  LV55 2021年12月30日
j1an01  LV6 2021年12月15日
a1677596408  LV23 2021年7月27日
最近浏览更多
xb12369  LV7 11月21日
krispeng  LV13 8月31日
xainyun 8月27日
暂无贡献等级
Luck_ZDM  LV12 5月22日
long123_356  LV7 5月18日
Annie123 5月7日
暂无贡献等级
taoyi123  LV17 4月29日
heweimin  LV13 4月7日
3334004690  LV10 3月20日
2509878298  LV5 2月29日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友