Commit 355846c1 by Huang Linyu

Merge branch 'f-6.6.4' of 192.168.10.6:caosy/fun-golf-service into f-6.6.4

parents ee56f8b9 b3037210
......@@ -632,8 +632,8 @@ public class AsmCourseResourceDao extends GenericHibernateDao<AsmCourseresource,
cale2.add(Calendar.MONTH, 2);
cale2.set(Calendar.DAY_OF_MONTH, 1);
sql1.append(" and a.priceDate>:startDate ");
sql2.append(" and a.priceDate>:startDate ");
sql1.append(" and a.priceDate>=:startDate ");
sql2.append(" and a.priceDate>=:startDate ");
parameters.put("startDate", cale1.getTime());
sql1.append(" and a.priceDate<:endDate ");
......
package com.ctrip.fun.golf.dao.product;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -14,12 +16,19 @@ import org.hibernate.transform.Transformers;
import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.core.util.StringUtils;
import com.ctrip.fun.common.vo.SortDirectionEnum;
import com.ctrip.fun.common.vo.order.OrderResourceBean;
import com.ctrip.fun.common.vo.product.CommuneResourceBean;
import com.ctrip.fun.common.vo.product.CommuneResourceQuery;
import com.ctrip.fun.common.vo.product.CourseProductStatusEnum;
import com.ctrip.fun.common.vo.product.CourseResourceStatusEnum;
import com.ctrip.fun.common.vo.product.CourseStatusEnum;
import com.ctrip.fun.common.vo.product.ProductTypeEnum;
import com.ctrip.fun.common.vo.product.ResourcePriceBean;
import com.ctrip.fun.common.vo.product.ResourcePriceQuery;
import com.ctrip.fun.common.vo.product.ResourcePriceStatusEnum;
import com.ctrip.fun.common.vo.product.ResourceRealTimeTeeTimeTypeEnum;
import com.ctrip.fun.golf.dao.GenericHibernateDao;
import com.ctrip.fun.golf.domain.order.Invoiceinfo;
import com.ctrip.fun.golf.domain.product.ResourcePrice;
......@@ -151,4 +160,56 @@ public class ResourcePriceDao extends GenericHibernateDao<ResourcePrice, Integer
return result;
}
public List<CommuneResourceBean> getEventActivityResources(CommuneResourceQuery communeResourceQuery){
String hql1 = "select pcp.`Name` as productName, pr.priceDate, pr.CashRebate as cashRebate, pr.communePrice, pr.communeMinus from prd_resourceprice pr join prd_courseresource pcr on pr.ResourceID=pcr.ID"
+" AND pcr.`Status`=:resourceStatus AND pr.`Status` IN (:priceStatus) AND pcr.realTimeTeeTimeType =:realTimeTeeTimeType1 AND pcr.ResourceType=:resourceType"
+" join prd_courseproduct pcp on pcp.ID = pcr.ProductID AND pcp.OfflineDate >= pr.priceDate AND pcp.PublishDate < pr.priceDate AND pcp.`Status` =:productStatus AND pcp.Type=:productType"
+" join prd_course pc ON pc.ID = pcp.CourseID AND pc.`Status`<> :courseStatus AND (pc.DistrictID=:districtId OR pc.DistrictID2=:districtId)"
+" WHERE pr.priceDate >= :startDate AND pr.priceDate < :endDate AND pr.communePrice IS NOT NULL";
String hql2 = "select pcp.`Name`as productName, pr.priceDate, pr.CashRebate as cashRebate, pr.communePrice, pr.communeMinus from prd_resourceprice pr join prd_courseresource pcr on pr.ResourceID=pcr.ID"
+" AND pcr.`Status`=:resourceStatus AND pr.`Status` IN (:priceStatus) AND pcr.realTimeTeeTimeType =:realTimeTeeTimeType2 AND pcr.ResourceType=:resourceType"
+" join prd_courseproduct pcp on pcp.ID = pcr.ProductID AND pcp.OfflineDate >= pr.priceDate AND pcp.PublishDate < pr.priceDate AND pcp.`Status` =:productStatus AND pcp.Type=:productType"
+" join prd_course pc ON pc.ID = pcp.CourseID AND pc.`Status`<> :courseStatus AND (pc.DistrictID=:districtId OR pc.DistrictID2=:districtId)"
+" WHERE pr.priceDate >= :startDate AND pr.priceDate < :endDate AND pr.communePrice IS NOT NULL"
+" GROUP BY pcp.ID, pr.priceDate";
Query query = getSession().createSQLQuery(hql1 + " union "+"(" +hql2 + ")");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar today = Calendar.getInstance();
Calendar cale1 = Calendar.getInstance();
cale1.add(Calendar.MONTH, 0);
cale1.set(Calendar.DAY_OF_MONTH, 1);
Date endDate = DateUtil.addDays(today.getTime(), -3);
query.setParameter("startDate", format.format(cale1.getTime()));
query.setParameter("endDate", format.format(endDate));
query.setParameter("districtId", communeResourceQuery.getCityId());
query.setParameter("resourceStatus", CourseResourceStatusEnum.VALID.getValue());
query.setParameter("resourceType", StringUtils.collectionToDelimitedString(communeResourceQuery.getResourceTypeList(), ","));
ArrayList<Integer> list = ResourcePriceStatusEnum.getValid(null, "queryCommuneResource");
query.setParameterList("priceStatus", list);
query.setParameter("productStatus", CourseProductStatusEnum.VALID.getValue());
query.setParameter("productType", ProductTypeEnum.EVENT_ACTIVITY.getValue());
query.setParameter("courseStatus", CourseStatusEnum.INVALID.getValue());
query.setParameter("realTimeTeeTimeType1", ResourceRealTimeTeeTimeTypeEnum.NORMAL.getValue());
query.setParameter("realTimeTeeTimeType2", ResourceRealTimeTeeTimeTypeEnum.REALTIME.getValue());
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> result = query.list();
List<CommuneResourceBean> resources = new ArrayList<CommuneResourceBean>();
if(result != null){
for (Map<String, Object> map : result) {
CommuneResourceBean bean = new CommuneResourceBean();
BeanConverter.populate(bean, map);
resources.add(bean);
}
}
return resources;
}
}
......@@ -526,7 +526,7 @@ public class AsmCourseResourceService {
}
/**
* 查詢社员资源V3
*
......@@ -594,6 +594,12 @@ public class AsmCourseResourceService {
}
}
//add by caosy: 增加已经从资源库asmresource表中删除的资源
List<CommuneResourceBean> list2 = this.resourcePriceDao.getEventActivityResources(communeResourceQuery);
list.addAll(list2);
List<CommuneResourceV4> v4list = new ArrayList<CommuneResourceV4>();
if(list.size()>0){
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
......@@ -621,6 +627,7 @@ public class AsmCourseResourceService {
bean.setCashRebate(asm.getCashRebate());
bean.setCommunePrice(asm.getCommunePrice());
bean.setCommuneMinus(asm.getCommuneMinus());
bean.setValidRes(asm.getProductId() != null? true:false);
if(index>=0){
CommuneResourceV4 v4 = v4list.get(index);
List<CommuneResourceV4PriceBean> priceBeanList = v4.getCourses();
......
......@@ -567,6 +567,16 @@ public class CourseOrderService extends AbstractOrderService<CourseOrderBean, Co
* @param courseOrderBean
*/
private void checkPlayDate(CourseOrderBean courseOrderBean) {
Long orderNo = courseOrderBean.getOrderNo();
if(orderNo != null){
//继续预订的单子,并且是后台下单的,不需要检查日期,特别是希望今天下单的
Order order = this.getOrderDao().getOrderByOrderNo(orderNo);
if(order != null && OrderSourceEnum.OFFLINE.getKey() == order.getOrderSource()){
courseOrderBean.setOrderSource(OrderSourceEnum.OFFLINE.getKey());
return;
}
}
Date currentDate = new Date();
long days = DateUtil.getDistinceDay(DateUtil.parseDate(DateUtil.getCurDateStr("yyyy-MM-dd")), courseOrderBean.getResourceList().get(0).getPlayDate());
long baseTime = DateUtil.parseDate(DateUtil.getCurDateStr("yyyy-MM-dd")).getTime();
......
......@@ -388,12 +388,26 @@ public class EventActivityOrderService extends
List<EventCustomerInfo> previousOrdersEventCustomerInfos = eventCustomerInfoDao
.getEventCustomerInfosInPreviousOrders(eventCustomerInfoQuery);
if (previousOrdersEventCustomerInfos != null && eventActivityOrderBean.getRealTimeTeeTimeType() != ResourceRealTimeTeeTimeTypeEnum.REALTIME.getValue()) {
// 将之前订单中的占位信息清除
// 将之前订单中的占位信息清除,目前使用与非实时teetime资源
for (EventCustomerInfo previousOrdersEventCustomerInfo : previousOrdersEventCustomerInfos) {
previousOrdersEventCustomerInfo.setValidFlag(false);
eventCustomerInfoDao.update(previousOrdersEventCustomerInfo);
}
eventCustomerInfoDao.flush();
//调整库存
// 上一个订单占位的数量
int size = previousOrdersEventCustomerInfos.size();
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(priceDate,resourceId, 1);
if (resourceInventory != null && resourceInventory.getUsed() != null) {
int resetInvertorySize = resourceInventory.getUsed() - size;
resourceInventory.setUsed(resetInvertorySize < 0 ? 0
: resetInvertorySize);
resourceInventoryDao.update(resourceInventory);
resourceInventoryDao.flush();
}
}
int validGroupNum = 0;
......
......@@ -1046,41 +1046,73 @@ public class OpEventActivityOrderService
public void setEventActivityOrderItemDao(EventActivityOrderItemDao eventActivityOrderItemDao) {
this.eventActivityOrderItemDao = eventActivityOrderItemDao;
}
private void changeResource(EventActivityOrderProcessBean orderProcessBean) {
List<EventActivityOrderItem> orderItems = this.eventActivityOrderItemDao
.getOrderItemByOrderId(orderProcessBean.getOrderId());
if (orderItems != null && orderItems.size() > 0) {
EventActivityOrderItem orderItem = orderItems.get(0);
String oldTeeTime = orderItem.getTeeTime();
String newTeeTime = orderProcessBean.getTeeTime();
if(oldTeeTime != null && newTeeTime != null){
String[] oldTeetimes = oldTeeTime.split(":");
String[] newTeetimes = newTeeTime.split(":");
int oldGroupNum = 0;
int newGroupNum = 0;
if(oldTeetimes != null && oldTeetimes.length ==2 ){
oldGroupNum = Integer.valueOf(oldTeetimes[0])*60 + Integer.valueOf(oldTeetimes[1]);
}
if(newTeetimes != null && newTeetimes.length ==2 ){
newGroupNum = Integer.valueOf(newTeetimes[0])*60 + Integer.valueOf(newTeetimes[1]);
}
if(oldGroupNum == newGroupNum){
//相同的时间不需要修改了
return;
}
}
StringBuilder desc = new StringBuilder("原TeeTime[").append(orderItem.getTeeTime())
.append("] 改为 [").append(orderProcessBean.getTeeTime()).append("]");
orderItem.setTeeTime(orderProcessBean.getTeeTime());
String newTeeTime = orderProcessBean.getTeeTime();
if(newTeeTime != null){
String[] teetimes = newTeeTime.split(":");
if(teetimes != null && teetimes.length ==2 ){
int groupNum = Integer.valueOf(teetimes[0])*60 + Integer.valueOf(teetimes[1]);
List<Integer> resourceIds = this.courseResourceService.getResourceByTeeTimeAndDate(orderProcessBean.getProductId(), groupNum, orderItem.getPlayDate(), orderItem.getCommunePrice(), orderItem.getCommuneGuestPrice());
if(resourceIds != null && resourceIds.size() > 0){
orderProcessBean.setProcessDesc(desc.toString());
Integer oldResourceId = orderItem.getResourceId();
Integer newResourceId = resourceIds.get(0);
this.changeCustomerInfo(orderProcessBean, newResourceId);
//打球 人数
int size = orderItem.getQuantity();
//先清除老的资源id对应的库存
this.changeResourceInventory(oldResourceId, orderItem.getPlayDate(), size);
//增加新的资源id对应的库存
this.changeResourceInventory(newResourceId, orderItem.getPlayDate(), -size);
//变更后,在orderItem表里面将资源id变更掉
orderItem.setResourceId(newResourceId);
this.eventActivityOrderItemDao.update(orderItem);
}else{
throw new OrderException(ResponseStatusEnum.FAIL.getValue(), "该teetime没有资源或者价格不一样,请更换!");
//非实时teetime资源不支持后台换组
if(orderItem.getRealTimeTeeTimeType() == ResourceRealTimeTeeTimeTypeEnum.NORMAL.getValue()){
orderItem.setTeeTime(orderProcessBean.getTeeTime());
this.eventActivityOrderItemDao.update(orderItem);
orderProcessBean.setProcessDesc(desc.toString());
this.processSuccessedOrderLog(orderProcessBean);
if(orderProcessBean.isSendMsg()){
this.sendMsg(orderProcessBean);
}
}else{
if(newTeeTime != null){
String[] teetimes = newTeeTime.split(":");
if(teetimes != null && teetimes.length ==2 ){
int groupNum = Integer.valueOf(teetimes[0])*60 + Integer.valueOf(teetimes[1]);
List<Integer> resourceIds = this.courseResourceService.getResourceByTeeTimeAndDate(orderProcessBean.getProductId(), groupNum, orderItem.getPlayDate(), orderItem.getCommunePrice(), orderItem.getCommuneGuestPrice());
if(resourceIds != null && resourceIds.size() > 0){
orderProcessBean.setProcessDesc(desc.toString());
Integer oldResourceId = orderItem.getResourceId();
Integer newResourceId = resourceIds.get(0);
this.changeCustomerInfo(orderProcessBean, newResourceId);
//打球 人数
int size = orderItem.getQuantity();
//先清除老的资源id对应的库存
this.changeResourceInventory(oldResourceId, orderItem.getPlayDate(), size);
//增加新的资源id对应的库存
this.changeResourceInventory(newResourceId, orderItem.getPlayDate(), -size);
//变更后,在orderItem表里面将资源id变更掉
orderItem.setResourceId(newResourceId);
orderItem.setTeeTime(orderProcessBean.getTeeTime());
this.eventActivityOrderItemDao.update(orderItem);
this.processSuccessedOrderLog(orderProcessBean);
if(orderProcessBean.isSendMsg()){
this.sendMsg(orderProcessBean);
}
}else{
throw new OrderException(ResponseStatusEnum.FAIL.getValue(), "该teetime没有资源或者价格不一样,请更换!");
}
}
}
}
}
}
......@@ -1122,8 +1154,6 @@ public class OpEventActivityOrderService
public void confirmEventActivityOrderResourceTeeTime(EventActivityOrderProcessBean orderProcessBean) {
this.changeResource(orderProcessBean);
this.processSuccessedOrderLog(orderProcessBean);
this.sendMsg(orderProcessBean);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment