|
@@ -14,6 +14,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
|
|
|
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.mapper.DiscountCardRecordMapper;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.*;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
|
|
@@ -28,7 +29,6 @@ import com.yonge.cooleshow.common.enums.YesOrNoEnum;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
import org.joda.time.DateTime;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -38,7 +38,6 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -69,6 +68,15 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
@Autowired
|
|
|
private UserOrderDao userOrderDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private DiscountCardRecordMapper discountCardRecordMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserOrderDetailService orderDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MemberPriceSettingsService memberPriceSettingsService;
|
|
|
+
|
|
|
@Override
|
|
|
public MemberPriceSettingsVo detail(Long id) {
|
|
|
return baseMapper.detail(id);
|
|
@@ -346,6 +354,83 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public MemberPriceSettingsWrapper.UserDiscount getDiscountByOrder(Long userId, Long orderDetilId) {
|
|
|
+ MemberPriceSettingsWrapper.UserDiscount result = null;
|
|
|
+ MemberPriceSettings detail = discountCardRecordMapper.detail(userId,orderDetilId);
|
|
|
+ if (detail == null && null != userId) {
|
|
|
+ detail = new MemberPriceSettings();
|
|
|
+ UserOrderDetailVo orderDetailVo = orderDetailService.detail(orderDetilId);
|
|
|
+
|
|
|
+ if (null == orderDetailVo) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ detail = memberPriceSettingsService.detail(orderDetailVo.getBizId());
|
|
|
+ if (null == detail) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ result = JSON.parseObject(JSON.toJSONString(detail), MemberPriceSettingsWrapper.UserDiscount.class);
|
|
|
+ // 按时间区分 个数
|
|
|
+ Integer timeNum = orderDetailVo.getGoodNum();
|
|
|
+ String periodType = null;
|
|
|
+
|
|
|
+ if (PeriodEnum.DAY.equals(detail.getPeriod())) {
|
|
|
+ periodType = PeriodEnum.DAY.getCode();
|
|
|
+ } else if (PeriodEnum.MONTH.equals(detail.getPeriod())) {
|
|
|
+ periodType = PeriodEnum.MONTH.getCode();
|
|
|
+ } else if (PeriodEnum.QUARTERLY.equals(detail.getPeriod())) {
|
|
|
+ timeNum = timeNum * 3;
|
|
|
+ periodType = PeriodEnum.MONTH.getCode();
|
|
|
+ } else if (PeriodEnum.YEAR_HALF.equals(detail.getPeriod())) {
|
|
|
+ timeNum = timeNum * 6;
|
|
|
+ periodType = PeriodEnum.MONTH.getCode();
|
|
|
+ } else if (PeriodEnum.YEAR.equals(detail.getPeriod())) {
|
|
|
+ periodType = PeriodEnum.YEAR.getCode();
|
|
|
+ } else {
|
|
|
+ periodType = PeriodEnum.PERPETUAL.getCode();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Student student = studentService.getById(userId);
|
|
|
+
|
|
|
+ Date startTime = student.getDiscountStartTime();
|
|
|
+
|
|
|
+
|
|
|
+ boolean flag = false;
|
|
|
+ if (startTime == null) {
|
|
|
+ startTime = new Date();
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.setTime(startTime);
|
|
|
+
|
|
|
+ if (PeriodEnum.DAY.getCode().equals(periodType)) {
|
|
|
+ cal.add(Calendar.DAY_OF_MONTH, timeNum);
|
|
|
+ } else if (PeriodEnum.MONTH.getCode().equals(periodType)) {
|
|
|
+ cal.add(Calendar.MONTH, timeNum);
|
|
|
+ } else if (PeriodEnum.YEAR.getCode().equals(periodType)) {
|
|
|
+ cal.add(Calendar.YEAR, timeNum);
|
|
|
+ }
|
|
|
+ Date endTime = cal.getTime();
|
|
|
+ if (flag) {
|
|
|
+ DateTime dateTime = DateTime.parse(DateUtil.format(startTime, "yyyy-MM-dd"))
|
|
|
+ .plusDays(1)
|
|
|
+ .withHourOfDay(0)
|
|
|
+ .withMinuteOfHour(0)
|
|
|
+ .withSecondOfMinute(0)
|
|
|
+ .withMillisOfSecond(0);
|
|
|
+ startTime = dateTime.toDate();
|
|
|
+ }
|
|
|
+ result.setDiscountStartTime(startTime);
|
|
|
+ result.setDiscountEndTime(endTime);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ result = JSON.parseObject(JSON.toJSONString(detail), MemberPriceSettingsWrapper.UserDiscount.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|