|
package com.ai.server.bean;
import java.awt.image.BufferedImage;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import com.ai.ipu.cache.ICache;
import com.ai.ipu.server.frame.session.ISession;
import com.ai.ipu.server.util.MobileUtility;
import com.ai.server.core.bean.IpuAppBean;
import com.ai.server.core.context.IpuContextData;
import com.ai.server.core.session.IpuSessionManager;
import com.ai.server.util.Constant;
import com.ai.server.util.ImageVerify;
import com.ailk.common.data.IData;
import com.ailk.common.data.impl.DataMap;
public class SceneBean extends IpuAppBean {
private static final String LOGIN_VERIFY_CODE_ERROR = "login_verify_code_error";
private static final String LOGIN_USERPASSWORD_ERROR = "login_userpassword_error";
private final static Map<String, String> uniqueAccounts = new ConcurrentHashMap<String, String>();
public IData uniqueLogin(IData param) throws Exception {
IData result = new DataMap();
boolean loginResult = true;//用户名和密码校验逻辑实现
if (loginResult) {
String account = param.getString("ACCOUNT");
String sessionIdOld = uniqueAccounts.get(account);
ICache cache = IpuSessionManager.getInstance().getSessionCache();
ISession session = (ISession) cache.get(sessionIdOld);
if (sessionIdOld != null && session != null) {
cache.remove(sessionIdOld);// 删除旧的session
}
IpuContextData contextData = new IpuContextData();
contextData.put(Constant.Session.ACCOUNT, account);
String sessionIdNew = IpuSessionManager.getInstance().createSession(contextData);
uniqueAccounts.put(account, sessionIdNew);
result.put("state", Constant.SUCCESS);
result.put(Constant.Session.SESSION_ID, sessionIdNew);
result.put(Constant.Session.ACCOUNT, account);
}else{
result.put("state", LOGIN_USERPASSWORD_ERROR);
}
return result;
}
public IData checkSessionAvailable(IData param) throws Exception {
IData result = new DataMap();
String sessionId = param.getString(Constant.Session.SESSION_ID);
ICache cache = IpuSessionManager.getInstance().getSessionCache();
ISession session = (ISession) cache.get(sessionId);
if (sessionId != null && session != null) {
result.put("sessionAvailable", true);
}
else {
result.put("sessionAvailable", false);
}
return result;
}
/**
* 数据请求场景
*
* @param param
* @return
* @throws Exception
*/
public IData dataRequestScene(IData param) throws Exception {
IData result = new DataMap();
// 获取从前台传过来的数据
String data = param.getString("data");
// 获取人品--随机数
Random random = new Random();
int testCharacter = random.nextInt(100);
StringBuffer retMsg = new StringBuffer();
if (testCharacter > 0 && testCharacter < 20) {
retMsg.append("是我不好...不应该和你谈人品问题的...");
} else if (testCharacter >= 20 && testCharacter < 40) {
retMsg.append("您的人品之低下实在让人惊讶啊...");
} else if (testCharacter >= 40 && testCharacter < 60) {
retMsg.append("您的人品太差了..稍不小心就会去干坏事了吧?");
} else if (testCharacter >= 60 && testCharacter < 80) {
retMsg.append("您的人品勉勉强强...要自己好自为之...");
} else if (testCharacter >= 80 && testCharacter <= 100) {
retMsg.append("您的人品太好了...你就是当代活雷锋啊...");
}
result.put("retName", data);
result.put("retMsg", retMsg);
return result;
}
/**
* 页面跳转(调用数据接口)场景
*
* @param param
* @return
* @throws Exception
*/
public IData openPageScene(IData param) throws Exception {
IData result = new DataMap();
// 获取从前台传过来的数据
String data = param.getString("data", "");
// 处理前台传过来的数据
if ("1".equals(data.trim())) {
result.put("retMsg", "太棒了,回答正确");
} else {
result.put("retMsg", "哎呀,回答错误了,答案:1个,因为再吃的时候就不是空着肚子了");
}
return result;
}
/**
* 初始化验证码
*
* @param param
* @return
* @throws Exception
*/
public IData initVerifyCode(IData param) {
IData result = new DataMap();
try {
// 获取验证码
String verifyCode = ImageVerify.getVerifyCode(4, 2);
BufferedImage image = ImageVerify.getImageVerify(verifyCode);
String imageVerifyCode = ImageVerify.getImageBase64(image);
// 创建session
IpuContextData contextData = new IpuContextData();
String sessionId = IpuSessionManager.getInstance()
.createSession(contextData);
contextData.setVerifyCode(verifyCode.toUpperCase());
result.put("VERIFY_IMG", imageVerifyCode);
result.put("SESSION_ID", sessionId);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
*
* @Title: refreshVerifyCode
* @Description: 刷新验证码
* @author 王玉娟
* @param prama
* @return
* @throws Exception
* @throws
*/
public IData refreshVerifyCode(IData prama) throws Exception {
// 获取验证码
String verifyCode = ImageVerify.getVerifyCode(4, 2);
BufferedImage image = ImageVerify.getImageVerify(verifyCode);
String imageVerifyCode = ImageVerify.getImageBase64(image);
if (getContextData() == null) {
// 创建session
IpuContextData contextData = new IpuContextData();
IpuSessionManager.getInstance().createSession(contextData);
}
getContextData().setVerifyCode(verifyCode);
IData result = new DataMap();
result.put("VERIFY_IMG", imageVerifyCode);
return result;
}
/**
* 登陆
*
* @param param
* @return
* @throws Exception
*/
public IData login(IData param) {
IData result = new DataMap();
// 校验验证码是否输入正确
if (!checkLoginVerifyCode(param)) {
MobileUtility.error("登陆失败,验证码输入错误!");
return result;
}
// 将用户信息保存至session
try {
getContextData().setAccount(param.getString("USER_NAME"));
return getContextData().getData();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return result;
}
}
/**
*
* @Title: checkLoginVerifyCode
* @Description: 校验登陆的验证码
* @author 王玉娟
* @param param
* @return true:验证码正确;false:验证码输入错误
* @throws
*/
private boolean checkLoginVerifyCode(IData param) {
try {
String verifyCode = getContextData().getVerifyCode();
String clientVerifyCode = param.getString("VERIFY_CODE");
if (clientVerifyCode == null || verifyCode == null
|| !verifyCode.equalsIgnoreCase(clientVerifyCode)) {
return false;
}
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
public IData getPersonDetailMore(IData param) {
IData result = new DataMap();
int personId = param.getInt("id");
if (personId <= 0) {
throw new RuntimeException("获取参数失败!");
}
if (personId == 1) {
result.put("name", "小胖");
result.put("age", 20);
result.put("gender", "男");
result.put("dept", "移动部门");
} else if (personId == 2) {
result.put("name", "张三");
result.put("age", 22);
result.put("gender", "男");
result.put("dept", "联通部门");
} else if (personId == 3) {
result.put("name", "李四");
result.put("age", 24);
result.put("gender", "女");
result.put("dept", "财务部门");
}
return result;
}
}
|