|
@@ -3,11 +3,13 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.VipSubmitReq;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.*;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
|
|
@@ -21,15 +23,14 @@ import com.yonge.cooleshow.biz.dal.vo.*;
|
|
|
|
|
|
import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
|
|
|
-import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
|
|
|
import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
|
import com.yonge.cooleshow.common.enums.ActivityShareEnum;
|
|
|
-import com.yonge.cooleshow.common.enums.RewardTypeEnum;
|
|
|
import com.yonge.cooleshow.common.enums.YesOrNoEnum;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
-import com.yonge.toolset.base.string.MessageFormatter;
|
|
|
import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
|
+import org.joda.time.DateTime;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -37,9 +38,11 @@ import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@Service
|
|
@@ -66,6 +69,9 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
private UserOrderService userOrderService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private UserOrderDao userOrderDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private RedisCacheService redisCacheService;
|
|
|
|
|
|
@Override
|
|
@@ -88,16 +94,32 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
public HttpResponseResult<OrderCreateRes> orderCreate(OrderReq.OrderReqInfo orderReqInfo) {
|
|
|
MemberPriceSettingsVo detail = detail(Long.parseLong(orderReqInfo.getBizContent().toString()));
|
|
|
if (null == detail) {
|
|
|
- return HttpResponseResult.failed("未找到会员卡信息");
|
|
|
+ return HttpResponseResult.failed("产品信息已更新,请重新选择");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!orderReqInfo.getOrderType().name().equals(detail.getVipType().name())) {
|
|
|
+ return HttpResponseResult.failed("产品信息已更新,请重新选择");
|
|
|
}
|
|
|
|
|
|
+ if (Boolean.FALSE.equals(detail.getStatus())) {
|
|
|
+ return HttpResponseResult.failed("产品信息已更新,请重新选择");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 判断是否有待支付订单 如果有返回不可下单
|
|
|
+ checkOrder(orderReqInfo.getOrderClient(), orderReqInfo.getOrderType().name(), orderReqInfo.getUserId());
|
|
|
+
|
|
|
+
|
|
|
+ checkVip(detail, orderReqInfo.getVipEndDays(), orderReqInfo.getUserId(), orderReqInfo.getOrderClient(), orderReqInfo.getGoodsNum(),orderReqInfo.getBizPrice());
|
|
|
+
|
|
|
OrderCreateRes orderCreateRes = new OrderCreateRes();
|
|
|
BigDecimal couponAmount = BigDecimal.ZERO;
|
|
|
ActivityPlanVo activityPlanVo = activityPlanService.detail(orderReqInfo.getActivityId());
|
|
|
|
|
|
if (activityPlanVo != null && activityPlanVo.getActivityState() == 1) {
|
|
|
for (ActivityPlanRewardDto activityPlanRewardDto : activityPlanVo.getActivityRewardList()) {
|
|
|
- if (activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
|
|
|
+ if (activityPlanRewardDto.getActivityReward().getRewardType().getCode().equals(detail.getVipType().getCode())
|
|
|
+ && activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
|
|
|
couponAmount = activityPlanRewardDto.getActivityReward().getDiscountPrice();
|
|
|
orderCreateRes.setActivityId(activityPlanVo.getId());
|
|
|
orderCreateRes.setRewardId(activityPlanRewardDto.getActivityReward().getId());
|
|
@@ -110,14 +132,70 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
orderCreateRes.setMerchId(0l);
|
|
|
orderCreateRes.setBizId(detail.getId());
|
|
|
orderCreateRes.setBizContent("会员卡购买-" + detail.getPeriod().getMsg());
|
|
|
- orderCreateRes.setGoodNum(1);
|
|
|
- orderCreateRes.setOriginalPrice(detail.getOriginalPrice());
|
|
|
- orderCreateRes.setCouponAmount(couponAmount);
|
|
|
- orderCreateRes.setExpectPrice(detail.getSalePrice());
|
|
|
+ orderCreateRes.setGoodNum(orderReqInfo.getGoodsNum());
|
|
|
+ orderCreateRes.setOriginalPrice(detail.getOriginalPrice().multiply(new BigDecimal(orderReqInfo.getGoodsNum())));
|
|
|
+ orderCreateRes.setCouponAmount(couponAmount.multiply(new BigDecimal(orderReqInfo.getGoodsNum())));
|
|
|
+ orderCreateRes.setExpectPrice(detail.getSalePrice().multiply(new BigDecimal(orderReqInfo.getGoodsNum())));
|
|
|
orderCreateRes.setSourceType(SourceTypeEnum.PLATFORM);
|
|
|
+ UserPaymentOrderWrapper.VipDays vipDays = new UserPaymentOrderWrapper.VipDays();
|
|
|
+ vipDays.setVipEndDays(orderReqInfo.getVipEndDays());
|
|
|
+ orderCreateRes.setBizJson(JSON.toJSONString(vipDays));
|
|
|
return HttpResponseResult.succeed(orderCreateRes);
|
|
|
}
|
|
|
|
|
|
+ private void checkVip(MemberPriceSettingsVo detail, Integer vipDays, Long userId, ClientEnum client, Integer num, BigDecimal bizPrice) {
|
|
|
+ // 判断会员剩余天数是否改变
|
|
|
+ if (detail.getVipType() == EVipType.SVIP && vipDays != null && vipDays > 0) {
|
|
|
+ VipCardRecordWrapper.UserVip userVip = vipCardRecordService.userVipInfo(userId, client);
|
|
|
+ if (!userVip.getVipEndDays().equals(vipDays)) {
|
|
|
+ throw new BizException(998, "您当前VIP天数更新,请刷新后尝试");
|
|
|
+ }
|
|
|
+ // 判断能不能升级
|
|
|
+ // 按时间区分 个数
|
|
|
+ int days = getSvipDays(detail, num, userVip);
|
|
|
+ if (days < userVip.getVipEndDays()) {
|
|
|
+ throw new BizException(998, "您当前VIP天数更新,请刷新后尝试");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (bizPrice !=null && detail.getSalePrice().compareTo(bizPrice) !=0) {
|
|
|
+ throw new BizException(999, "产品信息已更新,请重新选择");
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getSvipDays(MemberPriceSettingsVo detail, Integer num, VipCardRecordWrapper.UserVip userVip) {
|
|
|
+ Integer timeNum = num;
|
|
|
+
|
|
|
+ // 判断当前时间 加 一段时间后,和当前天数比较
|
|
|
+ Date svipStartDate = new Date();
|
|
|
+ if (userVip.getSvipEndDate() != null) {
|
|
|
+ svipStartDate = userVip.getSvipEndDate();
|
|
|
+ }
|
|
|
+
|
|
|
+ DateTime dateTime = DateTime.parse(DateUtil.format(svipStartDate, "yyyy-MM-dd"))
|
|
|
+ .withHourOfDay(23)
|
|
|
+ .withMinuteOfHour(59)
|
|
|
+ .withSecondOfMinute(59)
|
|
|
+ .withMillisOfSecond(0);
|
|
|
+ if (PeriodEnum.DAY.equals(detail.getPeriod())) {
|
|
|
+ dateTime=dateTime.plusDays(timeNum);
|
|
|
+ } else if (PeriodEnum.MONTH.equals(detail.getPeriod())) {
|
|
|
+ dateTime=dateTime.plusMonths(timeNum);
|
|
|
+ } else if (PeriodEnum.QUARTERLY.equals(detail.getPeriod())) {
|
|
|
+ dateTime=dateTime.plusMonths(3 * timeNum);
|
|
|
+ } else if (PeriodEnum.YEAR_HALF.equals(detail.getPeriod())) {
|
|
|
+ dateTime=dateTime.plusMonths(6 * timeNum);
|
|
|
+ } else if (PeriodEnum.YEAR.equals(detail.getPeriod())) {
|
|
|
+ dateTime=dateTime.plusYears(timeNum);
|
|
|
+ } else if (PeriodEnum.PERPETUAL.equals(detail.getPeriod())) {
|
|
|
+ dateTime=dateTime.plusYears(100);
|
|
|
+ }
|
|
|
+ Date date = dateTime.toDate();
|
|
|
+ // 比较两个时间 天数差
|
|
|
+ int days = DateUtil.daysBetween(svipStartDate, date);
|
|
|
+ return days;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void orderSuccess(UserOrderDetailVo orderDetailVo) {
|
|
|
orderSuccess(orderDetailVo,true);
|
|
@@ -126,25 +204,101 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
@Override
|
|
|
public void orderSuccess(UserOrderDetailVo orderDetailVo,boolean messageFlag) {
|
|
|
|
|
|
- VipCardRecord vipCardRecord = vipCardRecordService.buildVipCardRecordByOrderDetail(orderDetailVo);
|
|
|
+ if (null == orderDetailVo) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ MemberPriceSettingsVo detail = detail(orderDetailVo.getBizId());
|
|
|
+
|
|
|
+
|
|
|
+ VipCardRecordWrapper.AddVipCardRecord addVipCardRecord = new VipCardRecordWrapper.AddVipCardRecord();
|
|
|
+
|
|
|
+ addVipCardRecord.setUserId(orderDetailVo.getUserId());
|
|
|
+ addVipCardRecord.setClientType(orderDetailVo.getOrderClient());
|
|
|
+ addVipCardRecord.setStatus(EVipRecordStatus.ADD);
|
|
|
+ addVipCardRecord.setVipType(detail.getVipType());
|
|
|
+ addVipCardRecord.setType(detail.getPeriod());
|
|
|
+ addVipCardRecord.setTimes(orderDetailVo.getGoodNum());
|
|
|
+ addVipCardRecord.setSendMsg(false);
|
|
|
+ addVipCardRecord.setSourceType(SourceTypeEnum.ORDER);
|
|
|
+ addVipCardRecord.setCreateBy(orderDetailVo.getUserId());
|
|
|
+ addVipCardRecord.setOrderNo(orderDetailVo.getOrderNo());
|
|
|
+ addVipCardRecord.setSubOrderNo(orderDetailVo.getSubOrderNo());
|
|
|
+ addVipCardRecord.setVipCardId(orderDetailVo.getBizId());
|
|
|
+ addVipCardRecord.setOrderFlag(true);
|
|
|
+
|
|
|
+ // 判断转换天数
|
|
|
+
|
|
|
+ VipCardRecordWrapper.UserVip userVip = vipCardRecordService.userVipInfo(orderDetailVo.getUserId(), orderDetailVo.getOrderClient());
|
|
|
+ int svipDays = getSvipDays(detail, orderDetailVo.getGoodNum(), userVip);
|
|
|
+ if (detail.getVipType() == EVipType.SVIP &&userVip.getVipEndDays() !=null && svipDays >=userVip.getVipEndDays()) {
|
|
|
+ addVipCardRecord.setVipDays(userVip.getVipEndDays());
|
|
|
+ if (userVip.getVipType() == EVipType.VIP) {
|
|
|
+ addVipCardRecord.setVipDays(Math.max(userVip.getVipEndDays()-1,0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ addVipCardRecord.setReason("会员购买");
|
|
|
+ vipCardRecordService.add(addVipCardRecord);
|
|
|
|
|
|
- UserVipInfoVo userVipInfoVo = getUserVipInfoVo(vipCardRecord);
|
|
|
//会员购买消息推送
|
|
|
if (messageFlag) {
|
|
|
- authSend(userVipInfoVo.getUserId(), userVipInfoVo.getPhone(), DateUtil.format(vipCardRecord.getEndTime(), DateUtil.DEFAULT_PATTERN), orderDetailVo.getOrderClient());
|
|
|
+
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(orderDetailVo.getUserId());
|
|
|
+ if (sysUser == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 按时间区分 个数
|
|
|
+ Integer timeNum = 0;
|
|
|
+ PeriodEnum periodType = null;
|
|
|
+ if (PeriodEnum.DAY.equals(detail.getPeriod())) {
|
|
|
+ timeNum = 1;
|
|
|
+ periodType = PeriodEnum.DAY;
|
|
|
+ } else if (PeriodEnum.MONTH.equals(detail.getPeriod())) {
|
|
|
+ timeNum = 1;
|
|
|
+ periodType = PeriodEnum.MONTH;
|
|
|
+ } else if (PeriodEnum.QUARTERLY.equals(detail.getPeriod())) {
|
|
|
+ timeNum = 3;
|
|
|
+ periodType = PeriodEnum.MONTH;
|
|
|
+ } else if (PeriodEnum.YEAR_HALF.equals(detail.getPeriod())) {
|
|
|
+ timeNum = 6;
|
|
|
+ periodType = PeriodEnum.MONTH;
|
|
|
+ } else if (PeriodEnum.YEAR.equals(detail.getPeriod())) {
|
|
|
+ timeNum = 1;
|
|
|
+ periodType = PeriodEnum.YEAR;
|
|
|
+ } else if (PeriodEnum.PERPETUAL.equals(detail.getPeriod())) {
|
|
|
+ timeNum = 1;
|
|
|
+ periodType = PeriodEnum.PERPETUAL;
|
|
|
+ }
|
|
|
+ if (periodType == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String s = timeNum + periodType.getMsg() + addVipCardRecord.getVipType().getName();
|
|
|
+ if (PeriodEnum.PERPETUAL.equals(detail.getPeriod())) {
|
|
|
+ s =addVipCardRecord.getVipType().getName();
|
|
|
+ }
|
|
|
+ authSend(sysUser.getId(), sysUser.getPhone(), s, orderDetailVo.getOrderClient());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public void activityReward(Long userId, ClientEnum client, ActivityReward activityReward, Long activityId,String activityName) {
|
|
|
|
|
|
- VipCardRecord vipCardRecord = vipCardRecordService.buildVipCardRecordByOrderDetail(userId,client,activityReward,activityId,activityName);
|
|
|
- if (vipCardRecord == null) {
|
|
|
- return;
|
|
|
- }
|
|
|
+ VipCardRecordWrapper.AddVipCardRecord addVipCardRecord = new VipCardRecordWrapper.AddVipCardRecord();
|
|
|
+
|
|
|
+ addVipCardRecord.setUserId(userId);
|
|
|
+ addVipCardRecord.setClientType(client);
|
|
|
+ addVipCardRecord.setStatus(EVipRecordStatus.ADD);
|
|
|
+ addVipCardRecord.setVipType(EVipType.valueOf(activityReward.getRewardType().name()));
|
|
|
+ addVipCardRecord.setType(PeriodEnum.valueOf(activityReward.getUnit().name()));
|
|
|
+ addVipCardRecord.setTimes(activityReward.getNum());
|
|
|
+ addVipCardRecord.setSendMsg(false);
|
|
|
+ addVipCardRecord.setCreateBy(userId);
|
|
|
+ addVipCardRecord.setSourceType(SourceTypeEnum.ACTIVITY);
|
|
|
+ vipCardRecordService.add(addVipCardRecord);
|
|
|
|
|
|
- getUserVipInfoVo(vipCardRecord);
|
|
|
}
|
|
|
|
|
|
private UserVipInfoVo getUserVipInfoVo(VipCardRecord vipCardRecord) {
|
|
@@ -212,19 +366,20 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Boolean addVip(VipSubmitReq vipSubmitReq, ClientEnum client, SysUser sysUser) {
|
|
|
-
|
|
|
- VipCardRecord vipCardRecord = vipCardRecordService.getVipCardRecord(vipSubmitReq.getUserId(), client, null, null, vipSubmitReq.getType().toString(),
|
|
|
- null, vipSubmitReq.getTimes(),SourceTypeEnum.PLATFORM, sysUser.getId(), vipSubmitReq.getReason());
|
|
|
-
|
|
|
- getUserVipInfoVo(vipCardRecord);
|
|
|
-
|
|
|
- // 发消息
|
|
|
- sendAddVipMessage(vipSubmitReq.getUserId(),sysUser.getPhone(),client,vipSubmitReq.getTimes(),vipSubmitReq.getType(),vipSubmitReq.getReason());
|
|
|
-
|
|
|
- return true;
|
|
|
- }
|
|
|
+// @Deprecated
|
|
|
+// @Override
|
|
|
+// public Boolean addVip(VipSubmitReq vipSubmitReq, ClientEnum client, SysUser sysUser) {
|
|
|
+//
|
|
|
+// VipCardRecord vipCardRecord = vipCardRecordService.getVipCardRecord(vipSubmitReq.getUserId(), client, null, null, vipSubmitReq.getType().toString(),
|
|
|
+// null, vipSubmitReq.getTimes(),SourceTypeEnum.PLATFORM, sysUser.getId(), vipSubmitReq.getReason());
|
|
|
+//
|
|
|
+// getUserVipInfoVo(vipCardRecord);
|
|
|
+//
|
|
|
+// // 发消息
|
|
|
+// sendAddVipMessage(vipSubmitReq.getUserId(),sysUser.getPhone(),client,vipSubmitReq.getTimes(),vipSubmitReq.getType(),vipSubmitReq.getReason());
|
|
|
+//
|
|
|
+// return true;
|
|
|
+// }
|
|
|
|
|
|
@Override
|
|
|
public MemberPriceVo getVipShare(MemberPriceSettingsSearch query) {
|
|
@@ -248,7 +403,8 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
|
|
|
for (ActivityPlanRewardDto activityPlanRewardDto : activityPlan.getActivityRewardList()) {
|
|
|
for (MemberPriceSettingsVo memberPriceSettingsVo : memberPriceSettingsVos) {
|
|
|
- if (memberPriceSettingsVo.getPeriod().getCode().equals( activityPlanRewardDto.getActivityReward().getUnit().getCode())) {
|
|
|
+ if (activityPlanRewardDto.getActivityReward().getRewardType().getCode().equals(memberPriceSettingsVo.getVipType().getCode())
|
|
|
+ && activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(memberPriceSettingsVo.getPeriod().getCode())) {
|
|
|
memberPriceSettingsVo.setDiscount(YesOrNoEnum.YES);
|
|
|
memberPriceSettingsVo.setDiscountPrice(activityPlanRewardDto.getActivityReward().getDiscountPrice());
|
|
|
}
|
|
@@ -261,14 +417,29 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
public void orderCreate(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo) {
|
|
|
MemberPriceSettingsVo detail = detail(Long.parseLong(orderGoodsInfo.getBizContent().toString()));
|
|
|
if (null == detail) {
|
|
|
- throw new BizException("未找到会员卡信息");
|
|
|
+ throw new BizException(999,"产品信息已更新,请重新选择");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!orderGoodsInfo.getGoodType().name().equals(detail.getVipType().name())) {
|
|
|
+ throw new BizException(999,"产品信息已更新,请重新选择");
|
|
|
+ }
|
|
|
+ if (Boolean.FALSE.equals(detail.getStatus())) {
|
|
|
+ throw new BizException(999,"产品信息已更新,请重新选择");
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ checkOrder(orderGoodsInfo.getPaymentClient(), detail.getVipType().name(), orderGoodsInfo.getUserId());
|
|
|
+
|
|
|
+ // 判断会员剩余天数是否改变
|
|
|
+ checkVip(detail, orderGoodsInfo.getVipEndDays(), orderGoodsInfo.getUserId(), orderGoodsInfo.getPaymentClient(), orderGoodsInfo.getGoodNum(), orderGoodsInfo.getBizPrice());
|
|
|
+
|
|
|
BigDecimal couponAmount = BigDecimal.ZERO;
|
|
|
ActivityPlanVo activityPlanVo = activityPlanService.detail(orderGoodsInfo.getActivityId());
|
|
|
|
|
|
if (activityPlanVo != null && activityPlanVo.getActivityState() == 1) {
|
|
|
for (ActivityPlanRewardDto activityPlanRewardDto : activityPlanVo.getActivityRewardList()) {
|
|
|
- if (activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
|
|
|
+ if (activityPlanRewardDto.getActivityReward().getRewardType().getCode().equals(detail.getVipType().getCode())
|
|
|
+ && activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
|
|
|
couponAmount = activityPlanRewardDto.getActivityReward().getDiscountPrice();
|
|
|
break;
|
|
|
}
|
|
@@ -281,13 +452,16 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
userOrderDetail.setMerchId(0l);
|
|
|
userOrderDetail.setBizId(detail.getId());
|
|
|
userOrderDetail.setBizContent("会员卡购买-" + detail.getPeriod().getMsg());
|
|
|
- userOrderDetail.setGoodNum(1);
|
|
|
- userOrderDetail.setOriginalPrice(detail.getOriginalPrice());
|
|
|
- userOrderDetail.setCouponAmount(couponAmount);
|
|
|
- userOrderDetail.setExpectPrice(detail.getSalePrice());
|
|
|
+ userOrderDetail.setGoodNum(orderGoodsInfo.getGoodNum());
|
|
|
+ userOrderDetail.setOriginalPrice(detail.getOriginalPrice().multiply(new BigDecimal(orderGoodsInfo.getGoodNum())));
|
|
|
+ userOrderDetail.setCouponAmount(couponAmount.multiply(new BigDecimal(orderGoodsInfo.getGoodNum())));
|
|
|
+ userOrderDetail.setExpectPrice(detail.getSalePrice().multiply(new BigDecimal(orderGoodsInfo.getGoodNum())));
|
|
|
userOrderDetail.setActualPrice(userOrderDetail.getExpectPrice().subtract(couponAmount));
|
|
|
orderGoodsInfo.setUserOrderDetail(userOrderDetail);
|
|
|
|
|
|
+ UserPaymentOrderWrapper.VipDays vipDays = new UserPaymentOrderWrapper.VipDays();
|
|
|
+ vipDays.setVipEndDays(orderGoodsInfo.getVipEndDays());
|
|
|
+ userOrderDetail.setBizJson(JSON.toJSONString(vipDays));
|
|
|
userOrderDetail.setAccountConfig( teacherService.teacherSettlementFrom(null,orderGoodsInfo.getRecomUserId()).jsonString());
|
|
|
|
|
|
// 设置金额入账去向
|
|
@@ -296,6 +470,19 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private void checkOrder(ClientEnum orderGoodsInfo, String orderType, Long userId) {
|
|
|
+ // 判断是否有待支付订单 如果有返回不可下单
|
|
|
+ OrderSearch search = new OrderSearch();
|
|
|
+ search.setOrderClient(orderGoodsInfo.name());
|
|
|
+ search.setGoodType(Lists.newArrayList(GoodTypeEnum.VIP, GoodTypeEnum.SVIP).stream().map(GoodTypeEnum::name).collect(Collectors.joining(",")));
|
|
|
+ search.setUserId(userId);
|
|
|
+
|
|
|
+ UserOrderVo userOrderVo = userOrderDao.getPendingOrder(search);
|
|
|
+ if (null != userOrderVo) {
|
|
|
+ throw new BizException(997, "您有未支付订单,请先支付");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void sendAddVipMessage(Long userId,String phone, ClientEnum client, Integer times, PeriodEnum type, String reason) {
|
|
|
try {
|
|
|
Map<Long, String> receivers = new HashMap<>();
|
|
@@ -348,28 +535,28 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
receivers.put(userId, phone);
|
|
|
|
|
|
// 判断是否是机构学生 机构学生推送走另一个
|
|
|
- Student student = studentService.getById(userId);
|
|
|
- if (clientEnum.equals(ClientEnum.STUDENT) && student != null && student.getTenantId() != null && student.getTenantId() >0) {
|
|
|
- try {
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_VIP_BUY,
|
|
|
- receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(),param1);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("会员购买极光消息推送异常,userId={}", userId);
|
|
|
- }
|
|
|
- } else {
|
|
|
- try {
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_BUY_SUCCESS,
|
|
|
- receivers, null, 0, null, clientEnum.getCode(), param1);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("会员购买极光消息推送异常,userId={}", userId);
|
|
|
+
|
|
|
+ try {
|
|
|
+ MessageTypeEnum messageTypeEnum = MessageTypeEnum.NEW_VIP_BUY_SUCCESS;
|
|
|
+ if (clientEnum == ClientEnum.TEACHER) {
|
|
|
+ messageTypeEnum= MessageTypeEnum.NEW_TEACHER_VIP_BUY_SUCCESS;
|
|
|
}
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, messageTypeEnum,
|
|
|
+ receivers, null, 0, null, clientEnum.getCode(), param1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("会员购买极光消息推送异常,userId={}", userId);
|
|
|
+ }
|
|
|
|
|
|
- try {
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_BUY_SUCCESS,
|
|
|
- receivers, null, 0, null, clientEnum.getCode(), param1);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("会员购买短信消息推送异常,userId={}", userId);
|
|
|
+ try {
|
|
|
+
|
|
|
+ MessageTypeEnum messageTypeEnum = MessageTypeEnum.SMS_NEW_VIP_BUY_SUCCESS;
|
|
|
+ if (clientEnum == ClientEnum.TEACHER) {
|
|
|
+ messageTypeEnum= MessageTypeEnum.SMS_TEACHER_NEW_VIP_BUY_SUCCESS;
|
|
|
}
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, messageTypeEnum,
|
|
|
+ receivers, null, 0, null, clientEnum.getCode(), param1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("会员购买短信消息推送异常,userId={}", userId);
|
|
|
}
|
|
|
|
|
|
}
|