system.controllers.FeedbackApp.java Source code

Java tutorial

Introduction

Here is the source code for system.controllers.FeedbackApp.java

Source

/*
 * Copyright (c) 2013, Helome and/or its affiliates. All rights reserved.
 * Helome PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 * Created on 2014-1-2
 */
package system.controllers;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import models.AttachOfFeedback;
import models.Feedback;
import models.Feedback.FeedbackStatus;
import models.Attach;

import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.lang3.StringUtils;

import play.data.DynamicForm;
import play.data.Form;
import play.db.jpa.Transactional;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
import utils.Assets;
import utils.DateUtils;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

/**
 * 
 *
 * @ClassName: FeedbackApp
 * @Description: 
 * @date 2014-1-2 ?11:03:06
 * @author YangXuelin
 * 
 */
public class FeedbackApp extends Controller {

    /**
     * 
     * 
     * @return
     */
    @Transactional(readOnly = true)
    public static Result list() {
        int start = NumberUtils.toInt(request().getQueryString("start"), 0);
        int pageSize = NumberUtils.toInt(request().getQueryString("limit"), 20);
        String searchText = StringUtils.defaultIfBlank(request().getQueryString("searchText"), "");
        String searchStatus = StringUtils.defaultIfBlank(request().getQueryString("searchStatus"), "-1");
        FeedbackStatus status = null;
        if (!"-1".equals(searchStatus)) {
            status = FeedbackStatus.getStatusByOrdinal(Integer.parseInt(searchStatus));
        }
        searchText = "%" + searchText + "%";
        String sort = request().getQueryString("sort");
        String sortProperty = " f.createTime desc";
        if (StringUtils.isNotBlank(sort)) {
            try {
                JsonNode sortJsonArray = Json.parse(sort);
                if (sortJsonArray.isArray() && null != sortJsonArray.get(0)) {
                    JsonNode sortJsonNode = sortJsonArray.get(0);
                    if (sortJsonNode.hasNonNull("property") && sortJsonNode.hasNonNull("direction")) {
                        sortProperty = " f.createTime ";
                        boolean isDesc = "DESC".equals(sortJsonNode.get("direction").asText());
                        if (isDesc) {
                            sortProperty += " desc";
                        }
                    }
                }
            } catch (RuntimeException e) {
                play.Logger.error("failed to parse JSON. JSON: " + sort);
            }
        }
        ObjectNode result = Json.newObject();
        int total = Feedback.getFeedbacksCount(searchText, status);
        result.put("total", total);
        if (total == 0) {
            result.putPOJO("data", null);
            return ok(result);
        }
        List<Feedback> fbs = Feedback.getFeedbacks(start, pageSize, searchText, status, sortProperty);
        List<ObjectNode> data = null;
        if (fbs != null) {
            data = new ArrayList<ObjectNode>(fbs.size());
            for (Feedback fb : fbs) {
                ObjectNode node = Json.newObject();
                node.put("id", fb.id);
                node.put("username", fb.username);
                node.put("expertName", fb.cuserName);
                node.put("number", fb.number);
                node.put("status", fb.status.ordinal());
                Set<AttachOfFeedback> attachs = fb.attach;
                if (attachs != null && attachs.size() > 0) {
                    List<ObjectNode> nodes = new ArrayList<ObjectNode>(attachs.size());
                    Iterator<AttachOfFeedback> iter = attachs.iterator();
                    while (iter.hasNext()) {
                        Attach attach = (Attach) iter.next();
                        ObjectNode n = Json.newObject();
                        n.put("proofName", attach.fileName);
                        n.put("proofPath", Assets.at(attach.path));
                        nodes.add(n);
                    }
                    node.putPOJO("proofs", nodes);
                } else {
                    node.putPOJO("proofs", null);
                }
                node.put("content", fb.content);
                node.put("createTime", DateUtils.format(fb.createTime));
                data.add(node);
            }
        }
        result.putPOJO("data", data);
        return ok(result);
    }

    /**
     * ??
     * @return
     */
    @Transactional
    public static Result modifyStatus() {
        DynamicForm requestData = Form.form().bindFromRequest();
        Long id = NumberUtils.createLong(requestData.get("feedbackId"));
        Integer state = NumberUtils.createInteger(requestData.get("handleState"));
        ObjectNode result = Json.newObject();
        if (id == null || state == null) {
            result.put("success", false);
            return ok(result);
        }
        Feedback fb = Feedback.getFeedback(id);
        if (fb == null) {
            result.put("success", false);
            return ok(result);
        }
        FeedbackStatus fbs = FeedbackStatus.getStatusByOrdinal(state.intValue());
        fb.status = fbs;
        fb.merge();
        result.put("success", true);
        return ok(result);
    }

}