package com.dsh.course.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.entity.TCoursePackageDiscount;
import com.dsh.course.feignclient.other.StoreClient;
import com.dsh.course.feignclient.other.model.GetDistanceVo;
import com.dsh.course.mapper.TCoursePackageDiscountMapper;
import com.dsh.course.mapper.TCoursePackageMapper;
import com.dsh.course.model.vo.response.WeekLimitedResponse;
import com.dsh.course.service.TCoursePackageDiscountService;
import com.dsh.course.util.DateTimeHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* 课包折扣 服务实现类
*
*
* @author administrator
* @since 2023-06-14
*/
@Service
public class TCoursePackageDiscountServiceImpl extends ServiceImpl implements TCoursePackageDiscountService {
@Resource
private TCoursePackageMapper tcpMapper;
@Resource
private StoreClient sreClient;
@Override
public WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId,Integer discountType,String lon,String lat) {
Date start = DateTimeHelper.getTodayTime();
Date lastTime = DateTimeHelper.getWeekOfLastDay();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
WeekLimitedResponse response= new WeekLimitedResponse();
List list = new ArrayList<>();
QueryWrapper tCoursePackageDiscountQueryWrapper = new QueryWrapper<>();
tCoursePackageDiscountQueryWrapper.eq("auditStatus",2 );
List tCoursePackageDiscounts = new ArrayList<>();
if (null == discountType || discountType == 1){
tCoursePackageDiscountQueryWrapper.eq("type",3);
response.setDiscountType(1);
tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
if (tCoursePackageDiscounts.size() > 0){
for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
WeekLimitedResponse.Details ls = new WeekLimitedResponse.Details();
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = null;
rootNode = objectMapper.readTree(tCoursePackageDiscount.getContent());
String courseHours = rootNode.get("courseHours").asText();
String lifespanEnd = rootNode.get("lifespanEnd").asText();
Date endTime = simpleDateFormat.parse(lifespanEnd);
if (endTime.compareTo(lastTime) < 0){
continue;
}
TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
GetDistanceVo distanceVo = new GetDistanceVo();
distanceVo.setLatitude(lat);
distanceVo.setLongitude(lon);
distanceVo.setStoreId(coursePackage.getStoreId());
ls.setStoreDistance(sreClient.calculateDistance(distanceVo));
// TODO: 2023/7/10 限时折扣查询
list.add(ls);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}else {
tCoursePackageDiscountQueryWrapper.eq("type",4);
response.setDiscountType(2);
tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
if (tCoursePackageDiscounts.size() > 0){
for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = null;
rootNode = objectMapper.readTree(tCoursePackageDiscount.getContent());
String courseHours = rootNode.get("courseHours").asText();
String lifespanStart = rootNode.get("lifespanStart").asText();
String lifespanEnd = rootNode.get("lifespanEnd").asText();
String classHours = rootNode.get("classHours").asText();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return response;
}
}