package com.rnt.service;
/**
* 订单service.
*
* Copyright: Copyright (c) 2017 zteits
*
* @ClassName: ParkOrderService.java
* @Description:
* @version: v1.0.0
* @author: wangfs
* @date: 2017年6月8日 下午7:26:31
* Modification History:
* Date Author Version Description
*---------------------------------------------------------*
* 2017年6月8日 wangfs v1.0.0 创建
*/
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.rnt.model.park.ParkingLot;
import org.beetl.sql.core.kit.StringKit;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.aop.Duang;
import com.jfinal.log.Log;
import com.rnt.commo.enums.DataStatusEnum;
import com.rnt.commo.enums.OrderTypeEnum;
import com.rnt.commo.enums.SequenceTypeEnum;
import com.rnt.model.zf.Order;
import com.rnt.model.zf.OrderDetailCard;
import com.rnt.model.zf.ParkCardCoupons;
import com.rnt.utils.SequenceUtil;
import com.rnt.vo.BizResult;
import com.rnt.vo.CardBuyVO;
import com.rnt.vo.CardOrderVO;
import com.rnt.vo.ParkLotCardVO;
public class CardOrderService {
private static final Log logger = Log.getLog(CardOrderService.class);
/**
* 插入订单数据
* @param cardBuyVO
* @return OrderId
*/
public String saveOrder(CardBuyVO cardBuyVO,ParkCardCoupons parkCardCoupons){
logger.info("[开始保存月卡/年卡信息],入参="+JSONObject.toJSONString(cardBuyVO));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
boolean insertFlg = false;
boolean insertDetailFlg = false;
Order order = new Order();
try{
String parkId = parkCardCoupons.getParkId();
ParkingLot parkingLot = ParkingLot.dao.findFirst("select * from parking_lot t where t.pl_no = ?",parkId );
order.setParkName(parkingLot.getPlName());
order.setOrderId(SequenceUtil.getNextOrderId(SequenceTypeEnum.ORDER_CARD_BUY.value()));
//** 订单类型: 1:停车订单,2:年卡订单, 3:月卡订单 wangfs Add . */
order.setOrderType(Integer.valueOf(cardBuyVO.getOrderType()));
order.setOrderState(OrderTypeEnum.ORDER_TYPE_2.value());
order.setParkId(parkId);
order.setCarNumber(cardBuyVO.getCarNum());
order.setCustPersonId(cardBuyVO.getPersonCustId());
order.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
order.setOrderPayedFee(BigDecimal.valueOf(Long.valueOf("0")));//已付费用
order.setOrderNotPayFee(StringKit.isNotBlank(cardBuyVO.getTotleMoney()) ? new BigDecimal(cardBuyVO.getTotleMoney()) : BigDecimal.ZERO); //未支付费用(本次应付金额)
order.setOrderTotalFee(StringKit.isNotBlank(cardBuyVO.getTotleMoney()) ? new BigDecimal(cardBuyVO.getTotleMoney()) : BigDecimal.ZERO); //总金额
order.setRemark("微信公众号购买卡");
order.setCreateDate(new Date());
order.setOrderResource("微信公众号购买卡");
order.setOrderTitle("购买卡订单");
insertFlg =order.save();
/**插入卡订单明细表.*/
if(insertFlg){
OrderDetailCard orderDetailCard = new OrderDetailCard();
orderDetailCard.setPersonCardId(Long.valueOf(cardBuyVO.getPersonCardId()));
orderDetailCard.setOrderId(order.getOrderId());
orderDetailCard.setParkCardId(Long.valueOf(cardBuyVO.getParkLotCardId()));
orderDetailCard.setCardType(parkCardCoupons.getGoodsType());
orderDetailCard.setCardTypeRemark(parkCardCoupons.getGoodsTypeRemark());
orderDetailCard.setBuyNum(Integer.valueOf(cardBuyVO.getBuyNum()));
orderDetailCard.setCardAmount(parkCardCoupons.getGoodsAmount());
orderDetailCard.setEffDate(format.parse(cardBuyVO.getStartDate())); //卡的开始日期
orderDetailCard.setExpDate(format.parse(cardBuyVO.getEndDate())); //卡的结束日期
orderDetailCard.setOrderDetailType(cardBuyVO.getOrderDetailType());
orderDetailCard.setRemark("微信公众号购买卡");
orderDetailCard.setCreateDate(new Date());
insertDetailFlg = orderDetailCard.save();
}
}catch (Exception e) {
e.printStackTrace();
}
return (insertFlg == insertDetailFlg == true) ? order.getOrderId() : "";
}
/**
* 查询待支付的订单信息.
* @param orderId
* @return
*/
public CardOrderVO queryNotPayCardOrder(String orderId){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
CardOrderVO cardOrderVO = new CardOrderVO();
StringBuffer sql = new StringBuffer("select a.order_id,a.park_id,a.car_number,a.order_not_pay_fee,a.order_title");
sql.append(" from td_b_order a ");
sql.append(" where 1=1 and a.order_state=2");
sql.append(" and a.order_id=?");
//1.查询订单
Order order = new Order().findFirst(sql.toString(), orderId);
//2.查询订单明细
StringBuffer sqlStr = new StringBuffer("select a.order_id,a.card_type,a.card_type_remark,a.buy_num,a.eff_date,a.exp_date");
sqlStr.append(" from td_b_order_detail_card a ");
sqlStr.append(" where 1=1 ");
sqlStr.append(" and a.order_id=?");
OrderDetailCard orderDetailCard = new OrderDetailCard().findFirst(sqlStr.toString(), orderId);
BizResult result=null;
if(StringKit.isNotBlank(order.getParkId())){
//查询停车场id
ParkLotService parkLotService = Duang.duang(ParkLotService.class);
result = parkLotService.queryParkLotForpklNo(order.getParkId());
}
if(order != null && orderDetailCard != null ){
cardOrderVO.setOrderId(orderId);
cardOrderVO.setOrderType(orderDetailCard.getCardType());
cardOrderVO.setOrderTypeRemark(orderDetailCard.getCardTypeRemark());
cardOrderVO.setBuyNum(orderDetailCard.getBuyNum());
cardOrderVO.setStartDate(format.format(orderDetailCard.getEffDate()));
cardOrderVO.setEndDate(format.format(orderDetailCard.getExpDate()));
cardOrderVO.setCarNum(order.getCarNumber());
cardOrderVO.setTotleMoney(order.getOrderNotPayFee().toString());
if(result.getData() != null){
cardOrderVO.setParkName(result.getData().getParkName());
cardOrderVO.setParkaddress(result.getData().getAddress());
}
}
return cardOrderVO;
}
}