@Transactional public ResultInfo manageAddOrder( String guid, String beginDate, String endDate, String price, String address, String employerName, String telephone, String rate, String countyGuid) { try { String hql = "from Employer e where e.ovld = true and e.guid = ?"; Employer employer = dao.getSingleResultByHQL(Employer.class, hql, guid); County county = dao.getResultByGUID(County.class, countyGuid); ServiceOrder order = ServiceOrder.getInstance(); order.setAddress(address); order.setEmployer(employer); order.setMobilePhone(telephone); order.setOrderPrice(Long.valueOf(price)); order.setRate(Double.valueOf(rate)); order.setCounty(county); order.setServiceBeginDate(ExpectedDateCreate.parseDate(beginDate)); order.setServiceEndDate( ExpectedDateCreate.addDays( ExpectedDateCreate.parseDate(beginDate), Integer.valueOf(endDate))); dao.add(order); return ResultInfo.SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultInfo.BAD_REQUEST; } }
private BabysitterOrder updateBabysitterOrder( String orderGuid, Babysitter babysitter, ServiceOrder serviceOrder) { // 添加月嫂订单 BabysitterOrder babysitterOrder = BabysitterOrder.getInstance(); babysitterOrder.setBabysitter(babysitter); babysitterOrder.setEmployer(serviceOrder.getEmployer()); babysitterOrder.setEmployerAddress(serviceOrder.getAddress()); babysitterOrder.setEmployerName(serviceOrder.getEmployerName()); babysitterOrder.setEmployerTelephone(serviceOrder.getMobilePhone()); babysitterOrder.setOrderId(recordService.createOrderId()); babysitterOrder.setOrderPrice(serviceOrder.getOrderPrice()); long frontPrice = getFrontPrice(serviceOrder.getOrderPrice()); babysitterOrder.setOrderFrontPrice(frontPrice); babysitterOrder.setServiceBeginDate(serviceOrder.getServiceBeginDate()); babysitterOrder.setServiceEndDate(serviceOrder.getServiceEndDate()); babysitterOrder.setState(Constants.NEW_ORDER); dao.add(babysitterOrder); // 添加月嫂订单变更信息 BabysitterOrderRecordInfo recordInfo = BabysitterOrderRecordInfo.getInstance(); recordInfo.setBabysitterOrder(babysitterOrder); recordInfo.setState(babysitterOrder.getState()); dao.add(recordInfo); // 更新雇主订单 serviceOrder.setOrderGuid(babysitterOrder.getGuid()); dao.update(serviceOrder); // 更新月嫂抢单通知表中该订单的所有记录为不可用即订单已经被抢 String hql = "from PanicBuyingBabysitterAdvice t where t.ovld = true and t.serviceOrder.guid = ?"; List<PanicBuyingBabysitterAdvice> list = dao.getListResultByHQL(PanicBuyingBabysitterAdvice.class, hql, orderGuid); for (PanicBuyingBabysitterAdvice advice : list) { advice.setIsOver(true); dao.update(advice); } return babysitterOrder; }
@Transactional public void addServiceOrderPanic(String babysitterId, String serviceOrderId) { long babysitterIdl = Long.valueOf(babysitterId); long serviceOrderIdl = Long.valueOf(serviceOrderId); Babysitter babysitter = dao.getResultById(Babysitter.class, babysitterIdl); ServiceOrder order = dao.getResultById(ServiceOrder.class, serviceOrderIdl); if (order != null) { PanicBuyingOrder buyingOrder = PanicBuyingOrder.getInstance(); buyingOrder.setBabysitter(babysitter); buyingOrder.setServiceOrder(order); dao.add(buyingOrder); } }
@Transactional public PageResult serviceEnd(String orderGuid, PageResult result) { BabysitterOrder order = dao.getResultByGUID(BabysitterOrder.class, orderGuid); if (order == null) { result.setResult(ResultInfo.BABYSITTER_ORDER_NULL); return result; } order.setState(Constants.OUT_ORDER); // 设置订单日志 BabysitterOrderRecordInfo info = BabysitterOrderRecordInfo.getInstance(); info.setBabysitterOrder(order); info.setState(order.getState()); dao.add(info); result.setResult(ResultInfo.SUCCESS); 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 addServiceOrder( String date, String price, String countyGuid, String address, String name, String mobile, String checkCode) { try { // boolean flag = codeService.updateCheckCode(mobile, checkCode, // CheckCodeService.PUBLISH_ORDER); // if (!flag) { // throw new CheckErrorException(); // } Employer employer = employerService.getEmployerByMobile(mobile); // County county = dao.getResultByGUID(County.class, countyGuid); if (employer == null) { employer = Employer.getInstance(); employer.setMobilePhone(mobile.replace(" ", "")); // employer.setCounty(county); employer.setAddress(address); employer.setUsername(name); employerService.addEmployer(employer); } // 月嫂提交私单不需要向月嫂抢单表中添加数据正常添加私单。 ServiceOrder order = ServiceOrder.getInstance(); order.setEmployer(employer); order.setOrderPrice(Long.valueOf(price)); order.setAddress(address); // order.setCounty(county); order.setMobilePhone(mobile.replace(" ", "")); Map<String, Date> expectedDate = ExpectedDateCreate.getExpectedDate(date); order.setServiceBeginDate(expectedDate.get(ExpectedDateCreate.BEGIN_DATE)); order.setServiceEndDate(expectedDate.get(ExpectedDateCreate.END_DATE)); dao.add(order); } catch (CheckErrorException e) { return ResultInfo.CHECK_CODE_ERROR; } catch (Exception e) { e.printStackTrace(); } return ResultInfo.SUCCESS; }
@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; }
@Transactional public ServiceOrder addEmployerServiceOrder( String date, String countyLevelGuid, String countyGuid, String address, String name, String mobile, String checkCode, String openid) { Employer employer = employerService.getEmployerByMobile(mobile); County county = dao.getResultByGUID(County.class, countyGuid); CountyLevel countyLevel = dao.getResultByGUID(CountyLevel.class, countyLevelGuid); if (countyLevel == null) return null; if (employer == null) { employer = Employer.getInstance(); employer.setMobilePhone(mobile.replace(" ", "")); // employer.setCounty(county); employer.setAddress(address); employer.setUsername(name); employer.setOpenid(openid); employerService.addEmployer(employer); } // 添加雇主订单 ServiceOrder order = ServiceOrder.getInstance(); order.setEmployer(employer); order.setCounty(county); order.setOrderPrice(Long.valueOf(countyLevel.getMoney())); order.setRate(countyLevel.getRate()); order.setAddress(address); order.setMobilePhone(mobile); order.setEmployerName(name); order.setMobilePhone(mobile); Map<String, Date> expectedDate = ExpectedDateCreate.getExpectedDate(date); order.setServiceBeginDate(expectedDate.get(ExpectedDateCreate.BEGIN_DATE)); order.setServiceEndDate(expectedDate.get(ExpectedDateCreate.END_DATE)); dao.add(order); return order; }
@Transactional public void addRole(Role role) { dao.add(role); }