package com.goafanti.evaluation.controller; import javax.validation.Valid; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; import org.springframework.validation.BindingResult; 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.JSON; import com.alibaba.fastjson.JSONObject; import com.goafanti.common.bo.Result; import com.goafanti.common.constant.ErrorConstants; import com.goafanti.common.controller.BaseApiController; import com.goafanti.common.model.ValueEvaluation; import com.goafanti.common.utils.LoggerUtils; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.evaluation.bo.Step1; import com.goafanti.evaluation.service.ValueEvaluationService; @RestController @RequestMapping(value = "/api/user/evaluate") public class EvaluationController extends BaseApiController { private static final Logger logger = LoggerFactory.getLogger(EvaluationController.class); @Autowired ValueEvaluationService valueEvaluationService; @RequestMapping(value = "/create", method = RequestMethod.POST) public Result create() { ValueEvaluation ve = new ValueEvaluation(); ve.setUid(TokenManager.getUserId()); ve.setStep(1); ve.setLog("{}"); valueEvaluationService.insert(ve); return new Result(ve.getId()); } @RequestMapping(value = "/list", method = RequestMethod.GET) public Result list(String pageNo, String pageSize) { return new Result().data(valueEvaluationService.list(handlePageNo(pageNo), handlePageSize(pageSize))); } @RequestMapping(value = "/info", method = RequestMethod.GET, produces = "application/json;charset=UTF-8") public String info(String id) { Assert.isTrue(StringUtils.isNumeric(id), ErrorConstants.EVALUATE_ID); return valueEvaluationService.getMyEvaluationSteps(Long.valueOf(id)); } @RequestMapping(value = "/step1", method = RequestMethod.POST) public Result update(String id, @Valid Step1 data, BindingResult bindingResult) { Assert.isTrue(StringUtils.isNumeric(id), ErrorConstants.EVALUATE_ID); Result res = new Result(); if (handleBindingError(res, bindingResult)) { return res; } ValueEvaluation ve = valueEvaluationService.getEvaluation(Long.valueOf(id)); Assert.notNull(ve, ErrorConstants.EVALUATE_ID); ve.setName(data.getName()); JSONObject jo = JSON.parseObject(ve.getLog()); jo.put("1", data); ve.setLog(jo.toJSONString()); res.data(valueEvaluationService.update(ve)); return res; } private boolean handleBindingError(Result res, BindingResult bindingResult) { if (bindingResult.hasErrors()) { LoggerUtils.debug(logger, "参数错误:[%s], [%s], [%s]", bindingResult.getFieldError().getDefaultMessage(), bindingResult.getFieldError().getField(), bindingResult.getFieldError().getRejectedValue()); res.getError().add(buildError(ErrorConstants.EVALUATE_PARAM)); return true; } return false; } }