package com.goafanti.common.controller; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.UUID; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.goafanti.achievement.service.AchievementService; import com.goafanti.comment.bo.CommentInput; import com.goafanti.comment.bo.CommentResult; import com.goafanti.comment.controller.UserCommentController; import com.goafanti.comment.service.CommentService; import com.goafanti.common.bo.Result; import com.goafanti.common.constant.ErrorConstants; import com.goafanti.common.enums.UserType; import com.goafanti.common.model.User; import com.goafanti.common.service.DistrictGlossoryService; import com.goafanti.common.service.FieldGlossoryService; import com.goafanti.common.service.IndustryCategoryService; import com.goafanti.common.utils.LoggerUtils; import com.goafanti.common.utils.MobileMessageUtils; import com.goafanti.common.utils.PasswordUtil; import com.goafanti.common.utils.PictureUtils; import com.goafanti.common.utils.TimeUtils; import com.goafanti.common.utils.VerifyCodeUtils; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.demand.bo.DemandListBo; import com.goafanti.demand.service.DemandService; import com.goafanti.portal.bo.AchievementObject; import com.goafanti.user.service.UserIdentityService; import com.goafanti.user.service.UserService; @Controller @Scope(value = "prototype") @RequestMapping("/open") public class PublicController extends BaseController { @Value(value = "${accessKey}") private String accessKey = null; @Value(value = "${accessSecret}") private String accessSecret = null; @Value(value = "${upload.path}") private String uploadPath = null; @Value(value = "${upload.private.path}") private String uploadPrivatePath = null; @Value(value = "${static.host}") private String staticHost = null; @Value(value = "${mobileCodeTemplate}") private String mobileCodeTemplate = null; @Resource private UserService userService; @Resource private FieldGlossoryService fieldGlossoryService; @Resource private CommentService commentService; @Autowired private IndustryCategoryService industryCategoryService; @Autowired private DistrictGlossoryService districtGlossoryService; @Autowired private UserIdentityService userIdentityService; @Autowired private AchievementService achievementService; @Autowired private DemandService demandService; @Value(value = "${patentTemplate}") private String patentTemplate = null; @Resource(name = "passwordUtil") private PasswordUtil passwordUtil; /** * 获取验证码 * * @param response */ @RequestMapping(value = "/getVCode", method = RequestMethod.GET) public void getVCode(HttpServletResponse response, HttpServletRequest request) { try { response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpg"); // 生成随机字串 String verifyCode = VerifyCodeUtils.generateVerifyCode(4); // 存入Shiro会话session TokenManager.setVal2Session(VerifyCodeUtils.V_CODE, verifyCode.toLowerCase()); // 生成图片 int w = 146, h = 33; VerifyCodeUtils.outputImage(w, h, response.getOutputStream(), verifyCode); } catch (Exception e) { LoggerUtils.fmtError(getClass(), e, "获取验证码异常:%s", e.getMessage()); } } /** * 手机验证码 * * @param mobile * @param sign * 是否用与找回密码 * @param type * @return */ @RequestMapping(value = "/getMCode", method = RequestMethod.GET) @ResponseBody public Result getMcode(String mobile, boolean sign, String verificationCode) { Result res = new Result(); // 用于找回密码 if (sign) { if (null == userService.selectByMobieAndType(mobile.trim(),null)) { res.getError().add(buildError(ErrorConstants.NON_REGISTER, "", "该用户未注册!")); return res; } } /*if (!sign) { if (StringUtils.isBlank(verificationCode)) { res.getError().add(buildError(ErrorConstants.VCODE_EMPTY_ERROR, "", "图像验证码不能为空!")); return res; } if (!VerifyCodeUtils.verifyCode(verificationCode)) { res.getError().add(buildError(ErrorConstants.VCODE_ERROR, "", "图形验证码输入错误!")); return res; } } */ if (TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE_TIME) == null || TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE_TIME) == "") { sendMessage(mobile, res,VerifyCodeUtils.M_CODE); } else if (TimeUtils.checkOverTime("getMCode")) { VerifyCodeUtils.clearMobileCode(); VerifyCodeUtils.clearMobileCodeTime(); sendMessage(mobile, res,VerifyCodeUtils.M_CODE); } else { res.getError().add(buildError(ErrorConstants.MCODE_FREQUENCY_ERROR, "", "手机验证码发送频繁!")); } return res; } /** * * @param mobile * @param res * @return */ private Result sendMessage(String mobile, Result res,String codeType) { String mobileVerifyCode = VerifyCodeUtils.generateMobileVerifyCode(6); // 生成随机字串 if(VerifyCodeUtils.M_CODE.equals(codeType)){ TokenManager.setVal2Session(VerifyCodeUtils.M_CODE, mobileVerifyCode);// 存入Shiro会话session TokenManager.setVal2Session(VerifyCodeUtils.M_CODE_TIME, System.currentTimeMillis()); }else if(VerifyCodeUtils.RESET_CODE.equals(codeType)){ TokenManager.setVal2Session(VerifyCodeUtils.RESET_CODE, mobileVerifyCode);// 存入Shiro会话session TokenManager.setVal2Session(VerifyCodeUtils.RESET_CODE_TIME, System.currentTimeMillis()); } String paramString = "{\"code\":\"" + mobileVerifyCode + "\",\"product\":\"技淘网\"}"; String ret = MobileMessageUtils.sendMessage(mobileCodeTemplate, paramString, mobile, accessKey, accessSecret); if (StringUtils.isNotBlank(ret)) { res.getError().add(buildError(ErrorConstants.M_CODE_ERROR)); } return res; } /** * 下载图片 * * @param response * @param path * @param request */ @RequestMapping(value = "/downLoadPicture", method = RequestMethod.GET) public Result downLoadPicture(HttpServletResponse response, String path, HttpServletRequest request) { Result res = new Result(); if (StringUtils.isBlank(path)) { res.getError().add(buildError(ErrorConstants.FILE_NON_EXISTENT)); return res; } String filename = Long.toString(System.nanoTime()) + ".jpg"; InputStream in = null; OutputStream out = null; byte[] buffer = new byte[8 * 1024]; String fileSaveRootPath = ""; try { fileSaveRootPath = uploadPrivatePath + path; File file = new File(fileSaveRootPath); in = new FileInputStream(file); out = response.getOutputStream(); // 设置文件MIME类型 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + filename); for (;;) { int bytes = in.read(buffer); if (bytes == -1) { break; } out.write(buffer, 0, bytes); } } catch (IOException e) { LoggerUtils.fmtError(getClass(), e, "IO错误:%s", e.getMessage()); } finally { try { if (null != in) { in.close(); } } catch (IOException e) { LoggerUtils.fmtError(getClass(), e, "IO错误:%s", e.getMessage()); } try { if (null != out) { out.close(); } } catch (IOException e) { LoggerUtils.fmtError(getClass(), e, "IO错误:%s", e.getMessage()); } } return res; } /** * 删除图片文件(public图片) * * @param path * @return */ @RequestMapping(value = "/deleteUploadPicture", method = RequestMethod.POST) public boolean deleteUploadPicture(String path) { boolean flag = false; path = uploadPath + path; File file = new File(path); // 判断目录或文件是否存在 if (!file.exists() || !file.isFile()) { // 不存在返回 false return flag; } else { return file.delete(); } } /** * 获取并输出private图片 */ @RequestMapping(value = "/writeImage", method = RequestMethod.GET) public void writeImage(HttpServletResponse response, HttpServletRequest request, String path) { try { String realPath = uploadPrivatePath + path; PictureUtils.outputImage(response, realPath); } catch (IOException e) { LoggerUtils.fmtError(getClass(), e, "获取图片异常:%s", e.getMessage()); } } /** * 下载文件 * * @param res * @param fileName * @param response * @param path * @param request * @return */ @RequestMapping(value = "/downloadFile", method = RequestMethod.GET) public Result downloadFile(String fileName, HttpServletResponse response, String path) { Result res = new Result(); return handleDownloadFile(response, fileName, path, res); } private Result handleDownloadFile(HttpServletResponse response, String fileName, String path, Result res) { String fileSaveRootPath = uploadPrivatePath + path; InputStream in = null; OutputStream out = null; byte[] buffer = new byte[8 * 1024]; try { File file = new File(fileSaveRootPath); in = new FileInputStream(file); out = response.getOutputStream(); response.setContentType("multipart/form-data"); fileName = java.net.URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName); for (;;) { int bytes = in.read(buffer); if (bytes == -1) { break; } out.write(buffer, 0, bytes); } } catch (IOException e) { LoggerUtils.fmtError(getClass(), e, "IO错误:%s", e.getMessage()); } finally { try { in.close(); } catch (IOException e) { LoggerUtils.fmtError(getClass(), e, "IO错误:%s", e.getMessage()); } try { out.close(); } catch (IOException e) { LoggerUtils.fmtError(getClass(), e, "IO错误:%s", e.getMessage()); } } return res; } @RequestMapping(value = "/findIndustryCategory", method = RequestMethod.GET) @ResponseBody public Result findIndustryCategory(String id, String noCache) { Integer pid = 0; if (StringUtils.isNumeric(id)) { try { pid = Integer.parseInt(id); } catch (Exception e) { pid = 0; } } if (StringUtils.isNotBlank(noCache)) { industryCategoryService.clear(pid); } return new Result().data(industryCategoryService.list(pid)); } @RequestMapping(value = "/findDistrict", method = RequestMethod.GET) @ResponseBody public Result findDistrictGlossory(String id, String noCache) { Integer pid = 0; if (StringUtils.isNumeric(id)) { try { pid = Integer.parseInt(id); } catch (Exception e) { pid = 0; } } if (StringUtils.isNotBlank(noCache)) { districtGlossoryService.clear(pid); } return new Result().data(districtGlossoryService.list(pid)); } /** * * @param mobileCode * @return */ @RequestMapping(value = "/checkMCode", method = RequestMethod.POST) @ResponseBody public Result checkMCode(String mobileCode) { Result res = new Result(); if (StringUtils.isBlank(mobileCode)) { res.getError().add(buildError(ErrorConstants.MCODE_EMPTY_ERROR, "", "手机验证码")); return res; } if (TimeUtils.checkOverTime(VerifyCodeUtils.M_CODE)) { res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "", "手机验证码超时失效!")); VerifyCodeUtils.clearMobileCode(); VerifyCodeUtils.clearMobileCodeTime(); return res; } if (!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode)) { res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "", "手机验证码错误")); return res; } // resetCode if (res.getError().isEmpty()) { String resetCode = UUID.randomUUID().toString(); TokenManager.setVal2Session(VerifyCodeUtils.RESET_CODE, resetCode); TokenManager.setVal2Session(VerifyCodeUtils.RESET_CODE_TIME, System.currentTimeMillis()); res.setData(resetCode); } return res; } /** * 重置密码 * * @param resetCode * @param mobile * @param type * @param newPwd * @return */ @RequestMapping(value = "/resetPwd", method = RequestMethod.POST) @ResponseBody public Result resetPwd(String resetCode, String mobile, Integer type, String newPwd) { Result res = new Result(); if (TimeUtils.checkOverTime(VerifyCodeUtils.M_CODE)) { res.getError().add(buildError(ErrorConstants.RESET_CODE_OVERTIME, "", "页面超时失效,请重新获取验证码!")); cleanCodeSession(); return res; } if(null == TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE)){ res.getError().add(buildError(ErrorConstants.RESET_CODE_OVERTIME, "", "页面超时失效,请重新获取验证码!")); cleanCodeSession(); return res; }else if(!TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE).equals(resetCode)){ res.getError().add(buildError(ErrorConstants.RESET_CODE_ERROR, "", "验证码错误,请重新获取验证码!")); cleanCodeSession(); return res; } if (StringUtils.isBlank(newPwd)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "新密码")); return res; } if (StringUtils.isBlank(mobile)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "mobile")); return res; } if (!UserType.ORGANIZATION.getCode().equals(type) && !UserType.PERSONAL.getCode().equals(type)) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "type")); return res; } User user = userService.selectByMobieAndType(mobile, type); if (null == user) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "mobile")); return res; } user.setPassword(newPwd); user.setPassword(passwordUtil.getEncryptPwd(user)); userService.updateByPrimaryKeySelective(user); VerifyCodeUtils.clearResetCode(); VerifyCodeUtils.clearResetCodeTime(); return res; } @RequestMapping(value = "/resetPassword", method = RequestMethod.POST) @ResponseBody public Result resetPassword(String mobile,Integer type,String newPwd,String resetCode) { Result res=new Result(); if (TimeUtils.checkOverTime(VerifyCodeUtils.M_CODE)) { res.getError().add(buildError(ErrorConstants.RESET_CODE_OVERTIME, "", "页面超时失效,请重新获取验证码!")); cleanCodeSession(); return res; } if(null == TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE)){ res.getError().add(buildError(ErrorConstants.RESET_CODE_OVERTIME, "", "页面超时失效,请重新获取验证码!")); cleanCodeSession(); return res; }else if(!TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE).equals(resetCode)){ res.getError().add(buildError(ErrorConstants.RESET_CODE_ERROR, "", "验证码错误,请重新获取验证码!")); cleanCodeSession(); return res; } if (StringUtils.isBlank(newPwd)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "新密码")); return res; } if (StringUtils.isBlank(mobile)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "用户名")); return res; } User user=userService.selectByMobieAndType(mobile, type); if(user==null || user.getMobile()==null || !user.getMobile().equals(mobile)) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "手机号或用户名错误")); return res; } user.setPassword(newPwd); user.setPassword(passwordUtil.getEncryptPwd(user)); userService.updateByPrimaryKeySelective(user); return res; } /** * * @param mobileCode * @return */ @RequestMapping(value = "/checkMNCode", method = RequestMethod.POST) @ResponseBody public Result checkMNCode(String mobileCode,Integer type,String mobile) { Result res = new Result(); if (StringUtils.isBlank(mobileCode)) { res.getError().add(buildError(ErrorConstants.MCODE_EMPTY_ERROR, "", "手机验证码")); return res; } if (StringUtils.isBlank(mobile)) { res.getError().add(buildError(ErrorConstants.MCODE_EMPTY_ERROR, "", "手机号")); return res; } if (null==type) { res.getError().add(buildError(ErrorConstants.MCODE_EMPTY_ERROR, "", "帐号类型")); return res; } if (TimeUtils.checkOverTime(VerifyCodeUtils.M_CODE)) { res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "", "手机验证码超时失效!")); VerifyCodeUtils.clearMobileCode(); VerifyCodeUtils.clearMobileCodeTime(); return res; } if (!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode)) { res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "", "手机验证码错误")); return res; } User user=userService.selectByMobieAndType(mobile, type); if(user==null || user.getMobile()==null || !user.getMobile().equals(mobile)) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "手机号或用户名错误")); return res; } // resetCode if (res.getError().isEmpty()) { String resetCode = UUID.randomUUID().toString(); TokenManager.setVal2Session(VerifyCodeUtils.RESET_CODE, resetCode); TokenManager.setVal2Session(VerifyCodeUtils.RESET_CODE_TIME, System.currentTimeMillis()); res.setData(resetCode); } return res; } private void cleanCodeSession() { VerifyCodeUtils.clearResetCode(); VerifyCodeUtils.clearResetCodeTime(); VerifyCodeUtils.clearMobileCode(); VerifyCodeUtils.clearMobileCodeTime(); } @RequestMapping(value = "/getRegisterMCode", method = RequestMethod.GET ) @ResponseBody public Result getRegisterMCode(String mobile){ Result res = new Result(); if (TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE_TIME) == null || TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE_TIME) == "") { sendMessage(mobile, res,VerifyCodeUtils.M_CODE); } else if (TimeUtils.checkOverTime("getMCode")) { VerifyCodeUtils.clearMobileCode(); VerifyCodeUtils.clearMobileCodeTime(); sendMessage(mobile, res,VerifyCodeUtils.M_CODE); } else { res.getError().add(buildError(ErrorConstants.MCODE_FREQUENCY_ERROR, "", "手机验证码发送频繁!")); } return res; } @RequestMapping(value = "/getResetMCode", method = RequestMethod.GET ) @ResponseBody public Result getResetMCode(String mobile) { Result res = new Result(); if (userService.selectByMobieAndTypeCount(mobile.trim())<1) { res.getError().add(buildError(ErrorConstants.NON_REGISTER, "", "该用户未注册!")); return res; } if (TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE_TIME) == null || TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE_TIME) == "") { sendMessage(mobile, res,VerifyCodeUtils.RESET_CODE); } else if (TimeUtils.checkOverTime("resetCode")) { VerifyCodeUtils.clearMobileCode(); VerifyCodeUtils.clearMobileCodeTime(); sendMessage(mobile, res,VerifyCodeUtils.RESET_CODE); } else { res.getError().add(buildError(ErrorConstants.MCODE_FREQUENCY_ERROR, "", "手机验证码发送频繁!")); } return res; } /** 省市区查询 **/ @RequestMapping(value = "/listAllProvince" , method = RequestMethod.POST) @ResponseBody public Result listAllProvince(){ Result res = new Result(); res.setData(districtGlossoryService.getProvince()); return res; } @RequestMapping(value="/industryList", method = RequestMethod.GET) @ResponseBody public Result getIndustryList() { Result result=new Result(); result.setData(userIdentityService.selectIndustryReletively()); return result; } @RequestMapping(value="/achievementList", method = RequestMethod.GET) @ResponseBody public Result getAchievements(AchievementObject achievementObject,Integer pageNo,Integer pageSize) { Result result=new Result(); result.setData(achievementService.getAchievementObjects(achievementObject, pageNo, pageSize)); return result; } @RequestMapping(value="/demandList", method = RequestMethod.GET) @ResponseBody public Result getDemands(DemandListBo demandListBo,Integer pageNo,Integer pageSize) { Result result=new Result(); result.setData(demandService.getDemandObjects(demandListBo, pageNo, pageSize)); return result; } @RequestMapping(value = "/comment/list", method = RequestMethod.GET) @ResponseBody public Result listComment(String commodityId,Integer pageNo,Integer pageSize) { Result result=new Result(); if(StringUtils.isBlank(commodityId)) { result.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","商品id")); } CommentResult commentResult=new CommentResult(); commentResult.setPositiveCommentCount(commentService.getCommentCount(0, commodityId)); commentResult.setOrdinaryCommentCount(commentService.getCommentCount(1, commodityId)); commentResult.setNegativeCommentCount(commentService.getCommentCount(2, commodityId)); commentResult.setComments(commentService.searchComment(commodityId, pageNo, pageSize)); result.setData(commentResult); return result; } /** * APP重置密码 */ @RequestMapping(value = "/appResetPwd", method = RequestMethod.POST) @ResponseBody public Result resetPwd(String resetCode, String username,String mobile, Integer type, String newPwd) { Result res = new Result(); if (TimeUtils.checkOverTime(VerifyCodeUtils.M_CODE)) { res.getError().add(buildError(ErrorConstants.RESET_CODE_OVERTIME, "", "页面超时失效,请重新获取验证码!")); cleanCodeSession(); return res; } if(null == TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE)){ res.getError().add(buildError(ErrorConstants.RESET_CODE_OVERTIME, "", "页面超时失效,请重新获取验证码!")); cleanCodeSession(); return res; }else if(!TokenManager.getSession().getAttribute(VerifyCodeUtils.RESET_CODE).equals(resetCode)){ res.getError().add(buildError(ErrorConstants.RESET_CODE_ERROR, "", "验证码错误,请重新获取验证码!")); cleanCodeSession(); return res; } if (StringUtils.isBlank(newPwd)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "新密码")); return res; } if (StringUtils.isBlank(mobile)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "mobile")); return res; } /*if (!UserType.ORGANIZATION.getCode().equals(type) && !UserType.PERSONAL.getCode().equals(type)) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "type")); return res; }*/ User user = userService.selectByMobieAndType(mobile, type); if (null == user) { res.getError().add(buildError( "用户未注册", "用户未注册")); return res; } if (null!=user.getMobile()&&!user.getMobile().equals(mobile)) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "手机号码")); return res; } user.setPassword(newPwd); user.setPassword(passwordUtil.getEncryptPwd(user)); userService.updateByPrimaryKeySelective(user); VerifyCodeUtils.clearResetCode(); VerifyCodeUtils.clearResetCodeTime(); return res; } /** * 新增评价 */ @RequestMapping(value = "/addComment", method = RequestMethod.POST) @ResponseBody public Result addNewComment(HttpServletRequest request,CommentInput commentInput) { Result result=new Result(); String ip=UserCommentController.getClientIp(request); if(StringUtils.isBlank(commentInput.getCommodityId())) { result.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"商品id为空","商品id"));return result; } if(null == commentInput.getStar() || commentInput.getStar()<0 || commentInput.getStar()>5) { result.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","评分"));return result; } if(StringUtils.isBlank(commentInput.getContent()) || commentInput.getContent().length()>512) { result.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","内容限制1-512字符"));return result; } if(null == commentInput.getCommodityType() || commentInput.getCommodityType()<0 || commentInput.getCommodityType() > 4) { result.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","产品类型"));return result; } int res=commentService.addNewComment(commentInput,ip); if(res ==-1) { result.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","提交失败"));return result; } result.setData(res); return result; } /** * * @param commodityId * @param pageNo * @param pageSize * @return */ @RequestMapping(value = "unlanded/comment/list", method = RequestMethod.GET) @ResponseBody public Result unlandedCommentList(String commodityId,Integer pageNo,Integer pageSize) { Result result=new Result(); if(StringUtils.isBlank(commodityId)) { result.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","商品id")); } CommentResult commentResult=new CommentResult(); commentResult.setPositiveCommentCount(commentService.getCommentCount(0, commodityId)); commentResult.setOrdinaryCommentCount(commentService.getCommentCount(1, commodityId)); commentResult.setNegativeCommentCount(commentService.getCommentCount(2, commodityId)); commentResult.setComments(commentService.searchUnlandedCommentList(commodityId, pageNo, pageSize)); result.setData(commentResult); return result; } }