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.UserCoupon;
|
import com.dsh.activity.feignclient.course.CoursePackageClient;
|
import com.dsh.activity.feignclient.course.model.CoursePackage;
|
import com.dsh.activity.mapper.UserCouponMapper;
|
import com.dsh.activity.model.CouponListVo;
|
import com.dsh.activity.service.UserCouponService;
|
import com.dsh.activity.util.GDMapGeocodingUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* <p>
|
* 用户优惠券领取记录 服务实现类
|
* </p>
|
*
|
* @author jqs
|
* @since 2023-06-29
|
*/
|
@Service
|
public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements UserCouponService {
|
|
@Resource
|
private CoursePackageClient coursePackageClient;
|
|
@Autowired
|
private GDMapGeocodingUtil gdMapGeocodingUtil;
|
|
|
/**
|
* 获取购买课程可用优惠券列表
|
* @param uid
|
* @param coursePackageId
|
* @return
|
*/
|
@Override
|
public List<CouponListVo> queryAvailableCouponList(Integer uid, Integer coursePackageId, Double price, String lon, String lat) throws Exception {
|
CoursePackage coursePackage = coursePackageClient.queryCoursePackageById(coursePackageId);
|
Integer storeId = coursePackage.getStoreId();
|
Map<String, String> geocode = gdMapGeocodingUtil.geocode(lon, lat);
|
String provinceCode = geocode.get("provinceCode");
|
String cityCode = geocode.get("cityCode");
|
List<Map<String, Object>> userCoupons = this.baseMapper.queryAvailableCouponList(uid, storeId, provinceCode, cityCode);
|
List<CouponListVo> listVos = new ArrayList<>();
|
for (Map<String, Object> userCoupon : userCoupons) {
|
Integer type = Integer.valueOf(userCoupon.get("type").toString());
|
CouponListVo couponListVo = new CouponListVo();
|
couponListVo.setId(Long.valueOf(userCoupon.get("id").toString()));
|
couponListVo.setName(userCoupon.get("name").toString());
|
couponListVo.setType(type);
|
couponListVo.setEffectiveTime(userCoupon.get("endTime").toString());
|
String content = userCoupon.get("content").toString();
|
if (type == 1) {//满减{"num1":1,"num2":1}
|
JSONObject jsonObject = JSON.parseObject(content);
|
Double num1 = jsonObject.getDouble("num1");
|
if(price.compareTo(num1) <= 0){
|
continue;
|
}
|
couponListVo.setUseCondition("满" + num1 + "元可用");
|
couponListVo.setFavorable(jsonObject.getDouble("num2") + "元");
|
}
|
if (type == 2) {//代金券{"num1":1}
|
JSONObject jsonObject = JSON.parseObject(content);
|
Double num1 = jsonObject.getDouble("num1");
|
if(price.compareTo(num1) <= 0){
|
continue;
|
}
|
couponListVo.setUseCondition("");
|
couponListVo.setFavorable(num1 + "元");
|
}
|
if (type == 3) {//体验券{"num1":1}
|
JSONObject jsonObject = JSON.parseObject(content);
|
couponListVo.setUseCondition("");
|
couponListVo.setFavorable(jsonObject.getString("num1"));
|
}
|
listVos.add(couponListVo);
|
}
|
return listVos;
|
}
|
}
|