From 717eb13e7e3f35ac662ca913cf785ebb6909b5fb Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期五, 07 七月 2023 11:50:16 +0800 Subject: [PATCH] activity:使用福利-我的券包 --- /dev/null | 43 -------- cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java | 32 ++++++ cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml | 30 ++++++ cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java | 3 cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java | 41 ++++++++ cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java | 120 +++++++++++++++++++++++ cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java | 4 cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java | 8 + cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java | 16 +++ 9 files changed, 250 insertions(+), 47 deletions(-) diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java index c52a588..f959ec7 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java +++ b/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(); + } + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java deleted file mode 100644 index dced410..0000000 --- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dsh.activity.entity; - -public class JSONConpon { - - double conditionalAmount; - - double deductionAmount; - - String experienceName; - - public JSONConpon(double conditionalAmount, double deductionAmount, String experienceName) { - this.conditionalAmount = conditionalAmount; - this.deductionAmount = deductionAmount; - this.experienceName = experienceName; - } - - public JSONConpon() { - } - - public double getConditionalAmount() { - return conditionalAmount; - } - - public void setConditionalAmount(double conditionalAmount) { - this.conditionalAmount = conditionalAmount; - } - - public double getDeductionAmount() { - return deductionAmount; - } - - public void setDeductionAmount(double deductionAmount) { - this.deductionAmount = deductionAmount; - } - - public String getExperienceName() { - return experienceName; - } - - public void setExperienceName(String experienceName) { - this.experienceName = experienceName; - } -} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java index 62546d5..68ed533 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java +++ b/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); + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java index edb6926..f2671df 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java +++ b/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; } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java new file mode 100644 index 0000000..ce3246b --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java @@ -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; + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java new file mode 100644 index 0000000..a33a3fc --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java @@ -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; + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java index 2d73f97..784588f 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java +++ b/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); } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java index c8441cd..b417c46 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java +++ b/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; + } + } diff --git a/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml index 4cd1ab4..9b98c7c 100644 --- a/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml +++ b/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> -- Gitblit v1.7.1