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.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.activity.entity.Coupon; 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.account.model.Student; import com.dsh.activity.feignclient.model.CouponExamineListSearch; import com.dsh.activity.feignclient.model.CouponListOfSearch; import com.dsh.activity.mapper.CouponMapper; import com.dsh.activity.model.CouponListVo; import com.dsh.activity.model.request.IntegralGoodsOfSearch; import com.dsh.activity.service.ICouponService; 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; /** * @author zhibing.pu * @date 2023/6/24 11:26 */ @Service public class CouponServiceImpl extends ServiceImpl implements ICouponService { @Resource private AppUserClient appUserClient; @Resource private StudentClient studentClient; /** * 获取购买会员支付成功页面的优惠券 * @param uid * @return * @throws Exception */ @Override public List queryCouponList(Integer uid, Integer distributionMethod) throws Exception { AppUser appUser = appUserClient.queryAppUser(uid); List listVos = new ArrayList<>(); if (null != appUser) { List userPopulation = new ArrayList<>(); userPopulation.add(1);//全部用户 if (1 == appUser.getIsVip()) { userPopulation.add(2);//年度会员 } List students = studentClient.queryStudentList(uid); if (students.size() > 0) { userPopulation.add(3);//已有学员用户 } List list = this.list(new QueryWrapper().eq("distributionMethod", distributionMethod).in("userPopulation", userPopulation) .eq("auditStatus", 2).eq("status", 2).eq("state", 1) .last(" and now() between startTime and endTime order by insertTime desc")); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (Coupon coupon : list) { CouponListVo couponListVo = new CouponListVo(); couponListVo.setId(coupon.getId().longValue()); couponListVo.setName(coupon.getName()); couponListVo.setType(coupon.getType()); couponListVo.setEffectiveTime(sdf.format(coupon.getStartTime()) + "-" + sdf.format(coupon.getEndTime())); String content = coupon.getContent(); if (coupon.getType() == 1) {//满减 // {"conditionalAmount":50,"deductionAmount":10,"experienceName":""} JSONObject jsonObject = JSON.parseObject(content); couponListVo.setUseCondition("满" + jsonObject.getDouble("conditionalAmount") + "元可用"); couponListVo.setFavorable(jsonObject.getString("deductionAmount")); } if (coupon.getType() == 2) {//代金券{"num1":1} JSONObject jsonObject = JSON.parseObject(content); couponListVo.setUseCondition(""); couponListVo.setFavorable(jsonObject.getString("conditionalAmount")); } if (coupon.getType() == 3) {//体验券{"num1":1} JSONObject jsonObject = JSON.parseObject(content); couponListVo.setUseCondition(""); couponListVo.setFavorable(jsonObject.getString("experienceName")); } listVos.add(couponListVo); } } return listVos; } @Override public Map queryConponRuleOfJson(Integer id) { return this.baseMapper.queryConponRuleOfJson(id); } @Override public List> queryCouponListOfSearch(CouponListOfSearch ofSearch) { return this.baseMapper.queryCouponListOfSearch(ofSearch.getName(),ofSearch.getType(),ofSearch.getDistributionMethod(),ofSearch.getUserPopulation(),ofSearch.getStatus(),ofSearch.getState(),ofSearch.getPage(),ofSearch.getCityCode(),ofSearch.getStoreId()); } @Override public List> queryCouponListOfSearch1(CouponListOfSearch ofSearch) { return this.baseMapper.queryCouponListOfSearch1(ofSearch.getName(),ofSearch.getType(),ofSearch.getDistributionMethod(),ofSearch.getUserPopulation(),ofSearch.getStatus(),ofSearch.getState(),ofSearch.getPage(),ofSearch.getCityCode(),ofSearch.getStoreId()); } @Override public List> queryCouponExamineList(CouponExamineListSearch ofSearch) { return this.baseMapper.queryCouponExamineList(ofSearch.getName(),ofSearch.getType(),ofSearch.getUserPopulation(),ofSearch.getDistributionMethod(),ofSearch.getAuditStatus(),ofSearch.getPage()); } @Override public List> listRecord(Page objectPage, Integer id, List ids, Integer type) { return this.baseMapper.listRecord(objectPage,id,ids,type); } @Override public void updateType(Long id) { this.baseMapper.updateType(id); } }