com.mmj.app.web.controller.BaseController.java Source code

Java tutorial

Introduction

Here is the source code for com.mmj.app.web.controller.BaseController.java

Source

/*
 * Copyright 2014-2017 MSUN.com All right reserved. This software is the confidential and proprietary information of
 * MSUN.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into with MSUN.com.
 */
package com.mmj.app.web.controller;

import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.mmj.app.biz.cons.CollectTypeEnum;
import com.mmj.app.biz.domain.BaseDO;
import com.mmj.app.biz.domain.CollectDO;
import com.mmj.app.biz.domain.CollectFullDO;
import com.mmj.app.biz.domain.CommentsDO;
import com.mmj.app.biz.domain.CommentsFullDO;
import com.mmj.app.biz.domain.DialogDO;
import com.mmj.app.biz.domain.DialogFullDO;
import com.mmj.app.biz.domain.MemberDO;
import com.mmj.app.biz.domain.MemberThinDO;
import com.mmj.app.biz.domain.NotificationDO;
import com.mmj.app.biz.domain.TopicDO;
import com.mmj.app.biz.query.CollectQuery;
import com.mmj.app.biz.service.interfaces.CommentsService;
import com.mmj.app.biz.service.interfaces.FileService;
import com.mmj.app.biz.service.interfaces.LetterService;
import com.mmj.app.biz.service.interfaces.TopicService;
import com.mmj.app.biz.service.interfaces.UserService;
import com.mmj.app.common.component.ComponentController;
import com.mmj.app.common.cons.ResultCode;
import com.mmj.app.common.core.lang.CollectionUtils;
import com.mmj.app.common.notify.NotifyService;
import com.mmj.app.common.result.Result;
import com.mmj.app.lucene.search.pojo.TopicSearchField;
import com.mmj.app.lucene.search.pojo.UserSearchField;
import com.mmj.app.web.cons.WebAppInterface;
import com.mmj.app.web.tools.WebUserTools;
import com.mmj.app.web.webuser.MMJWebUserBuilder;

/**
 * @author zxc Jun 15, 2014 11:15:54 PM
 */
@Validated
@ControllerAdvice
public class BaseController extends ComponentController implements WebAppInterface {

    // @Value("${web.app.host}")
    protected String WEB_APP_HOST = "http://121.40.160.6";

    // ?
    @Autowired
    protected FileService fileService;

    @Autowired
    private NotifyService notifyService;

    @Autowired
    protected UserService userService;
    @Autowired
    protected TopicService topicService;
    @Autowired
    protected CommentsService commentsService;
    @Autowired
    protected LetterService letterService;

    protected <T extends BaseDO> void initUserInfo4Base(T object) {
        if (object == null) {
            return;
        }

        if (object instanceof TopicDO) {
            MemberThinDO member = userService.fetchMemberById(((TopicDO) object).getUserId());
            if (member != null) {
                ((TopicDO) object).setNick(member.getNick());
                ((TopicDO) object).setNickImgurl(member.getPic());
            }
        }
        if (object instanceof DialogDO || object instanceof DialogFullDO) {
            MemberThinDO senderMember = userService.fetchMemberById(((DialogDO) object).getSenderUserId());
            ((DialogDO) object).setSenderNick(senderMember.getNick());
            ((DialogDO) object).setSenderNickImgUrl(senderMember.getPic());

            MemberThinDO recipientMember = userService.fetchMemberById(((DialogDO) object).getRecipientUserId());
            ((DialogDO) object).setRecipientNick(recipientMember.getNick());
            ((DialogDO) object).setRecipientNickImgUrl(recipientMember.getPic());
        }
        if (object instanceof CommentsDO || object instanceof CommentsFullDO) {
            MemberThinDO member = userService.fetchMemberById(((CommentsDO) object).getUserId());
            if (member != null) {
                ((CommentsDO) object).setNick(member.getNick());
                ((CommentsDO) object).setNickImgurl(member.getPic());
            }
        }
        if (object instanceof CollectFullDO) {
            MemberThinDO member = userService.fetchMemberById(((CollectFullDO) object).getUserId());
            if (member != null) {
                ((CollectFullDO) object).setNick(member.getNick());
                ((CollectFullDO) object).setNickImgurl(member.getPic());
                ((CollectFullDO) object).setName(member.getName());
            }
        }
    }

    protected void initUserInfo4List(List<?> list) {
        for (Object object : list) {
            if (object == null) {
                continue;
            }

            if (object instanceof TopicSearchField) {
                MemberThinDO member = userService.fetchMemberById(((TopicSearchField) object).getUserId());
                if (member != null) {
                    ((TopicSearchField) object).setNick(member.getNick());
                    ((TopicSearchField) object).setNickImgurl(member.getPic());
                }
            }
            if (object instanceof UserSearchField) {
                MemberThinDO member = userService.fetchMemberById(((UserSearchField) object).getId());
                if (member != null) {
                    ((UserSearchField) object).setNick(member.getNick());
                    ((UserSearchField) object).setPic(member.getPic());
                }
            }

            if (object instanceof TopicDO) {
                MemberThinDO member = userService.fetchMemberById(((TopicDO) object).getUserId());
                if (member != null) {
                    ((TopicDO) object).setNick(member.getNick());
                    ((TopicDO) object).setNickImgurl(member.getPic());
                }
            }
            if (object instanceof DialogDO || object instanceof DialogFullDO) {
                MemberThinDO senderMember = userService.fetchMemberById(((DialogDO) object).getSenderUserId());
                if (senderMember != null) {
                    ((DialogDO) object).setSenderNick(senderMember.getNick());
                    ((DialogDO) object).setSenderNickImgUrl(senderMember.getPic());
                }

                MemberThinDO recipientMember = userService
                        .fetchMemberById(((DialogDO) object).getRecipientUserId());
                if (senderMember != null) {
                    ((DialogDO) object).setRecipientNick(recipientMember.getNick());
                    ((DialogDO) object).setRecipientNickImgUrl(recipientMember.getPic());
                }
            }
            if (object instanceof CommentsDO || object instanceof CommentsFullDO) {
                MemberThinDO member = userService.fetchMemberById(((CommentsDO) object).getUserId());
                if (member != null) {
                    ((CommentsDO) object).setNick(member.getNick());
                    ((CommentsDO) object).setNickImgurl(member.getPic());
                }
            }
            if (object instanceof CollectFullDO) {
                MemberThinDO member = userService.fetchMemberById(((CollectFullDO) object).getUserId());
                if (member != null) {
                    ((CollectFullDO) object).setNick(member.getNick());
                    ((CollectFullDO) object).setNickImgurl(member.getPic());
                    ((CollectFullDO) object).setName(member.getName());
                }
            }
            if (object instanceof NotificationDO) {
                MemberThinDO destMember = userService.fetchMemberById(((NotificationDO) object).getUserId());
                MemberThinDO fromMember = userService.fetchMemberById(((NotificationDO) object).getActionUserId());
                if (destMember != null) {
                    ((NotificationDO) object).setName(destMember.getName());
                    ((NotificationDO) object).setNick(destMember.getNick());
                    ((NotificationDO) object).setPic(destMember.getPic());
                }
                if (fromMember != null) {
                    ((NotificationDO) object).setActionName(fromMember.getName());
                    ((NotificationDO) object).setActionNick(fromMember.getNick());
                    ((NotificationDO) object).setActionPic(fromMember.getPic());
                }
            }
        }
    }

    protected void getMyLikedAndSaved(ModelAndView mav) {
        // ?,
        if (WebUserTools.hasLogin()) {
            List<CollectDO> myLikedList = userService
                    .list(new CollectQuery(WebUserTools.getUid(), CollectTypeEnum.LIKED));
            List<CollectDO> mySavedList = userService
                    .list(new CollectQuery(WebUserTools.getUid(), CollectTypeEnum.SAVED));
            mav.addObject("myLikedList", CollectionUtils.getLongValues(myLikedList, "topicId"));
            mav.addObject("mySavedList", CollectionUtils.getLongValues(mySavedList, "topicId"));
        } else {
            mav.addObject("myLikedList", Collections.<Long>emptyList());
            mav.addObject("mySavedList", Collections.<Long>emptyList());
        }
    }

    /**
     * ??
     * 
     * @param result
     * @return
     */
    public Result showErrors(BindingResult result) {
        StringBuffer errorsb = new StringBuffer();
        if (result.hasErrors()) {
            for (FieldError error : result.getFieldErrors()) {
                errorsb.append(error.getField());
                errorsb.append(error.getDefaultMessage());
                errorsb.append("|");
            }
            String errorsr = errorsb.toString().substring(0, errorsb.toString().length() - 1);
            Result.failed(errorsr.replaceAll("null", StringUtils.EMPTY));
        }
        return Result.success();
    }

    /**
     * cookie??response
     * 
     * @param TravelMemberDO
     */
    public void doLoginSuccess(MemberDO m) {
        MMJWebUserBuilder.loginSuccess(cookieManager, m.getName(), m.getNick(), m.getId(), m.getUserType());
        userService.update(new MemberDO(m.getId(), new Date()));
    }

    /**
     * cookie??response
     */
    public void doLoginOut() {
        MMJWebUserBuilder.loginOut(cookieManager);
    }

    protected ModelAndView createErrorJsonMav(String msg) {
        return createJsonMav(msg, ResultCode.ERROR, null);
    }

    protected ModelAndView createSuccJsonMav(String msg) {
        return createJsonMav(msg, ResultCode.SUCCESS, null);
    }

    protected ModelAndView createErrorJsonMav(String msg, Object object) {
        return createJsonMav(msg, ResultCode.ERROR, object);
    }

    protected ModelAndView createExtSuccJsonMav(String msg, String extMst) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("extMst", "");
        return createJsonMav(msg, ResultCode.SUCCESS, map);
    }

    protected ModelAndView createExtJsonMav(String code, String msg, String extMst) {
        Map<String, String> ext = new HashMap<String, String>();
        ext.put("extMst", "");
        return createJsonMav(code, msg, ext);
    }

    protected ModelAndView createJsonMav(String code, String msg, Object object) {
        ModelAndView mav = new ModelAndView();
        MappingJackson2JsonView mappingJackson2JsonView = new MappingJackson2JsonView();
        mappingJackson2JsonView.getObjectMapper().setSerializationInclusion(Include.NON_NULL);
        mav.setView(mappingJackson2JsonView);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", code);
        map.put("message", msg);
        map.put("data", object);
        mav.addObject("result", map);
        return mav;
    }

    protected ModelAndView createSuccJsonMav(String msg, Object object) {
        return createJsonMav(msg, ResultCode.SUCCESS, object);
    }

    @Override
    protected ModelAndView createJsonMav(String msg, ResultCode code) {
        return createJsonMav(msg, code, null);
    }

    @Override
    protected ModelAndView createJsonMav(ResultCode code, Object object) {
        return createJsonMav(StringUtils.EMPTY, code, object);
    }

    @Override
    protected ModelAndView createJsonMav(String msg, ResultCode code, Object object) {
        ModelAndView mav = new ModelAndView();
        mav.setView(new MappingJackson2JsonView());
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", Integer.toString(code.value));
        map.put("message", msg);
        map.put("data", object == null ? StringUtils.EMPTY : object);
        mav.addObject("result", map);
        return mav;
    }
}