admin
2019-05-16 4114e871bcb3dce771b6aed64a1027d0bbb95ca6
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMsgController.java
@@ -30,10 +30,12 @@
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.dto.msg.MsgCommonDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.homemodule.Special;
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
import com.yeshi.fanli.entity.bus.msg.MsgAccountDetail;
import com.yeshi.fanli.entity.bus.msg.MsgDeviceReadState;
import com.yeshi.fanli.entity.bus.msg.MsgInviteDetail;
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail;
import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail;
@@ -58,6 +60,8 @@
import com.yeshi.fanli.service.inter.homemodule.SpecialService;
import com.yeshi.fanli.service.inter.lable.QualityFactoryService;
import com.yeshi.fanli.service.inter.msg.MsgAccountDetailService;
import com.yeshi.fanli.service.inter.msg.MsgConfigService;
import com.yeshi.fanli.service.inter.msg.MsgDeviceReadStateService;
import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService;
import com.yeshi.fanli.service.inter.msg.MsgMoneyDetailService;
import com.yeshi.fanli.service.inter.msg.MsgOrderDetailService;
@@ -140,6 +144,12 @@
   @Resource
   private DeviceActiveService deviceActiveService;
   @Resource
   private MsgConfigService msgConfigService;
   @Resource
   private MsgDeviceReadStateService msgDeviceReadStateService;
   // 消息的类型
   final static String MSG_TYPE_ORDER = "order";
@@ -243,12 +253,6 @@
    */
   @RequestMapping(value = "getUnReadMsgCount", method = RequestMethod.POST)
   public void getUnReadMsgCount(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
      GsonBuilder androidBuilder = new GsonBuilder().registerTypeAdapter(Integer.class,
            new JsonSerializer<Integer>() {
               @Override
@@ -263,8 +267,42 @@
                  }
               }
            });
      if (uid == null) {
         // 如果用户未登录就读取设备消息
         UserMsgUnReadNum num = new UserMsgUnReadNum();
         num.setTypeAccount(0);
         num.setTypeInvite(0);
         num.setTypeMoney(0);
         num.setTypeOrder(0);
         num.setTypeOther(0);
         num.setTypeScore(0);
         num.setTypeSystem(0);
         JSONObject data = null;
         if ("android".equalsIgnoreCase(acceptData.getPlatform())) {
            data = JSONObject
                  .fromObject(androidBuilder.excludeFieldsWithoutExposeAnnotation().create().toJson(num));
         } else {
            data = JSONObject.fromObject(JsonUtil.getApiCommonGson().toJson(num));
         }
         data.put("totalCount", 0);
         try {
            UserSettingsVO vo = userCustomSettingsService.getMySettings(uid);
            if (vo != null && vo.getNoNewsRedDot() != null && vo.getNoNewsRedDot() == 1) {
               data.put("totalCount", 0);
            }
         } catch (UserCustomSettingsException e) {
            e.printStackTrace();
         }
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
      UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
      int totalCount = num.getTypeAccount() + num.getTypeInvite() + num.getTypeMoney() + num.getTypeOrder()
            + num.getTypeScore() + num.getTypeSystem() + num.getTypeOther();
      JSONObject data = null;
      if ("android".equalsIgnoreCase(acceptData.getPlatform())) {
         data = JSONObject.fromObject(androidBuilder.excludeFieldsWithoutExposeAnnotation().create().toJson(num));
@@ -557,6 +595,52 @@
      // 单条消息
      List<UserCommonMsgVO> commonMsgList = new ArrayList<>();
      long currentTime = System.currentTimeMillis();
      // 官宣任务
      if (uid != null) {
         MsgCommonDTO guanXuanMsg = msgConfigService.getGuanXuanMsg();
         if (guanXuanMsg != null) {
            boolean read = false;
            UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
            if (num != null && (num.getGuanXuanReadTime() != null
                  && guanXuanMsg.getUpdateTime().getTime() < num.getGuanXuanReadTime().getTime()))
               read = true;
            // 查询是否已读
            if ((guanXuanMsg.getStartTime() != null && currentTime < guanXuanMsg.getStartTime().getTime())
                  || (guanXuanMsg.getEndTime() != null && currentTime > guanXuanMsg.getEndTime().getTime())) {
               // 不显示
            } else
               commonMsgList.add(new UserCommonMsgVO(guanXuanMsg.getIcon(), guanXuanMsg.getTitle(),
                     guanXuanMsg.getUpdateTime(), UserCommonMsgVO.TYPE_GUANXUAN, guanXuanMsg.getContent(), read,
                     guanXuanMsg.getJumpDetail(), guanXuanMsg.getParams()));
         }
      }
      // 返利券小助手
      MsgCommonDTO zhuShouMsg = msgConfigService.getZhuShouMsg();
      if (zhuShouMsg != null) {
         boolean read = false;
         MsgDeviceReadState state = msgDeviceReadStateService.getByDeviceAndPlatformAndType(
               UserCommonMsgVO.TYPE_ZHUSHOU, acceptData.getDevice(),
               acceptData.getPlatform().equalsIgnoreCase("android") ? 1 : 2);
         if (state != null && state.getReadTime() != null
               && zhuShouMsg.getUpdateTime().getTime() < state.getReadTime().getTime())
            read = true;
         // 查询是否已读
         if ((zhuShouMsg.getStartTime() != null && currentTime < zhuShouMsg.getStartTime().getTime())
               || (zhuShouMsg.getEndTime() != null && currentTime > zhuShouMsg.getEndTime().getTime())) {
            // 不显示
         } else
            commonMsgList.add(new UserCommonMsgVO(zhuShouMsg.getIcon(), zhuShouMsg.getTitle(),
                  zhuShouMsg.getUpdateTime(), UserCommonMsgVO.TYPE_ZHUSHOU, zhuShouMsg.getContent(), read,
                  zhuShouMsg.getJumpDetail(), zhuShouMsg.getParams()));
      }
      // 人工客服
      commonMsgList.add(new UserCommonMsgVO("http://img.flqapp.com/resource/msg/icon_kefu.png", "人工客服", new Date(),
            UserCommonMsgVO.TYPE_KEFU, "", false, null, null));
@@ -568,8 +652,16 @@
         Date createTime = deviceActive.getCreateTime();
         List<PushGoods> list = pushGoodsService.listHistoryByPushTime(0, 1, uid, createTime);
         if (list != null && list.size() > 0) {
            MsgDeviceReadState state = msgDeviceReadStateService.getByDeviceAndPlatformAndType(
                  UserCommonMsgVO.TYPE_RECOMMEND, acceptData.getDevice(),
                  acceptData.getPlatform().equalsIgnoreCase("android") ? 1 : 2);
            boolean read = false;
            if (state != null && state.getReadTime() != null
                  && list.get(0).getCreateTime().getTime() < state.getReadTime().getTime())
               read = true;
            commonMsgList.add(new UserCommonMsgVO("http://img.flqapp.com/resource/msg/icon_recommend.png", "推荐记录",
                  list.get(0).getCreateTime(), UserCommonMsgVO.TYPE_RECOMMEND, list.get(0).getContent(), false,
                  list.get(0).getCreateTime(), UserCommonMsgVO.TYPE_RECOMMEND, list.get(0).getContent(), read,
                  jumpDetailV2Service.getByTypeCache("recommend_list"), null));
         }
      }
@@ -686,6 +778,9 @@
         UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
         UserSystemMsg usm = userSystemMsgService.getLatestUserSystemMsg(uid);
         if (usm != null) {
            // commonMsgList.add(0,new UserCommonMsgVO(icon, "系统消息", time,
            // type, latestMsg, ,
            // jumpDetailV2Service.getByTypeCache("system_msg"), params));
            root.put("systemMsg",
                  new UserSystemMsgVO(usm.getId(), usm.getType().name(), usm.getSolved(), "系统消息", usm.getTitle(),
                        usm.getTimeTag() == 1 ? "http://img.flqapp.com/resource/msg/icon_emergent.png" : "",
@@ -779,10 +874,22 @@
   @RequestMapping(value = "setAllMsgRead", method = RequestMethod.POST)
   public void setAllMsgRead(AcceptData acceptData, Long uid, PrintWriter out) {
      msgDeviceReadStateService.setAllMsgRead(acceptData.getDevice(),
            "android".equalsIgnoreCase(acceptData.getPlatform()) ? 1 : 2);
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      // 初始化读取状态
      msgDeviceReadStateService.initReadState(acceptData.getDevice(),
            "android".equalsIgnoreCase(acceptData.getPlatform()) ? 1 : 2, UserCommonMsgVO.TYPE_RECOMMEND);
      msgDeviceReadStateService.initReadState(acceptData.getDevice(),
            "android".equalsIgnoreCase(acceptData.getPlatform()) ? 1 : 2, UserCommonMsgVO.TYPE_ZHUSHOU);
      // 设置设备消息所有已读
      msgDeviceReadStateService.setAllMsgRead(acceptData.getDevice(),
            "android".equalsIgnoreCase(acceptData.getPlatform()) ? 1 : 2);
      UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
      int totalNum = num.getTypeAccount() + num.getTypeInvite() + num.getTypeMoney() + num.getTypeOrder()
@@ -803,20 +910,28 @@
    * @param out
    */
   @RequestMapping(value = "readCommonMsg", method = RequestMethod.POST)
   public void readCommonMsg(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
   public void readCommonMsg(AcceptData acceptData, Long uid, String type, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(type)) {
         out.print(JsonUtil.loadFalseResult(2, "请上传type"));
         return;
      }
      if (type.equalsIgnoreCase(UserCommonMsgVO.TYPE_GUANXUAN)) {
         if (uid != null) {
            UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
            UserMsgUnReadNum update = new UserMsgUnReadNum();
            update.setId(num.getId());
            update.setGuanXuanReadTime(new Date());
            update.setUpdateTime(new Date());
            userMsgReadStateService.updateSelective(update);
         }
      UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
      int totalNum = num.getTypeAccount() + num.getTypeInvite() + num.getTypeMoney() + num.getTypeOrder()
            + num.getTypeScore() + num.getTypeSystem() + num.getTypeOther();
      if (totalNum == 0) {
         out.print(JsonUtil.loadFalseResult(1, "没有未读消息"));
         return;
      } else
         userMsgReadStateService.setAllMsgRead(uid);
      } else if (type.equalsIgnoreCase(UserCommonMsgVO.TYPE_RECOMMEND)) {
         msgDeviceReadStateService.setDeviceMsgRead(UserCommonMsgVO.TYPE_RECOMMEND, acceptData.getDevice(),
               (acceptData.getPlatform().equalsIgnoreCase("android") ? 1 : 2));
      } else if (type.equalsIgnoreCase(UserCommonMsgVO.TYPE_ZHUSHOU)) {
         msgDeviceReadStateService.setDeviceMsgRead(UserCommonMsgVO.TYPE_ZHUSHOU, acceptData.getDevice(),
               (acceptData.getPlatform().equalsIgnoreCase("android") ? 1 : 2));
      }
      out.print(JsonUtil.loadTrueResult(""));
   }