package com.dsh.activity.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.activity.entity.Coupon; import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.model.CouponListVo; import com.dsh.activity.model.request.CommodityRequest; import com.dsh.activity.model.request.CouponPackageReq; import com.dsh.activity.model.response.CouponPackageResp; import com.dsh.activity.service.ICouponService; import com.dsh.activity.service.UserCouponService; import com.dsh.activity.util.GDMapGeocodingUtil; import com.dsh.activity.util.ResultUtil; import com.dsh.activity.util.TokenUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; /** * @author zhibing.pu * @date 2023/6/24 11:27 */ @RestController @RequestMapping("") public class CouponController { @Autowired private ICouponService couponService; @Autowired private TokenUtil tokenUtil; @Autowired private UserCouponService ucService; @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; @ResponseBody @PostMapping("/api/coupon/queryCouponList") @ApiOperation(value = "获取优惠券列表", tags = {"APP-成为会员", ""}) @ApiImplicitParams({ @ApiImplicitParam(value = "1=积分购买,2=注册赠送", name = "distributionMethod", dataType = "int", required = true), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryCouponList(Integer distributionMethod){ if(null == distributionMethod){ return ResultUtil.paranErr("distributionMethod"); } try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } List listVos = couponService.queryCouponList(uid, distributionMethod); return ResultUtil.success(listVos); }catch (Exception e){ e.printStackTrace(); return ResultUtil.success(); } } /** * 根据id获取优惠券信息 * @param id * @return */ @ResponseBody @PostMapping("/coupon/queryCouponById") public Coupon queryCouponById(@RequestBody Integer id){ try { Coupon coupon = couponService.getById(id); return coupon; }catch (Exception e){ e.printStackTrace(); return null; } } /** * 我的券包列表 * @param req * @return */ @ResponseBody @PostMapping("/api/coupon/queryCouponPackage") @ApiOperation(value = "我的券包列表", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryAppuserCouponList( CouponPackageReq req){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } return ResultUtil.success(ucService.queryCouponPackagesList(uid, req)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.success(); } } @PostMapping("/base/coupon/getAllCoupons") public List getAllCoupons(@RequestBody CommodityRequest request){ String provinceCode = ""; String cityCode = ""; try { Map geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat()); provinceCode = geocode.get("provinceCode"); cityCode = geocode.get("cityCode"); }catch (Exception e){ e.printStackTrace(); } try { Integer userAppId = tokenUtil.getUserIdFormRedis(); List list = ucService.list(new QueryWrapper() .eq("userId",userAppId )); List couponList = couponService.list(new QueryWrapper() .eq("auditStatus",2) .eq("state",1) .eq("status",2)); if (couponList.size() > 0 ){ Iterator iterator = couponList.iterator(); while (iterator.hasNext()) { Coupon merchandise = iterator.next(); if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) { iterator.remove(); // 移除符合条件的商品 } } } return couponList; } catch (Exception e) { throw new RuntimeException(e); } } @PostMapping("/base/coupon/getRedeemedNums") public int getRedeemedQuantity(@RequestBody Integer id){ return ucService.count(new QueryWrapper() .eq("couponId",id)); } @PostMapping("/base/coupon/insertToAppuserCoupon") public void insertToAppuserCoupon(@RequestBody UserCoupon coupon){ ucService.save(coupon); } }