WindChat/windchat-admin/src/main/java/com/akaxin/site/web/admin/controller/UserSquareController.java

146 lines
5.5 KiB
Java
Executable File

package com.akaxin.site.web.admin.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.akaxin.common.utils.GsonUtils;
import com.akaxin.proto.core.PluginProto;
import com.akaxin.proto.core.UserProto;
import com.akaxin.site.business.dao.UserFriendDao;
import com.akaxin.site.business.impl.notice.User2Notice;
import com.akaxin.site.business.push.PushNotification;
import com.windchat.im.storage.bean.SimpleUserBean;
import com.windchat.im.storage.bean.UserProfileBean;
import com.akaxin.site.web.admin.service.IUserService;
import com.google.protobuf.InvalidProtocolBufferException;
/**
* 用户广场
*
* @author Sam{@link an.guoyue254@gmail.com}
* @since 2018-06-12 18:24:29
*/
@Controller
@RequestMapping("userSquare")
public class UserSquareController extends AbstractController {
private static final Logger logger = LoggerFactory.getLogger(UserManageController.class);
@Resource(name = "userManageService")
private IUserService userService;
@RequestMapping("/index")
public ModelAndView toIndex(@RequestBody byte[] bodyParam) {
ModelAndView modelAndView = new ModelAndView("siteMember/siteMember");
Map<String, Object> model = modelAndView.getModel();
PluginProto.ProxyPluginPackage pluginPackage = null;
try {
pluginPackage = PluginProto.ProxyPluginPackage.parseFrom(bodyParam);
Map<Integer, String> headerMap = pluginPackage.getPluginHeaderMap();
String siteUserId = headerMap.get(PluginProto.PluginHeaderKey.CLIENT_SITE_USER_ID_VALUE);
UserProfileBean userProfile = userService.getUserProfile(siteUserId);
model.put("site_user_id", siteUserId);
model.put("site_user_name", userProfile.getUserName());
} catch (InvalidProtocolBufferException e) {
logger.error("to user square error", e);
return new ModelAndView("siteMember/error");
}
return modelAndView;
}
@SuppressWarnings("unchecked")
@RequestMapping(method = RequestMethod.POST, value = "/pullMemberList")
@ResponseBody
public Map<String, Object> getMemberList(HttpServletRequest request, @RequestBody byte[] bodyParam) {
Map<String, Object> results = new HashMap<String, Object>();
boolean nodata = true;
int pageSize = 20;
try {
PluginProto.ProxyPluginPackage pluginPackage = PluginProto.ProxyPluginPackage.parseFrom(bodyParam);
Map<Integer, String> headerMap = pluginPackage.getPluginHeaderMap();
String siteUserId = headerMap.get(PluginProto.PluginHeaderKey.CLIENT_SITE_USER_ID_VALUE);
Map<String, String> ReqMap = GsonUtils.fromJson(pluginPackage.getData(), Map.class);
int pageNum = Integer.valueOf(ReqMap.get("pageNum"));
List<SimpleUserBean> userList = userService.getUserList(pageNum, pageSize);
List<Map<String, String>> data = new ArrayList<Map<String, String>>();
if (userList != null && userList.size() > 0) {
nodata = false;
for (SimpleUserBean bean : userList) {
Map<String, String> memberMap = new HashMap<String, String>();
if (siteUserId != bean.getUserId()) {
memberMap.put("site_user_id", bean.getUserId());
memberMap.put("site_user_name", bean.getUserName());
memberMap.put("site_user_photo", bean.getUserPhoto());
UserProto.UserRelation userRelation = UserFriendDao.getInstance().getUserRelation(siteUserId,
bean.getUserId());
memberMap.put("site_user_relation", String.valueOf(userRelation.getNumber()));
}
data.add(memberMap);
}
}
results.put("Data", data);
} catch (Exception e) {
logger.error("get Member list error", e);
}
results.put("loading", nodata);
return results;
}
@RequestMapping("/applyFriend")
@ResponseBody
public String[] applyFriend(@RequestBody byte[] bodyParam) {
PluginProto.ProxyPluginPackage pluginPackage = null;
try {
pluginPackage = PluginProto.ProxyPluginPackage.parseFrom(bodyParam);
Map<Integer, String> headerMap = pluginPackage.getPluginHeaderMap();
String siteUserId = headerMap.get(PluginProto.PluginHeaderKey.CLIENT_SITE_USER_ID_VALUE);
Map<String, String> ReqMap = GsonUtils.fromJson(pluginPackage.getData(), Map.class);
String friendSiteUserId = ReqMap.get("site_user_id");
String apply_reason = ReqMap.get("apply_reason");
if (StringUtils.isBlank(siteUserId)) {
return new String[] { "添加失败", "0" };
} else if (siteUserId.equals(friendSiteUserId)) {
} else {
int applyTimes = UserFriendDao.getInstance().getApplyCount(friendSiteUserId, siteUserId);
if (applyTimes >= 5) {
return new String[] { "失败,次数过多", "0" };
} else {
if (UserFriendDao.getInstance().saveFriendApply(siteUserId, friendSiteUserId, apply_reason)) {
new User2Notice().applyFriendNotice(siteUserId, friendSiteUserId);
// 同时下发一条PUSH消息
if (applyTimes < 2) {
PushNotification.sendAddFriend(siteUserId, friendSiteUserId);
}
return new String[] { "成功", friendSiteUserId };
}
}
}
} catch (InvalidProtocolBufferException e) {
logger.error("Friend apply error.", e);
}
return new String[] { "添加失败", "0" };
}
}