package com.dsh.activity.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.Coupon;
import com.dsh.activity.entity.CouponCity;
import com.dsh.activity.entity.CouponStore;
import com.dsh.activity.entity.UserCoupon;
import com.dsh.activity.feignclient.account.AppUserClient;
import com.dsh.activity.feignclient.account.StudentClient;
import com.dsh.activity.feignclient.account.model.AppUser;
import com.dsh.activity.feignclient.course.CoursePackageClient;
import com.dsh.activity.feignclient.course.model.CoursePackage;
import com.dsh.activity.feignclient.other.SiteClient;
import com.dsh.activity.feignclient.other.StoreClient;
import com.dsh.activity.feignclient.other.model.Site;
import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse;
import com.dsh.activity.mapper.CouponCityMapper;
import com.dsh.activity.mapper.CouponMapper;
import com.dsh.activity.mapper.CouponStoreMapper;
import com.dsh.activity.mapper.UserCouponMapper;
import com.dsh.activity.model.ConponJsonRuleModel;
import com.dsh.activity.model.CouponListVo;
import com.dsh.activity.model.request.CouponPackageReq;
import com.dsh.activity.model.response.CouponPackageResp;
import com.dsh.activity.service.UserCouponService;
import com.dsh.activity.util.DateUtil;
import com.dsh.activity.util.GDMapGeocodingUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 用户优惠券领取记录 服务实现类
*
*
* @author jqs
* @since 2023-06-29
*/
@Service
public class UserCouponServiceImpl extends ServiceImpl implements UserCouponService {
@Resource
private CoursePackageClient coursePackageClient;
@Autowired
private GDMapGeocodingUtil gdMapGeocodingUtil;
@Resource
private AppUserClient appClient;
@Resource
private StudentClient studentClient;
@Resource
private CouponMapper couponMapper;
@Resource
private CouponCityMapper couponCityMapper;
@Resource
private StoreClient storeClient;
@Resource
private CouponStoreMapper csMapper;
@Resource
private SiteClient siteClient;
/**
* 获取购买课程可用优惠券列表
*
* @param uid
* @param coursePackageId
* @return
*/
@Override
public List queryAvailableCouponList(Integer uid, Integer coursePackageId, Double price, String lon, String lat) throws Exception {
CoursePackage coursePackage = coursePackageClient.queryCoursePackageById(coursePackageId);
Integer storeId = coursePackage.getStoreId();
Map geocode = gdMapGeocodingUtil.geocode(lon, lat);
String provinceCode = geocode.get("provinceCode");
String cityCode = geocode.get("cityCode");
List