package cn.jcenterhome.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jcenterhome.util.BeanFactory;
import cn.jcenterhome.util.Common;
import cn.jcenterhome.util.JavaCenterHome;
public class SpaceService {
private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
public Map<String, Object> openSpace(HttpServletRequest request, HttpServletResponse response,
Map<String, Object> sGlobal, Map<String, Object> sConfig, int uid, String userName, int gid,
String email) throws Exception {
if (uid == 0 || Common.empty(userName)) {
return null;
}
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("spacelog") + " WHERE uid=" + uid + " AND flag=-1");
if (count > 0) {
throw new Exception("the_space_has_been_closed");
}
Map<String, Object> space = new HashMap<String, Object>();
space.put("uid", uid);
space.put("username", userName);
space.put("namestatus", 0);
space.put("avatar", 0);
space.put("dateline", sGlobal.get("timestamp"));
space.put("groupid", gid);
space.put("regip", Common.getOnlineIP(request));
Map<String, Integer> reward = Common.getReward("register", false, uid, "", true, request, response);
int credit = reward.get("credit");
if (credit != 0) {
space.put("credit", credit);
}
int experience = reward.get("experience");
if (experience != 0) {
space.put("experience", experience);
}
Map<String, Object> spaceField = new HashMap<String, Object>();
spaceField.put("uid", uid);
spaceField.put("email", email);
spaceField.put("note", "");
spaceField.put("spacenote", "");
spaceField.put("css", "");
spaceField.put("privacy", "");
spaceField.put("friend", "");
spaceField.put("feedfriend", "");
spaceField.put("sendmail", "");
dataBaseService.insertTable("space", space, false, true);
dataBaseService.insertTable("spacefield", spaceField, false, true);
CpService cpService = (CpService) BeanFactory.getBean("cpService");
cpService.sendEmailCheck(request, response, uid, email);
int _uid = (Integer) sGlobal.get("supe_uid");
String _userName = (String) sGlobal.get("supe_username");
sGlobal.put("supe_uid", uid);
sGlobal.put("supe_username", Common.addSlashes(userName));
if (Common.ckPrivacy(sGlobal, sConfig, space, "spaceopen", 1)) {
cpService.addFeed(sGlobal, "profile", Common.getMessage(request, "cp_feed_space_open"), null, "",
null, "", null, null, "", 0, 0, 0, "", false);
}
if ((Integer) sConfig.get("newspacenum") > 0) {
List<String> whereArr = new ArrayList<String>();
whereArr.add("1");
if (!Common.empty(sConfig.get("newspaceavatar"))) {
whereArr.add("avatar='1'");
}
if (!Common.empty(sConfig.get("newspacerealname"))) {
whereArr.add("namestatus='1'");
}
if (!Common.empty(sConfig.get("newspacevideophoto"))) {
whereArr.add("videostatus='1'");
}
List<Map<String, Object>> newSpaceList = dataBaseService
.executeQuery("SELECT uid,username,name,namestatus,videostatus,dateline FROM "
+ JavaCenterHome.getTableName("space") + " WHERE "
+ Common.implode(whereArr, " AND ") + " ORDER BY uid DESC LIMIT 0,"
+ sConfig.get("newspacenum"));
Common.setData("newspacelist", newSpaceList, false);
}
cpService.updateStat(sGlobal, sConfig, "register", false);
sGlobal.put("supe_uid", _uid);
sGlobal.put("supe_username", _userName);
return space;
}
public void insertSession(HttpServletRequest request, HttpServletResponse response,
Map<String, Object> sGlobal, Map<String, Object> sConfig, int uid, String userName,
String password) {
int onlinehold = (Integer) sConfig.get("onlinehold");
if (onlinehold < 300) {
onlinehold = 300;
sConfig.put("onlinehold", onlinehold);
}
int timestamp = (Integer) sGlobal.get("timestamp");
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("session") + " WHERE uid="
+ uid + " OR lastactivity<" + (timestamp - onlinehold));
String ip = Common.getOnlineIP(request, true);
byte magichidden = 0;
Map<String, String> magic = (Map<String, String>) request.getAttribute("globalMagic");
if (magic != null && magic.get("invisible") != null) {
List<String> expires = dataBaseService.executeQuery("SELECT expire FROM "
+ JavaCenterHome.getTableName("magicuselog") + " WHERE uid=" + uid
+ " AND mid='invisible'", 1);
if (expires.size() > 0) {
if (Integer.parseInt(expires.get(0)) > timestamp) {
magichidden = 1;
}
}
}
dataBaseService.executeUpdate("REPLACE INTO " + JavaCenterHome.getTableName("session")
+ " (uid,username,password,lastactivity,ip,magichidden) VALUES (" + uid + ",'" + userName
+ "','" + password + "'," + timestamp + ",'" + ip + "'," + magichidden + ")");
sGlobal.put("supe_uid", uid);
List<String> spaceFields = new ArrayList<String>();
spaceFields.add("lastlogin = " + timestamp);
spaceFields.add("ip = '" + ip + "'");
Map<String, Integer> reward = Common.getReward("daylogin", false, uid, "", true, request, response);
int experience = reward.get("credit");
int credit = reward.get("experience");
if (credit > 0) {
spaceFields.add("credit=credit+" + credit);
}
if (experience > 0) {
spaceFields.add("experience=experience+" + experience);
}
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET "
+ Common.implode(spaceFields, ",") + " WHERE uid=" + uid);
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("spacelog") + " WHERE uid=" + uid + " AND expiration <="
+ timestamp);
if (count > 0) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET groupid=0 WHERE uid=" + uid);
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("spacelog") + " WHERE uid="
+ uid);
}
CpService cpService = (CpService) BeanFactory.getBean("cpService");
cpService.updateStat(sGlobal, sConfig, "login", true);
}
public Map getTask(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<Object, Map> globalTask = Common.getCacheDate(request, response, "/data/cache/cache_task.jsp",
"globalTask");
List<Map> tasks = new ArrayList<Map>();
if (!globalTask.isEmpty()) {
List<Map<String, Object>> userTaskList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("usertask") + " WHERE uid='" + sGlobal.get("supe_uid")
+ "'");
Map<Object, Map<String, Object>> userTasks = new HashMap<Object, Map<String, Object>>();
for (Map<String, Object> value : userTaskList) {
userTasks.put(value.get("taskid"), value);
}
Set keys = globalTask.keySet();
Map value = null;
int timestamp = (Integer) sGlobal.get("timestamp");
for (Object key : keys) {
boolean allowNext = false;
value = globalTask.get(key);
String nextType = value.get("nexttype").toString();
int lastTime = userTasks.get(value.get("taskid")) == null ? 0 : (Integer) userTasks.get(
value.get("taskid")).get("dateline");
if (Common.empty(lastTime)) {
allowNext = true;
} else if ("day".equals(nextType)) {
if (!Common.sgmdate(request, "yyyyMMdd", timestamp).equals(
Common.sgmdate(request, "yyyyMMdd", lastTime))) {
allowNext = true;
}
} else if ("hour".equals(nextType)) {
if (!Common.sgmdate(request, "yyyyMMddHH", timestamp).equals(
Common.sgmdate(request, "yyyyMMddHH", lastTime))) {
allowNext = true;
}
} else if ((Integer) value.get("nexttime") > 0) {
if (timestamp - lastTime >= (Integer) value.get("nexttime")) {
allowNext = true;
}
}
if ((Integer) value.get("starttime") <= timestamp && allowNext) {
value.put("image", Common.empty(value.get("image")) ? "image/task.gif" : value
.get("image"));
tasks.add(value);
}
}
}
if (!tasks.isEmpty()) {
int max = tasks.size();
int randIndex = max <= 1 ? 0 : Common.rand(0, max - 1);
return tasks.get(randIndex);
} else {
return new HashMap();
}
}
}