ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -89,9 +89,7 @@ @TableField(exist = false) private String inviteUserName; @ApiModelProperty(value = "当前用户顶级的推广人id") @TableField("top_invite_id") private Long topInviteId; @ApiModelProperty(value = "绑定门店id") @TableField("shop_id") @@ -205,4 +203,6 @@ @ApiModelProperty("等级7会员数") private Long count7; } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.account.api.vo.CouponInfoVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,9 +49,25 @@ @TableField("use_time") private LocalDateTime useTime; @ApiModelProperty(value = "开始时间") @TableField("start_time") private LocalDateTime startTime; @ApiModelProperty(value = "结束时间") @TableField("end_time") private LocalDateTime endTime; @ApiModelProperty(value = "优惠劵id") @TableField("coupon_id") private Integer couponId; @ApiModelProperty(value = "优惠劵信息") @TableField(exist = false) private CouponInfoVo couponInfoVo; @ApiModelProperty(value = "1未使用2已使用3已过期") @TableField(exist = false) private Integer status; } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java
New file @@ -0,0 +1,119 @@ package com.ruoyi.account.api.vo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; /** * <p> * * </p> * * @author luodangjia * @since 2024-11-20 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_coupon_info") @ApiModel(value="CouponInfo对象", description="") public class CouponInfoVo implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "删除标志(0=否,1=是)") @TableField("del_flag") @TableLogic private Integer delFlag; @ApiModelProperty(value = "添加时间") @TableField("create_time") private LocalDateTime createTime; @ApiModelProperty(value = "优惠券名称") @TableField("coupon_name") private String couponName; @ApiModelProperty(value = "优惠券类型 1'满减券',2'代金券',3'折扣券',4'商品券'") @TableField("coupon_type") private Integer couponType; @ApiModelProperty(value = "满x元") @TableField("condition_amount") private BigDecimal conditionAmount; @ApiModelProperty(value = "减x元") @TableField("discount_amount") private BigDecimal discountAmount; @ApiModelProperty(value = "代金x元") @TableField("money_amount") private BigDecimal moneyAmount; @ApiModelProperty(value = "折扣") @TableField("discount") private BigDecimal discount; @ApiModelProperty(value = "适用商品ids,全部-1") @TableField("for_good_ids") private String forGoodIds; @ApiModelProperty(value = "发放数量") @TableField("send_num") private Integer sendNum; @ApiModelProperty(value = "可领数量") @TableField("max_num") private Integer maxNum; @ApiModelProperty(value = "有效期类型 1指定时间内有效 2领取后x天有效") @TableField("period_type") private Integer periodType; @ApiModelProperty(value = "有效期开始时间") @TableField("period_start_time") private LocalDateTime periodStartTime; @ApiModelProperty(value = "有效期结束时间") @TableField("period_end_time") private LocalDateTime periodEndTime; @ApiModelProperty(value = "领取后x天有效") @TableField("period_days") private Integer periodDays; @ApiModelProperty(value = "开始发放时间") @TableField("send_start_time") private LocalDateTime sendStartTime; @ApiModelProperty(value = "结束发放时间") @TableField("send_end_time") private LocalDateTime sendEndTime; @ApiModelProperty(value = "1免费发放2积分兑换") @TableField("send_type") private Integer sendType; @ApiModelProperty(value = "兑换所需积分") @TableField("need_point") private BigDecimal needPoint; @ApiModelProperty(value = "可领用户 1全部 2指定人员 3指定会员 4 新人注册") @TableField("person_type") private Integer personType; @ApiModelProperty(value = "可领取对应的ids,用find_in_set查询") @TableField("person_ids") private String personIds; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.other.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.CouponInfo; import com.ruoyi.other.api.domain.GoodsVip; import com.ruoyi.other.api.feignClient.CouponClient; import com.ruoyi.other.api.feignClient.GoodsVipClient; import org.springframework.cloud.openfeign.FallbackFactory; /** * @author zhibing.pu * @Date 2024/11/27 20:29 */ public class CouponClientFallbackFactory implements FallbackFactory<CouponClient> { @Override public CouponClient create(Throwable cause) { return new CouponClient() { @Override public R<CouponInfo> detail(Integer id) { return R.fail("查看优惠券详情失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.other.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.CouponInfo; import com.ruoyi.other.api.domain.GoodsArea; import com.ruoyi.other.api.domain.GoodsVip; import com.ruoyi.other.api.factory.CouponClientFallbackFactory; import com.ruoyi.other.api.factory.GoodsVipClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; /** * @author zhibing.pu * @Date 2024/11/28 9:42 */ @FeignClient(contextId = "GoodsVipClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = CouponClientFallbackFactory.class) public interface CouponClient { @PostMapping("/coupon-info/detail") R<CouponInfo> detail(@RequestParam("id") Integer id); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -24,7 +24,6 @@ import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.vo.*; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BaseTable; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -119,7 +118,7 @@ @PostMapping("/info") @ApiOperation(value = "我的资料", tags = {"小程序-个人中心首页-我的资料"}) public R<AppUser> info(){ Long userId = tokenService.getLoginUserApplet().getUserId(); Long userId = tokenService.getLoginUserApplet().getUserid(); AppUser user = appUserService.getById(userId); return R.ok(user); } @@ -130,7 +129,7 @@ @PostMapping("/unregis") @ApiOperation(value = "注销", tags = {"小程序-个人中心首页-我的资料"}) public R unregis(){ Long userId = tokenService.getLoginUserApplet().getUserId(); Long userId = tokenService.getLoginUserApplet().getUserid(); AppUser user = appUserService.getById(userId); //添加注销记录 @@ -148,7 +147,7 @@ @ApiOperation(value = "个人中心首页", tags = {"小程序-个人中心首页"}) public R<AppUser> index(){ System.err.println("=-===="); Long userId = tokenService.getLoginUserApplet().getUserId(); Long userId = tokenService.getLoginUserApplet().getUserid(); //当前用户信息 AppUser user = appUserService.getById(userId); //当前用户的推荐人信息 @@ -163,7 +162,7 @@ user.setShopName(storeById.getData().getName()); } } Long count1 = appUserService.lambdaQuery().eq(AppUser::getVipId, 1).eq(AppUser::getTopInviteId, userId).count(); Long count1 = appUserService.lambdaQuery().eq(AppUser::getVipId, 1).eq(AppUser::getTopInviteId, 1).count(); Long count2 = appUserService.lambdaQuery().eq(AppUser::getVipId, 2).eq(AppUser::getTopInviteId, userId).count(); Long count3 = appUserService.lambdaQuery().eq(AppUser::getVipId, 3).eq(AppUser::getTopInviteId, userId).count(); Long count4 = appUserService.lambdaQuery().eq(AppUser::getVipId, 4).eq(AppUser::getTopInviteId, userId).count(); ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -1,9 +1,23 @@ package com.ruoyi.account.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.model.UserCoupon; import com.ruoyi.account.api.vo.CouponInfoVo; import com.ruoyi.account.service.UserCouponService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.Banner; import com.ruoyi.other.api.domain.CouponInfo; import com.ruoyi.other.api.feignClient.CouponClient; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; /** * <p> @@ -16,6 +30,40 @@ @RestController @RequestMapping("/user-coupon") public class UserCouponController { @Resource private UserCouponService userCouponService; @Resource private TokenService tokenService; @Resource private CouponClient couponClient; @PostMapping("/mine/list") @ApiOperation(value = "已领取列表", tags = {"小程序-首页-优惠劵"}) public R<Page<UserCoupon>> minelist(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @ApiParam("1未使用2已使用3已过期") Integer status) { Long userid = tokenService.getLoginUserApplet().getUserid(); Page<UserCoupon> page = userCouponService.lambdaQuery() .isNull(status!=null&&(status==1||status==3),UserCoupon::getUseTime) .isNotNull(status!=null&&status==2,UserCoupon::getUseTime) .lt(status!=null&&status==3,UserCoupon::getEndTime, LocalDateTime.now()) .eq(UserCoupon::getAppUserId, userid).page(Page.of(pageNum, pageSize)); for (UserCoupon record : page.getRecords()) { CouponInfo data = couponClient.detail(record.getCouponId()).getData(); CouponInfoVo vo = new CouponInfoVo(); BeanUtils.copyProperties(data,vo); record.setCouponInfoVo(vo); if (record.getUseTime()==null){ record.setStatus(1); if (record.getEndTime().isBefore(LocalDateTime.now())){ record.setStatus(3); } }else { record.setStatus(2); } } return R.ok(page); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -1,8 +1,17 @@ package com.ruoyi.other.controller; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.Banner; import com.ruoyi.other.api.domain.CouponInfo; import com.ruoyi.other.service.CouponInfoService; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * <p> @@ -15,6 +24,15 @@ @RestController @RequestMapping("/coupon-info") public class CouponInfoController { @Resource private CouponInfoService couponInfoService; //查看详情 @PostMapping("/detail") @ApiOperation(value = "详情", tags = {"后台-优惠劵"}) public R<CouponInfo> detail(@RequestParam("id") Integer id){ CouponInfo byId = couponInfoService.getById(id); return R.ok(byId); } }