| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- package com.goafanti.app.controller;
- import java.lang.reflect.InvocationTargetException;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.UUID;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.http.HttpMethod;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- import com.alibaba.fastjson.JSONObject;
- import com.goafanti.common.bo.Result;
- import com.goafanti.common.constant.AFTConstants;
- import com.goafanti.common.constant.ErrorConstants;
- import com.goafanti.common.controller.BaseApiController;
- import com.goafanti.common.model.JpushEasemobAccount;
- import com.goafanti.common.model.MessageConsumer;
- import com.goafanti.common.model.MessageFromSystem;
- import com.goafanti.common.model.MessageProducer;
- import com.goafanti.common.model.User;
- import com.goafanti.common.utils.DateUtils;
- import com.goafanti.core.shiro.token.TokenManager;
- import com.goafanti.easemob.EasemobUtils;
- import com.goafanti.easemob.bo.EasemobInfo;
- import com.goafanti.message.bo.MessageBo;
- import com.goafanti.message.bo.MessageListBo;
- import com.goafanti.message.service.MessageService;
- import com.goafanti.user.service.UserService;
- @RestController
- @RequestMapping(path = "/api/user/app", method = RequestMethod.GET)
- public class AppApiController extends BaseApiController {
- @Resource
- private UserService userServiceImpl;
- @Resource
- private MessageService messageService;
- @Resource
- private EasemobUtils easemobUtils;
- @RequestMapping(value = "/uploadImg",method = RequestMethod.POST)
- public Result uploadAvatar(HttpServletRequest req){
- Result res = new Result();
- String headPortraitUrl = handleFile(res, "/avatar/", false, req, "");
- if(TokenManager.getToken() instanceof User){
- User u = new User();
- u.setId(TokenManager.getUserId());
- u.setHeadPortraitUrl(headPortraitUrl);
- userServiceImpl.updateByPrimaryKeySelective(u);
- }
- res.setData(headPortraitUrl);
- return res;
- }
- @RequestMapping(value = "/updateUser",method = RequestMethod.POST)
- public Result updateUser(User u){
- Result res = new Result();
- if(StringUtils.isBlank(u.getNickname())){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"用户昵称不能为空"));
- return res;
- }
- List<User> checkData = userServiceImpl.checkExistUser(null, null, null, null, AFTConstants.USER_SOURCE_REGISTER,
- u.getNickname());
- boolean exist = false;
- boolean needChange = false;
- if (null != checkData && checkData.size() > 0) {
- for (User item : checkData) {
- if (!item.getId().equals(TokenManager.getUserId()))
- exist = true;
- }
- } else {
- needChange = true;
- }
- if (exist) {
- res.getError().add(buildError(ErrorConstants.USER_NICKNAME_EXIST));
- return res;
- } else if (needChange) { // 修改环信昵称
- JpushEasemobAccount jea = messageService.selectSynAccByUid(TokenManager.getUserId());
- if (null != jea && StringUtils.isNotBlank(jea.getEasemobName())) {
- JSONObject resultObj = new JSONObject();
- resultObj.put("username", jea.getEasemobName());
- resultObj.put("nickname", u.getNickname());
- easemobUtils.sendLater(
- new EasemobInfo().uri("/users/").data(resultObj.toJSONString()).method(HttpMethod.POST));
- }
- }
- u.setId(TokenManager.getUserId());
- userServiceImpl.updateByPrimaryKeySelective(u);
- return res;
- }
-
- @RequestMapping(value = "/logout",method = RequestMethod.GET)
- public Result logout(HttpServletRequest request){
- Result res = new Result();
- TokenManager.logout();
- return res;
- }
-
- @RequestMapping(value = "/userInfo",method = RequestMethod.GET)
- public Result userInfo(HttpServletRequest request){
- Result res = new Result();
- res.setData(userServiceImpl.selectBaseInfo());
- return res;
- }
-
- @RequestMapping(value = "/index", method = RequestMethod.GET)
- public Result index(){
- Result res = new Result();
- res.setData(messageService.selectMessageWithGroup());
- return res;
- }
-
- @RequestMapping(value = "/listMessage", method = RequestMethod.POST)
- public Result listMessage(Integer subject,Integer sourceType,Integer pageNo,Integer pageSize){
- Result res = new Result();
- if(null == subject){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定消息类型"));
- return res;
- }
- User u = TokenManager.getUserToken();
- if(u != null){
- List<MessageBo> boList = messageService.selectSyncMessage(u.getId());
- if(boList != null && boList.size()>0){
- List<MessageProducer> producers = new ArrayList<MessageProducer>();
- List<MessageConsumer> consumers = new ArrayList<MessageConsumer>();
- MessageProducer mp = null;
- MessageConsumer mc = null;
- Date date = new Date();
- for(MessageBo bo : boList){
- mp = new MessageProducer();
- mp.setId(bo.getId());
- mp.setSendTime(date);
- producers.add(mp);
- mc = new MessageConsumer();
- mc.setId(UUID.randomUUID().toString());
- mc.setConsumerId(TokenManager.getUserId());
- mc.setMessageId(bo.getMessageId());
- consumers.add(mc);
- }
- if(producers.size()>0)messageService.updateMessageProducer(producers);
- //新增 message_consumer
- if(consumers.size()>0)messageService.insertBatchConsumer(consumers);
- }
- }
- res.setData(messageService.listPersonalMessage(subject,sourceType,pageNo,pageSize));
- return res;
- }
-
- /**
- * 同步绑定账号
- * @param uuid
- * @param registrationId
- * @param userName
- */
- @RequestMapping(value = "/synBindingAccount",method = RequestMethod.POST)
- private Result synBindingAccount(String uuid,String registrationId,String easemobName,String easemobPass){
- Result res = new Result();
- //更新 jpush_easemob_account
- messageService.updateJpushEasemobAccount(uuid, registrationId, easemobName,easemobPass);
- return res;
- }
-
- /**
- * 读取消息
- * @param messageId
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- @RequestMapping(value = "/readMessage",method = RequestMethod.GET)
- private Result readMessage(String messageId){
- Result res = new Result();
- if(StringUtils.isBlank(messageId)){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息编号为空"));
- return res;
- }
- //读取消息详情
- MessageFromSystem mfs = messageService.selectSystemMessageDetail(messageId);
- MessageListBo bo = new MessageListBo();
- bo.setCreateTime(mfs.getCreateTime()==null?"":DateUtils.formatDate(mfs.getCreateTime(), AFTConstants.YYYYMMDDHHMMSS));
- bo.setResourceType(String.valueOf(mfs.getResourceType()));
- bo.setSubject(String.valueOf(mfs.getSubject()));
- bo.setMessageId(mfs.getId());
- bo.setTitle(mfs.getTitle());
- bo.setBody(mfs.getBody());
- res.setData(bo);
- //更新 message_consumer
- messageService.updateMessageConsumer(messageId);
- return res;
- }
- /**
- * 查询环信昵称和头像
- * @param easemobName
- * @return
- */
- @RequestMapping(value = "/getNicknameAndHeadPortrait",method = RequestMethod.GET)
- public Result getNicknameAndHeadPortrait(String easemobName){
- Result res = new Result();
- User user = userServiceImpl.selectByNumber(easemobName);
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("nickName", user.getNickname());
- jsonObject.put("headPortraitUrl", null == user.getHeadPortraitUrl()?"":user.getHeadPortraitUrl());
- res.setData(jsonObject);
- return res;
- }
- }
|