Commit a6f75336 by unknown

add the pricedate to prd_flashsale

parent b3037210
......@@ -424,7 +424,10 @@ public class AsmCourseResourceDao extends GenericHibernateDao<AsmCourseresource,
criteria.add(Restrictions.eq("productType", ProductTypeEnum.NORMAL.getValue()));
criteria.add(Restrictions.eq("productStatus", CourseProductStatusEnum.VALID.getValue()));
criteria.add(Restrictions.eq("resourceStatus", CourseResourceStatusEnum.VALID.getValue()));
criteria.add(Restrictions.le("flashSaleStartTime", DateUtil.addDays(DateUtil.parseDate(DateUtil.getDateStr(new Date())), 2)));
// criteria.add(Restrictions.le("flashSaleStartTime", DateUtil.addDays(DateUtil.parseDate(DateUtil.getDateStr(new Date())), 2)));
//modify by caosy
criteria.add(Restrictions.sqlRestriction("PriceDate <= date_add(curdate(),interval ReserveDay day)"));
criteria.add(Restrictions.gt("priceDate", DateUtil.parseDate(DateUtil.getDateStr(new Date()))));
ArrayList<Integer> list = ResourcePriceStatusEnum.getValid(null, "queryFlashSaleResource");
criteria.add(Restrictions.in("priceStatus", list));
......@@ -1086,7 +1089,10 @@ public class AsmCourseResourceDao extends GenericHibernateDao<AsmCourseresource,
criteria.add(Restrictions.eq("productType", ProductTypeEnum.NORMAL.getValue()));
criteria.add(Restrictions.eq("productStatus", CourseProductStatusEnum.VALID.getValue()));
criteria.add(Restrictions.eq("resourceStatus", CourseResourceStatusEnum.VALID.getValue()));
criteria.add(Restrictions.le("flashSaleStartTime", DateUtil.addDays(DateUtil.parseDate(DateUtil.getDateStr(new Date())), 2)));
// criteria.add(Restrictions.le("flashSaleStartTime", DateUtil.addDays(DateUtil.parseDate(DateUtil.getDateStr(new Date())), 2)));
//modify by caosy
criteria.add(Restrictions.sqlRestriction("PriceDate <= date_add(curdate(),interval ReserveDay day)"));
criteria.add(Restrictions.gt("priceDate", DateUtil.parseDate(DateUtil.getDateStr(new Date()))));
ArrayList<Integer> list = ResourcePriceStatusEnum.getValid(null, "queryFlashSaleResource");
criteria.add(Restrictions.in("priceStatus", list));
......@@ -1095,7 +1101,7 @@ public class AsmCourseResourceDao extends GenericHibernateDao<AsmCourseresource,
return criteria.list();
}
public List<AsmCourseresource> queryFlashSaleResourceByResourceId(int resourceId) {
public List<AsmCourseresource> queryFlashSaleResourceByResourceId(int resourceId, String priceDate) {
Criteria criteria = this.getCriteria();
criteria.add(Restrictions.eq("resourceId", resourceId));
criteria.add(Restrictions.eq("resourceType", ResourceTypeEnum.FLASHSALE.getValue()));
......@@ -1104,6 +1110,9 @@ public class AsmCourseResourceDao extends GenericHibernateDao<AsmCourseresource,
criteria.add(Restrictions.eq("resourceStatus", CourseResourceStatusEnum.VALID.getValue()));
criteria.add(Restrictions.eq("priceStatus", ResourcePriceStatusEnum.VALID.getValue()));
criteria.add(Restrictions.ne("courseStatus", CourseStatusEnum.INVALID.getValue()));
if(priceDate != null && !"".equals(priceDate)){
criteria.add(Restrictions.eq("priceDate", DateUtil.parseDate(priceDate)));
}
return criteria.list();
}
......
......@@ -11,24 +11,26 @@ import com.ctrip.fun.golf.domain.product.FlashSale;
public class FlashSaleDao extends GenericHibernateDao<FlashSale, Integer> {
public List<FlashSale> getByUid(String uid, int resourceId) {
public List<FlashSale> getByUid(String uid, int resourceId, Date priceDate) {
String hql = "from FlashSale where uid = :uid and resourceId = :resourceId";
String hql = "from FlashSale where uid = :uid and resourceId = :resourceId and priceDate = :priceDate";
Session session = this.getSession();
Query query = session.createQuery(hql);
query.setParameter("uid", uid);
query.setParameter("resourceId", resourceId);
query.setParameter("priceDate", priceDate);
return query.list();
}
public List<FlashSale> getByUid(String uid, int resourceId, int status, int min) {
public List<FlashSale> getByUid(String uid, int resourceId, int status, int min, Date priceDate) {
Date date = new Date();
Date createdTime = new Date(date.getTime() - min * 60 * 1000 + 2 * 1000);
String hql = "from FlashSale where uid = :uid and resourceId = :resourceId and status = :status and createdTime<=:createdTime";
String hql = "from FlashSale where uid = :uid and resourceId = :resourceId and status = :status and createdTime<=:createdTime and priceDate = :priceDate";
Session session = this.getSession();
Query query = session.createQuery(hql);
query.setParameter("uid", uid);
query.setParameter("resourceId", resourceId);
query.setParameter("priceDate", priceDate);
query.setParameter("status", status);
query.setParameter("createdTime", createdTime);
return query.list();
......@@ -52,13 +54,14 @@ public class FlashSaleDao extends GenericHibernateDao<FlashSale, Integer> {
query.executeUpdate();
}
public void updateByUid(String uid, int resourceId, int status) {
String hql = "update FlashSale set status = :status" + " where uid = :uid and resourceId = :resourceId";
public void updateByUid(String uid, int resourceId, int status, Date priceDate) {
String hql = "update FlashSale set status = :status" + " where uid = :uid and resourceId = :resourceId and priceDate = :priceDate";
Session session = this.getSession();
Query query = session.createQuery(hql);
query.setParameter("status", status);
query.setParameter("uid", uid);
query.setParameter("resourceId", resourceId);
query.setParameter("priceDate", priceDate);
query.executeUpdate();
}
......
......@@ -22,10 +22,11 @@ public class FlashSale implements java.io.Serializable {
private int resourceId;
private int status;
private Integer orderId;
private Date priceDate;
private Date createdTime;
private Date dataChange_LastTime;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "ID", unique = true)
......@@ -67,6 +68,15 @@ public class FlashSale implements java.io.Serializable {
this.orderId = orderId;
}
@Temporal(TemporalType.DATE)
@Column(name = "priceDate", length = 10)
public Date getPriceDate() {
return this.priceDate;
}
public void setPriceDate(Date priceDate) {
this.priceDate = priceDate;
}
@org.hibernate.annotations.Generated(org.hibernate.annotations.GenerationTime.INSERT)
@Temporal(TemporalType.TIMESTAMP)
......
package com.ctrip.fun.golf.service.product;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
......@@ -613,6 +615,14 @@ public class CourseResourceService extends
bean.setCurrentTime(currentTime);
bean.setFlashSaleTips(entity.getFlashSaleTips());
bean.setCashRebate(entity.getCashRebate());
//add by caosy: modify the flashSaleStartTime
Date flashSaleStartTime = entity.getFlashSaleStartTime();
Date realFlashSaleStartTime = DateUtil.addDays(entity.getPriceDate(), -entity.getReserveDay());
Date date1 = DateUtil.addDateField(realFlashSaleStartTime, Calendar.HOUR_OF_DAY, flashSaleStartTime.getHours());
Date date2 = DateUtil.addDateField(date1, Calendar.MINUTE, flashSaleStartTime.getMinutes());
Date date3 = DateUtil.addDateField(date2, Calendar.SECOND, flashSaleStartTime.getSeconds());
bean.setFlashSaleStartTime(date3);
result.add(bean);
}
// 排序
......@@ -747,7 +757,7 @@ public class CourseResourceService extends
public FlashSaleShareInfoBean shareFlashSaleResource(FlashSaleShareQuery query) {
int resourceId = query.getResourceId();
List<AsmCourseresource> asmList = this.asmCourseResourceDao
.queryFlashSaleResourceByResourceId(resourceId);
.queryFlashSaleResourceByResourceId(resourceId, query.getPriceDate());
Date currentTime = this.asmCourseResourceDao.getCurrentTime();
if (asmList != null && asmList.size() != 0) {
AsmCourseresource asm = asmList.get(0);
......@@ -797,7 +807,7 @@ public class CourseResourceService extends
long now = this.asmCourseResourceDao.getCurrentTime().getTime();
if (now < startSec)
return FlashSaleStatusEnum.NOT_START.getValue();// 尚未开始
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId);
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId, priceDate);
if (flashSaleList == null || flashSaleList.size() == 0) {// 第一次抢购该资源
ResourceInventoryQuery riQuery = new ResourceInventoryQuery();
riQuery.setResourceCategory(ResourceCategoryEnum.COURSE.getValue());
......@@ -906,7 +916,7 @@ public class CourseResourceService extends
logger.info("尚未开始, resourceId = " + resourceId + ", uid = " + uid);
throw new OrderException(-23, "尚未开始");// 尚未开始
}
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId);
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId, priceDate);
if (flashSaleList == null || flashSaleList.size() == 0) {
logger.info("非法操作, resourceId = " + resourceId + ", uid = " + uid);
throw new OrderException(-24, "非法操作");
......@@ -949,7 +959,7 @@ public class CourseResourceService extends
int type = courseResource.getResourceType();
if (type != ResourceTypeEnum.FLASHSALE.getValue())
return true;
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId);
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId, priceDate);
if (flashSaleList == null || flashSaleList.size() == 0) {
logger.info("非法操作, resourceId = " + resourceId + ", uid = " + uid);
throw new OrderException(-24, "非法操作");
......@@ -988,6 +998,14 @@ public class CourseResourceService extends
public void copyFromAsmToFlashSale(FlashSaleResourceBean flashSaleResourceBean,
AsmCourseresource asmCourseResource) {
String name = asmCourseResource.getResourceName();
//add by caosy:
name = name + "-"+DateUtil.chineseDayForWeek(asmCourseResource.getPriceDate());
BigDecimal priceDelta = new BigDecimal(asmCourseResource.getMarketPrice().toString()).subtract(new BigDecimal(asmCourseResource.getSalePrice().toString()));
if(asmCourseResource.getCashRebate() > 0){
name = name + "爱玩返现"+asmCourseResource.getCashRebate()+"元";
}else if(priceDelta.doubleValue() > 0){
name = name + "爱玩补贴"+ priceDelta.doubleValue()+"元";
}
Date startDate = asmCourseResource.getPriceDate();
String startTime = asmCourseResource.getStartTime();
Date flashSaleStartTime = asmCourseResource.getFlashSaleStartTime();
......@@ -1149,12 +1167,12 @@ public class CourseResourceService extends
return false;
}
public boolean hasGetFlashSale(String uid, int resourceId) {
return hasGetFlashSale(uid, resourceId, 1) || hasGetFlashSale(uid, resourceId, 3);
public boolean hasGetFlashSale(String uid, int resourceId, Date priceDate) {
return hasGetFlashSale(uid, resourceId, 1, priceDate) || hasGetFlashSale(uid, resourceId, 3, priceDate);
}
public boolean hasGetFlashSale(String uid, int resourceId, int status) {
List<FlashSale> fsList = flashSaleDao.getByUid(uid, resourceId);
public boolean hasGetFlashSale(String uid, int resourceId, int status, Date priceDate) {
List<FlashSale> fsList = flashSaleDao.getByUid(uid, resourceId, priceDate);
if (fsList == null || fsList.size() == 0)
return false;
for (FlashSale fs : fsList) {
......@@ -1198,7 +1216,7 @@ public class CourseResourceService extends
public FlashSaleResourceBean getFlashSaleDetail(FlashSaleDetailQuery query) {
int resourceId = query.getResourceId();
List<AsmCourseresource> asmList = this.asmCourseResourceDao
.queryFlashSaleResourceByResourceId(resourceId);
.queryFlashSaleResourceByResourceId(resourceId, query.getPriceDate());
List<FlashSaleResourceBean> list = sortFlashSaleResourceBean(asmList);
if (CollectionUtils.isEmpty(list)) {
return null;
......@@ -1209,7 +1227,7 @@ public class CourseResourceService extends
public FlashSaleTeeTimeBean getTeeTime(FlashSaleTeeTimeQuery query) {
int resourceId = query.getResourceId();
List<AsmCourseresource> asmList = this.asmCourseResourceDao
.queryFlashSaleResourceByResourceId(resourceId);
.queryFlashSaleResourceByResourceId(resourceId, query.getPriceDate());
if (asmList != null && asmList.size() != 0) {
AsmCourseresource asm = asmList.get(0);
FlashSaleTeeTimeBean bean = new FlashSaleTeeTimeBean();
......
......@@ -6,6 +6,7 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.vo.order.OrderStatusEnum;
import com.ctrip.fun.common.vo.product.FlashSaleCheckQuery;
import com.ctrip.fun.common.vo.product.FlashSaleStatusEnum;
......@@ -35,18 +36,20 @@ public class FlashSaleService {
flashSale.setResourceId(query.getResourceId());
flashSale.setUid(query.getUid());
flashSale.setStatus(status);
//add by caosy
flashSale.setPriceDate(DateUtil.parseDate(query.getPriceDate()));
flashSaleDao.save(flashSale);
}
public void updateFlashSale(String uid, int resourceId, Date priceDate, int status) {
flashSaleDao.updateByUid(uid, resourceId, status);
flashSaleDao.updateByUid(uid, resourceId, status, priceDate);
}
public void overTimeTask(String uid, int resourceId, Date priceDate, int min) {
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId, 1, min);
List<FlashSale> flashSaleList = flashSaleDao.getByUid(uid, resourceId, 1, min, priceDate);
if (flashSaleList == null || flashSaleList.size() == 0)
return;
flashSaleDao.updateByUid(uid, resourceId, 2);
flashSaleDao.updateByUid(uid, resourceId, 2, priceDate);
FlashSale fs = flashSaleList.get(0);
fs.setStatus(2);
flashSaleDao.update(fs);
......
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