luodangjia
2024-11-28 4c92629166ff9c01bce2815faf9ba9c41a4e03cd
11.28
5个文件已修改
3个文件已添加
277 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}