package com.dsh.course.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.Person;
import com.alipay.api.request.AlipayTradeOrderSettleRequest;
import com.alipay.api.response.AlipayTradeOrderSettleResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.*;
import com.dsh.course.entity.TAppUser;
import com.dsh.course.entity.dto.StudentQeryDto;
import com.dsh.course.feignclient.account.AppUserClient;
import com.dsh.course.feignclient.account.CoachClient;
import com.dsh.course.feignclient.account.StudentClient;
import com.dsh.course.feignclient.account.UserIntegralChangesClient;
import com.dsh.course.feignclient.account.model.*;
import com.dsh.course.feignclient.activity.BenefitVideoClient;
import com.dsh.course.feignclient.activity.CouponClient;
import com.dsh.course.feignclient.activity.model.BenefitsVideos;
import com.dsh.course.feignclient.activity.model.Coupon;
import com.dsh.course.feignclient.model.RecordAppoint;
import com.dsh.course.feignclient.other.StoreClient;
import com.dsh.course.feignclient.other.model.Store;
import com.dsh.course.mapper.*;
import com.dsh.course.model.*;
import com.dsh.course.model.dto.DiscountJsonDto;
import com.dsh.course.model.vo.RegisterCourseVo;
import com.dsh.course.model.vo.request.*;
import com.dsh.course.model.vo.response.*;
import com.dsh.course.service.*;
import com.dsh.course.util.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
*
* 用户课程包购买记录 服务实现类
*
*
* @author administrator
* @since 2023-06-14
*/
@Service
public class TCoursePackagePaymentServiceImpl extends ServiceImpl implements TCoursePackagePaymentService {
@Resource
private BenefitVideoClient bfvoClient;
@Resource
private UserVideoDetailsMapper uvdmapper;
@Resource
private PostCourseVideoMapper pcvMapper;
@Resource
private TCoursePackageMapper tcpmapper;
@Resource
private StoreClient stoClient;
@Resource
private CoachClient coachClient;
@Resource
private CoursePackageStudentMapper cpsMapper;
@Resource
private CancelledClassesMapper cacMapper;
@Resource
private TCoursePackageDiscountMapper tcpdMapper;
@Resource
private CoursePackagePaymentConfigMapper cpConfigMapper;
@Resource
private CouponClient client;
@Resource
private PayMoneyUtil payMoneyUtil;
@Resource
private AppUserClient appuClient;
@Resource
private StudentClient studentClient;
@Autowired
private ICoursePackageSchedulingService coursePackageSchedulingService;
@Autowired
private RestTemplate internalRestTemplate;
@Resource
private UserIntegralChangesClient userIntegralChangesClient;
@Override
public List listAll(CoursePackagePaymentQuery query) {
return cpConfigMapper.listAll(query);
}
@Override
public int changeState(CoursePackagePayDTO dto) {
return cpConfigMapper.changeState(Long.valueOf(dto.getIds()), dto.getPayUserName(), dto.getUserId());
}
@Override
public void updateBytime(TCoursePackagePayment coursePackagePayment) {
this.baseMapper.updateBytime(coursePackagePayment);
}
@Override
public List listAllRegister(RegisterOrderQuery query) {
String STime = null;
String ETime = null;
if (StringUtils.hasLength(query.getRegisterTime())) {
STime = query.getRegisterTime().split(" - ")[0] + " 00:00:00";
ETime = query.getRegisterTime().split(" - ")[1] + " 23:59:59";
}
return cpConfigMapper.listAllRegister(query, STime, ETime, query.getAmount());
}
@Override
public List