JSON 解析(门店)
package com.j1.mai.action; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigDecimal; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.websocket.server.PathParam; import com.j1.base.order.model.*; import com.j1.mai.dto.base.Goods; import com.j1.mai.util.JsonUtils; import com.j1.model.User; import com.j1.pay.model.oracle.OrderPaymentLog; import com.j1.pay.model.oracle.OrderPaymentTypeList; import com.j1.soa.common.MemberKeyUtils; import com.j1.soa.resource.cms.api.PageIndexImgService; import com.j1.soa.resource.item.api.GoodsDetailService; import com.j1.soa.resource.pay.oracle.api.OrderPaymentLogService; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.j1.base.dto.ServiceMessage; import com.j1.base.page.Page; import com.j1.base.type.MsgStatus; import com.j1.base.type.PageIndexType; import com.j1.base.type.SiteType; import com.j1.cms.model.PageIndexImg; import com.j1.mai.common.Const; import com.j1.mai.model.common.SoaApiBaseAction; import com.j1.mai.service.CheckMemberKeyService; import com.j1.mai.util.NumericUtil; import com.j1.mai.util.StringUtil; import com.j1.soa.common.ResultMsg; import com.j1.soa.resource.order.api.LogisticCompanyService; import com.j1.soa.resource.order.api.OrderInfoService; import com.j1.soa.resource.order.api.OrderItemService; import com.j1.soa.resource.order.api.OrderLogService; import com.j1.soa.resource.pay.api.PayQueryService; /** * SOA 订单 HTTP 接口 * * @author qiaoyu */ @Controller @Scope("request") @RequestMapping("/order") public class OrderAction extends SoaApiBaseAction { static final Logger LOG = Logger.getLogger(OrderAction.class); @Autowired private OrderInfoService orderInfoService; @Autowired private OrderLogService orderLogService; @Autowired private LogisticCompanyService logisticCompanyService; @Autowired private OrderItemService orderItemService; @Autowired private GoodsDetailService goodsDetailService; @Autowired private PayQueryService payQueryService; @Autowired private CheckMemberKeyService checkMemberKeyService; @Autowired private PageIndexImgService pageIndexImgService; /** * 查询订单列表 * * @param request * @param response * @param mul * 来源 * @param orderState * 订单状态 * @param pageNum * 页数 * @param pageSize * 每页条数 * @date 25/11/14 * @author qiaoyu * @version 1.0 */ @RequestMapping("/list") public void list( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderState", required = false) String orderState, @RequestParam(value = "pageNum", required = false) String pageNum, @RequestParam(value = "goodsSeller", required = false) String goodsSeller, @RequestParam(value = "pageSize", required = false) String pageSize) { if (null == request.getParameter("createSource") || (null != request.getParameter("createSource") && !request .getParameter("createSource").equals("app"))) { String code = checkMemberKeyService.getCode(memberKey); if (code.equals("-99")) { this.setResultInfo(code, "请登录!").write(request, response); return; } } if (StringUtil.isEmpty(memberKey)) { this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), ResultMsg.Common.MEMBER_KEY_EMPTY).write(request, response); return; } // PARAMTER VALIDATION END OrderInfo queryParams = new OrderInfo(); queryParams.setMemberKey(memberKey); queryParams.setMul(mul); queryParams.setOrderStateStr(orderState); queryParams.setIsTc("ALL"); if(null != goodsSeller&& !"".equals(goodsSeller)) queryParams.setGoodsSeller(goodsSeller); ServiceMessage<Page<OrderInfo>> orderResult = null; try { orderResult = orderInfoService.getWebOrderInfoByListPage( NumericUtil.parseInt(pageNum, 1), NumericUtil.parseInt(pageSize, 10), queryParams); JSONObject resultObj = new JSONObject(); if (orderResult.getStatus() == MsgStatus.NORMAL) { //通过接口拿到数据 resultObj = JSONObject.fromObject(orderResult.getResult()); //data的json格式数据 JSONArray data = resultObj.getJSONArray("data"), afterSetDate = new JSONArray(); //遍历集合 for (int i = 0; i < data.size(); i++) { JSONObject orderInfo = data.getJSONObject(i); OrderItem itemQueryParams = new OrderItem(); itemQueryParams.setMul(mul); itemQueryParams.setMemberKey(memberKey); itemQueryParams.setOrderId(orderInfo.getLong("orderId")); itemQueryParams.setIsTc("ALL"); // 嵌入商品图片列表 ServiceMessage<List<OrderItem>> orderItemResult = orderItemService .getWebOrderInfoPicByList(itemQueryParams); if (orderItemResult.getStatus() == MsgStatus.NORMAL) { BigDecimal orderGoodsCount = new BigDecimal(0); //定义jsonArry JSONArray goodsList = new JSONArray(); for (OrderItem orderItem : orderItemResult.getResult()) { //取值 JSONObject itemGoods = new JSONObject(); //赋值 itemGoods.put("imageUrl", orderItem.getProImageUrl()); itemGoods .put("productId", orderItem.getProductId()); itemGoods.put("goodsId", orderItem.getGoodsId()); itemGoods.put("drugPrescriptionType", orderItem.getDrugPrescriptionType()); orderGoodsCount = orderGoodsCount.add(orderItem.getGoodsAmount()); //将取出的数据放到定义的集合中 goodsList.add(itemGoods); } //json格式的数据展示 orderInfo.put("orderGoodsCount", orderGoodsCount); orderInfo.put("goodsList", goodsList); } OrderInfo logisticsParam = new OrderInfo(); logisticsParam.setOrderId(orderInfo.getLong("orderId")); logisticsParam.setMul(mul); logisticsParam.setMemberKey(memberKey); ServiceMessage<List<LogisticCompany>> logisticsResult = logisticCompanyService .queryLogisticCompany(logisticsParam); if (logisticsResult.getStatus() == MsgStatus.NORMAL) { orderInfo.put("logisticCompanys", logisticsResult.getResult()); } /** * 18已退款;19退货完成;20退货中;21已出库;22配货中;(23已收货;23该状态现在没有用到) * 24缺货中;25已取消;26已完成;27已发货;28已审核;29已提交 * 根据isPaid 拆分29已提交,29已支付。 * 根据orderButs存在canEval 拆分26已完成,26已收货 */ int orderStateNum = orderInfo.getInt("orderState"); String isPaid = orderInfo.getString("isPaid"); List<String> orderButs = orderInfo.getJSONArray("orderButs"); String codeValue = getOrderStatus(orderStateNum, isPaid, orderButs); orderInfo.put("codeValue", codeValue); afterSetDate.add(orderInfo); } //最后的封装 resultObj.put("data", afterSetDate); Map<String, String> orderStatMap = this.getOrderStatistics(memberKey, mul, goodsSeller); resultObj.put("orderStatistics", orderStatMap); // for (OrderInfo orderInfo : orderResult.getResult()) { // OrderItem itemQueryParams = new OrderItem(); // itemQueryParams.setMul(mul); // itemQueryParams.setMemberKey(memberKey); // itemQueryParams.setOrderId(orderInfo.getOrderId()); // // // 嵌入商品图片列表 // ServiceMessage<List<OrderItem>> orderItemResult = // orderItemService // .getWebOrderInfoPicByList(itemQueryParams); // if (orderItemResult.getStatus() == MsgStatus.NORMAL) { // List<String> goodsImageList = new ArrayList<String>(); // for (OrderItem orderItem : orderItemResult.getResult()) { // goodsImageList.add(orderItem.getProImageUrl()); // } // orderInfo.setGoodsImageList(goodsImageList); // } // } //返回给前台 _result.setObjData(resultObj); } } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { this.setResultInfo(orderResult, ResultMsg.OrderActionMsg.LIST_FAILRE).write(request, response); } } private Map<String, String> getOrderStatistics(String memberKey, String mul, String orderGoodsSeller) { // 查询订单数量 Map<String, String> orderNumList = new HashMap<String, String>(); int noPaidNum = 0, noShippingNum = 0, noReceiveNum = 0, noCommentNum = 0; OrderInfo orderNumParam = new OrderInfo(); orderNumParam.setMemberKey(memberKey); orderNumParam.setMul(mul); orderNumParam.setOrderStateStr(Const.OrderState.NO_PAID); orderNumParam.setGoodsSeller(orderGoodsSeller); try { // 待付款订单数 ServiceMessage<Integer> noPaidResult = orderInfoService .getWebOrderInfoByListCount(orderNumParam); if (noPaidResult.getStatus() == MsgStatus.NORMAL) noPaidNum = noPaidResult.getResult(); } catch (Exception e) { LOG.error("OrderAction@getOrderStatistics 待付款订单数 " + e.getMessage(), e); } try { orderNumParam.setOrderStateStr(Const.OrderState.NO_SHIPPING); // 待发货订单数 ServiceMessage<Integer> noShippingResult = orderInfoService .getWebOrderInfoByListCount(orderNumParam); if (noShippingResult.getStatus() == MsgStatus.NORMAL) noShippingNum = noShippingResult.getResult(); orderNumParam.setOrderStateStr(Const.OrderState.NO_RECEIVE); } catch (Exception e) { LOG.error("OrderAction@getOrderStatistics 待发货订单数 " + e.getMessage(), e); } try { // 待收货订单数 ServiceMessage<Integer> noReceiveResult = orderInfoService .getWebOrderInfoByListCount(orderNumParam); if (noReceiveResult.getStatus() == MsgStatus.NORMAL) noReceiveNum = noReceiveResult.getResult(); orderNumParam.setOrderStateStr(Const.OrderState.NO_COMMENT); } catch (Exception e) { LOG.error("OrderAction@getOrderStatistics 待收货订单数 " + e.getMessage(), e); } try { // 待评价订单数 ServiceMessage<Integer> noCommentResult = orderInfoService .getWebOrderInfoByListCount(orderNumParam); if (noCommentResult.getStatus() == MsgStatus.NORMAL) noCommentNum = noCommentResult.getResult(); } catch (Exception e) { LOG.error("OrderAction@getOrderStatistics 待评价订单数 " + e.getMessage(), e); } orderNumList.put("noPaid", String.valueOf(noPaidNum)); orderNumList.put("noShipping", String.valueOf(noShippingNum)); orderNumList.put("noReceive", String.valueOf(noReceiveNum)); orderNumList.put("noComment", String.valueOf(noCommentNum)); return orderNumList; } private Map<String, String> getCRCOrderStatistics(String memberKey, String mul) { return getOrderStatistics(memberKey, mul,"2");// CRCare order type } /** * 查询订单详情 * * @param request * @param response * @param mul * 来源 * @param orderId * 订单ID * @date 26/11/14 * @author qiaoyu * @version 1.0 */ @RequestMapping("/detail") public void detail( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId", required = false) String orderId) { if (null == request.getParameter("createSource") || (null != request.getParameter("createSource") && !request .getParameter("createSource").equals("app"))) { String code = checkMemberKeyService.getCode(memberKey); if (code.equals("-99")) { this.setResultInfo(code, "请登录!").write(request, response); return; } } if (StringUtil.isEmpty(memberKey)) { this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), ResultMsg.Common.MEMBER_KEY_EMPTY).write(request, response); return; } if (StringUtil.isEmpty(orderId) || !StringUtil.isNumeric(orderId)) { this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), ResultMsg.OrderActionMsg.ORDER_ID_EMPTY).write(request, response); return; } // PARAMTER VALIDATION END OrderInfo queryParams = new OrderInfo(); queryParams.setMemberKey(memberKey); queryParams.setMul(mul); queryParams.setOrderId(NumericUtil.parseLong(orderId)); queryParams.setIsTc("ALL"); ServiceMessage<Page<OrderInfo>> orderResult = null; try { orderResult = orderInfoService.getWebOrderInfoByListPage(1, 10, queryParams); if (orderResult.getStatus() == MsgStatus.NORMAL) { if (orderResult.getResult().getTotalCount() == 0) { this.setResultInfo(MsgStatus.NO_RESULT.getCode(), ResultMsg.OrderActionMsg.ORDER_NOT_EXISTS); return; } OrderInfo orderInfo = orderResult.getResult().getData().get(0); //订单状态 Integer orderState = orderInfo.getOrderState(); String isPaid = orderInfo.getIsPaid(); List<String> orderButs = orderInfo.getOrderButs(); String orderStatus = getOrderStatus(orderState, isPaid, orderButs!=null?orderButs:new ArrayList<String>()); orderInfo.setCodeValue(orderStatus); _result.setObjData(orderInfo); //订单状态的集合 List<String> orderStatusList = getOrderStatusList(orderState); if(orderInfo.getPaymentMode().equals("HDFK")){ orderStatusList.remove("已支付"); } _result.put("orderStatusList",orderStatusList); // 订单物流列表 OrderInfo logisticsParam = new OrderInfo(); logisticsParam.setOrderId(NumericUtil.parseLong(orderId)); logisticsParam.setMul(mul); logisticsParam.setMemberKey(memberKey); ServiceMessage<List<LogisticCompany>> logisticsResult = logisticCompanyService .queryLogisticCompany(orderInfo); if (logisticsResult.getStatus() == MsgStatus.NORMAL && logisticsResult.getResult() != null) { _result.put("logisticCompanys", logisticsResult.getResult()); } //3.71 新增物流详情 OrderInfo orderInfo1=new OrderInfo(); orderInfo1.setOrderId(NumericUtil.parseLong(orderId)); ServiceMessage<List<Logistics>> serviceMessage = logisticCompanyService.queryLogistics(orderInfo1); List<LogisticsInfo> logisticsInfos = sortLogisticInfo(serviceMessage); this.setResultInfo(serviceMessage.getStatus().getCode(), serviceMessage.getMessage()); // _result.put("result",serviceMessage.getResult()); _result.put("lastLogisticsInfo",logisticsInfos); // 订单商品列表 OrderItem orderItemQueryParams = new OrderItem(); orderItemQueryParams.setMemberKey(memberKey); orderItemQueryParams.setOrderId(queryParams.getOrderId()); orderItemQueryParams.setIsTc("ALL"); ServiceMessage<List<OrderItem>> orderItemResult = orderItemService .getWebOrderInfoPicByList(orderItemQueryParams); if (orderItemResult.getStatus() == MsgStatus.NORMAL) { _result.put("goodsList", orderItemResult.getResult()); } setResultInfo(orderResult.getStatus().getCode(), orderResult.getMessage()); } setResultInfo(orderResult, ResultMsg.OrderActionMsg.LIST_FAILRE); } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { write(request, response); } } /** * 查询订单包裹物流 * * @param request * @param response * @param mul * 来源 * @param orderId * 订单ID * @date 28/11/14 * @author qiaoyu * @version 1.0 */ @RequestMapping("/logistics") public void logistics( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId", required = false) String orderId) { if (null == request.getParameter("createSource") || (null != request.getParameter("createSource") && !request .getParameter("createSource").equals("app"))) { String code = checkMemberKeyService.getCode(memberKey); if (code.equals("-99")) { this.setResultInfo(code, "请登录!").write(request, response); return; } } OrderInfo orderInfo = new OrderInfo(); orderInfo.setOrderId(NumericUtil.parseLong(orderId)); orderInfo.setMul(mul); orderInfo.setMemberKey(memberKey); ServiceMessage<List<LogisticCompany>> logisticsResult = null; try { logisticsResult = logisticCompanyService .queryLogisticCompany(orderInfo); if (logisticsResult.getStatus() == MsgStatus.NORMAL && logisticsResult.getResult() != null) { _result.put("logisticCompanys", logisticsResult.getResult()); } } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { this.setResultInfo(logisticsResult, ResultMsg.OrderActionMsg.LOGISTICS_FAILURE).write(request, response); } } /** * 获取物流详情 * * @param request * @param response * @param memberKey * @param mul * @param orderId * @param orderShippingNo */ @RequestMapping("/shipping") public void shipping( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId", required = false) String orderId, @RequestParam(value = "orderShippingNo", required = false) String orderShippingNo) { OrderInfo orderInfo = new OrderInfo(); orderInfo.setOrderId(NumericUtil.parseLong(orderId)); orderInfo.setMul(mul); orderInfo.setMemberKey(memberKey); orderInfo.setIsTc("ALL"); if (null == request.getParameter("createSource") || (null != request.getParameter("createSource") && !request .getParameter("createSource").equals("app"))) { String code = checkMemberKeyService.getCode(memberKey); if (code.equals("-99")) { this.setResultInfo(code, "请登录!").write(request, response); return; } } try { // 查询订单详情 ServiceMessage<Page<OrderInfo>> orderResult = orderInfoService .getWebOrderInfoByListPage(1, 1, orderInfo); // 订单 if (orderResult.getStatus() != MsgStatus.NORMAL) { setResultInfo(orderResult.getStatus().getCode(), orderResult.getMessage()); return; } // 查询订单条数超过1条(按照ID查应该) if (orderResult.getResult().getTotalCount() > 1) { setResultInfo(MsgStatus.EXCEPTION.getCode(), ResultMsg.OrderActionMsg.EXPECT_SIZE); return; } List<OrderInfo> orderInfos =orderResult.getResult().getData(); _result.put("orderInfo", orderInfos!=null&&orderInfos.size()>0?orderInfos.get(0):""); ServiceMessage<List<LogisticCompany>> logisticsResult = logisticCompanyService .queryLogisticCompany(orderInfo); LogisticCompany matchedLogisticCompany = null; if (logisticsResult.getStatus() == MsgStatus.NORMAL) { for (LogisticCompany logisticCompany : logisticsResult .getResult()) { if (logisticCompany.getOrderShippingNo().equals( orderShippingNo)) { matchedLogisticCompany = logisticCompany; break; } } } // 运单号查询不到 if (matchedLogisticCompany == null) { setResultInfo(MsgStatus.NO_RESULT.getCode(), ResultMsg.Common.QUERY_NO_RESULT); return; } _result.put("logisticCompany", matchedLogisticCompany); setResultInfo(MsgStatus.NORMAL.getCode(), ResultMsg.Common.OK); } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { write(request, response); } } /** * 取消订单 * * @param request * @param response * @param mul * 来源 * @param orderId * 订单ID * @date 28/11/14 * @author qiaoyu * @version 1.0 */ @RequestMapping("/cancel") public void cancel( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId", required = false) String orderId) { if (null == request.getParameter("createSource") || (null != request.getParameter("createSource") && !request .getParameter("createSource").equals("app"))) { String code = checkMemberKeyService.getCode(memberKey); if (code.equals("-99")) { this.setResultInfo(code, "请登录!").write(request, response); return; } } OrderInfo orderInfo = new OrderInfo(); orderInfo.setOrderId(NumericUtil.parseLong(orderId)); orderInfo.setMemberKey(memberKey); orderInfo.setMul(mul); ServiceMessage<String> cancelResult = null; try { cancelResult = orderInfoService.rollBackOrder(orderInfo); } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { this.setResult(cancelResult, ResultMsg.OrderActionMsg.CANCEL_FAILURE).write(request, response); } } /** * 订单确认 * * @param request * @param response * @param memberKey * @param mul * @param orderId */ @RequestMapping("/confirm") public void confirm( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId", required = false) String orderId) { if (null == request.getParameter("createSource") || (null != request.getParameter("createSource") && !request .getParameter("createSource").equals("app"))) { String code = checkMemberKeyService.getCode(memberKey); if (code.equals("-99")) { this.setResultInfo(code, "请登录!").write(request, response); return; } } OrderInfo orderInfo = new OrderInfo(); orderInfo.setOrderId(NumericUtil.parseLong(orderId)); orderInfo.setMemberKey(memberKey); orderInfo.setMul(mul); ServiceMessage<String> confirmResult = null; try { confirmResult = orderInfoService.orderFinish(orderInfo); } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { this.setResult(confirmResult, ResultMsg.OrderActionMsg.CONFIRM_FAILURE).write(request, response); } } /** * 查询订单日志 * * @param request * @param response * @param mul * 来源 * @param orderId * 订单ID * @date 28/11/14 * @author qiaoyu * @version 1.0 */ @RequestMapping("/log") public void log( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId", required = false) String orderId) { if (null == request.getParameter("createSource") || (null != request.getParameter("createSource") && !request .getParameter("createSource").equals("app"))) { String code = checkMemberKeyService.getCode(memberKey); if (code.equals("-99")) { this.setResultInfo(code, "请登录!").write(request, response); return; } } OrderInfo orderInfo = new OrderInfo(); orderInfo.setMemberKey(memberKey); orderInfo.setOrderId(NumericUtil.parseLong(orderId)); orderInfo.setMul(mul); ServiceMessage<List<OrderLog>> logResult = null; try { logResult = orderLogService.getPublicLogByOrderId(orderInfo); } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { _result.put("logs", logResult.getResult()); this.setResultInfo(logResult, ResultMsg.OrderActionMsg.LOG_FAILURE) .write(request, response); } } /** * 支付完成后获取订单信息 * * @param request * @param response * @param memberKey * @param mul * @param orderId */ @RequestMapping("/afterPay") public void afterPay( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId", required = false) String orderId) { if (StringUtil.isEmpty(memberKey)) { this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), ResultMsg.Common.MEMBER_KEY_EMPTY).write(request, response); return; } if (StringUtil.isEmpty(orderId)) { this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), ResultMsg.OrderActionMsg.ORDER_ID_EMPTY).write(request, response); return; } // PARAMTER VALIDATION END OrderInfo queryParams = new OrderInfo(); queryParams.setMemberKey(memberKey); queryParams.setMul(mul); queryParams.setOrderId(NumericUtil.parseLong(orderId)); queryParams.setIsTc("ALL"); ServiceMessage<Page<OrderInfo>> orderResult = null; try { orderResult = orderInfoService.getWebOrderInfoByListPage(1, 10, queryParams); if (orderResult.getStatus() == MsgStatus.NORMAL) { if (orderResult.getResult().getTotalCount() == 0) { this.setResultInfo(MsgStatus.NO_RESULT.getCode(), ResultMsg.OrderActionMsg.ORDER_NOT_EXISTS); return; } OrderInfo orderInfo = orderResult.getResult().getData().get(0); int returnPoints = 0; // 获取订单赠送积分 if (StringUtil.isNotEmpty(orderInfo.getReturnType()) && orderInfo.getReturnType().contains("points")) { returnPoints = NumericUtil.parseInt(orderInfo .getReturnValue().split("/")[0], 0); } // 包裹数量 int parcelCount = 1; // 订单物流列表 // OrderInfo logisticsParam = new OrderInfo(); // logisticsParam.setOrderId(NumericUtil.parseLong(orderId)); // logisticsParam.setMul(mul); // logisticsParam.setMemberKey(memberKey); // // ServiceMessage<List<LogisticCompany>> logisticsResult = // logisticCompanyService // .queryLogisticCompany(orderInfo); // if (logisticsResult.getStatus() == MsgStatus.NORMAL // && logisticsResult.getResult() != null) { // parcelCount = logisticsResult.getResult().size(); // } // 商品数量 int goodsCount = 0; // 订单商品列表 OrderItem orderItemQueryParams = new OrderItem(); orderItemQueryParams.setMemberKey(memberKey); orderItemQueryParams.setOrderId(queryParams.getOrderId()); orderItemQueryParams.setIsTc("ALL"); ServiceMessage<List<OrderItem>> orderItemResult = orderItemService .getWebOrderInfoPicByList(orderItemQueryParams); if (orderItemResult.getStatus() == MsgStatus.NORMAL) { for (OrderItem orderItem : orderItemResult.getResult()) { goodsCount += orderItem.getGoodsAmount() == null ? 0 : orderItem.getGoodsAmount().intValue(); // GoodsDetailto.setGoodsId(orderItem.getGoodsId()); // goodsDetailDto.setProductId(orderItem.getProductId().intValue()); // goodsDetailDtoDto goodsDetailDto = new // GoodsDetailDto(); // goodsDetailD.setSiteType(SiteType.MOBILE); // ServiceMessage<GoodsDetailDto> detailResult = // goodsDetailService // .getGoodDetail(goodsDetailDto); // if (detailResult.getStatus() == MsgStatus.NORMAL) { // TODO 根据商品所在仓库计算包裹数量 // } } } String paymentMode = "weixin"; ServiceMessage<List<OrderPaymentTypeList>> orderPaymentTypeList = payQueryService.getOrderPaymentTypeSingle(orderId); if (null != orderPaymentTypeList && orderPaymentTypeList.getStatus() == MsgStatus.NORMAL) { if (orderPaymentTypeList.getResult() != null && orderPaymentTypeList.getResult().size() > 0) { paymentMode = orderPaymentTypeList.getResult().get(0).getPaymentTypeNo(); } } String ticketTitle = "";// 发票抬头 ServiceMessage<OrderInfo> orderMessage = orderInfoService.getOrderInfoById(queryParams); if (orderMessage.getStatus() == MsgStatus.NORMAL) { ticketTitle = orderMessage.getResult().getInvoiceTitle(); } //更多优惠 ArrayList<Map<String, String>> bottomList = new ArrayList<Map<String,String>>(); try { Map<String, String> bottomStroll = new HashMap<String, String>(); bottomStroll.put("title", "查看订单"); bottomStroll.put("imageUrl", "http://soa.app.j1.com/upload/read/2015/8/27111235738351.png"); bottomStroll.put("targeUrl", "/mall/orderdetail.html?orderId="+orderId); bottomList.add(bottomStroll); bottomStroll = new HashMap<String, String>(); bottomStroll.put("title", "账号充值"); bottomStroll.put("imageUrl", "http://soa.app.j1.com/upload/read/2015/8/27111301537528.png"); bottomStroll.put("targeUrl", "/mall/myAccount.html"); bottomList.add(bottomStroll); bottomStroll = new HashMap<String, String>(); bottomStroll.put("title", "更多优惠"); bottomStroll.put("imageUrl", "http://soa.app.j1.com/upload/read/2015/8/27111329080669.png"); bottomStroll.put("targeUrl", ""); PageIndexImg pageIndexImg = new PageIndexImg(); pageIndexImg.setSiteType(SiteType.MOBILE); pageIndexImg.setImageType(Integer.valueOf(PageIndexType.IMAGE_CAROUSEL_APP.getCode())); ServiceMessage<List<PageIndexImg>> banners = pageIndexImgService.getPageIndexImgList(pageIndexImg); if (banners.getStatus() == MsgStatus.NORMAL) { List<PageIndexImg> bannerList = banners.getResult(); if(bannerList.size()>0){ String url = bannerList.get(0).getUrl(); bottomStroll.put("targeUrl", url); } } bottomList.add(bottomStroll); } catch (Exception e) { LOG.error(e.getMessage(), e); } _result.put("bottomStrollList", bottomList); _result.put("paymentMode", paymentMode); _result.put("ticketTitle", ticketTitle); _result.put("orderId", orderInfo.getOrderId()); _result.put("orderPayFee", orderInfo.getOrderFee()); _result.put("goodsSeller", orderInfo.getGoodsSeller()); _result.put("returnPoints", returnPoints); _result.put("parcelCount", parcelCount); _result.put("goodsCount", goodsCount); setResultInfo(orderResult.getStatus().getCode(), orderResult.getMessage()); } setResultInfo(orderResult, ResultMsg.OrderActionMsg.LIST_FAILRE); } catch (Exception e) { LOG.error(e.getMessage(), e); } finally { write(request, response); } } @RequestMapping("/payInfoCheck") public void PayInfocheck( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "mul", required = false) String mul, @RequestParam(value = "orderId",required = false)String orderId ){ if (StringUtil.isEmpty(memberKey)) { this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), ResultMsg.Common.MEMBER_KEY_EMPTY).write(request, response); return; } if (StringUtil.isEmpty(orderId)) { this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), ResultMsg.OrderActionMsg.ORDER_ID_EMPTY).write(request, response); return; } try { Long memberId = MemberKeyUtils.getMemberKey(memberKey); OrderInfo orderInfoparam = new OrderInfo(); orderInfoparam.setOrderId(NumericUtil.parseLong(orderId)); orderInfoparam.setMemberKey(memberKey); orderInfoparam.setMemberId(memberId); orderInfoparam.setMul(mul); //查询订单信息 ServiceMessage<OrderInfo> orderInfoById = orderInfoService.getOrderInfoById(orderInfoparam); if (orderInfoById.getStatus() != MsgStatus.NORMAL || orderInfoById.getResult() == null) { this.setResultInfo("0", "查询订单信息失败"); } OrderInfo orderInfo = orderInfoById.getResult(); //支付状态,N:未支付,Y:已全额支付,P:部分支付' String paidState=orderInfo.getIsPaid(); String padiMsg=null; ArrayList<Map<String, String>> bottomList = new ArrayList<Map<String,String>>(); if (paidState.equals("Y")||orderInfo.getPaymentMode().equals("HDFK")){ padiMsg="支付成功!"; //更多优惠 Map<String, String> bottomStroll = new HashMap<String, String>(); bottomStroll.put("title", "查看订单"); bottomStroll.put("imageUrl", "http://soa.app.j1.com/upload/read/2015/8/27111235738351.png"); bottomStroll.put("targeUrl", "/mall/orderdetail.html?orderId="+orderId); bottomList.add(bottomStroll); bottomStroll = new HashMap<String, String>(); bottomStroll.put("title", "账号充值"); bottomStroll.put("imageUrl", "http://soa.app.j1.com/upload/read/2015/8/27111301537528.png"); bottomStroll.put("targeUrl", "/mall/myAccount.html"); bottomList.add(bottomStroll); bottomStroll = new HashMap<String, String>(); bottomStroll.put("title", "更多优惠"); bottomStroll.put("imageUrl", "http://soa.app.j1.com/upload/read/2015/8/27111329080669.png"); bottomStroll.put("targeUrl", ""); PageIndexImg pageIndexImg = new PageIndexImg(); pageIndexImg.setSiteType(SiteType.MOBILE); pageIndexImg.setImageType(Integer.valueOf(PageIndexType.IMAGE_CAROUSEL_APP.getCode())); ServiceMessage<List<PageIndexImg>> banners = pageIndexImgService.getPageIndexImgList(pageIndexImg); if (banners.getStatus() == MsgStatus.NORMAL) { List<PageIndexImg> bannerList = banners.getResult(); if(bannerList.size()>0){ String url = bannerList.get(0).getUrl(); bottomStroll.put("targeUrl", url); } } bottomList.add(bottomStroll); }else if (paidState.equals("P")){ padiMsg="卡内余额不足,支付未完成,您还需要支付余款,请重新选择其他支付方式!"; }else { padiMsg="支付未完成,请重新支付!"; } _result.put("paidState",paidState); _result.put("paidMsg",padiMsg); float orderFee = orderInfo.getOrderFee().floatValue(); _result.put("orderFee",orderFee); float needPaiFee = orderFee-orderInfo.getPaidFee().floatValue(); //格式化价格,显示小数点后两位 DecimalFormat fnum=new DecimalFormat("##0.00"); String needPayfee = fnum.format(needPaiFee); //待支付余额 _result.put("needPaiFee",needPayfee); // _result.put("payTime",orderInfo.getPaidTime()); _result.put("payModel",orderInfo.getPaymentMode()); _result.put("goodsSeller",orderInfo.getGoodsSeller()); if (bottomList.size()>0){ _result.put("bottomList",bottomList); } this.setResultInfo("0","查询成功").write(request,response); }catch (Exception e){ LOG.error(e.getMessage()); this.setResultInfo("1","网路异常,请稍后重试").write(request,response); } } private static List<String> getOrderStatusList(Integer orderState){ List<String> orderStatusMs=new ArrayList<String>(); if (orderState==29 ||orderState==28 ||orderState==27|| orderState==26||orderState==23|| orderState==22 || orderState==21||orderState==431 ){ orderStatusMs.add("已提交"); orderStatusMs.add("已支付"); orderStatusMs.add("已审核"); orderStatusMs.add("配货中"); orderStatusMs.add("已出库"); orderStatusMs.add("已发货"); orderStatusMs.add("已收货"); orderStatusMs.add("已完成"); } if (orderState==18 || orderState==19||orderState==20){ orderStatusMs.add("退货中"); orderStatusMs.add("已退款"); orderStatusMs.add("退货完成"); } if(orderState==25){ orderStatusMs.add("已取消"); } if(orderState==24){ orderStatusMs.add("缺货中"); } return orderStatusMs; } /** * 18已退款;19退货完成;20退货中;21已出库;22配货中;(23已收货;23该状态现在没有用到) * 24缺货中;25已取消;26已完成;27已发货;28已审核;29已提交 * 根据isPaid 拆分29已提交,29已支付。 * 根据orderButs存在canEval 拆分26已完成,26已收货 */ private static String getOrderStatus(Integer orderInt,String isPay,List<String> orderButs){ String orderStatus="已提交"; switch (orderInt) { case 29: if ("Y" .equals(isPay)) { orderStatus="已支付"; }else { orderStatus="已提交"; } break; case 28: orderStatus="已审核"; break; case 27: orderStatus="已发货"; break; case 26: if (orderButs.contains("canEval")) { orderStatus="已收货"; }else { orderStatus="已完成"; } break; case 25: orderStatus="已取消"; break; case 24: orderStatus="缺货中"; break; case 23: orderStatus="已收货"; break; case 22: orderStatus="配货中"; break; case 21: orderStatus="已出库"; break; case 20: orderStatus="退货中"; break; case 19: orderStatus="退货完成"; break; case 18: orderStatus="已退款"; break; case 431: orderStatus="部分发货"; break; } return orderStatus; } private List<LogisticsInfo> sortLogisticInfo(ServiceMessage<List<Logistics>> serviceMessage) throws ParseException { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<Logistics> result = serviceMessage.getResult(); ArrayList<LogisticsInfo> list = new ArrayList<LogisticsInfo>(); for(Logistics logistics: result){ LogisticsInfo logisticsInfo = logistics.getLogisticsInfos().get(0); list.add(logisticsInfo); } // System.out.println("最新++++++++++"+list.toString()); //排序 for (int i = 0; i <list.size() ; i++) { for (int j = i+1; j <list.size() ; j++) { boolean flag = df.parse(list.get(i).getLogisticsTime()).before(df.parse(list.get(j).getLogisticsTime())); if (flag){ LogisticsInfo temp=list.get(i); list.set((i), list.get(j)); list.set(j, temp); } } } // for (LogisticsInfo s : list) { // System.out.println("11111111111111111"+s.toString()); // } // System.out.println("11111111111111"+list.toString()); return list; } @RequestMapping("/insertFromStore") public void insertFromStore( HttpServletRequest request, HttpServletResponse response){ StringBuffer json = new StringBuffer(); String line = null; String orderMsg = ""; try { BufferedReader reader = request.getReader(); while((line = reader.readLine()) != null) { json.append(line); } orderMsg = json.toString(); } catch(Exception e) { logger.error(e); } if (StringUtil.isEmpty(orderMsg)){ this.setResultInfo("-1", "params error!").write(request, response); return; } com.alibaba.fastjson.JSONObject jsonObject = null; try { jsonObject = com.alibaba.fastjson.JSONObject.parseObject(orderMsg); } catch (Exception e) { this.setResultInfo("-1", "params error!").write(request, response); return; } //门店渠道id int storeMutilId = 46; String mTel = jsonObject.getString("mTel"); String tranid = jsonObject.getString("tranid"); com.alibaba.fastjson.JSONArray artiitem = jsonObject.getJSONArray("artiitem"); String tranDate = jsonObject.getString("tranDate"); String discount = jsonObject.getString("discount"); String deptName = jsonObject.getString("deptName"); String sumSaleAmt = jsonObject.getString("sumSaleAmt"); String memberId = jsonObject.getString("memberId"); if(StringUtil.isEmpty(mTel)||StringUtil.isEmpty(tranid)||StringUtil.isEmpty(tranDate)||StringUtil.isEmpty (discount)||StringUtil.isEmpty(deptName)||StringUtil.isEmpty(sumSaleAmt)||StringUtil.isEmpty(memberId)){ this.setResultInfo("-1", "params error!").write(request, response); return; } List<OrderItem> itemList = new ArrayList<OrderItem>(); String orderIsTC ="N"; //订单详情信息 for (Object o : artiitem) { OrderItem item = new OrderItem(); String jsonStr = com.alibaba.fastjson.JSONObject.toJSONString(o); com.alibaba.fastjson.JSONObject itemJson = com.alibaba.fastjson.JSONObject.parseObject(jsonStr); String artiCode = itemJson.getString("artiCode"); String artiName = itemJson.getString("artiName"); String isCFY = itemJson.getString("isCFY"); String artiQty = itemJson.getString("artiQty"); String saleAmt = itemJson.getString("saleAmt"); String salePrice = itemJson.getString("salePrice"); if(StringUtil.isEmpty(artiCode)||StringUtil.isEmpty(artiQty)||StringUtil.isEmpty(saleAmt)||StringUtil .isEmpty(salePrice)||StringUtil.isEmpty(artiName)||StringUtil.isEmpty(isCFY)){ this.setResultInfo("-1", "params error!").write(request, response); return; } if(new BigDecimal(saleAmt).compareTo(new BigDecimal(salePrice).multiply(new BigDecimal(artiQty))) != 0){ this.setResultInfo("3", "单品金额校验失败").write(request, response); return; } if(!isCFY.equals("0")){ orderIsTC = "Y"; } item.setGoodsName(artiName); item.setGoodsNo(artiCode); item.setGoodsPrice(new BigDecimal(salePrice)); item.setGoodsAmount(new BigDecimal(artiQty)); item.setGoodsSumFee(new BigDecimal(saleAmt)); item.setGoodsType("general"); itemList.add(item); } //订单信息 OrderInfo orderInfo = new OrderInfo(); orderInfo.setMemberId(Long.valueOf(memberId)); orderInfo.setMemberMobile(mTel); orderInfo.setReceiveMobile(mTel); orderInfo.setMultiChannelId(storeMutilId); orderInfo.setMultiChannelOrderId(Long.valueOf(tranid)); orderInfo.setOtherDiscounts(new BigDecimal(discount)); orderInfo.setFinishTime(tranDate); orderInfo.setOrderFee(new BigDecimal(sumSaleAmt)); orderInfo.setIsTc(orderIsTC); ServiceMessage<String> insertResult= null; String resultMsg = ResultMsg.Common.OK; try { insertResult= orderInfoService.insertOrderInfoFromStore(orderInfo,itemList,deptName); resultMsg = insertResult.getMessage(); } catch (Exception e) { LOG.error(e.getMessage(), e); resultMsg = ResultMsg.OrderActionMsg.INSERT_STORE_FAILURE; } finally { this.setResult(insertResult, resultMsg).write(request, response); } } }
JSON 解析(门店)的更多相关文章
- Android okHttp网络请求之Json解析
前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...
- Json解析工具的选择
前言 前段时间@寒江不钓同学针对国内Top500和Google Play Top200 Android应用做了全面的分析(具体分析报告见文末的参考资料),其中有涉及到对主流应用使用json框架Gson ...
- iOS json 解析遇到error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed.
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 38 ...
- Android之JSON解析
做个Android网络编程的同学一定对于JSON解析一点都不陌生,因为现在我们通过手机向服务器请求资源,服务器给我们返回的数据资源一般都是以JSON格式返回,当然还有一些通过XML格式返回,相对JSO ...
- Android总结之json解析(FastJson Gson 对比)
前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ...
- JSON解析和XML解析对比
JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...
- iOS json解析的几种方法 NSJSONSerialization,JSONKit,SBJson ,TouchJson
相关的第三方类库大家可以去github上下载 1.NSJSONSerialization 具体代码如下 : - (void)viewDidLoad { [super viewDidLoad]; NSD ...
- Json解析工具Jackson(使用注解)
原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...
- Json解析工具Jackson(简单应用)
原文http://blog.csdn.net/nomousewch/article/details/8955796 概述 Jackson库(http://jackson.codehaus.org),是 ...
随机推荐
- OBJC运行时方法替换(Method swizzling)
在上周associated objects一文中,我们开始探索Objective-C运行时的一些黑魔法.本周我们继续前行,来讨论可能是最受争议的运行时技术:method swizzling. Me ...
- iOS9 未受信任的企业级开发者
升级iOS9,app打不开怎么办?6个步骤让你应对“未受信任的企业及开发者账号” 点开App,弹出未受信任的开发者,记住弹框中冒号后面的大写字母.关闭,进入设置. 进入通用 进入描述文件 找到所对应的 ...
- BZOJ 1823 满汉全席
Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而 ...
- Oracle三组难缠的hint no_unnest/unnest,push_subq,push_pred--平展化(转)
经常有人把这三个hint搞混,主如果因为对三种重写道理不清楚.特总结如下.(实验景象为10204)1. no_unnest, unnestunnest我们称为对子查询展开,顾名思义,就是别让子查询孤单 ...
- Unity NGUI实现技能CD效果
unity版本:4.5.1 NGUI版本:3.6.5 脚本代码:C# 在游戏中经常要实现技能的CD效果,NGUI中已经实现了这个功能,即在button上创建一个半透明的Sprite实现这个功能. 首先 ...
- 【动态规划】Vijos P1104 采药(NOIP2005普及组第三题)
题目链接: https://vijos.org/p/1104 题目大意: T时间,n个物品,每个耗时ti,可获得收益ci,求最大收益. 题目思路: [动态规划] 01背包裸题.一维二维都过了,放个一维 ...
- call, apply && bind, currying
简要概括: apply(): 将函数作为指定对象的方法来调用,传递给它的是指定的参数数组 ——function.apply(thisobj, args) 或者 function.apply(thiso ...
- DFS 10.1.5.253 1501
#include <iostream> using namespace std; #define N 20 int a[N][N],m[N],bz[N],n,s; void dfs(int ...
- SRM 403(1-250pt, 1-500pt)
DIV1 250pt 题意:称各个数位只含有4和7的数为lucky number,给定a,b,求[a, b]中的lucky number有多少个.a, b <= 10^9 解法:很明显的数位dp ...
- E - 食物链 poj1182
题目告诉有 3 种动物,互相吃与被吃,现在告诉你 m 句话,其中有真有假,叫你判断假的个数 ( 如果前面没有与当前话冲突的,即认为其为真话 ).每句话开始都有三个数 D A B,当D = ...