cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java
@@ -142,7 +142,7 @@ */ @ResponseBody @PostMapping("/base/pointMer/exchangeGoodPaymentWeChatCallback") public void addVipPaymentWeChatCallback(HttpServletRequest request, HttpServletResponse response){ public void exchangeGoodPaymentWeChatCallback(HttpServletRequest request, HttpServletResponse response){ try { Map<String, String> map = payMoneyUtil.weixinpayCallback(request); if(null != map){ cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
@@ -15,7 +15,7 @@ * 查询注册赠送优惠券 判断当前优惠券限领数量 */ @PostMapping("/coupon/queryCouponByUser/{userId}") public List<Integer> queryCouponByUser(@PathVariable("userId") Integer userId); public List<Long> queryCouponByUser(@PathVariable("userId") Integer userId); @PostMapping("/base/userConpon/getStuOfConpons") public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId); cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -1831,6 +1831,9 @@ @Override public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber,Integer payType) { List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); if(userPointsMerchandises.get(0).getPayStatus() == 2){ return ResultUtil.success(); } if (userPointsMerchandises.size() > 1){ for (int i = 0; i < userPointsMerchandises.size(); i++) { userPointsMerchandises.get(i).setOrderNumber(orderNumber+ "-" + (i+1)); cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java
@@ -1,5 +1,6 @@ package com.dsh.account.service.impl; import com.alibaba.fastjson.JSON; import com.alipay.api.response.AlipayTradeQueryResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,11 +12,13 @@ import com.dsh.account.service.IVipPaymentService; import com.dsh.account.service.TAppUserService; import com.dsh.account.util.PayMoneyUtil; import com.dsh.account.util.RedisUtil; import com.dsh.account.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; @@ -34,6 +37,13 @@ @Autowired private PayMoneyUtil payMoneyUtil; @Resource private UserConponClient userConponClient; @Autowired private RedisUtil redisUtil; /** * 购买年度会员 @@ -82,7 +92,7 @@ int min = 5000; wait += (min * num); VipPayment vipPayment1 = VipPaymentServiceImpl.this.getOne(new QueryWrapper<VipPayment>().eq("code", code)); if(vipPayment1.getPayStatus() != 1){ if(vipPayment1.getPayStatus() == 2){ return; } /** @@ -123,7 +133,8 @@ appUser.setVipEndTime(calendar.getTime()); appUserService.updateById(appUser); // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限 userConponClient.queryCouponByUser(appUser.getId()); List<Long> longs = userConponClient.queryCouponByUser(appUser.getId()); redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600); return; } if("USERPAYING".equals(trade_state) || "ACCEPT".equals(trade_state)){ @@ -214,7 +225,8 @@ appUser.setVipEndTime(calendar.getTime()); appUserService.updateById(appUser); // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限 userConponClient.queryCouponByUser(appUser.getId()); List<Long> longs = userConponClient.queryCouponByUser(appUser.getId()); redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600); return; } if("WAIT_BUYER_PAY".equals(tradeStatus)){ @@ -241,8 +253,7 @@ @Autowired private UserConponClient userConponClient; /** * 购买年度会员支付回调处理 * @param code @@ -252,7 +263,7 @@ @Override public synchronized ResultUtil addVipPaymentCallback(String code, String orderNumber) throws Exception { VipPayment vipPayment1 = VipPaymentServiceImpl.this.getOne(new QueryWrapper<VipPayment>().eq("code", code)); if(vipPayment1.getPayStatus() != 1){ if(vipPayment1.getPayStatus() == 2){ return ResultUtil.success(); } vipPayment1.setPayStatus(2); @@ -261,16 +272,14 @@ VipPaymentServiceImpl.this.updateById(vipPayment1); TAppUser appUser = appUserService.getById(vipPayment1.getAppUserId()); Date vipEndTime = appUser.getVipEndTime(); if(null == vipEndTime){ vipEndTime = new Date(); } Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 1); appUser.setVipEndTime(calendar.getTime()); appUserService.updateById(appUser); // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限 List<Long> longs = userConponClient.queryCouponByUser(appUser.getId()); redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600); return ResultUtil.success(); } cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -107,8 +107,8 @@ */ @ResponseBody @PostMapping("/coupon/queryCouponByUser/{userId}") public List<Integer> queryCouponByUser(@PathVariable("userId") Integer userId){ public List<Long> queryCouponByUser(@PathVariable("userId") Integer userId){ List<Long> ids = new ArrayList<>(); System.err.println("到达了赠送优惠价"); List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2) .le("startTime", new Date()).ge("endTime", new Date()).eq("auditStatus", 2) @@ -137,8 +137,9 @@ userCoupon.setStatus(1); userCoupon.setInsertTime(new Date()); ucService.save(userCoupon); ids.add(userCoupon.getId()); } return null; return ids; } @ResponseBody cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
@@ -20,6 +20,8 @@ import com.dsh.activity.model.request.IntegralGoodsOfSearch; import com.dsh.activity.service.ICouponService; import com.dsh.activity.service.UserCouponService; import com.dsh.activity.util.RedisUtil; import com.dsh.activity.util.ToolUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,6 +32,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author zhibing.pu @@ -44,14 +47,18 @@ @Resource private StudentClient studentClient; @Autowired private UserCouponService userCouponService; @Autowired private ICouponService couponService; @Autowired private RedisUtil redisUtil; /** * 获取购买会员支付成功页面的优惠券 @@ -61,51 +68,19 @@ */ @Override public List<CouponListVo> queryCouponList(Integer uid, Integer distributionMethod) throws Exception { AppUser appUser = appUserClient.queryAppUser(uid); String value = redisUtil.getValue("VIP_P_" + uid); if(ToolUtil.isEmpty(value)){ Thread.sleep(5000); value = redisUtil.getValue("VIP_P_" + uid); } List<CouponListVo> listVos = new ArrayList<>(); if (null != appUser) { // List<Integer> userPopulation = new ArrayList<>(); // userPopulation.add(1);//全部用户 // if (1 == appUser.getIsVip()) { // userPopulation.add(2);//年度会员 // } // List<TStudent> students = studentClient.queryStudentList(uid); // if (students.size() > 0) { // userPopulation.add(3);//已有学员用户 // } // List<Coupon> list = this.list(new QueryWrapper<Coupon>().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")); // List<Coupon> list = this.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2).eq("userPopulation",2) // .le("startTime", new Date()).ge("endTime", new Date()).eq("auditStatus", 2) // .eq("state", 1)); if(ToolUtil.isEmpty(value)){ List<Long> longs = JSON.parseArray(value, Long.class); List<UserCoupon> list = userCouponService.getBaseMapper().selectBatchIds(longs); List<Integer> collect = list.stream().map(UserCoupon::getCouponId).collect(Collectors.toList()); List<Coupon> coupons = couponService.getBaseMapper().selectBatchIds(collect); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); LocalDateTime currentTime = LocalDateTime.now(); LocalDateTime oneMinuteAgo = currentTime.minusSeconds(6000); List<UserCoupon> list = userCouponService.list(new QueryWrapper<UserCoupon>().eq("userId", uid).ge("insertTime", oneMinuteAgo)); List<Integer> ids = new ArrayList<>(); for (UserCoupon userCoupon : list) { ids.add(userCoupon.getCouponId()); } List<Coupon> userId = new ArrayList<>(); if (ids.size()>0) { userId = couponService.list(new QueryWrapper<Coupon>().in("id", ids)); } for (Coupon coupon : userId) { for (Coupon coupon : coupons) { if (coupon.getDistributionMethod()!=2){ continue; }