cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -2,7 +2,10 @@ import com.dsh.activity.entity.Coupon; 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.ICouponService; import com.dsh.activity.service.UserCouponService; import com.dsh.activity.util.ResultUtil; import com.dsh.activity.util.TokenUtil; import io.swagger.annotations.ApiImplicitParam; @@ -26,6 +29,9 @@ @Autowired private TokenUtil tokenUtil; @Autowired private UserCouponService ucService; @@ -71,4 +77,30 @@ 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<List<CouponPackageResp>> queryAppuserCouponList(@RequestBody 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(); } } } cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java
File was deleted cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
@@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.model.CouponListVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -30,4 +29,6 @@ List<Map<String, Object>> queryAvailableCouponList(@Param("uid") Integer uid, @Param("storeId") Integer storeId, @Param("provinceCode") String provinceCode, @Param("cityCode") String cityCode); List<UserCoupon> queryCanuseConponIds(@Param("userId")Integer userId,@Param("couponIds")List<Integer> couponIds); } cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
@@ -1,5 +1,6 @@ package com.dsh.activity.model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,14 +10,17 @@ /** * 条件金额 */ double conditionalAmount; @ApiModelProperty("条件金额(例如 :满xx可用)") String conditionalAmount; /** * 抵扣金额(代金券 取 该字段) */ double deductionAmount; @ApiModelProperty("抵扣金额(代金券 取 该字段) 例如:¥ xxx") String deductionAmount; /** * 体验券名称 */ @ApiModelProperty("体验券名称 ") String experienceName; } cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java
New file @@ -0,0 +1,16 @@ package com.dsh.activity.model.request; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class CouponPackageReq { @ApiModelProperty(value = "(1=满减券,2=代金券,3=体验券)") Integer couponType; @ApiModelProperty(value = "(1=未使用 2=已使用 3=已过期)") Integer useStatus; } cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java
New file @@ -0,0 +1,41 @@ package com.dsh.activity.model.response; import com.dsh.activity.model.ConponJsonRuleModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class CouponPackageResp { @ApiModelProperty("优惠券id") private Integer id; @ApiModelProperty("优惠券名称") private String name; @ApiModelProperty("优惠券类型(1=满减券,2=代金券,3=体验券)") private Integer type; @ApiModelProperty("适用范围1全国通用 2指定城市可用 3指定门店可用") private Integer useCondition; @ApiModelProperty("适用范围名称") private String available; @ApiModelProperty("useCondition = 2,为地址字符串;useCondition = 3,为门店名称+地址字符串") private String cityOrStore; @ApiModelProperty("优惠券说明(使用说明)") private String instructionsForUse; @ApiModelProperty("金额条件封装") private ConponJsonRuleModel ruleModel; @ApiModelProperty("有效时间(2021-05-05)") private String effectiveTime; @ApiModelProperty("使用状态(1未使用 2已使用 3已过期)") private Integer useStatus; } cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.model.CouponListVo; import com.dsh.activity.model.request.CouponPackageReq; import com.dsh.activity.model.response.CouponPackageResp; import java.util.List; @@ -24,4 +26,6 @@ * @return */ List<CouponListVo> queryAvailableCouponList(Integer uid, Integer coursePackageId, Double price, String lon, String lat) throws Exception; List<CouponPackageResp> queryCouponPackagesList(Integer uid, CouponPackageReq req); } cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
@@ -2,22 +2,33 @@ 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.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.account.model.Student; import com.dsh.activity.feignclient.course.CoursePackageClient; import com.dsh.activity.feignclient.course.model.CoursePackage; import com.dsh.activity.mapper.CouponMapper; 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; /** * <p> @@ -35,6 +46,15 @@ @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; @Autowired private AppUserClient appClient; @Autowired private StudentClient studentClient; @Autowired private CouponMapper couponMapper; /** @@ -87,4 +107,102 @@ } return listVos; } @Override public List<CouponPackageResp> queryCouponPackagesList(Integer uid, CouponPackageReq req) { List<CouponPackageResp> respList = new ArrayList<>(); AppUser appUser = appClient.queryAppUser(uid); if (null != appUser) { List<Integer> userPopulation = new ArrayList<>(); userPopulation.add(1);//全部用户 if (1 == appUser.getIsVip()) { userPopulation.add(2);//年度会员 } List<Student> students = studentClient.queryStudentList(uid); if (students.size() > 0) { userPopulation.add(3);//已有学员用户 } List<UserCoupon> userCoupons = this.baseMapper.queryCanuseConponIds(appUser.getId(),null); if (userCoupons.size() > 0){ for (UserCoupon userCoupon : userCoupons) { Coupon coupon = couponMapper.selectById(userCoupon.getCouponId()); CouponPackageResp packageResp = new CouponPackageResp(); packageResp.setId(coupon.getId()); packageResp.setName(coupon.getName()); packageResp.setType(coupon.getType()); packageResp.setUseCondition(coupon.getUseScope()); switch (coupon.getUseScope()){ case 1: packageResp.setAvailable("全国通用"); break; case 2: packageResp.setAvailable("指定城市可用"); packageResp.setCityOrStore(""); break; case 3: packageResp.setAvailable("指定门店可用"); packageResp.setCityOrStore(""); break; default: break; } packageResp.setInstructionsForUse(coupon.getIllustrate()); ConponJsonRuleModel ruleModel = new ConponJsonRuleModel(); JSONObject jsonObject = JSON.parseObject(coupon.getContent()); switch (coupon.getType()) { case 1: // 满减券 Double num1 = jsonObject.getDouble("num1"); Double num2 = jsonObject.getDouble("num2"); ruleModel.setConditionalAmount("满"+num1+"可用"); ruleModel.setDeductionAmount("¥ "+num2); ruleModel.setExperienceName(""); break; case 2: // 代金券 Double jsonObjectDouble = jsonObject.getDouble("num1"); ruleModel.setConditionalAmount(""); ruleModel.setDeductionAmount("¥ "+jsonObjectDouble); ruleModel.setExperienceName(""); break; case 3: // 体验券 ruleModel.setConditionalAmount(""); ruleModel.setDeductionAmount(""); ruleModel.setExperienceName(jsonObject.getString("num1")); break; default: break; } packageResp.setRuleModel(ruleModel); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); packageResp.setEffectiveTime(simpleDateFormat.format(coupon.getEndTime())); if (userCoupon.getStatus() == 1){ if (DateUtil.getDate().before(coupon.getEndTime())){ packageResp.setUseStatus(1); }else { packageResp.setUseStatus(3); } } if (userCoupon.getStatus() == 2){ packageResp.setUseStatus(2); } respList.add(packageResp); } if (null != req.getCouponType()){ respList = respList.stream() .filter(couponPackageResp -> couponPackageResp.getType().equals(req.getCouponType())) .collect(Collectors.toList()); } if (null != req.getUseStatus()){ respList = respList.stream() .filter(couponPackageResp -> couponPackageResp.getUseStatus().equals(req.getUseStatus())) .collect(Collectors.toList()); } } } return respList; } } cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
@@ -17,4 +17,34 @@ b.useScope = 1 or (b.useScope = 2 and provinceCode = #{provinceCode} and cityCode = #{cityCode}) or (b.useScope = 3 and b.id in (select couponId from t_coupon_store where storeId = #{storeId}))) </select> <select id="queryCanuseConponIds" resultType="com.dsh.activity.entity.UserCoupon"> SELECT * FROM t_user_coupon UNION ALL SELECT * FROM t_user_coupon1 UNION ALL SELECT * FROM t_user_coupon2 UNION ALL SELECT * FROM t_user_coupon3 UNION ALL SELECT * FROM t_user_coupon4 UNION ALL SELECT * FROM t_user_coupon5 WHERE 1=1 <if test="userId != null "> and userId = #{userId} </if> <if test="couponIds.size > 0"> and couponId in <foreach collection="couponIds" close=")" index="index" open="(" separator="," item="item"> #{item} </foreach> </if> order by insertTime desc </select> </mapper>