cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponStore.java
New file @@ -0,0 +1,49 @@ package com.dsh.activity.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; /** * <p> * 优惠券使用门店关系数据 * </p> * * @author jqs * @since 2023-07-07 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_coupon_store") public class CouponStore extends Model<CouponStore> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 优惠券id */ private Integer couponId; /** * 门店id */ private Integer storeId; @Override protected Serializable pkVal() { return this.id; } } cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java
New file @@ -0,0 +1,14 @@ package com.dsh.activity.feignclient.other; import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; @FeignClient(value = "mb-cloud-other") public interface StoreClient { @PostMapping("/base/protocol/storeDetail/courseOfSto") StoreDetailOfCourse getCourseOfStore(@RequestParam("storeId") Integer storeId); } cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/StoreDetailOfCourse.java
New file @@ -0,0 +1,13 @@ package com.dsh.activity.feignclient.other.model; import lombok.Data; @Data public class StoreDetailOfCourse { String storeName; String storeAddr; } cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponStoreMapper.java
New file @@ -0,0 +1,16 @@ package com.dsh.activity.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.activity.entity.CouponStore; /** * <p> * 优惠券使用门店关系数据 Mapper 接口 * </p> * * @author jqs * @since 2023-07-07 */ public interface CouponStoreMapper extends BaseMapper<CouponStore> { } cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
@@ -29,6 +29,5 @@ 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/service/CouponStoreService.java
New file @@ -0,0 +1,16 @@ package com.dsh.activity.service; import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.activity.entity.CouponStore; /** * <p> * 优惠券使用门店关系数据 服务类 * </p> * * @author jqs * @since 2023-07-07 */ public interface CouponStoreService extends IService<CouponStore> { } cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponStoreServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.dsh.activity.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.activity.entity.CouponStore; import com.dsh.activity.mapper.CouponStoreMapper; import com.dsh.activity.service.CouponStoreService; import org.springframework.stereotype.Service; /** * <p> * 优惠券使用门店关系数据 服务实现类 * </p> * * @author jqs * @since 2023-07-07 */ @Service public class CouponStoreServiceImpl extends ServiceImpl<CouponStoreMapper, CouponStore> implements CouponStoreService { } cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
@@ -2,16 +2,20 @@ 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.CouponStore; 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.feignclient.other.StoreClient; import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; import com.dsh.activity.mapper.CouponMapper; import com.dsh.activity.mapper.CouponStoreMapper; import com.dsh.activity.mapper.UserCouponMapper; import com.dsh.activity.model.ConponJsonRuleModel; import com.dsh.activity.model.CouponListVo; @@ -56,6 +60,11 @@ @Autowired private CouponMapper couponMapper; @Autowired private StoreClient storeClient; @Autowired private CouponStoreMapper csMapper; /** * 获取购买课程可用优惠券列表 @@ -113,16 +122,9 @@ 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); List<UserCoupon> userCoupons = this.baseMapper.selectList(new QueryWrapper<UserCoupon>() .eq("userId",appUser.getId() ) .orderByDesc("insertTime")); if (userCoupons.size() > 0){ for (UserCoupon userCoupon : userCoupons) { Coupon coupon = couponMapper.selectById(userCoupon.getCouponId()); @@ -141,7 +143,10 @@ break; case 3: packageResp.setAvailable("指定门店可用"); packageResp.setCityOrStore(""); CouponStore couponStore = csMapper.selectOne(new QueryWrapper<CouponStore>() .eq("couponId",coupon.getId())); StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStore.getStoreId()); packageResp.setCityOrStore(courseOfStore.getStoreName()+","+courseOfStore.getStoreAddr()); break; default: break; @@ -175,8 +180,10 @@ 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); cloud-server-activity/src/main/resources/mapper/CouponStoreMapper.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dsh.activity.mapper.CouponStoreMapper"> </mapper> cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
@@ -17,34 +17,4 @@ 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>