luodangjia
2024-08-13 8b1376a256d8750f718276cbe475cb6f1f7ebddc
Merge remote-tracking branch 'origin/master'
11个文件已修改
2个文件已添加
213 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/GrantCouponDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppCouponMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppCouponService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java
New file
@@ -0,0 +1,20 @@
package com.ruoyi.account.api.dto;
import com.ruoyi.common.core.web.domain.BasePojo;
import com.ruoyi.common.core.web.page.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@ApiModel("小程序扫一扫获取优惠券列表DTO")
public class CouponListDto extends BasePage {
    @ApiModelProperty("用户id 前端忽略")
    private Long userId;
    @ApiModelProperty("预付价格")
    private BigDecimal payMoney;
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/GrantCouponDto.java
@@ -13,7 +13,7 @@
    private String userIds;
    @ApiModelProperty("优惠券id")
    private Integer couponId;
    @ApiModelProperty("发放方式 1积分 2现金")
    @ApiModelProperty("发放方式 1积分 2现金 3=后台赠送前端忽略")
    private Integer waysToObtain;
    @ApiModelProperty("结束时间 前端忽略")
    private LocalDateTime endTime;
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java
@@ -1,5 +1,6 @@
package com.ruoyi.account.api.feignClient;
import com.ruoyi.account.api.dto.GrantCouponDto;
import com.ruoyi.account.api.factory.AppCouponFallbackFactory;
import com.ruoyi.account.api.factory.AppUserFallbackFactory;
import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
@@ -40,4 +41,9 @@
     */
    @PostMapping("/t-app-coupon/getExchangeRecordByCouponId")
    R<PageInfo<ExchangeRecordVO>> getExchangeRecordByCouponId(@RequestBody ExchangeRecordGoodsQuery couponId);
    /**
     * 后台远程调用 给用户发放优惠券
     */
    @PostMapping("/t-app-coupon/grantCoupon")
    R  grantCoupon(@RequestBody GrantCouponDto dto);
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java
New file
@@ -0,0 +1,41 @@
package com.ruoyi.account.api.vo;
import com.ruoyi.common.core.web.domain.BasePojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@ApiModel("管理后台 优惠券兑换记录列表返回VO")
public class CouponListVOVO extends BasePojo {
    @ApiModelProperty(value = "优惠券名称")
    private String couponName;
    @ApiModelProperty(value = "优惠方式 1满减 2折扣")
    private Integer preferentialMode;
    @ApiModelProperty(value = "满减--优惠金额")
    private BigDecimal discountAmount;
    @ApiModelProperty(value = "满减--使用门槛 满减条件")
    private BigDecimal meetTheConditions;
    @ApiModelProperty(value = "折扣--折扣")
    private BigDecimal discount;
    @ApiModelProperty(value = "折扣--最高折扣金额")
    private BigDecimal maximumDiscountAmount;
    @ApiModelProperty(value = "优惠券数量")
    private Integer couponCount;
    @ApiModelProperty(value = "有效期")
    private String validityTime;
    @ApiModelProperty(value = "结束时间 前端忽略")
    private LocalDateTime endTime;
    @ApiModelProperty(value = "是否可用")
    private Integer isUse;
    @ApiModelProperty(value = "优惠券id")
    private Long couponId;
    @ApiModelProperty(value = "优惠券id")
    private BigDecimal payMoney;
    @ApiModelProperty(value = "最高折扣金额 用于判断哪一张优惠券优惠力度最大 前端忽略")
    private BigDecimal money;
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.dto.TagListQueryDto;
import com.ruoyi.account.api.dto.UnitListQueryDto;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.TCompany;
import com.ruoyi.other.api.domain.TUserTag;
@@ -79,6 +80,11 @@
            public R<Map<Integer, String>> getVipMap(List<Integer> ids) {
                return R.fail("获取会员map:" + throwable.getMessage());
            }
            @Override
            public R<List<CouponListVOVO>> getCouponInfoByCouponIds(List<CouponListVOVO> list) {
                return R.fail("我的优惠券列表获取信息:"+throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.dto.TagListQueryDto;
import com.ruoyi.account.api.dto.UnitListQueryDto;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.TCompany;
@@ -56,7 +57,11 @@
    @PostMapping(value = "/vip/getVipMap")
    R<Map<Integer, String>> getVipMap(@RequestBody List<Integer> ids);
    /**
     * 小程序远程调用 获取优惠券信息
     */
    @PostMapping(value = "/t-coupon/getCouponInfoByCouponIds")
    R<List<CouponListVOVO>> getCouponInfoByCouponIds(@RequestBody List<CouponListVOVO> list);
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -2,15 +2,20 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.account.api.dto.CouponListDto;
import com.ruoyi.account.api.dto.GrantCouponDto;
import com.ruoyi.account.api.model.TAppCoupon;
import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.account.api.vo.ExchangeRecordVO;
import com.ruoyi.account.service.TAppCouponService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.feignClient.OtherClient;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -35,6 +40,24 @@
public class TAppCouponController {
    @Autowired
    private TAppCouponService tAppCouponService;
    @Autowired
    private OtherClient otherClient;
    /**
     * 查询用户可用优惠券数量
     * @param dto
     * @return
     */
    @ApiOperation(value = "选择优惠券分页查询", tags = {"小程序-扫一扫"})
    @PostMapping(value = "/scan/couponList")
    public AjaxResult<PageInfo<CouponListVOVO>> couponList(@RequestBody CouponListDto dto) {
        // todo token获取用户id
        Long userId = 11L;
        dto.setUserId(userId);
        PageInfo<CouponListVOVO> res = tAppCouponService.couponList(dto);
        return AjaxResult.ok(res);
    }
    /**
     * 管理后台远程调用 根据优惠券ids 查询对应的发放数量
@@ -46,11 +69,11 @@
        List<Integer> res = new ArrayList<>();
        String[] split = couponIds.split(",");
        // 查询每个优惠券的发放数量
        List<TAppCoupon> couponId = tAppCouponService.list(new QueryWrapper<TAppCoupon>()
                .in("coupon_id", Arrays.asList(split)));
        for (String s : split) {
            res.add(tAppCouponService.list(new QueryWrapper<TAppCoupon>()
                    .eq("coupon_id", s)).size());
                    .eq("coupon_id", s)
                    .eq("del_flag",0)
            ).size());
        }
        return R.ok(res);
    }
@@ -80,7 +103,7 @@
     * 后台远程调用 给用户发放优惠券
     */
    @PostMapping("/grantCoupon")
    public R  getExchangeRecordByCouponId(@RequestBody GrantCouponDto dto){
    public R  grantCoupon(@RequestBody GrantCouponDto dto){
        List<TAppCoupon> res = new ArrayList<>();
        for (String s : dto.getUserIds().split(",")) {
            TAppCoupon tAppCoupon = new TAppCoupon();
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -7,11 +7,14 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.dto.*;
import com.ruoyi.account.api.model.*;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.account.service.*;
import com.ruoyi.account.util.GiveVipUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.domain.BasePojo;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.feignClient.ExchangeOrderClient;
@@ -67,10 +70,11 @@
    @Resource
    private ExchangeOrderClient exchangeOrderClient;
    @ApiOperation(value = "管理后台-根据手机号查询用户ids", tags = {"管理后台-活动费用统计"})
    @PostMapping(value = "/user/getUserIdsByPhone")
    public R<List<Long>> getUserIdsByPhone(@RequestParam("phone") String phone) {
        return R.ok(appUserService.list(new QueryWrapper<TAppUser>().like("phone",phone)).stream().map(TAppUser::getId).collect(Collectors.toList()));
    }
    @Resource
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppCouponMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.account.api.model.TAppCoupon;
import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.account.api.vo.ExchangeRecordVO;
import com.ruoyi.common.core.web.page.PageInfo;
import org.apache.ibatis.annotations.Param;
@@ -20,4 +21,7 @@
public interface TAppCouponMapper extends BaseMapper<TAppCoupon> {
    List<ExchangeRecordVO> pageList(@Param("pageInfo")PageInfo<ExchangeRecordVO> pageInfo,@Param("req") ExchangeRecordGoodsQuery dto);
    List<CouponListVOVO> couponList(@Param("pageInfo")PageInfo<CouponListVOVO> pageInfo,@Param("userId") Long userId);
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppCouponService.java
@@ -1,9 +1,12 @@
package com.ruoyi.account.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.account.api.dto.CouponListDto;
import com.ruoyi.account.api.model.TAppCoupon;
import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.account.api.vo.ExchangeRecordVO;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
/**
@@ -17,4 +20,7 @@
public interface TAppCouponService extends IService<TAppCoupon> {
    PageInfo<ExchangeRecordVO> pagelist(ExchangeRecordGoodsQuery couponId);
    PageInfo<CouponListVOVO> couponList(CouponListDto dto);
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java
@@ -1,15 +1,19 @@
package com.ruoyi.account.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.dto.CouponListDto;
import com.ruoyi.account.api.model.TAppCoupon;
import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.account.api.vo.ExchangeRecordVO;
import com.ruoyi.account.mapper.TAppCouponMapper;
import com.ruoyi.account.service.TAppCouponService;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.feignClient.OtherClient;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -32,6 +36,8 @@
    @Autowired
    private OrderClient orderClient;
    @Autowired
    private OtherClient otherClient;
    @Override
    public PageInfo<ExchangeRecordVO> pagelist(ExchangeRecordGoodsQuery dto) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -98,4 +104,17 @@
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public PageInfo<CouponListVOVO> couponList(CouponListDto dto) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        PageInfo<CouponListVOVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
        List<CouponListVOVO> list = this.baseMapper.couponList(pageInfo,dto.getUserId());
        for (CouponListVOVO couponListVOVO : list) {
            couponListVOVO.setValidityTime("有效期:"+format.format(couponListVOVO.getCreateTime())+" - "+format.format(couponListVOVO.getEndTime()));
        }
        List<CouponListVOVO> data = otherClient.getCouponInfoByCouponIds(list).getData();
        pageInfo.setRecords(data);
        return pageInfo;
    }
}
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml
@@ -57,5 +57,24 @@
        </where>
        ORDER BY create_time DESC
    </select>
    <select id="couponList" resultType="com.ruoyi.account.api.vo.CouponListVOVO">
        SELECT
            t1.app_user_id AS appUserId,
            t1.coupon_id AS couponId,
            MAX(t1.end_time) AS endTime,
            MAX(t1.create_time) AS createTime,
            MAX(t1.status) AS status,
            COUNT(*) AS couponCount
        FROM
            t_app_coupon t1
        WHERE
            t1.del_flag = 0
          AND t1.app_user_id = #{userId}
          AND t1.status = 1
        and t1.endTime &gt;= now()
        GROUP BY
            t1.coupon_id,
            t1.end_time
    </select>
</mapper>
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
@@ -4,7 +4,9 @@
import com.ruoyi.account.api.dto.GrantCouponDto;
import com.ruoyi.account.api.feignClient.AppCouponClient;
import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.account.api.vo.ExchangeRecordVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TCoupon;
@@ -18,6 +20,7 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -89,8 +92,8 @@
        return AjaxResult.ok(data);
    }
    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "发放优惠券")
    @GetMapping(value = "/pageList")
    public AjaxResult pageList(@RequestBody GrantCouponDto dto) {
    @GetMapping(value = "/grantCoupon")
    public AjaxResult grantCoupon(@RequestBody GrantCouponDto dto) {
        TCoupon byId = tCouponService.getById(dto.getCouponId());
        Integer waysToObtain = byId.getWaysToObtain();
        dto.setWaysToObtain(waysToObtain);
@@ -102,13 +105,50 @@
                dto.setEndTime(LocalDateTime.now().plusDays(byId.getDays()));
                break;
        }
        // 远程送优惠券
        appCouponClient.grantCoupon(dto);
        return AjaxResult.success();
    }
    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询")
    @PostMapping(value = "/pageList")
    public AjaxResult<PageInfo<TCoupon>> pageList(@RequestBody CouponQuery dto) {
        return AjaxResult.ok(tCouponService.pageList(dto));
    }
    /**
     * 小程序远程调用 获取优惠券信息
     */
    @PostMapping(value = "/getCouponInfoByCouponIds")
    public R<List<CouponListVOVO>> getCouponInfoByCouponIds(@RequestBody List<CouponListVOVO> list) {
        for (CouponListVOVO couponListVOVO : list) {
            TCoupon byId = tCouponService.getById(couponListVOVO.getCouponId());
            BeanUtils.copyProperties(byId,couponListVOVO);
            couponListVOVO.setCouponName(byId.getName());
            // 根据预付金额 判断是否满足
            if (byId.getMeetTheConditions().compareTo(BigDecimal.ZERO) == 0){
                // 无门槛
                couponListVOVO.setIsUse(1);
            }else if (couponListVOVO.getPayMoney().compareTo(byId.getMeetTheConditions()) < 0){
                couponListVOVO.setIsUse(0);
            }else{
                couponListVOVO.setIsUse(1);
            }
            // 根据优惠券类型和预付金额 判断哪一个优惠券减免的金额最大 将其排在第一位
            if (couponListVOVO.getIsUse() == 1){
                switch (byId.getPreferentialMode()){
                    case 1:
                            couponListVOVO.setMoney(byId.getDiscountAmount());
                        break;
                    case 2:
                        break;
                }
            }else{
                couponListVOVO.setMoney(BigDecimal.ZERO);
            }
        }
        return R.ok(list);
    }
}