Commit 4eafe075 by unknown

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

parents ba6f23d3 7a38fb00
......@@ -70,7 +70,8 @@ public class VoucherDao extends GenericHibernateDao<Voucher, Integer> {
String hsql = "from Voucher t where t.used=1 and t.orderNo=" + orderNo;
return this.getEntities(hsql);
}
@Deprecated
public int useVoucher(String ids, Long orderNo) {
String sql = "update Voucher set used=" + VourcherStatusEnum.USED.getValue()
+ " , useDate=now() , orderNo=" + orderNo + " where used=0 and id in ("
......@@ -78,6 +79,13 @@ public class VoucherDao extends GenericHibernateDao<Voucher, Integer> {
Query query = getSession().createQuery(sql);
return query.executeUpdate();
}
public int useVoucher(String id,Long orderNo,BigDecimal amount){
String hql = "update Voucher set used=" + VourcherStatusEnum.USED.getValue()
+ " , useDate=now() , orderNo=" + orderNo + ",amount="+amount+" where used=0 and id ="+id;
Query query = getSession().createQuery(hql);
return query.executeUpdate();
}
@SuppressWarnings("rawtypes")
public int getVoucherCount(String ids, Long orderNo, String playDate) {
......@@ -208,6 +216,7 @@ public class VoucherDao extends GenericHibernateDao<Voucher, Integer> {
sb.append(" v.UID AS uid, ");
sb.append(" v.Source AS source, ");
sb.append(" v.ruleId AS ruleId , ");
sb.append(" v.description , ");
sb.append(" r.sendToUserType, ");
sb.append(" r.remark, ");
sb.append(" r.description ");
......
......@@ -120,6 +120,11 @@ public class VoucherRule {
* 修改时间
*/
private Date dataChangeLastTime;
/**
* 是否多球场抵用券 0,否 , 1 是
*/
private int multiple;
@Id
@GeneratedValue(strategy = IDENTITY)
......@@ -308,4 +313,15 @@ public class VoucherRule {
this.createdTime = createdTime;
}
@Column(name = "multiple")
public int getMultiple() {
return multiple;
}
public void setMultiple(int multiple) {
this.multiple = multiple;
}
}
......@@ -23,8 +23,11 @@ import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.ResponseStatusEnum;
import com.ctrip.fun.common.vo.basic.AbstractRuleConditionBean;
import com.ctrip.fun.common.vo.basic.CourseRuleConditionBaseBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.order.AbstractOrderBean;
import com.ctrip.fun.common.vo.order.AbstractOrderListItemBean;
import com.ctrip.fun.common.vo.order.CourseOrderResourceBean;
import com.ctrip.fun.common.vo.order.CustomerInfoBean;
import com.ctrip.fun.common.vo.order.InvoiceBean;
import com.ctrip.fun.common.vo.order.OrderCallBackBean;
......@@ -49,12 +52,15 @@ import com.ctrip.fun.golf.dao.user.UserExtDao;
import com.ctrip.fun.golf.domain.basic.Voucher;
import com.ctrip.fun.golf.domain.basic.VoucherRule;
import com.ctrip.fun.golf.domain.order.CustomerInfo;
import com.ctrip.fun.golf.domain.order.EventActivityOrderItem;
import com.ctrip.fun.golf.domain.order.InsuranceInfo;
import com.ctrip.fun.golf.domain.order.InsuranceProcess;
import com.ctrip.fun.golf.domain.order.Invoiceinfo;
import com.ctrip.fun.golf.domain.order.Order;
import com.ctrip.fun.golf.domain.user.UserExt;
import com.ctrip.fun.golf.exceptions.OrderException;
import com.ctrip.fun.golf.exceptions.VoucherException;
import com.ctrip.fun.golf.service.basic.VoucherService;
import com.ctrip.fun.golf.service.payment.OrderPaymentService;
import com.ctrip.fun.golf.service.user.UserExtService;
import com.ctrip.fun.insurance.vo.internal.InsuranceInfoVO;
......@@ -87,6 +93,9 @@ public abstract class AbstractOrderService<H extends AbstractOrderBean<T>, T> ex
private InsuranceProcessService insuranceProcessService = null;
private VoucherService voucherService = null;
private UserExtService userExtService = null;
protected abstract void sendMessage(Order order, int messageId);
......@@ -679,17 +688,31 @@ public abstract class AbstractOrderService<H extends AbstractOrderBean<T>, T> ex
if (voucherRule == null) {
throw new OrderException(-10, "抵用券规则不存在");
}
// 判断是否可用于此资源
AbstractRuleConditionBean abstractRuleConditionBean = null;
try {
abstractRuleConditionBean = (AbstractRuleConditionBean) JsonUtil.readValue(voucherRule.getConditionJson(), Class.forName(voucherRule.getConditionBean()));
} catch (Exception e) {
logger.error(e.getMessage());
throw new OrderException(-10, "抵用券规则条件转化错误");
if(voucherRule.getMultiple()==0){
// 判断是否可用于此资源
AbstractRuleConditionBean abstractRuleConditionBean = null;
try {
abstractRuleConditionBean = (AbstractRuleConditionBean) JsonUtil.readValue(voucherRule.getConditionJson(), Class.forName(voucherRule.getConditionBean()));
} catch (Exception e) {
logger.error(e.getMessage());
throw new OrderException(-10, "抵用券规则条件转化错误");
}
checkVourcherConditionBean(abstractRuleConditionBean, abstractOrderBean);
}else{
MultipleCourseConditionBean bean =null;
try {
bean = (MultipleCourseConditionBean) JsonUtil.readValue(voucherRule.getConditionJson(), Class.forName(voucherRule.getConditionBean()));
} catch (Exception e) {
logger.error(e.getMessage());
throw new OrderException(-10, "抵用券规则条件转化错误");
}
checkVourcherConditionBean(bean, abstractOrderBean);
}
checkVourcherConditionBean(abstractRuleConditionBean, abstractOrderBean);
// checkVourcherConditionBean(abstractRuleConditionBean, abstractOrderBean);
}
}
}
}
......@@ -700,6 +723,21 @@ public abstract class AbstractOrderService<H extends AbstractOrderBean<T>, T> ex
@SuppressWarnings("rawtypes")
protected abstract void checkVourcherConditionBean(AbstractRuleConditionBean abstractRuleConditionBean, H abstractOrderBean);
protected abstract void checkVourcherConditionBean(MultipleCourseConditionBean multipleCourseConditionBean, H abstractOrderBean);
/*@SuppressWarnings("rawtypes")
protected void checkVourcherConditionBean(MultipleCourseConditionBean multipleCourseConditionBean, EventActivityOrderBean abstractOrderBean){
CourseResource courseResource = courseResourceDao.findById(abstractOrderBean.getResourceList().get(0).getResourceId());
CourseRuleConditionBaseBean courseRuleConditionBaseBean = new CourseRuleConditionBaseBean();
courseRuleConditionBaseBean.setResourceId(courseResource.getId());
courseRuleConditionBaseBean.setProductId(courseResource.getProductId());
courseRuleConditionBaseBean.setPlayDate(abstractOrderBean.getResourceList().get(0).getPlayDate());
if (!multipleCourseConditionBean.isEnableUse(courseRuleConditionBaseBean)) {
throw new OrderException(-10, "抵用券不满足规则条件");
}
}*/
/**
* @param abstractOrderBean
*/
......@@ -918,9 +956,12 @@ public abstract class AbstractOrderService<H extends AbstractOrderBean<T>, T> ex
sendConfirmMsg(order);
}
if (order.getVoucherAmount().doubleValue() > 0) {
if (this.voucherDao.useVoucher(order.getVoucherIDList(), order.getOrderNo()) != order.getVoucherCount()) {
throw new OrderException(-100, "您的抵用劵使用错误");
}
List<VoucherItemBean> beanlist = abstractOrderBean.getVoucherList();
if(beanlist.size()>0){
for(VoucherItemBean bean: beanlist){
voucherDao.useVoucher(bean.getId()+"", order.getOrderNo(), bean.getAmount());
}
}
}
if (order.getPrePayCardAmount().doubleValue() > 0) {
if (this.userExtDao.deductAmount(order.getUid(), order.getPrePayCardAmount()) >= 1) {
......@@ -941,6 +982,7 @@ public abstract class AbstractOrderService<H extends AbstractOrderBean<T>, T> ex
return response;
}
}
protected abstract void createAndSendInsureRequest(H abstractOrderBean, Order order);
......@@ -1263,4 +1305,12 @@ public abstract class AbstractOrderService<H extends AbstractOrderBean<T>, T> ex
public void setUserExtService(UserExtService userExtService) {
this.userExtService = userExtService;
}
public VoucherService getVoucherService() {
return voucherService;
}
public void setVoucherService(VoucherService voucherService) {
this.voucherService = voucherService;
}
}
......@@ -15,6 +15,7 @@ import com.ctrip.fun.common.core.util.StringUtils;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.basic.AbstractRuleConditionBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.basic.VipGradeEnum;
import com.ctrip.fun.common.vo.operation.ResourceConfirmTypeEnum;
import com.ctrip.fun.common.vo.order.AbstractOrderListItemBean;
......@@ -477,4 +478,12 @@ public class CommuneOrderService extends AbstractOrderService<CommuneOrderBean,
protected void createAndSendInsureRequest(CommuneOrderBean abstractOrderBean, Order order) {
// TODO Auto-generated method stub
}
@Override
protected void checkVourcherConditionBean(
MultipleCourseConditionBean multipleCourseConditionBean,
CommuneOrderBean abstractOrderBean) {
// TODO Auto-generated method stub
}
}
......@@ -24,6 +24,7 @@ import com.ctrip.fun.common.vo.advert.CampaignBillActionEnum;
import com.ctrip.fun.common.vo.advert.CampaignStatusActionEnum;
import com.ctrip.fun.common.vo.basic.AbstractRuleConditionBean;
import com.ctrip.fun.common.vo.basic.CourseRuleConditionBaseBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.basic.VoucherTypeEnum;
import com.ctrip.fun.common.vo.notification.EventTypeEnum;
import com.ctrip.fun.common.vo.notification.InventoryChangedByOrderEventBodyBean;
......@@ -1169,4 +1170,12 @@ public class CourseOrderService extends AbstractOrderService<CourseOrderBean, Co
this.operationMessageService = operationMessageService;
}
@Override
protected void checkVourcherConditionBean(
MultipleCourseConditionBean multipleCourseConditionBean,
CourseOrderBean abstractOrderBean) {
// TODO Auto-generated method stub
}
}
......@@ -20,7 +20,9 @@ import com.ctrip.fun.common.core.util.StringUtils;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.basic.AbstractRuleConditionBean;
import com.ctrip.fun.common.vo.basic.CourseRuleConditionBaseBean;
import com.ctrip.fun.common.vo.basic.EventActivityRuleConditionBaseBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.basic.VipGradeEnum;
import com.ctrip.fun.common.vo.basic.VoucherTypeEnum;
import com.ctrip.fun.common.vo.notification.EventTypeEnum;
......@@ -1530,4 +1532,15 @@ public class EventActivityOrderService extends
this.resourceInventoryDao = resourceInventoryDao;
}
@Override
protected void checkVourcherConditionBean(MultipleCourseConditionBean multipleCourseConditionBean,EventActivityOrderBean abstractOrderBean) {
CourseResource courseResource = courseResourceDao.findById(abstractOrderBean.getResourceList().get(0).getResourceId());
CourseRuleConditionBaseBean courseRuleConditionBaseBean = new CourseRuleConditionBaseBean();
courseRuleConditionBaseBean.setResourceId(courseResource.getId());
courseRuleConditionBaseBean.setProductId(courseResource.getProductId());
courseRuleConditionBaseBean.setPlayDate(abstractOrderBean.getResourceList().get(0).getPlayDate());
if (!multipleCourseConditionBean.isEnableUse(courseRuleConditionBaseBean)) {
throw new OrderException(-10, "抵用券不满足规则条件");
}
}
}
......@@ -51,6 +51,7 @@ import com.ctrip.fun.golf.dao.advert.CampaignDao;
import com.ctrip.fun.golf.dao.assemble.AsmCourseResourceDao;
import com.ctrip.fun.golf.dao.basic.DistrictDao;
import com.ctrip.fun.golf.dao.basic.VoucherDao;
import com.ctrip.fun.golf.dao.basic.VoucherRuleDao;
import com.ctrip.fun.golf.dao.finance.CourseBalanceDao;
import com.ctrip.fun.golf.dao.finance.CourseBalanceTxnDao;
import com.ctrip.fun.golf.dao.finance.CoursePayeeDao;
......@@ -68,6 +69,7 @@ import com.ctrip.fun.golf.domain.advert.CampaignBill;
import com.ctrip.fun.golf.domain.assemble.AsmCourseresource;
import com.ctrip.fun.golf.domain.basic.OperationMessage;
import com.ctrip.fun.golf.domain.basic.Voucher;
import com.ctrip.fun.golf.domain.basic.VoucherRule;
import com.ctrip.fun.golf.domain.finance.CourseBalance;
import com.ctrip.fun.golf.domain.finance.CourseBalanceTxn;
import com.ctrip.fun.golf.domain.finance.CoursePayee;
......@@ -120,6 +122,8 @@ public class OpCourseOrderService extends AbstractOpOrderService<CourseOrderProc
private VoucherDao voucherDao = null;
private VoucherRuleDao voucherRuleDao = null;
private CourseResourceService courseResourceService = null;
private EventDao eventDao = null;
......@@ -1229,7 +1233,15 @@ public class OpCourseOrderService extends AbstractOpOrderService<CourseOrderProc
this.voucherDao = voucherDao;
}
public CourseResourceService getCourseResourceService() {
public VoucherRuleDao getVoucherRuleDao() {
return voucherRuleDao;
}
public void setVoucherRuleDao(VoucherRuleDao voucherRuleDao) {
this.voucherRuleDao = voucherRuleDao;
}
public CourseResourceService getCourseResourceService() {
return courseResourceService;
}
......
......@@ -13,9 +13,12 @@ import org.slf4j.LoggerFactory;
import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.core.util.JsonUtil;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.ResponseStatusEnum;
import com.ctrip.fun.common.vo.basic.CourseRuleConditionBaseBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.basic.VoucherBean;
import com.ctrip.fun.common.vo.basic.VourcherUsedEnum;
import com.ctrip.fun.common.vo.finance.CourseBalanceArrivalStatusEnum;
......@@ -44,6 +47,7 @@ import com.ctrip.fun.common.vo.product.ResourceRealTimeTeeTimeTypeEnum;
import com.ctrip.fun.golf.dao.assemble.AsmCourseResourceDao;
import com.ctrip.fun.golf.dao.basic.DistrictDao;
import com.ctrip.fun.golf.dao.basic.VoucherDao;
import com.ctrip.fun.golf.dao.basic.VoucherRuleDao;
import com.ctrip.fun.golf.dao.finance.CourseBalanceDao;
import com.ctrip.fun.golf.dao.finance.CourseBalanceTxnDao;
import com.ctrip.fun.golf.dao.notification.EventDao;
......@@ -59,6 +63,7 @@ import com.ctrip.fun.golf.dao.product.ResourcePriceDao;
import com.ctrip.fun.golf.dao.user.UserExtDao;
import com.ctrip.fun.golf.domain.basic.OperationMessage;
import com.ctrip.fun.golf.domain.basic.Voucher;
import com.ctrip.fun.golf.domain.basic.VoucherRule;
import com.ctrip.fun.golf.domain.finance.CourseBalance;
import com.ctrip.fun.golf.domain.finance.CourseBalanceTxn;
import com.ctrip.fun.golf.domain.notification.Event;
......@@ -69,6 +74,7 @@ import com.ctrip.fun.golf.domain.order.EventActivityOrderListExcel;
import com.ctrip.fun.golf.domain.order.Invoiceinfo;
import com.ctrip.fun.golf.domain.order.Order;
import com.ctrip.fun.golf.domain.order.OrderAssignment;
import com.ctrip.fun.golf.domain.order.OrderItem;
import com.ctrip.fun.golf.domain.order.OrderPayinfo;
import com.ctrip.fun.golf.domain.order.OrderProcessLog;
import com.ctrip.fun.golf.domain.product.CourseProduct;
......@@ -107,6 +113,8 @@ public class OpEventActivityOrderService
private VoucherDao voucherDao = null;
private VoucherRuleDao voucherRuleDao = null;
private CourseResourceService courseResourceService = null;
private EventDao eventDao = null;
......@@ -320,7 +328,7 @@ public class OpEventActivityOrderService
orderProcessBean.getQuantity());
Order order = getOrderDao().findById(orderProcessBean.getOrderId());
if (orderProcessBean.getCashRebate() != null) {
order.setCashRebate(orderProcessBean.getCashRebate());
}
......@@ -360,6 +368,7 @@ public class OpEventActivityOrderService
double refundVoucher = 0;
for (Integer id : orderProcessBean.getRefundVoucherIds()) {
Voucher voucher = this.voucherDao.findById(id);
if (voucher != null && voucher.getUsed() == VourcherUsedEnum.UNUSED.getKey()) {
logger.warn(voucher.getId() + ":未使用");
continue;
......@@ -411,8 +420,7 @@ public class OpEventActivityOrderService
| OrderStatusBitEnum.REFUNDED.getValue());
if (order
.getTotalAmount()
.subtract(
order.getPrePayCardRefundAmount()
.subtract(order.getPrePayCardRefundAmount()
.add(order.getVoucherRefundAmount().add(
order.getRefundAmount()))
.add(order.getOnPayAmount())).doubleValue() <= 0) {
......@@ -757,6 +765,21 @@ public class OpEventActivityOrderService
for (Voucher voucher : vouchers) {
VoucherBean voucherBean = new VoucherBean();
BeanConverter.copyProperties(voucherBean, voucher);
VoucherRule rule = this.voucherRuleDao.findById(voucher.getRuleId());
if(rule.getMultiple()==1){
try {
MultipleCourseConditionBean bean = (MultipleCourseConditionBean)JsonUtil.readValue(rule.getConditionJson(), Class.forName(rule.getConditionBean()));
CourseRuleConditionBaseBean t = new CourseRuleConditionBaseBean();
t.setPlayDate( orderItem.getPlayDate());
t.setResourceId(orderItem.getResourceId());
t.setProductId(orderItem.getCourseProductId());
bean.getEnableAmount(t );
voucherBean.setAmount(bean.getEnableAmount(t));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
voucherBeans.add(voucherBean);
}
}
......@@ -968,7 +991,15 @@ public class OpEventActivityOrderService
this.voucherDao = voucherDao;
}
public CourseResourceService getCourseResourceService() {
public VoucherRuleDao getVoucherRuleDao() {
return voucherRuleDao;
}
public void setVoucherRuleDao(VoucherRuleDao voucherRuleDao) {
this.voucherRuleDao = voucherRuleDao;
}
public CourseResourceService getCourseResourceService() {
return courseResourceService;
}
......
......@@ -16,6 +16,7 @@ import com.ctrip.fun.common.core.util.StringUtils;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.basic.AbstractRuleConditionBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.client.RechargeDiscountVO;
import com.ctrip.fun.common.vo.operation.ResourceConfirmTypeEnum;
import com.ctrip.fun.common.vo.order.AbstractOrderListItemBean;
......@@ -429,4 +430,12 @@ public class RechargeOrderService extends AbstractOrderService<RechargeOrderBean
}
@Override
protected void checkVourcherConditionBean(
MultipleCourseConditionBean multipleCourseConditionBean,
RechargeOrderBean abstractOrderBean) {
// TODO Auto-generated method stub
}
}
......@@ -23,6 +23,7 @@ import com.ctrip.fun.common.core.util.JsonUtil;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.basic.AbstractRuleConditionBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.basic.VoucherTypeEnum;
import com.ctrip.fun.common.vo.operation.ResourceConfirmTypeEnum;
import com.ctrip.fun.common.vo.order.OrderQuery;
......@@ -962,4 +963,12 @@ public class TourOrderService extends AbstractOrderService<TourOrderBean, TourOr
this.overTimeMinute = overTimeMinute;
}
@Override
protected void checkVourcherConditionBean(
MultipleCourseConditionBean multipleCourseConditionBean,
TourOrderBean abstractOrderBean) {
// TODO Auto-generated method stub
}
}
......@@ -24,6 +24,7 @@ import com.ctrip.fun.common.vo.basic.AbstractRuleConditionBean;
import com.ctrip.fun.common.vo.basic.ExpressBean;
import com.ctrip.fun.common.vo.basic.ExpressStatusEnum;
import com.ctrip.fun.common.vo.basic.MallProductRuleConditionBaseBean;
import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.basic.SmsBean;
import com.ctrip.fun.common.vo.basic.SmsStatus;
import com.ctrip.fun.common.vo.basic.VoucherTypeEnum;
......@@ -1302,4 +1303,12 @@ public class MallOrderService extends AbstractOrderService<MallOrderBean, MallOr
// TODO Auto-generated method stub
}
@Override
protected void checkVourcherConditionBean(
MultipleCourseConditionBean multipleCourseConditionBean,
MallOrderBean abstractOrderBean) {
// TODO Auto-generated method stub
}
}
......@@ -91,6 +91,8 @@
<property name="courseResourceDao" ref="courseResourceDao"></property>
<property name="smsDao" ref="smsDao"></property>
<property name="operationMessageDao" ref="operationMessageDao"></property>
<property name="orderDao" ref="orderDao"></property>
<property name="eventActivityOrderItemDao" ref="eventActivityOrderItemDao"></property>
<property name="remindExpireVoucherDay" value="${remindExpireVoucherDay}"></property>
</bean>
......
......@@ -110,6 +110,7 @@
<property name="insuranceProcessDao" ref="insuranceProcessDao"></property>
<property name="insuranceProcessService" ref="insuranceProcessService"></property>
<property name="userExtService" ref="userExtService"></property>
<property name="voucherService" ref="voucherService"></property>
</bean>
<bean name="courseOrderService" class="com.ctrip.fun.golf.service.order.CourseOrderService" parent="abstractOrderService">
......@@ -280,6 +281,7 @@
<property name="courseBalanceTxnDao" ref="courseBalanceTxnDao"></property>
<property name="supplierDao" ref="supplierDao"></property>
<property name="voucherDao" ref="voucherDao"></property>
<property name="voucherRuleDao" ref="voucherRuleDao"></property>
<property name="courseResourceService" ref="courseResourceService"></property>
<property name="eventDao" ref="eventDao"></property>
<property name="eventActivityOrderService" ref="eventActivityOrderService"></property>
......
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