lisy
2023-07-07 717eb13e7e3f35ac662ca913cf785ebb6909b5fb
activity:使用福利-我的券包
6个文件已修改
1个文件已删除
2个文件已添加
297 ■■■■ 已修改文件
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>