@Transactional public PageResult addMakeBabysitterOrder( String date, String address, String name, String mobile, String checkCode, String openid, String countyGuid, String babysitterGuid, PageResult result) { Babysitter babysitter = dao.getResultByGUID(Babysitter.class, babysitterGuid); if (babysitter == null) { result.setResult(ResultInfo.BABYSITTER_NULL); return result; } ServiceOrder order = addEmployerServiceOrder( date, babysitter.getLevel().getGuid(), countyGuid, address, name, mobile, checkCode, openid); if (order == null) { result.setResult(ResultInfo.COUNTY_LEVEL_NULL); return result; } result = markBabysitter(babysitterGuid, order.getGuid(), result); return result; }
@Transactional public PageResult markBabysitterId( String babysitterId, String serviceOrderId, PageResult result) { long babysitterIdl = Long.valueOf(babysitterId); long serviceOrderIdl = Long.valueOf(serviceOrderId); Babysitter babysitter = dao.getResultById(Babysitter.class, babysitterIdl); ServiceOrder serviceOrder = dao.getResultById(ServiceOrder.class, serviceOrderIdl); updateBabysitterOrder(serviceOrder.getGuid(), babysitter, serviceOrder); result.setResult(ResultInfo.SUCCESS); result.put("result", babysitter.view()); return result; }
@Transactional public void addBabysitterAdvice( String countyGuid, ServiceOrder order, Map<String, Date> expectedDate) { // 添加需要通知的月嫂 // CountyLevel countyLevel = dao.getResultByGUID(CountyLevel.class, // countyLevelGuid); String hql = "from Babysitter b where b.county.guid=? and b.level.level.money>=? and b.state = 1 "; List<Babysitter> babysitters = dao.getListResultByHQL(Babysitter.class, hql, countyGuid, order.getOrderPrice()); // 添加可以抢单月嫂策略,SQL已经判断了所属城市、级别、审核状态三个条件 // 1.排除最低薪水不符合条件的 List<Babysitter> removeBabysitters = new ArrayList<Babysitter>(); if (babysitters.size() == 0) return; BigDecimal salary = new BigDecimal(order.getOrderPrice()); salary = salary.add(new BigDecimal(-1000)); double rate = 1; if (order.getRate() != 0) rate = order.getRate(); salary = salary.multiply(new BigDecimal(rate)); long salaryLong = salary.longValue(); for (Babysitter babysitter : babysitters) { if (babysitter.getLowerSalary() > salaryLong) removeBabysitters.add(babysitter); } babysitters.removeAll(removeBabysitters); // 2.排除档期不符合条件 if (babysitters.size() == 0) return; if (removeBabysitters.size() != 0) removeBabysitters.clear(); for (Babysitter babysitter : babysitters) { if (!ExpectedDateCreate.checkBabysitterOrder(babysitter, expectedDate)) { removeBabysitters.add(babysitter); } } babysitters.removeAll(removeBabysitters); // 添加月嫂通知 if (babysitters.size() == 0) return; for (Babysitter babysitter : babysitters) { PanicBuyingBabysitterAdvice advice = PanicBuyingBabysitterAdvice.getInstance(); advice.setBabysitter(babysitter); advice.setServiceOrder(order); advice.setIsAdvice(false); advice.setIsOver(false); dao.add(advice); } }
@Transactional public ResultInfo addBabysitterOrderEvaluate(String orderGuid, String msg, String score) { BabysitterOrder order = dao.getResultByGUID(BabysitterOrder.class, orderGuid); if (order == null) return ResultInfo.BABYSITTER_ORDER_NULL; Babysitter babysitter = dao.getResultByGUID(Babysitter.class, order.getBabysitter().getGuid()); if (babysitter == null) return ResultInfo.BABYSITTER_NULL; order.setScore(Integer.valueOf(score)); order.setEvaluation(msg); order.setState(Constants.ORDER_OVER); dao.update(order); BabysitterOrderRecordInfo info = BabysitterOrderRecordInfo.getInstance(); info.setBabysitterOrder(order); info.setState(order.getState()); dao.add(info); // BabysitterEvaluate evaluate = BabysitterEvaluate.getInstance(); // evaluate.setBabysitter(babysitter); // evaluate.setEmployer(employer); // evaluate.setOrder(order); // evaluate.setMsg(msg); // evaluate.setScore(Integer.valueOf(score)); // dao.add(evaluate); int sumSocre = 0; int count = 0; List<BabysitterOrder> orders = babysitter.getOrders(); for (BabysitterOrder o : orders) { if (o.getState() == Constants.ORDER_OVER) { sumSocre += o.getScore(); count += 1; } } int avg = 0; if (count != 0) { avg = sumSocre / count; } babysitter.setScore(avg); dao.update(babysitter); return ResultInfo.SUCCESS; }