AppApiController.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.goafanti.app.controller;
  2. import java.lang.reflect.InvocationTargetException;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import java.util.List;
  6. import java.util.UUID;
  7. import javax.annotation.Resource;
  8. import javax.servlet.http.HttpServletRequest;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.springframework.http.HttpMethod;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import org.springframework.web.bind.annotation.RestController;
  14. import com.alibaba.fastjson.JSONObject;
  15. import com.goafanti.common.bo.Result;
  16. import com.goafanti.common.constant.AFTConstants;
  17. import com.goafanti.common.constant.ErrorConstants;
  18. import com.goafanti.common.controller.BaseApiController;
  19. import com.goafanti.common.model.JpushEasemobAccount;
  20. import com.goafanti.common.model.MessageConsumer;
  21. import com.goafanti.common.model.MessageFromSystem;
  22. import com.goafanti.common.model.MessageProducer;
  23. import com.goafanti.common.model.User;
  24. import com.goafanti.common.utils.DateUtils;
  25. import com.goafanti.core.shiro.token.TokenManager;
  26. import com.goafanti.easemob.EasemobUtils;
  27. import com.goafanti.easemob.bo.EasemobInfo;
  28. import com.goafanti.message.bo.MessageBo;
  29. import com.goafanti.message.bo.MessageListBo;
  30. import com.goafanti.message.service.MessageService;
  31. import com.goafanti.user.service.UserService;
  32. @RestController
  33. @RequestMapping(path = "/api/user/app", method = RequestMethod.GET)
  34. public class AppApiController extends BaseApiController {
  35. @Resource
  36. private UserService userServiceImpl;
  37. @Resource
  38. private MessageService messageService;
  39. @Resource
  40. private EasemobUtils easemobUtils;
  41. @RequestMapping(value = "/uploadImg",method = RequestMethod.POST)
  42. public Result uploadAvatar(HttpServletRequest req){
  43. Result res = new Result();
  44. String headPortraitUrl = handleFile(res, "/avatar/", false, req, "");
  45. if(TokenManager.getToken() instanceof User){
  46. User u = new User();
  47. u.setId(TokenManager.getUserId());
  48. u.setHeadPortraitUrl(headPortraitUrl);
  49. userServiceImpl.updateByPrimaryKeySelective(u);
  50. }
  51. res.setData(headPortraitUrl);
  52. return res;
  53. }
  54. @RequestMapping(value = "/updateUser",method = RequestMethod.POST)
  55. public Result updateUser(User u){
  56. Result res = new Result();
  57. if(StringUtils.isBlank(u.getNickname())){
  58. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"用户昵称不能为空"));
  59. return res;
  60. }
  61. List<User> checkData = userServiceImpl.checkExistUser(null, null, null, null, AFTConstants.USER_SOURCE_REGISTER,
  62. u.getNickname());
  63. boolean exist = false;
  64. boolean needChange = false;
  65. if (null != checkData && checkData.size() > 0) {
  66. for (User item : checkData) {
  67. if (!item.getId().equals(TokenManager.getUserId()))
  68. exist = true;
  69. }
  70. } else {
  71. needChange = true;
  72. }
  73. if (exist) {
  74. res.getError().add(buildError(ErrorConstants.USER_NICKNAME_EXIST));
  75. return res;
  76. } else if (needChange) { // 修改环信昵称
  77. JpushEasemobAccount jea = messageService.selectSynAccByUid(TokenManager.getUserId());
  78. if (null != jea && StringUtils.isNotBlank(jea.getEasemobName())) {
  79. JSONObject resultObj = new JSONObject();
  80. resultObj.put("username", jea.getEasemobName());
  81. resultObj.put("nickname", u.getNickname());
  82. easemobUtils.sendLater(
  83. new EasemobInfo().uri("/users/").data(resultObj.toJSONString()).method(HttpMethod.POST));
  84. }
  85. }
  86. u.setId(TokenManager.getUserId());
  87. userServiceImpl.updateByPrimaryKeySelective(u);
  88. return res;
  89. }
  90. @RequestMapping(value = "/logout",method = RequestMethod.GET)
  91. public Result logout(HttpServletRequest request){
  92. Result res = new Result();
  93. TokenManager.logout();
  94. return res;
  95. }
  96. @RequestMapping(value = "/userInfo",method = RequestMethod.GET)
  97. public Result userInfo(HttpServletRequest request){
  98. Result res = new Result();
  99. res.setData(userServiceImpl.selectBaseInfo());
  100. return res;
  101. }
  102. @RequestMapping(value = "/index", method = RequestMethod.GET)
  103. public Result index(){
  104. Result res = new Result();
  105. res.setData(messageService.selectMessageWithGroup());
  106. return res;
  107. }
  108. @RequestMapping(value = "/listMessage", method = RequestMethod.POST)
  109. public Result listMessage(Integer subject,Integer sourceType,Integer pageNo,Integer pageSize){
  110. Result res = new Result();
  111. if(null == subject){
  112. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定消息类型"));
  113. return res;
  114. }
  115. User u = TokenManager.getUserToken();
  116. if(u != null){
  117. List<MessageBo> boList = messageService.selectSyncMessage(u.getId());
  118. if(boList != null && boList.size()>0){
  119. List<MessageProducer> producers = new ArrayList<MessageProducer>();
  120. List<MessageConsumer> consumers = new ArrayList<MessageConsumer>();
  121. MessageProducer mp = null;
  122. MessageConsumer mc = null;
  123. Date date = new Date();
  124. for(MessageBo bo : boList){
  125. mp = new MessageProducer();
  126. mp.setId(bo.getId());
  127. mp.setSendTime(date);
  128. producers.add(mp);
  129. mc = new MessageConsumer();
  130. mc.setId(UUID.randomUUID().toString());
  131. mc.setConsumerId(TokenManager.getUserId());
  132. mc.setMessageId(bo.getMessageId());
  133. consumers.add(mc);
  134. }
  135. if(producers.size()>0)messageService.updateMessageProducer(producers);
  136. //新增 message_consumer
  137. if(consumers.size()>0)messageService.insertBatchConsumer(consumers);
  138. }
  139. }
  140. res.setData(messageService.listPersonalMessage(subject,sourceType,pageNo,pageSize));
  141. return res;
  142. }
  143. /**
  144. * 同步绑定账号
  145. * @param uuid
  146. * @param registrationId
  147. * @param userName
  148. */
  149. @RequestMapping(value = "/synBindingAccount",method = RequestMethod.POST)
  150. private Result synBindingAccount(String uuid,String registrationId,String easemobName,String easemobPass){
  151. Result res = new Result();
  152. //更新 jpush_easemob_account
  153. messageService.updateJpushEasemobAccount(uuid, registrationId, easemobName,easemobPass);
  154. return res;
  155. }
  156. /**
  157. * 读取消息
  158. * @param messageId
  159. * @throws IllegalAccessException
  160. * @throws InvocationTargetException
  161. */
  162. @RequestMapping(value = "/readMessage",method = RequestMethod.GET)
  163. private Result readMessage(String messageId){
  164. Result res = new Result();
  165. if(StringUtils.isBlank(messageId)){
  166. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息编号为空"));
  167. return res;
  168. }
  169. //读取消息详情
  170. MessageFromSystem mfs = messageService.selectSystemMessageDetail(messageId);
  171. MessageListBo bo = new MessageListBo();
  172. bo.setCreateTime(mfs.getCreateTime()==null?"":DateUtils.formatDate(mfs.getCreateTime(), AFTConstants.YYYYMMDDHHMMSS));
  173. bo.setResourceType(String.valueOf(mfs.getResourceType()));
  174. bo.setSubject(String.valueOf(mfs.getSubject()));
  175. bo.setMessageId(mfs.getId());
  176. bo.setTitle(mfs.getTitle());
  177. bo.setBody(mfs.getBody());
  178. res.setData(bo);
  179. //更新 message_consumer
  180. messageService.updateMessageConsumer(messageId);
  181. return res;
  182. }
  183. /**
  184. * 查询环信昵称和头像
  185. * @param easemobName
  186. * @return
  187. */
  188. @RequestMapping(value = "/getNicknameAndHeadPortrait",method = RequestMethod.GET)
  189. public Result getNicknameAndHeadPortrait(String easemobName){
  190. Result res = new Result();
  191. User user = userServiceImpl.selectByNumber(easemobName);
  192. JSONObject jsonObject = new JSONObject();
  193. jsonObject.put("nickName", user.getNickname());
  194. jsonObject.put("headPortraitUrl", null == user.getHeadPortraitUrl()?"":user.getHeadPortraitUrl());
  195. res.setData(jsonObject);
  196. return res;
  197. }
  198. }