package com.izouma.awesomeadmin.service.impl; import java.util.*; import com.izouma.awesomeadmin.dao.PayCodeStockMapper; import com.izouma.awesomeadmin.dto.Result; import com.izouma.awesomeadmin.model.MemberTicket; import com.izouma.awesomeadmin.model.PayCodeStock; import com.izouma.awesomeadmin.service.MemberTicketService; import com.izouma.awesomeadmin.util.MbappUtil; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.izouma.awesomeadmin.constant.AppConstant; import com.izouma.awesomeadmin.dto.Page; import com.izouma.awesomeadmin.model.PayCodeOrder; import com.izouma.awesomeadmin.service.PayCodeOrderService; import com.izouma.awesomeadmin.dao.PayCodeOrderMapper; /** * service接口实现类 */ @Service public class PayCodeOrderServiceImpl implements PayCodeOrderService { /*generatedStart*/ private static Logger logger = Logger.getLogger(PayCodeOrderServiceImpl.class); @Autowired private PayCodeOrderMapper payCodeOrderMapper; /*generatedEnd*/ @Autowired private PayCodeStockMapper payCodeStockMapper; @Autowired private MemberTicketService memberTicketService; /*generatedStart*/ @Override public List getPayCodeOrderList(PayCodeOrder record) { logger.info("getPayCodeOrderList"); try { return payCodeOrderMapper.queryAllPayCodeOrder(record); } catch (Exception e) { logger.error("getPayCodeOrderList", e); } return null; } @Override public List getPayCodeOrderByPage(Page page, PayCodeOrder record) { logger.info("getPayCodeOrderByPage"); try { Map parameter = new HashMap(); parameter.put("record", record); parameter.put(AppConstant.PAGE, page); return payCodeOrderMapper.queryPayCodeOrderByPage(parameter); } catch (Exception e) { logger.error("getPayCodeOrderByPage", e); } return null; } @Override public PayCodeOrder getPayCodeOrderById(String id) { logger.info("getPayCodeOrderyId"); try { return payCodeOrderMapper.selectByPrimaryKey(Integer.valueOf(id)); } catch (Exception e) { logger.error("getPayCodeOrderById", e); } return null; } @Override public PayCodeOrder getPayCodeOrder(PayCodeOrder record) { logger.info("getPayCodeOrder"); try { return payCodeOrderMapper.queryPayCodeOrder(record); } catch (Exception e) { logger.error("getPayCodeOrder", e); } return null; } @Override public boolean createPayCodeOrder(PayCodeOrder record) { logger.info("createPayCodeOrder"); try { int updates = payCodeOrderMapper.insertSelective(record); if (updates > 0) { return true; } } catch (Exception e) { logger.error("createPayCodeOrder", e); } return false; } @Override public boolean deletePayCodeOrder(PayCodeOrder record) { logger.info("deletePayCodeOrder"); try { int updates = payCodeOrderMapper.delete(record); if (updates > 0) { return true; } } catch (Exception e) { logger.error("deletePayCodeOrder", e); } return false; } @Override public boolean updatePayCodeOrder(PayCodeOrder record) { logger.info("updatePayCodeOrder"); try { int updates = payCodeOrderMapper.updateByPrimaryKeySelective(record); if (updates > 0) { return true; } } catch (Exception e) { logger.error("updatePayCodeOrder", e); } return false; } /*generatedEnd*/ @Override public Result submit(PayCodeOrder record) { logger.info("submit"); try { record.setOrderCode(MbappUtil.getOrderIdByUUId()); if (record.getStockId() == null) { return new Result(false, "付款码库存为空"); } PayCodeStock payCodeStock = new PayCodeStock(); payCodeStock.setId(record.getStockId()); payCodeStock = payCodeStockMapper.queryPayCodeStock(payCodeStock); if (payCodeStock == null) { return new Result(false, "付款码库存不存在"); } if (payCodeStock.getAmount() <= 0) { return new Result(false, "付款码库存不足"); } record.setPayType(payCodeStock.getPayType()); record.setCodeId(payCodeStock.getCodeId()); record.setMoney(payCodeStock.getMoney()); int updates = payCodeOrderMapper.insertSelective(record); if (updates > 0) { payCodeStock.setAmount(payCodeStock.getAmount() - 1); payCodeStockMapper.updateByPrimaryKeySelective(payCodeStock); return new Result(true, record.getId()); } } catch (Exception e) { logger.error("submit", e); } return new Result(false, "下单失败"); } @Override public Result pay(PayCodeOrder record) { logger.info("pay 付款码付款"); try { PayCodeOrder payCodeOrder = payCodeOrderMapper.selectByPrimaryKey(record.getId()); if (payCodeOrder == null) { return new Result(false, "订单不存在"); } if (payCodeOrder.getMoney().compareTo(record.getPayMoney()) > 0) { return new Result(false, "支付金额小于订单金额"); } if (payCodeOrder.getStatusFlag() != AppConstant.PayCodeOrderStatus.wait_pay) { return new Result(false, "订单状态不能付款"); } MemberTicket memberTicket = new MemberTicket(); memberTicket.setMoney(record.getPayMoney()); memberTicket.setUserId(payCodeOrder.getUserId()); memberTicket.setRemark("充值" + record.getPayMoney() + " 门票"); memberTicket.setRechargeType(AppConstant.RechargeType.OTHER); memberTicketService.recharge(memberTicket); record.setStatusFlag(AppConstant.PayCodeOrderStatus.success); payCodeOrderMapper.updateByPrimaryKeySelective(record); return new Result(true, "付款成功"); } catch (Exception e) { logger.error("pay", e); } return new Result(false, "付款失败"); } @Override public Result cancel(PayCodeOrder record) { logger.info("cancel 付款码取消"); try { PayCodeOrder payCodeOrder = payCodeOrderMapper.selectByPrimaryKey(record.getId()); if (payCodeOrder == null) { return new Result(false, "订单不存在"); } if (payCodeOrder.getStatusFlag() != AppConstant.PayCodeOrderStatus.wait_pay) { return new Result(false, "订单状态不能取消"); } record.setStatusFlag(AppConstant.PayCodeOrderStatus.cancel); payCodeOrderMapper.updateByPrimaryKeySelective(record); PayCodeStock payCodeStock = new PayCodeStock(); payCodeStock.setId(record.getStockId()); payCodeStock = payCodeStockMapper.queryPayCodeStock(payCodeStock); if (payCodeStock != null) { payCodeStock.setAmount(payCodeStock.getAmount() + 1); payCodeStockMapper.updateByPrimaryKeySelective(payCodeStock); } return new Result(true, "付款码取消成功"); } catch (Exception e) { logger.error("cancel 付款码取消", e); } return new Result(false, "付款码取消失败"); } }