Commit 235c2bb2 by caosy

抵扣劵领取日起

parent 906da92b
......@@ -73,6 +73,20 @@ public class VoucherDao extends GenericHibernateDao<Voucher, Integer> {
Query query = getSession().createQuery(sql);
query.executeUpdate();
}
/**
* 修改现金券有效期结束时间
*/
public void updateVoucherStartEndDateByUid(Integer ruleId, Date endUseDate,String uid) {
if (ruleId < 1 || endUseDate == null) {
return;
}
String endUseDate_str = DateUtil.getDateTimeStr(endUseDate);
String sql = "update Voucher set EndUseDate='"
+ endUseDate_str + "' where ruleId= " + ruleId + " and deleteStatus =0" + "and UID = " + uid ;
Query query = getSession().createQuery(sql);
query.executeUpdate();
}
/**
* 修改优惠券使用人:用于更换手机号,权益转移
......@@ -678,15 +692,13 @@ public class VoucherDao extends GenericHibernateDao<Voucher, Integer> {
JSONObject jsobj1 = JSONObject.parseObject(voucherRule.getConditionJson());
String type1 = jsobj1.getString("type");
for (Map<String, Object> map : queryResult) {
if(5 == voucherRule.getVoucherType()|| 7 == voucherRule.getVoucherType()||
8 == voucherRule.getVoucherType()||9 ==voucherRule.getVoucherType()||
(voucherRule.getVoucherType()==1 && "1".equals(type1))){
if(2 == voucherRule.getTimeType()){
for (int j = 0; j < voucherRule.getQuantity(); j++) {
insertSql.append("('" + voucherRule.getVoucherType() + "'");
insertSql.append(",'" + voucherRule.getAmount() + "'");
String startUseDate = DateUtil.getDateTimeStr(new Date());
insertSql.append(",'" + startUseDate + "'");
String endUseDate = DateUtil.getDateTimeStr(DateUtils.addYears(DateUtil.getEndOfDay(new Date()), 1));
String endUseDate = DateUtil.getDateTimeStr(DateUtils.addMonths(DateUtil.getEndOfDay(new Date()), voucherRule.getTimeDay()));
insertSql.append(",'" + endUseDate + "'");
insertSql.append(",'" + (String) map.get("UID") + "'");
insertSql.append(",'" + source + "'");
......@@ -1032,6 +1044,10 @@ public class VoucherDao extends GenericHibernateDao<Voucher, Integer> {
return this.getEntities(hsql);
}
// 根据uid ruleId 获取用户一张劵
public Voucher getOneVoucherByUidRuleId(Integer ruleId,String uid) {
String hsql = "from Voucher t where deleteStatus = 0 and t.uid=" + uid +" and t.ruleId=" +ruleId ;
return this.getEntities(hsql).get(0);
}
}
......@@ -53,6 +53,9 @@ public class VoucherRuleDao extends GenericHibernateDao<VoucherRule, Integer> {
if (query.getVoucherType() != 0) {
criteria.add(Restrictions.eq("voucherType", query.getVoucherType()));
}
if (query.getTimeType() != 0) {
criteria.add(Restrictions.eq("timeType", query.getTimeType()));
}
if (query.getStatus() != 0) {
if (query.getStatus() == VoucherRuleStatusEnum.EXPIRE.getValue()) {
criteria.add(Restrictions.le("expireDate", new Date()));
......
......@@ -149,6 +149,17 @@ public class VoucherRule {
private int canFreeReceive;//判断券是可以免费领取
/**
* 发放时间类型
* 1 时间段 2领取日起
*/
private int timeType;
/**
* 领取日时间
*/
private int timeDay;
@Id
@GeneratedValue(strategy = IDENTITY)
......@@ -261,7 +272,7 @@ public class VoucherRule {
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "startUseDate", nullable = false, length = 19)
@Column(name = "startUseDate", length = 19)
public Date getStartUseDate() {
return startUseDate;
}
......@@ -271,7 +282,7 @@ public class VoucherRule {
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "endUseDate", nullable = false, length = 19)
@Column(name = "endUseDate", length = 19)
public Date getEndUseDate() {
return endUseDate;
}
......@@ -398,6 +409,21 @@ public class VoucherRule {
public void setCanFreeReceive(int canFreeReceive) {
this.canFreeReceive = canFreeReceive;
}
public int getTimeType() {
return timeType;
}
public void setTimeType(int timeType) {
this.timeType = timeType;
}
public int getTimeDay() {
return timeDay;
}
public void setTimeDay(int timeDay) {
this.timeDay = timeDay;
}
}
......@@ -154,6 +154,10 @@ public class Order extends AbstractOrder implements java.io.Serializable {
* 订单来源(二级)(目前就offline使用)
*/
private String channel2;
private Integer isSendVoucher;
private int orderIntegralStatus;
......@@ -248,7 +252,7 @@ public class Order extends AbstractOrder implements java.io.Serializable {
int isThird, BigDecimal voucherAmount,
BigDecimal voucherRefundAmount, int prePayCardDeductFlag,
String voucherIDList, int voucherCount, String paymentRequestID,
BigDecimal giftCardAmount,String realName,String idCard,String mobilePhone,int isConfirm) {
BigDecimal giftCardAmount,String realName,String idCard,String mobilePhone,int isConfirm,Integer isSendVoucher) {
this.actualAmount = actualAmount;
this.adjustAmount = adjustAmount;
this.amount = amount;
......@@ -311,6 +315,7 @@ public class Order extends AbstractOrder implements java.io.Serializable {
this.idCard = idCard;
this.mobilePhone = mobilePhone;
this.isConfirm = isConfirm;
this.isSendVoucher = isSendVoucher;
}
......@@ -342,7 +347,7 @@ public class Order extends AbstractOrder implements java.io.Serializable {
int isThird, BigDecimal voucherAmount,
BigDecimal voucherRefundAmount, int prePayCardDeductFlag,
String voucherIDList, int voucherCount, String paymentRequestID,
BigDecimal giftCardAmount,String realName,String idCard,String mobilePhone,int isConfirm) {
BigDecimal giftCardAmount,String realName,String idCard,String mobilePhone,int isConfirm,Integer isSendVoucher) {
this.actualAmount = actualAmount;
this.adjustAmount = adjustAmount;
this.amount = amount;
......@@ -417,6 +422,7 @@ public class Order extends AbstractOrder implements java.io.Serializable {
this.idCard = idCard;
this.mobilePhone = mobilePhone;
this.isConfirm = isConfirm;
this.isSendVoucher = isSendVoucher;
}
@Id
......@@ -1509,5 +1515,11 @@ public class Order extends AbstractOrder implements java.io.Serializable {
this.isConfirm = isConfirm;
}
public Integer getIsSendVoucher() {
return isSendVoucher;
}
public void setIsSendVoucher(Integer isSendVoucher) {
this.isSendVoucher = isSendVoucher;
}
}
......@@ -19,6 +19,7 @@ import com.alibaba.fastjson.JSONObject;
import com.ctrip.fun.common.core.exceptions.service.ServiceException;
import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.basic.TimeTypeEnum;
import com.ctrip.fun.common.vo.basic.UserGradeAndVipGradeEnum;
import com.ctrip.fun.common.vo.basic.VoucherRuleBean;
import com.ctrip.fun.common.vo.basic.VoucherRuleQuery;
......@@ -191,6 +192,7 @@ public class VoucherRuleService extends
for (VoucherRule t : collection) {
VoucherRuleBean vo = new VoucherRuleBean();
BeanConverter.copyProperties(vo, t);
vo.setTimeTypeMsg(TimeTypeEnum.valueOf(vo.getTimeType()).getMsg());
if (vo.getVoucherType() != 0) {
vo.setVoucherTypeMsg(VoucherTypeEnum.valueOf(vo.getVoucherType()).getMsg());
}
......@@ -267,6 +269,7 @@ public class VoucherRuleService extends
voucherRule.setStartUseDate(vo.getStartUseDate());
voucherRule.setRemark(vo.getRemark());
voucherRule.setDescription(vo.getDescription());
voucherRule.setTimeDay(vo.getTimeDay());
if (voucherRule.getVoucherRuleType() == 2) {
voucherRule.setExpireDate(vo.getExpireDate());
if (vo.getValidFlag() == VourcherRuleValidFlagEnum.INVALID.getValue()
......
......@@ -112,7 +112,7 @@ public class VoucherService {
private EventActivityOrderItemDao eventActivityOrderItemDao = null;
private OrderDao orderDao = null;
private TourBasicDao tourBasicDao;
@Autowired
private CourseProductDao courseProductDao;
......@@ -1217,7 +1217,7 @@ public class VoucherService {
//社员订单赠送优惠券配置:431_sendBeginTime_sendEndTime(规则id_开始发送时间_结束发送方式)
String commune_voucher = clientConfig.getMessage();
Date payDate = new Date();
this.sendVoucherForPlaceOrderByConfig(uid, orderId, myselfOrder, commune_voucher,"","","",payDate);
this.sendVoucherForPlaceOrderByConfig(uid, orderId, myselfOrder, commune_voucher,"","","",payDate,null);
}
......@@ -1244,7 +1244,7 @@ public class VoucherService {
}
}
if(rule_String!=null){
this.sendVoucherForPlaceOrderByConfig(uid,orderId,true,rule_String,"","","",communeEnd);
this.sendVoucherForPlaceOrderByConfig(uid,orderId,true,rule_String,"","","",communeEnd,null);
}
}
......@@ -1277,25 +1277,53 @@ public class VoucherService {
* @param myselfOrder 是否用户自己的订单
* @param voucherSendType 发券配置的key值
*/
public void sendVoucherForPlaceOrderByConfig(String uid,String orderId,boolean myselfOrder,String voucherConfig,String realName,String idCard,String mobilePhone,Date payDate){
public void sendVoucherForPlaceOrderByConfig(String uid,String orderId,boolean myselfOrder,String voucherConfig,String realName,String idCard,String mobilePhone,Date payDate,Integer activityId){
JSONObject jsobj = JSONObject.parseObject(voucherConfig);
try {
Date sendBeginTime = DateUtil.parseDateTime(jsobj.getString("sendBeginTime"));
Date sendEndTime = DateUtil.parseDateTime(jsobj.getString("sendEndTime"));
Date now = new Date();
if(sendBeginTime.getTime()<now.getTime()&&now.getTime()<sendEndTime.getTime()){
String[] ids = jsobj.getString("id").split(",");
for(String id:ids){
VoucherRule roucherRule = voucherRuleDao.findById(Integer.parseInt(id));
for(int i=0;i<roucherRule.getQuantity();i++){
Voucher voucher = this.getVoucherFromRule(roucherRule,realName,idCard,mobilePhone,payDate);
voucher.setNo("");
voucher.setUid(uid);
voucher.setSourceRemark(orderId);
voucher.setSource(myselfOrder?VoucherSourceEnum.RULE_USERORDER_PRESENT.getValue():VoucherSourceEnum.RULE_FRIENDORDER_PRESENT.getValue());
voucherDao.save(voucher);
}
// 无限卷
if(isUsedSend(id) && activityId != null){
// 是否是第一次购买
int orderNumber = orderDao.queryVoucherPayedOrder(uid, activityId);
VoucherRule roucherRule = voucherRuleDao.findById(Integer.parseInt(id));
if(orderNumber > 1){
Voucher voucher = voucherDao.getOneVoucherByUidRuleId(Integer.valueOf(id), uid);
if(voucher != null){
Date endDay = DateUtils.addMonths(voucher.getEndUseDate(), roucherRule.getTimeDay());
voucherDao.updateVoucherStartEndDateByUid(Integer.valueOf(id), endDay, uid);
}
}else{
for(int i=0;i<roucherRule.getQuantity();i++){
Voucher voucher = this.getVoucherFromRule(roucherRule,realName,idCard,mobilePhone,payDate);
voucher.setNo("");
voucher.setUid(uid);
voucher.setSourceRemark(orderId);
voucher.setSource(myselfOrder?VoucherSourceEnum.RULE_USERORDER_PRESENT.getValue():VoucherSourceEnum.RULE_FRIENDORDER_PRESENT.getValue());
voucherDao.save(voucher);
}
}
}else{
VoucherRule roucherRule = voucherRuleDao.findById(Integer.parseInt(id));
for(int i=0;i<roucherRule.getQuantity();i++){
Voucher voucher = this.getVoucherFromRule(roucherRule,realName,idCard,mobilePhone,payDate);
voucher.setNo("");
voucher.setUid(uid);
voucher.setSourceRemark(orderId);
voucher.setSource(myselfOrder?VoucherSourceEnum.RULE_USERORDER_PRESENT.getValue():VoucherSourceEnum.RULE_FRIENDORDER_PRESENT.getValue());
voucherDao.save(voucher);
}
}
}
}
......@@ -1305,6 +1333,26 @@ public class VoucherService {
}
/**
* 判断是否是无限卷
* @param ruleId
* @return
*/
public boolean isUsedSend(String ruleId){
ClientConfig clientConfig = clientConfigDao.getByType("voucher_used_send");
JSONObject jsobjt = JSONObject.parseObject(clientConfig.getMessage());
if(jsobjt.get(ruleId+"")!=null){
String[] newRuleIds = jsobjt.get(ruleId+"").toString().split(",");
for(String newRuleId:newRuleIds){
String[] conf = newRuleId.split("_");
if(Integer.parseInt(conf[1])==1){
return true;
}
}
}
return false;
}
/**
* 用于从发券模板生成一张券
* @param voucherRule
* @return Voucher
......@@ -1315,59 +1363,37 @@ public class VoucherService {
}
JSONObject jsobj1 = JSONObject.parseObject(voucherRule.getConditionJson());
String type = jsobj1.getString("type");
if(voucherRule.getVoucherType()==5 || voucherRule.getVoucherType() ==7 ||
voucherRule.getVoucherType()==8 || voucherRule.getVoucherType()==9||
(voucherRule.getVoucherType()==1 && "1".equals(type))){
Voucher voucher = new Voucher();
voucher.setType(voucherRule.getVoucherType());
voucher.setAmount(voucherRule.getAmount());
Voucher voucher = new Voucher();
voucher.setType(voucherRule.getVoucherType());
voucher.setAmount(voucherRule.getAmount());
voucher.setRuleId(voucherRule.getId());
voucher.setRemark(voucherRule.getRemark());
voucher.setDescription(voucherRule.getDescription());
voucher.setShared(voucherRule.getShared());
voucher.setUserLimit(voucherRule.getUserLimit());
voucher.setExclusive(voucherRule.getExclusive());
voucher.setCanUseAmount(voucherRule.getCanUseAmount());
voucher.setFullCutAmount(voucherRule.getFullCutAmount());
voucher.setCreatedTime(new Date());
voucher.setRealName(realName);
voucher.setIdCard(idCard);
voucher.setMobilePhone(mobilePhone);
if(realName != null && !("").equals(realName)){
voucher.setVoucherType(2);
}else{
voucher.setVoucherType(1);
}
if(voucherRule.getTimeType() == 2){
// 自领取日起
voucher.setStartUseDate(payDate);
voucher.setEndUseDate(DateUtils.addYears(DateUtil.getEndOfDay(payDate), 1));
voucher.setRuleId(voucherRule.getId());
voucher.setRemark(voucherRule.getRemark());
voucher.setDescription(voucherRule.getDescription());
voucher.setShared(voucherRule.getShared());
voucher.setUserLimit(voucherRule.getUserLimit());
voucher.setExclusive(voucherRule.getExclusive());
voucher.setCanUseAmount(voucherRule.getCanUseAmount());
voucher.setFullCutAmount(voucherRule.getFullCutAmount());
voucher.setCreatedTime(new Date());
voucher.setRealName(realName);
voucher.setIdCard(idCard);
voucher.setMobilePhone(mobilePhone);
if(realName != null && !("").equals(realName)){
voucher.setVoucherType(2);
}else{
voucher.setVoucherType(1);
}
return voucher;
voucher.setEndUseDate(DateUtils.addMonths(DateUtil.getEndOfDay(payDate), voucherRule.getTimeDay()));
}else{
Voucher voucher = new Voucher();
voucher.setType(voucherRule.getVoucherType());
voucher.setAmount(voucherRule.getAmount());
// 时间段
voucher.setStartUseDate(voucherRule.getStartUseDate());
voucher.setEndUseDate(voucherRule.getEndUseDate());
voucher.setRuleId(voucherRule.getId());
voucher.setRemark(voucherRule.getRemark());
voucher.setDescription(voucherRule.getDescription());
voucher.setShared(voucherRule.getShared());
voucher.setUserLimit(voucherRule.getUserLimit());
voucher.setExclusive(voucherRule.getExclusive());
voucher.setCanUseAmount(voucherRule.getCanUseAmount());
voucher.setFullCutAmount(voucherRule.getFullCutAmount());
voucher.setCreatedTime(new Date());
voucher.setRealName(realName);
voucher.setIdCard(idCard);
voucher.setMobilePhone(mobilePhone);
if(realName != null && !("").equals(realName)){
voucher.setVoucherType(2);
}else{
voucher.setVoucherType(1);
}
return voucher;
}
return voucher;
}
......
......@@ -1306,9 +1306,9 @@ public abstract class AbstractOrderService<H extends AbstractOrderBean<T>, T> ex
if(usedCount != order.getVoucherCount()){
throw new OrderException(-100, "您的抵用劵使用错误");
}
for(VoucherItemBean bean: beanlist){
this.voucherService.voucherUsedSend(bean.getId(), order.getUid(), order.getOrderNo()+"", 1);
}
// for(VoucherItemBean bean: beanlist){
// this.voucherService.voucherUsedSend(bean.getId(), order.getUid(), order.getOrderNo()+"", 1);
// }
}
}
if (order.getPrePayCardAmount().doubleValue() > 0) {
......
......@@ -232,7 +232,7 @@ public class BuyVoucherOrderService extends AbstractOrderService<CommuneOrderBea
BuyVoucherActivity buyVoucherActivity = buyVoucherActivityDao.findById(communeOrderItem.getActivityId());
//执行发券
String uid = order.getUid();//下单人id
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate());
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate(),communeOrderItem.getActivityId());
}
}
......
......@@ -335,7 +335,7 @@ public class CommuneOrderService extends AbstractOrderService<CommuneOrderBean,
this.getOrderDao().updateOrderStatusForMiniApps(order.getOrderNo());
//执行发券
BuyVoucherActivity buyVoucherActivity = buyVoucherActivityDao.findById(newCommuneOrderBean.getActivityId());
voucherService.sendVoucherForPlaceOrderByConfig(newCommuneOrderBean.getUid(), order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate());
voucherService.sendVoucherForPlaceOrderByConfig(newCommuneOrderBean.getUid(), order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate(),communeOrderBean.getActivityId());
// 修改优惠券状态
List<VoucherItemBean> voucherList = communeOrderBean.getVoucherList();
......@@ -388,13 +388,6 @@ public class CommuneOrderService extends AbstractOrderService<CommuneOrderBean,
UserExt userExt = getUserExtDao().getByUid(newCommuneOrderBean.getUid());
BigDecimal communeOrderMoney = new BigDecimal(0);
// if( "19821271996".equals(communeOrderBean.getUid())|| "18503829406".equals(communeOrderBean.getUid())||
// "18339836926".equals(communeOrderBean.getUid()) || "18917215339".equals(communeOrderBean.getUid())|| "15993911776".equals(communeOrderBean.getUid())){
// communeOrderMoney = new BigDecimal("0.01");
// }else{
// communeOrderMoney = communeOrderBean.getAmount();
// }
// communeOrderMoney = communeOrderBean.getAmount();
communeOrderMoney = newCommuneOrderBean.getAmount().subtract(newCommuneOrderBean.getVoucherAmount());
if(communeOrderMoney.compareTo(new BigDecimal(0))> 0){
// 微信支付
......@@ -411,7 +404,7 @@ public class CommuneOrderService extends AbstractOrderService<CommuneOrderBean,
this.getOrderDao().updateOrderStatusForMiniApps(order.getOrderNo());
//执行发券
BuyVoucherActivity buyVoucherActivity = buyVoucherActivityDao.findById(newCommuneOrderBean.getActivityId());
voucherService.sendVoucherForPlaceOrderByConfig(newCommuneOrderBean.getUid(), order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate());
voucherService.sendVoucherForPlaceOrderByConfig(newCommuneOrderBean.getUid(), order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate(),newCommuneOrderBean.getActivityId());
// 修改优惠券状态
List<VoucherItemBean> voucherList = communeOrderBean.getVoucherList();
if(voucherList.size() > 0){
......
......@@ -12,7 +12,9 @@ import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.fastjson.JSONObject;
import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.vo.PagedResponseBean;
......@@ -55,6 +57,7 @@ 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.client.ClientConfigDao;
import com.ctrip.fun.golf.dao.finance.CourseBalanceDao;
import com.ctrip.fun.golf.dao.finance.CourseBalanceTxnDao;
import com.ctrip.fun.golf.dao.finance.CoursePayeeDao;
......@@ -74,6 +77,7 @@ 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.client.ClientConfig;
import com.ctrip.fun.golf.domain.finance.CourseBalance;
import com.ctrip.fun.golf.domain.finance.CourseBalanceTxn;
import com.ctrip.fun.golf.domain.finance.CoursePayee;
......@@ -147,6 +151,9 @@ public class OpCourseOrderService extends AbstractOpOrderService<CourseOrderProc
private CourseProductDao courseProductDao = null;
private FlashSaleDao flashSaleDao = null;
@Autowired
private ClientConfigDao clientConfigDao ;
public OrderItem getOrderItem(Integer orderId) {
List<OrderItem> orderItems = this.orderItemDao.getOrderItemByOrderID(orderId);
......@@ -570,32 +577,50 @@ public class OpCourseOrderService extends AbstractOpOrderService<CourseOrderProc
courseBalanceTxn.setArrivalStatus(CourseBalanceArrivalStatusEnum.ARRIVALED.getValue());
courseBalanceTxnDao.save(courseBalanceTxn);
}
// 3.3、退抵用券
if (orderProcessBean.getRefundVoucherIds() != null) {
BigDecimal refundVoucher = BigDecimal.ZERO;
for (Integer id : orderProcessBean.getRefundVoucherIds()) {
Voucher voucher = this.voucherDao.findById(id);
if (voucher != null) {
if (voucher.getUsed() == VourcherUsedEnum.UNUSED.getKey()) {
logger.warn(voucher.getId() + ":未使用");
continue;
}
if (voucher.getAmount() != null) {
refundVoucher = voucher.getAmount().add(refundVoucher);
}
voucher.setUseDate(null);
voucher.setUsed(VourcherUsedEnum.UNUSED.getKey());
voucher.setOrderNo(0);
voucherDao.update(voucher);
}
}
BigDecimal voucherRefundAmount = order.getVoucherRefundAmount();
if (voucherRefundAmount != null) {
order.setVoucherRefundAmount(refundVoucher.add(voucherRefundAmount));
} else {
order.setVoucherRefundAmount(refundVoucher);
}
}
BigDecimal refundVoucher = BigDecimal.ZERO;
for (Integer id : orderProcessBean.getRefundVoucherIds()) {
Voucher voucher = this.voucherDao.findById(id);
if (voucher != null) {
if (voucher.getUsed() == VourcherUsedEnum.UNUSED.getKey()) {
logger.warn(voucher.getId() + ":未使用");
continue;
}
if (voucher.getAmount() != null) {
refundVoucher = voucher.getAmount().add(refundVoucher);
}
/**
* 退单时涉及无限券退单,需将原来发放出去的无限券收回
*/
ClientConfig clientConfig = clientConfigDao.getByType("voucher_used_send");
JSONObject jsobj = JSONObject.parseObject(clientConfig.getMessage());
if(jsobj.get(voucher.getRuleId()+"")!=null){
voucher.setUseDate(null);
voucher.setUsed(VourcherUsedEnum.UNUSED.getKey());
voucher.setOrderNo(0);
voucher.setDeleteStatus(1);
voucher.setDeleteTime(new Date());
voucher.setOperator("system-wxq");
voucherDao.update(voucher);
}else{
voucher.setUseDate(null);
voucher.setUsed(VourcherUsedEnum.UNUSED.getKey());
voucher.setOrderNo(0);
voucherDao.update(voucher);
}
}
}
order.setIsSendVoucher(0);
getOrderDao().update(order);
BigDecimal voucherRefundAmount = order.getVoucherRefundAmount();
if (voucherRefundAmount != null) {
order.setVoucherRefundAmount(refundVoucher.add(voucherRefundAmount));
} else {
order.setVoucherRefundAmount(refundVoucher);
}
}
// 3.4、退在线支付
// 3.4.1、更新在线退款金额:手动退款则加上退款金额
if (isManual && orderProcessBean.getRefundAmount() != null && orderProcessBean.getRefundAmount() != 0) {
......
......@@ -36,7 +36,7 @@ public class BuyVoucherNotifyService extends AbstractNotifyService {
BuyVoucherActivity buyVoucherActivity = buyVoucherActivityDao.findById(communeOrderItem.getActivityId());
//执行发券
String uid = order.getUid();//下单人id
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate());
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate(),buyVoucherActivity.getId());
}
......
......@@ -85,7 +85,7 @@ public class CommuneNotifyService extends AbstractNotifyService {
if(communeOrderItem.getActivityId() != null ){
//执行发券
BuyVoucherActivity buyVoucherActivity = buyVoucherActivityDao.findById(communeOrderItem.getActivityId());
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate());
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate(),communeOrderItem.getActivityId());
}
}
......@@ -118,7 +118,7 @@ public class CommuneNotifyService extends AbstractNotifyService {
if(!"".equals(order.getRealName()) && !"".equals(order.getIdCard()) && order.getIdCard()!=null &&order.getRealName()!=null){
// voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),order.getRealName(),order.getIdCard(),order.getMobilePhone());
}else{
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate());
voucherService.sendVoucherForPlaceOrderByConfig(uid, order.getOrderId()+"", true, buyVoucherActivity.getVoucherConfig(),"","","",order.getPayDate(),communeOrderItem.getActivityId());
}
//给推荐人发现金红包
......@@ -128,8 +128,8 @@ public class CommuneNotifyService extends AbstractNotifyService {
amount = amount.multiply(new BigDecimal(100));
WeiXinAtcion.weixinPlay1(user.getMiniAppOpenId(), amount.toString().substring(0, amount.toString().length() - 3), order.getOrderNo(), buyVoucherActivity.getSendName(), buyVoucherActivity.getActName(), buyVoucherActivity.getWishing());
}
// 优惠券状态
// 优惠券状态
if(!"".equals(order.getVoucherIDList()) && order.getVoucherIDList() != null){
String[] voucherIds = order.getVoucherIDList().split(",");
voucherService.userVoucher(voucherIds.length, order.getOrderNo(), order.getVoucherIDList());
......
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