Commit 6ed8e8a4 by caosy

add the inventory code

parent b6a5b51e
......@@ -223,6 +223,42 @@ public class EventCustomerInfoDao extends GenericHibernateDao<EventCustomerInfo,
}
return result;
}
public int queryAllValidCustomerNumInSameResAndDate(Integer resourceId, Date priceDate, String uid) {
StringBuffer sb = new StringBuffer();
sb.append("select count(*) as count from event_customerInfo ec where ec.validFlag=true and resourceId =:resourceId and priceDate = :priceDate ");
if(!StringUtils.isEmpty(uid)){
sb.append("and uid = :uid ");
}
Query query = this.getSession().createSQLQuery(sb.toString());
query.setParameter("resourceId", resourceId);
query.setParameter("priceDate", priceDate);
if(!StringUtils.isEmpty(uid)){
query.setParameter("uid", uid);
}
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> queryResult = query.list();
int result = 0;
if (queryResult != null && queryResult.size() != 0) {
result = ((BigInteger) queryResult.get(0).get("count")).intValue();
}
return result;
}
public int queryValidCustomer(Integer orderId, String uid) {
StringBuffer sb = new StringBuffer();
sb.append("select count(*) as count from event_customerInfo ec where ec.validFlag=true and orderId =:orderId and uid = :uid");
Query query = this.getSession().createSQLQuery(sb.toString());
query.setParameter("orderId", orderId);
query.setParameter("uid", uid);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> queryResult = query.list();
int result = 0;
if (queryResult != null && queryResult.size() != 0) {
result = ((BigInteger) queryResult.get(0).get("count")).intValue();
}
return result;
}
/**
* OP根据赛事资源Id和活动日期获取参赛人员
......
......@@ -714,11 +714,13 @@ public class OrderDao extends GenericHibernateDao<Order, Integer> {
public List<Order> queryEventActivityOrders(Date priceDate, String uid, int resourceId) {
String sql = "select t.orderId from ord_eventactivityorderitem t where t.playDate=:playDate and t.resourceId=:resourceId";
// String sql = "select t.orderId from ord_eventactivityorderitem t where t.playDate=:playDate and t.resourceId=:resourceId";
//直接修改成同一天只能参加一场赛事活动 modify by caosy
String sql = "select t.orderId from ord_eventactivityorderitem t where t.playDate=:playDate";
Session session = this.getSession();
Query query = session.createSQLQuery(sql);
query.setParameter("playDate", priceDate);
query.setParameter("resourceId", resourceId);
// query.setParameter("resourceId", resourceId);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> list = query.list();
if (list == null || list.isEmpty()) {
......
......@@ -287,10 +287,11 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(asmCourseresource.getPriceDate(), asmCourseresource.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
communeResourceBean.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
// int usedNum = resourceInventory.getUsed();
int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(asmCourseresource.getResourceId(), asmCourseresource.getPriceDate());
communeResourceBean.setSize(resourceInventory.getSize() - usedNum);
communeResourceBean.setTotalInventory(resourceInventory.getSize());
communeResourceBean.setUsedInventory(resourceInventory.getUsed());
communeResourceBean.setUsedInventory(usedNum);
}
} else if (asmCourseresource.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == asmCourseresource.getInventoryType()) {
......@@ -373,7 +374,9 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(communeResourceBean.getPriceDate(), communeResourceBean.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
communeResourceBean.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
// int usedNum = resourceInventory.getUsed();
int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(communeResourceBean.getResourceId(), communeResourceBean.getPriceDate());
communeResourceBean.setSize(resourceInventory.getSize() - usedNum);
}
} else if (communeResourceBean.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == communeResourceBean.getInventoryType()) {
......@@ -457,7 +460,9 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(communeResourceBean.getPriceDate(), communeResourceBean.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
communeResourceBean.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
// int usedNum = resourceInventory.getUsed();
int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(communeResourceBean.getResourceId(), communeResourceBean.getPriceDate());
communeResourceBean.setSize(resourceInventory.getSize() - usedNum);
}
} else if (communeResourceBean.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == communeResourceBean.getInventoryType()) {
......@@ -569,7 +574,9 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(communeResourceBean.getPriceDate(), communeResourceBean.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
communeResourceBean.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
// int usedNum = resourceInventory.getUsed();
int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(communeResourceBean.getResourceId(), communeResourceBean.getPriceDate());
communeResourceBean.setSize(resourceInventory.getSize() - usedNum);
}
} else if (communeResourceBean.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == communeResourceBean.getInventoryType()) {
......@@ -710,9 +717,11 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(asmCourseresource.getPriceDate(), asmCourseresource.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
result.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
// int usedNum = resourceInventory.getUsed();
int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(asmCourseresource.getResourceId(), asmCourseresource.getPriceDate());
result.setSize(resourceInventory.getSize() - usedNum);
result.setTotalInventory(resourceInventory.getSize());
result.setUsedInventory(resourceInventory.getUsed());
result.setUsedInventory(usedNum);
}
} else if (asmCourseresource.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == asmCourseresource.getInventoryType()) {
......@@ -821,7 +830,9 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(asmCourseresource2.getPriceDate(), asmCourseresource2.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
aggregationResourceBean.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
int usedNum = resourceInventory.getUsed();
// int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(asmCourseresource.getResourceId(), asmCourseresource.getPriceDate());
aggregationResourceBean.setSize(resourceInventory.getSize() - usedNum);
}
} else if (asmCourseresource2.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == asmCourseresource2.getInventoryType()) {
......@@ -1000,7 +1011,9 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(asmCourseresource2.getPriceDate(), asmCourseresource2.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
aggregationResourceBean.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
// int usedNum = resourceInventory.getUsed();
int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(asmCourseresource2.getResourceId(), asmCourseresource2.getPriceDate());
aggregationResourceBean.setSize(resourceInventory.getSize() - usedNum);
}
} else if (asmCourseresource2.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == asmCourseresource2.getInventoryType()) {
......@@ -1273,6 +1286,8 @@ public class AsmCourseResourceService {
if (communeResourceBean != null) {
totalInventory = totalInventory + (communeResourceBean.getTotalInventory() != null ? communeResourceBean.getTotalInventory() : 0);
usedInventory = usedInventory + (communeResourceBean.getUsedInventory() != null ? communeResourceBean.getUsedInventory() : 0);
// int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(asmCourseresource.getResourceId(), asmCourseresource.getPriceDate());
// usedInventory = usedInventory + usedNum;
size = size + (communeResourceBean.getSize() != null ? communeResourceBean.getSize() : 0);
}
}
......@@ -1367,9 +1382,11 @@ public class AsmCourseResourceService {
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(asmCourseresource.getPriceDate(), asmCourseresource.getResourceId(),
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
result.setSize(resourceInventory.getSize() - resourceInventory.getUsed());
int usedNum = resourceInventory.getUsed();
// int usedNum = eventCustomerInfoService.getAllEventCustomerValidNum(asmCourseresource.getResourceId(), asmCourseresource.getPriceDate());
result.setSize(resourceInventory.getSize() - usedNum);
result.setTotalInventory(resourceInventory.getSize());
result.setUsedInventory(resourceInventory.getUsed());
result.setUsedInventory(usedNum);
}
} else if (asmCourseresource.getInventoryType() != null && ResourceInventoryTypeEnum.TOTAL.getValue() == asmCourseresource.getInventoryType()) {
......
......@@ -255,8 +255,11 @@ public class EventActivityOrderService extends
resourceInventoryQuery.setResourceCategory(1);
resourceInventoryQuery.setResourceId(eventActivityOrderItemList.get(0).getResourceId());
resourceInventoryQuery.setTheDate(eventActivityOrderItemList.get(0).getPlayDate());
//need to modify by caosy
boolean isHasEventCustomerInfo = eventCustomerInfoService.getEventCustomerValidNumByUid(
resourceInventoryQuery.getResourceId(), resourceInventoryQuery.getTheDate(), order.getUid()) > 0;
if (!this.getCourseResourceService().isSuccessMinusInventory(resourceInventoryQuery,
eventActivityOrderItemList.get(0).getQuantity())) {
eventActivityOrderItemList.get(0).getQuantity()) && !isHasEventCustomerInfo) {
throw new OrderException(-3, "提交订单失败,预订的资源库存不足!");
} else {
logger.info("minusInventory orderNo=" + order.getOrderNo() + "ResourceId="
......@@ -624,9 +627,10 @@ public class EventActivityOrderService extends
else {
for (Order order : orderList) {
if (order.isPaied()) {
logger.info("用户已参加赛事,不能重复参加, uid = " + uid + ", resourceId = " + resourceId
logger.info("同一天只能参加一场赛事活动,不能重复参加, uid = " + uid + ", resourceId = " + resourceId
+ ", playDate =" + priceDate + ", orderId = " + order.getOrderId());
throw new OrderException(-25, "您已参加此赛事,请勿重复参加!");
// throw new OrderException(-25, "您已参加此赛事,请勿重复参加!");
throw new OrderException(-25, "同一天只能参加一场赛事活动,可以去订单中心取消更换赛事!");
}
}
return false;
......@@ -690,6 +694,7 @@ public class EventActivityOrderService extends
return totAmount;
}
/**
* @param eventActivityOrderBean
*/
......@@ -711,6 +716,7 @@ public class EventActivityOrderService extends
}else{
logger.error("get commune time fail:"+userExt.getUid());
}
//
if (eventActivityOrderBean.getResourceList() != null) {
for (EventActivityOrderResourceBean resourceInfo : eventActivityOrderBean
.getResourceList()) {
......@@ -747,8 +753,10 @@ public class EventActivityOrderService extends
resourceInventoryQuery.setResourceCategory(1);
resourceInventoryQuery.setResourceId(resourceInfo.getResourceId());
resourceInventoryQuery.setTheDate(resourceInfo.getPlayDate());
Integer intInventory = this.getCourseResourceService().getInventory(
resourceInventoryQuery);
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(resourceInfo.getPlayDate(),resourceInfo.getResourceId(), 1);
Integer intInventory = resourceInventory.getSize() - eventCustomerInfoService.getAllEventCustomerValidNum(
resourceInfo.getResourceId(), resourceInfo.getPlayDate()) + eventCustomerInfoService.getEventCustomerValidNumByUid(
resourceInfo.getResourceId(), resourceInfo.getPlayDate(), eventActivityOrderBean.getUid());
ResourcePrice resourcePrice = resourcePriceDao.getResourcePrice(
resourceInfo.getPlayDate(), resourceInfo.getResourceId());
double amount = (BigDecimal.valueOf(resourceInfo.getCommuneQuantity())
......@@ -1103,7 +1111,11 @@ public class EventActivityOrderService extends
resourceInventoryQuery.setResourceId(eventActivityOrderItem.getResourceId());
resourceInventoryQuery.setTheDate(eventActivityOrderItem.getPlayDate());
resourceInventoryQuery.setResourceCategory(ResourceCategoryEnum.COURSE.getValue());
Integer inventory = this.getCourseResourceService().getInventory(resourceInventoryQuery);
// Integer inventory = this.getCourseResourceService().getInventory(resourceInventoryQuery);
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(eventActivityOrderItem.getPlayDate(),eventActivityOrderItem.getResourceId(), 1);
Integer inventory = resourceInventory.getSize() - eventCustomerInfoService.getAllEventCustomerValidNum(
eventActivityOrderItem.getResourceId(), eventActivityOrderItem.getPlayDate()) + eventCustomerInfoService.getEventCustomerValidNumByUid(
eventActivityOrderItem.getResourceId(), eventActivityOrderItem.getPlayDate(), order.getUid());
if (inventory == null || inventory <= 0) {
throw new OrderException(3, "球场该teetime已没有资源");
}
......@@ -1239,7 +1251,12 @@ public class EventActivityOrderService extends
if (order.isPaied() || orderStatusEnum == OrderStatusEnum.DEAL_FINISHED) {
throw new OrderException(-1, "该订单不能取消");
} else {
this.returnInventory(order, false);
//返还库存
//继续预订的情况下,前台只占了一个库存, 但是job是开了很多, 所以job会返多次库存, 所以继续预订只需要返一次就行
if(eventCustomerInfoService.isValidEventCustomer(orderId, order.getUid())){
//只有在这个单子对应的库存真正被占用了,才返还库存,否则无效的占位是不会多返的
this.returnInventory(order, false);
}
int processStatus = order.getProcessStatus();
processStatus |= OrderStatusBitEnum.CANCELING.getValue();
processStatus |= OrderStatusBitEnum.CANCELED.getValue();
......
......@@ -901,6 +901,21 @@ public class EventCustomerInfoService extends
EventCustomerInfoOfflineLogDao eventCustomerInfoOfflineLogDao) {
this.eventCustomerInfoOfflineLogDao = eventCustomerInfoOfflineLogDao;
}
public Integer getAllEventCustomerValidNum(Integer resourceId, Date playDate){
int allValidCustomer = eventCustomerInfoDao.queryAllValidCustomerNumInSameResAndDate(resourceId, playDate, "");
return allValidCustomer;
}
public Integer getEventCustomerValidNumByUid(Integer resourceId, Date playDate, String uid){
int allValidCustomer = eventCustomerInfoDao.queryAllValidCustomerNumInSameResAndDate(resourceId, playDate, uid);
return allValidCustomer;
}
public boolean isValidEventCustomer(Integer orderId, String uid){
int validCustomer = eventCustomerInfoDao.queryValidCustomer(orderId, uid);
return validCustomer > 0;
}
public GameDao getGameDao() {
return gameDao;
......
......@@ -73,6 +73,7 @@ import com.ctrip.fun.golf.domain.order.OrderPayinfo;
import com.ctrip.fun.golf.domain.order.OrderProcessLog;
import com.ctrip.fun.golf.domain.product.CourseProduct;
import com.ctrip.fun.golf.domain.product.CourseResource;
import com.ctrip.fun.golf.domain.product.ResourceInventory;
import com.ctrip.fun.golf.domain.product.ResourcePrice;
import com.ctrip.fun.golf.domain.user.UserExt;
import com.ctrip.fun.golf.exceptions.OrderException;
......@@ -253,7 +254,11 @@ public class OpEventActivityOrderService
resourceInventoryQuery.setResourceCategory(ResourceCategoryEnum.COURSE.getValue());
resourceInventoryQuery.setResourceId(orderItems.get(0).getResourceId());
resourceInventoryQuery.setTheDate(orderItems.get(0).getPlayDate());
Integer inventory = this.courseResourceService.getInventory(resourceInventoryQuery);
Integer inventorySize = this.courseResourceService.getInventorySize(resourceInventoryQuery);
Integer inventory = inventorySize - eventCustomerInfoService.getAllEventCustomerValidNum(
orderItems.get(0).getResourceId(), orderItems.get(0).getPlayDate()) + eventCustomerInfoService.getEventCustomerValidNumByUid(
orderItems.get(0).getResourceId(), orderItems.get(0).getPlayDate(), order.getUid());
if (inventory == null) {
throw new OrderException(-1, "未找到库存信息");
}
......@@ -982,7 +987,11 @@ public class OpEventActivityOrderService
resourceInventoryQuery.setResourceCategory(ResourceCategoryEnum.COURSE.getValue());
resourceInventoryQuery.setResourceId(orderItems.get(0).getResourceId());
resourceInventoryQuery.setTheDate(orderItems.get(0).getPlayDate());
Integer inventory = this.courseResourceService.getInventory(resourceInventoryQuery);
Integer inventorySize = this.courseResourceService.getInventorySize(resourceInventoryQuery);
Integer inventory = inventorySize - eventCustomerInfoService.getAllEventCustomerValidNum(
orderItems.get(0).getResourceId(), orderItems.get(0).getPlayDate()) + eventCustomerInfoService.getEventCustomerValidNumByUid(
orderItems.get(0).getResourceId(), orderItems.get(0).getPlayDate(), order.getUid());
// Integer inventory = this.courseResourceService.getInventory(resourceInventoryQuery);
if (inventory == null) {
throw new OrderException(-1, "未找到库存信息");
}
......
......@@ -129,8 +129,9 @@ public class EventActivityNotifyService extends AbstractNotifyService {
if (orderList != null && orderList.size() > 0) {
for (Order otherOrder : orderList) {
if (otherOrder.isPaied() && otherOrder.getOrderId() != order.getOrderId()) {
logger.info("用户已参加赛事,不能重复参加, uid = " + uid + ", resourceId = " + resourceId + ", playDate =" + priceDate + ", orderId = " + otherOrder.getOrderId());
throw new OrderException(-25, "您已参加此赛事,请勿重复参加!");
logger.info("同一天只能参加一场赛事活动,不能重复参加, uid = " + uid + ", resourceId = " + resourceId + ", playDate =" + priceDate + ", orderId = " + otherOrder.getOrderId());
// throw new OrderException(-25, "您已参加此赛事,请勿重复参加!");
throw new OrderException(-25, "同一天只能参加一场赛事活动,可以去订单中心取消更换赛事!");
}
}
}
......@@ -159,9 +160,11 @@ public class EventActivityNotifyService extends AbstractNotifyService {
List<Order> orderList = getOrderDao().queryEventActivityOrders(priceDate, uid, resourceId);
if (orderList != null && orderList.size() > 0) {
for (Order otherOrder : orderList) {
//代表该用户有其他成功的单子
if (otherOrder.isPaied() && otherOrder.getOrderId() != order.getOrderId()) {
logger.info("用户已参加赛事,不能重复参加, uid = " + uid + ", resourceId = " + resourceId + ", playDate =" + priceDate + ", orderId = " + otherOrder.getOrderId());
throw new OrderException(-25, "您已参加此赛事,请勿重复参加!");
logger.info("同一天只能参加一场赛事活动,不能重复参加, uid = " + uid + ", resourceId = " + resourceId + ", playDate =" + priceDate + ", orderId = " + otherOrder.getOrderId());
// throw new OrderException(-25, "您已参加此赛事,请勿重复参加!");
throw new OrderException(-25, "同一天只能参加一场赛事活动,可以去订单中心取消更换赛事!");
}
}
}
......
......@@ -173,7 +173,12 @@ public class CourseResourceService extends
}
}
public Integer getInventorySize(ResourceInventoryQuery resourceInventoryQuery){
ResourceInventory resourceInventory = this.resourceInventoryDao.getResourceInventory(
resourceInventoryQuery.getTheDate(),resourceInventoryQuery.getResourceId(), resourceInventoryQuery.getResourceCategory());
return resourceInventory.getSize();
}
/**
*
* @param resourceInventoryQuery
......@@ -357,6 +362,7 @@ public class CourseResourceService extends
ResourceCategoryEnum.COURSE.getValue());
if (resourceInventory != null) {
resourcePriceBean.setInventorySize(resourceInventory.getSize());
//modify by caosy
resourcePriceBean.setUsed(resourceInventory.getUsed());
resourcePriceBean.setInventoryId(resourceInventory.getId());
}
......
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