Java tutorial
/* * Copyright 2011-2016 ZuoBian.com All right reserved. This software is the confidential and proprietary information of * ZuoBian.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 ZuoBian.com. */ package com.zb.app.web.controller.account; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Random; import javax.validation.Valid; import org.springframework.stereotype.Controller; 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.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.zb.app.biz.cons.IntegralSourceEnum; import com.zb.app.biz.cons.LineStateEnum; import com.zb.app.biz.cons.LineTemplateEnum; import com.zb.app.biz.cons.LogTableEnum; import com.zb.app.biz.domain.TravelIntegralDO; import com.zb.app.biz.domain.TravelLineDO; import com.zb.app.biz.domain.TravelLineThinDO; import com.zb.app.biz.domain.TravelOperationLogDO; import com.zb.app.biz.domain.TravelOrderDO; import com.zb.app.biz.domain.TravelPhotoDO; import com.zb.app.biz.domain.TravelRouteDO; import com.zb.app.biz.domain.TravelSiteFullDO; import com.zb.app.biz.domain.TravelTrafficDO; import com.zb.app.biz.query.TravelIntegralQuery; import com.zb.app.biz.query.TravelLineQuery; import com.zb.app.biz.query.TravelOrderQuery; import com.zb.app.biz.query.TravelPhotoQuery; import com.zb.app.biz.query.TravelRouteQuery; import com.zb.app.biz.query.TravelTrafficQuery; import com.zb.app.common.authority.AuthorityPolicy; import com.zb.app.common.authority.Right; import com.zb.app.common.core.lang.Argument; import com.zb.app.common.core.lang.BeanUtils; import com.zb.app.common.core.lang.CollectionUtils; import com.zb.app.common.pagination.PagesPagination; import com.zb.app.common.pagination.PaginationList; import com.zb.app.common.pagination.PaginationParser; import com.zb.app.common.pagination.PaginationParser.DefaultIpageUrl; import com.zb.app.common.pagination.PaginationParser.IPageUrl; import com.zb.app.common.result.JsonResultUtils; import com.zb.app.common.result.JsonResultUtils.JsonResult; import com.zb.app.common.result.Result; import com.zb.app.common.util.DateViewTools; import com.zb.app.common.velocity.CustomVelocityLayoutView; import com.zb.app.external.lucene.search.pojo.ProductSearchField; import com.zb.app.external.lucene.search.query.ProductSearchQuery; import com.zb.app.web.controller.BaseController; import com.zb.app.web.tools.WebUserTools; import com.zb.app.web.vo.TravelLineVO; import com.zb.app.web.vo.TravelRouteVO; import com.zb.app.web.vo.TravelTrafficVO; /** * Account ??,?, * * @author zxc Fun 16, 2014 5:44:33 PM */ @Controller @RequestMapping("/account") public class AccountLineController extends BaseController { /** * * * @return * @throws Exception */ @AuthorityPolicy(authorityTypes = { Right.CREATE_PRODUCT }) @RequestMapping(value = "/addLine.htm", method = RequestMethod.POST) @ResponseBody public JsonResult addLine(@Valid TravelLineVO line, BindingResult result) throws Exception { if (line.getlCrPrice() == null || line.getlXhPrice() == null || line.getlYPrice() == null || line.getlJCrPrice() == null || line.getlJXhPrice() == null || line.getlJYPrice() == null || line.getlFangPrice() == null) { return JsonResultUtils.error("?!"); } TravelIntegralDO integralDO = null; int integral = 0; // ? Result rs = showErrors(result); if (rs.isFailed()) { return JsonResultUtils.error(rs.getMessage()); } Calendar date = Calendar.getInstance(); String[] groupTimes = line.getlGoGroupTimeString().split(","); // ? if (line.getlIsIntegral() == 1) { if (line.getlAdultIntegral() == null || line.getlChildrenIntegral() == null) { return JsonResultUtils.error("?!"); } // ?? TravelIntegralQuery integralQuery = new TravelIntegralQuery(); integralQuery.setcId(WebUserTools.getCid()); integralDO = integralService.queryBala(integralQuery); if (integralDO == null) { return JsonResultUtils.error("?"); } Integer cintegral = integralDO.getiBalance(); integral = line.getlAdultIntegral() > line.getlChildrenIntegral() ? line.getlRenCount() * groupTimes.length * line.getlAdultIntegral() : line.getlRenCount() * groupTimes.length * line.getlChildrenIntegral(); if (cintegral < integral) { return JsonResultUtils.error("?"); } } int tlid = 0, roid = 0; String rom = getSerialNumber(); TravelLineDO tr = null; for (String groupTime : groupTimes) { if (org.apache.commons.lang.StringUtils.isEmpty(groupTime)) { continue; } if (groupTimes.length == 1) { return JsonResultUtils.success(null, "?!"); } // Date gogrouptime = null; try { gogrouptime = DateViewTools.parseSimple(groupTime); } catch (Exception e) { return JsonResultUtils.success(null, "??"); } line.setlGoGroupTime(gogrouptime); // date.setTime(gogrouptime); date.add(Calendar.DAY_OF_MONTH, -line.getlEndTimeInteger()); line.setlEndTime(date.getTime()); // ? tr = new TravelLineDO(); BeanUtils.copyProperties(tr, line); // tr.setlTemplateState(LineTemplateEnum.Line.getValue()); // tr.setlProduct(rom); // ?ID tr.setcId(WebUserTools.getCid()); // id tr.setmId(WebUserTools.getMid()); // tlid = lineService.addTravelLine(tr); // if (line.getRoutelist() != null || line.getRoutelist().size() != 0) { int nullroute = line.getlDay() - line.getRoutelist().size(); for (TravelRouteDO route : line.getRoutelist()) { route.setlId(tr.getlId()); roid = lineService.addTravelRoute(route); } if (nullroute != 0) { for (int i = 0; i < nullroute; i++) { TravelRouteDO route = new TravelRouteDO(); route.setlId(tr.getlId()); roid = lineService.addTravelRoute(route); } } } } boolean bool = tlid != 0 && roid != 0; if (bool) { // ? PaginationList<ProductSearchField> list = lineService.listProductSearch(new TravelLineQuery(rom)); solrClient.addBeans("zuobian", list); // if (line.getlIsIntegral() == 1) { TravelIntegralDO integralDJ = new TravelIntegralDO(); integralDJ.setiSource(IntegralSourceEnum.release.value); integralDJ.setcId(WebUserTools.getCid()); integralDJ.setiBalance(integralDO.getiBalance() - integral); integralDJ.setiFrozen(integralDO.getiFrozen() + integral); integralDJ.setiAltogether(integralDJ.getiBalance() + integralDJ.getiFrozen()); integralService.addTravelIntegral(integralDJ); } } return bool ? JsonResultUtils.success(lineService.getTravelLineById(tr.getlId()).getlGroupNumber(), "?!") : JsonResultUtils.error("!"); } /** * ? * * @param ids * @return */ @RequestMapping(value = "updateLines.htm", method = RequestMethod.POST) @ResponseBody public JsonResult updateLines(String id, Integer state) { if (id == null || id.equals("")) { return JsonResultUtils.error("?!"); } // Long String[] ids = id.substring(1, id.length()).split(","); Long[] lids = new Long[ids.length]; for (int i = 0; i < ids.length; i++) { lids[i] = Long.parseLong(ids[i]); } // ? TravelLineThinDO trdo = new TravelLineThinDO(); trdo.setlState(state); // ?ID trdo.setlEditUserId(WebUserTools.getMid().intValue()); // ?? List<TravelLineDO> oldlineDOs = new ArrayList<TravelLineDO>(); for (Long lid : lids) { TravelLineDO oldLine = lineService.getTravelLineById(lid); oldlineDOs.add(oldLine); } // ? int result = lineService.updateLines(lids, trdo); if (result == 0) { return JsonResultUtils.error("!"); } else { // ? List<TravelLineDO> newlineDOs = new ArrayList<TravelLineDO>(); for (Long lid : lids) { TravelLineDO oldLine = lineService.getTravelLineById(lid); newlineDOs.add(oldLine); // updateSolr(oldLine); } // ? List<Map<String, String>> lst = BeanUtils.fieldEditableList(oldlineDOs, newlineDOs); for (int i = 0; i < lst.size(); i++) { TravelOperationLogDO operationLogDO = new TravelOperationLogDO(LogTableEnum.LINELOG.value, newlineDOs.get(i).getlId(), newlineDOs.get(i).getlGroupNumber(), lst.get(i).get("oldString"), lst.get(i).get("newString"), WebUserTools.getMid(), WebUserTools.getCid()); // operationLogService.insertTravelOperationLog(operationLogDO); } return JsonResultUtils.success(null, "?!"); } } /** * * * @param mav * @return */ @AuthorityPolicy(authorityTypes = { Right.MODIFY_PRODUCT }) @RequestMapping(value = "/linegetvalue.htm") public ModelAndView lineUpdateGetValue(Long lId, ModelAndView mav) { // ? TravelLineDO lineDO = lineService.find(new TravelLineQuery(lId)); TravelLineVO lineVO = new TravelLineVO(); BeanUtils.copyProperties(lineVO, lineDO); // TravelRouteQuery routq = new TravelRouteQuery(); routq.setlId(lineVO.getlId()); List<TravelRouteDO> rlistp = lineService.list(routq); List<TravelRouteVO> rlist = BeanUtils.convert(TravelRouteVO.class, rlistp); // mav.addObject("line", lineVO); mav.addObject("route", rlist); mav.addObject("type", "update"); mav.setViewName("account/line/lineadd"); return mav; } /** * ? * * @param mav * @return */ @AuthorityPolicy(authorityTypes = { Right.SAVE_PRODUCT }) @RequestMapping(value = "/linecopyvalue.htm") public ModelAndView lineCopyGetValue(Long lId, ModelAndView mav) { // ? TravelLineDO lineDO = lineService.find(new TravelLineQuery(lId)); TravelLineVO lineVO = new TravelLineVO(); BeanUtils.copyProperties(lineVO, lineDO); // TravelRouteQuery routq = new TravelRouteQuery(); routq.setlId(lineVO.getlId()); List<TravelRouteDO> rlistp = lineService.list(routq); List<TravelRouteVO> rlist = BeanUtils.convert(TravelRouteVO.class, rlistp); // mav.addObject("line", lineVO); mav.addObject("route", rlist); mav.addObject("type", "copy"); mav.setViewName("account/line/lineadd"); return mav; } /** * * * @param line * @param result * @return * @throws Exception */ @AuthorityPolicy(authorityTypes = { Right.MODIFY_PRODUCT }) @RequestMapping(value = "/lineupdate.htm", method = RequestMethod.POST) @ResponseBody public JsonResult lineUpdate(TravelLineVO line) throws Exception { if (line.getlCrPrice() == null || line.getlXhPrice() == null || line.getlYPrice() == null || line.getlJCrPrice() == null || line.getlJXhPrice() == null || line.getlJYPrice() == null || line.getlFangPrice() == null) { return JsonResultUtils.error("?!"); } // Calendar date = Calendar.getInstance(); date.setTime(line.getlGoGroupTime()); date.add(Calendar.DAY_OF_MONTH, -line.getlEndTimeInteger()); line.setlEndTime(date.getTime()); // lineService.deleteTravelRouteByLineid(line.getlId()); // ?ID line.setlEditUserId(WebUserTools.getMid().intValue()); // int roid = 0; if (line.getRoutelist() != null || line.getRoutelist().size() != 0) { for (TravelRouteDO route : line.getRoutelist()) { route.setlId(line.getlId()); roid = lineService.addTravelRoute(route); } } // ? TravelLineDO oldLine = lineService.getTravelLineById(line.getlId()); boolean bool = lineService.updateTravelLine(line) && roid != 0; if (bool) { // *****************? // TravelLineDO newLine = lineService.getTravelLineById(line.getlId()); // ? Map<String, String> map = BeanUtils.fieldEditable(oldLine, newLine); TravelOperationLogDO operationLogDO = new TravelOperationLogDO(LogTableEnum.LINELOG.value, line.getlId(), line.getlGroupNumber(), map.get("oldString"), map.get("newString"), WebUserTools.getMid(), WebUserTools.getCid()); // operationLogService.insertTravelOperationLog(operationLogDO); // *****************? updateSolr(newLine); return JsonResultUtils.success(null, "?!"); } else { return JsonResultUtils.error("!"); } } /** * * * @param mav * @return */ @RequestMapping(value = "/showlist.htm", method = RequestMethod.POST) public ModelAndView line(ModelAndView mav, TravelLineQuery query, String lGoGroupTime, String lGoGroupEndTime, Integer page, Integer pagesize) { List<TravelSiteFullDO> sitelist = siteService.getSiteFull(WebUserTools.getCid()); Long[] zids = CollectionUtils.getLongValueArrays(sitelist, "zId"); if (query.getzId() != null) { query.setzIds(query.getzId()); } else { query.setzIds(zids); } TravelLineQuery.parse(query, lGoGroupTime, lGoGroupEndTime, page, pagesize, LineTemplateEnum.Line.getValue()); query.setcId(WebUserTools.getCid()); PaginationList<TravelLineDO> list = lineService.listPagination(query, new DefaultIpageUrl()); List<TravelLineVO> lists = BeanUtils.convert(TravelLineVO.class, list); mav.getModel().put(CustomVelocityLayoutView.USE_LAYOUT, "false"); mav.addObject("list", lists); mav.addObject("pagination", list.getQuery()); mav.setViewName("account/line/linelist"); return mav; } /** * ? * * @return */ @RequestMapping(value = "/line.htm") public String showline() { return "account/line/index"; } /** * ? * * @return */ @AuthorityPolicy(authorityTypes = { Right.CREATE_PRODUCT }) @RequestMapping(value = "/lineadd.htm") public String lineadd() { return "account/line/lineadd"; } /*** * * * @param id * @return */ @AuthorityPolicy(authorityTypes = { Right.REMOVE_PRODUCT }) @RequestMapping("/deleteline.htm") @ResponseBody public JsonResult deleteline(Long id) { // ?? TravelOrderQuery query = new TravelOrderQuery(); query.setlId(id); List<TravelOrderDO> list = orderService.list(query); if (Argument.isNotEmpty(list)) { return JsonResultUtils.error("?,!"); } TravelLineDO tr = lineService.getTravelLineById(id); tr.setlDelState(1); lineService.deleteTravelRouteByLineid(tr.getlId()); boolean bool = lineService.updateTravelLine(tr); // ? if (bool) { updateSolr(tr); } return bool ? JsonResultUtils.success(null, "?!") : JsonResultUtils.error("!"); } /** * ?? * * @return */ @RequestMapping(value = "/trafficlist.htm") public ModelAndView traffic(ModelAndView mav, TravelTrafficQuery query, String type, Integer page, Integer pagesize) { query.setcId(WebUserTools.getCid()); query.setPageSize(pagesize = Argument.isNotPositive(pagesize) ? 8 : pagesize); query.setNowPageIndex(page = Argument.isNotPositive(page) ? 0 : page - 1); PaginationList<TravelTrafficDO> trafficlist = lineService.listPagination(query, new DefaultIpageUrl()); PagesPagination pagination = PaginationParser.getPaginationList(page, pagesize, query.getAllRecordNum(), new IPageUrl() { @Override public String parsePageUrl(Object... objs) { return "/account/trafficlist.htm?page=" + (Integer) objs[1]; } }); List<TravelTrafficVO> trafficlistvo = BeanUtils.convert(TravelTrafficVO.class, trafficlist); mav.addObject("trafficlist", trafficlistvo); mav.addObject("pagination", pagination); mav.addObject("type", type); mav.setViewName("account/line/trafficlist"); return mav; } /** * ?? * * @return */ @RequestMapping(value = "/templatelist.htm") public ModelAndView template(ModelAndView mv, TravelLineQuery query, Integer page, Integer pagesize) { query.setcId(WebUserTools.getCid()); query.setlTemplateState(LineTemplateEnum.Template.getValue()); query.setPageSize(pagesize = Argument.isNotPositive(pagesize) ? 8 : pagesize); query.setNowPageIndex(page = Argument.isNotPositive(page) ? 0 : page - 1); PaginationList<TravelLineDO> list = lineService.listPagination(query, new DefaultIpageUrl()); PagesPagination pagination = PaginationParser.getPaginationList(page, pagesize, query.getAllRecordNum(), new IPageUrl() { @Override public String parsePageUrl(Object... objs) { return "/account/templatelist.htm?page=" + (Integer) objs[1]; } }); List<TravelLineVO> lists = BeanUtils.convert(TravelLineVO.class, list); mv.addObject("pagination", pagination); mv.addObject("template", lists); mv.setViewName("account/line/templatelist"); return mv; } /** * ?? * * @param id * @return */ @RequestMapping(value = "/getTraffic.htm") @ResponseBody public JsonResult getTraffic(Long id) { TravelTrafficDO traf = lineService.getTravelTrafficById(id); return traf != null ? JsonResultUtils.success(traf) : JsonResultUtils.error("!"); } /** * ?? * * @param id * @return */ @RequestMapping(value = "/getTemplate.htm") @ResponseBody public JsonResult getTemplate(Long id) { TravelLineDO tral = lineService.getTravelLineById(id); if (tral == null) { return JsonResultUtils.error("?!"); } TravelLineVO trvo = new TravelLineVO(tral); TravelRouteQuery query = new TravelRouteQuery(); query.setlId(trvo.getlId()); List<TravelRouteDO> listrout = lineService.list(query); trvo.setRoutelist(listrout); return trvo != null ? JsonResultUtils.success(trvo) : JsonResultUtils.error("!"); } @RequestMapping(value = "/road.htm") public String Road() { return "account/line/road"; } @RequestMapping(value = "/roadadd.htm") public String roadadd() { return "account/line/roadadd"; } /*** * * * @param name * @return */ @RequestMapping(value = "/resourcelist.htm") public String resourcelist(String name) { return "account/line/resourcelist"; } /*** * LIST * * @param query * @param pagesize * @param page * @param model * @return */ @RequestMapping(value = "/photodiv.htm") public ModelAndView photolist(TravelPhotoQuery query, Integer pagesize, Integer page, ModelAndView model) { query.setPageSize(pagesize = Argument.isNotPositive(pagesize) ? 8 : pagesize); query.setNowPageIndex(page = Argument.isNotPositive(page) ? 0 : page - 1); query.setcId(WebUserTools.getCid()); PaginationList<TravelPhotoDO> list = photoService.listPagination(query, new DefaultIpageUrl()); PagesPagination pagination = PaginationParser.getPaginationList(page, pagesize, query.getAllRecordNum(), new IPageUrl() { @Override public String parsePageUrl(Object... objs) { return "/account/photodiv.htm?page=" + (Integer) objs[1]; } }); model.getModel().put(CustomVelocityLayoutView.USE_LAYOUT, "false"); model.addObject("list", list); model.addObject("type", "div"); model.addObject("pagination", pagination); model.setViewName("account/photo/list"); return model; } @RequestMapping(value = "/order.htm") public ModelAndView showOrder(Long id, ModelAndView mav) { mav.setViewName("account/order/order"); if (Argument.isNotPositive(id)) { return mav; } TravelLineDO lineDO = lineService.find(new TravelLineQuery(id)); mav.addObject("line", new TravelLineVO(lineDO)); return mav; } /** * ??? * * @return */ private String getSerialNumber() { String now = DateViewTools.format(new Date(), "yyyyMMddHHmmssSSS"); int num = new Random().nextInt(50000) + 10000; return now + num; } /*** * * * @param line */ private void updateSolr(TravelLineDO line) { ProductSearchQuery query = new ProductSearchQuery(null, line.getlProduct()); solrClient.del("zuobian", query.toSolrQuery()); TravelLineQuery queryline = new TravelLineQuery(); queryline.setlTemplateState(LineTemplateEnum.Line.getValue()); queryline.setlState(LineStateEnum.NORMAL.getValue()); queryline.setlProduct(line.getlProduct()); PaginationList<ProductSearchField> field = lineService.listProductSearch(queryline); if (Argument.isNotEmpty(field)) { solrClient.addBeans("zuobian", field); } } }