lisy
2023-07-11 9e01ddb449dba96e681af4bdb6257e3c7c0cfe51
积分商城的列表查询
11个文件已修改
6个文件已添加
724 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -247,8 +247,7 @@
            if(null == userIdFormRedis){
                return ResultUtil.tokenErr();
            }
            // TODO: 2023/7/10 积分商品列表查询
            return ResultUtil.success();
            return ResultUtil.success(tauService.queryAppUserIntegral(request,userIdFormRedis));
        }catch (Exception e){
            return ResultUtil.runErr();
        }
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
@@ -1,9 +1,12 @@
package com.dsh.account.feignclient.activity;
import com.dsh.account.feignclient.activity.model.CommodityRequest;
import com.dsh.account.feignclient.activity.model.IntegralCommodity;
import com.dsh.account.feignclient.activity.model.PointsMerchandise;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -14,4 +17,10 @@
    public List<IntegralCommodity> getConvertibleGoods();
    @PostMapping("/base/pointMerchars/getCommoditys")
    public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request);
    @PostMapping("/base/pointMerchars/getRedeemedNums")
    public int getRedeemedQuantity(@RequestBody Integer goodId);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
@@ -1,8 +1,11 @@
package com.dsh.account.feignclient.activity;
import com.dsh.account.feignclient.activity.model.CommodityRequest;
import com.dsh.account.model.dto.Coupon;
import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo;
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;
import java.util.List;
@@ -14,4 +17,12 @@
    @PostMapping("/base/userConpon/getStuOfConpons")
    public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId);
    @PostMapping("/base/coupon/getAllCoupons")
    public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request);
    @PostMapping("/base/coupon/getRedeemedNums")
    public int getRedeemedQuantity(@RequestBody Integer id);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java
New file
@@ -0,0 +1,16 @@
package com.dsh.account.feignclient.activity.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CommodityRequest {
    @ApiModelProperty(value = "经度")
    private String lon;
    @ApiModelProperty(value = "纬度")
    private String lat;
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java
New file
@@ -0,0 +1,108 @@
package com.dsh.account.feignclient.activity.model;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class PointsMerchandise {
    /**
     * 主键
     */
    private Integer id;
    /**
     * 类型(1=实体商品,2=课包商品,3=门票商品)
     */
    private Integer type;
    /**
     * 商品名称
     */
    private String name;
    /**
     * 课包id
     */
    private Integer coursePackageId;
    /**
     * 原价
     */
    private BigDecimal price;
    /**
     * 兑换方式(1=积分,2=现金+积分)
     */
    private Integer redemptionMethod;
    /**
     * 所需现金
     */
    private BigDecimal cash;
    /**
     * 所属积分
     */
    private BigDecimal integral;
    /**
     * 商品封面
     */
    private String cover;
    /**
     * 商品图片
     */
    private String productImages;
    /**
     * 用户人群(1=全部用户,2=年度会员,3=已有学员用户)
     */
    private Integer userPopulation;
    /**
     * 发放数量
     */
    private Integer quantityIssued;
    /**
     * 限领数量
     */
    private Integer pickUpQuantity;
    /**
     * 开始时间
     */
    private Date startTime;
    /**
     * 结束时间
     */
    private Date endTime;
    /**
     * 使用范围(1=全国,2=指定城市,3=指定门店)
     */
    private Integer useScope;
    /**
     * 省
     */
    private String province;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 市
     */
    private String city;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 兑换说明
     */
    private String redemptionInstructions;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
    /**
     * 添加时间
     */
    private Date insertTime;
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java
New file
@@ -0,0 +1,22 @@
package com.dsh.account.feignclient.course;
import com.dsh.account.feignclient.course.model.CoursePackage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
 * @author zhibing.pu
 * @date 2023/7/5 9:55
 */
@FeignClient("mb-cloud-course")
public interface CoursePackageClient {
    /**
     * 根据id获取课包
     * @param id
     * @return
     */
    @PostMapping("/coursePackage/queryCoursePackageById")
    CoursePackage queryCoursePackageById(Integer id);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java
New file
@@ -0,0 +1,128 @@
package com.dsh.account.feignclient.course.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * @author zhibing.pu
 * @date 2023/7/5 9:56
 */
@Data
public class CoursePackage {
    private Integer id;
    /**
     * 省
     */
    private String province;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 市
     */
    private String city;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 门店id
     */
    private Integer storeId;
    /**
     * 课包类型id
     */
    private Integer coursePackageTypeId;
    /**
     * 课包名称
     */
    private String name;
    /**
     * 上课场地id
     */
    private Integer siteId;
    /**
     * 教练id
     */
    private Integer coachId;
    /**
     * 最多预约人数
     */
    private Integer maxSubscribeNumber;
    /**
     * 上课开始时间
     */
    private String classStartTime;
    /**
     * 上课结束时段
     */
    private String classEndTime;
    /**
     * 上课周,多个分号分隔
     */
    private String classWeeks;
    /**
     * 封面图
     */
    private String coverDrawing;
    /**
     * 详情图
     */
    private String detailDrawing;
    /**
     * 介绍图
     */
    private String introduceDrawing;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 支付方式(1=现金,2=玩湃币)
     */
    private Integer payType;
    /**
     * 有效天数
     */
    private Integer validDays;
    /**
     * 课后练习课程id
     */
    private Integer courseId;
    /**
     * 课后练习视频介绍
     */
    private String introduce;
    /**
     * 完成课后练习获取积分
     */
    private Integer integral;
    /**
     * 课程状态(1=未开始,2=进行中,3=已结束,4=已取消)
     */
    private Integer status;
    /**
     * 审核状态(1=待审核,2=已同意,3=已拒绝)
     */
    private Integer auditStatus;
    /**
     * 审核人id
     */
    private Integer auditUserId;
    /**
     * 审核备注
     */
    private String authRemark;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
    /**
     * 添加时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date insertTime;
}
cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java
New file
@@ -0,0 +1,119 @@
package com.dsh.account.model.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class Coupon {
    /**
     * 主键
     */
    private Integer id;
    /**
     * 优惠券名称
     */
    private String name;
    /**
     * 优惠券类型(1=满减券,2=代金券,3=体验券)
     */
    private Integer type;
    /**
     * 优惠券规则JSON
     */
    private String content;
    /**
     * 优惠券说明
     */
    private String illustrate;
    /**
     * 发放方式(1=积分购买,2=注册赠送,3=自动发券)
     */
    private Integer distributionMethod;
    /**
     * 兑换方式(1=积分,2=积分+现金)
     */
    private Integer redemptionMethod;
    /**
     * 所需现金
     */
    private BigDecimal cash;
    /**
     * 所属积分
     */
    private BigDecimal integral;
    /**
     * 用户人群(1=全部用户,2=年度会员,3=已有学员用户)
     */
    private Integer userPopulation;
    /**
     * 发放数量
     */
    private Integer quantityIssued;
    /**
     * 限领数量
     */
    private Integer pickUpQuantity;
    /**
     * 开始时间
     */
    private Date startTime;
    /**
     * 结束时间
     */
    private Date endTime;
    /**
     * 使用范围(1=全国,2=指定城市,3=指定门店)
     */
    private Integer useScope;
    /**
     * 省
     */
    private String province;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 市
     */
    private String city;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 审核状态(1=待审核,2=已通过,3=已拒绝)
     */
    private Integer auditStatus;
    /**
     * 审核人id
     */
    private Integer auditUserId;
    /**
     * 审核备注
     */
    private String auditRemark;
    /**
     * 状态(1=未开始,2=已开始,3=已结束,4=已取消)
     */
    private Integer status;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
    /**
     * 添加时间
     */
    private Date insertTime;
    /**
     * 封面图
     */
    private String cover;
    /**
     * 图片
     */
    private String productImages;
}
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java
@@ -35,18 +35,24 @@
        @ApiModelProperty(value = "商品名称")
        private String goodName;
        @ApiModelProperty(value = "1积分 2现金+积分")
        private Integer condition;
        @ApiModelProperty(value = "金额")
        private BigDecimal amount;
        @ApiModelProperty(value = "积分")
        private Integer integral;
        @ApiModelProperty(value = "适用范围: 1 仅限会员 2仅限学员 3全部用户")
        @ApiModelProperty(value = "适用范围: 1全部用户 2仅限会员 3仅限学员")
        private Integer belongsType;
        @ApiModelProperty(value = "商品类型: 1实物 2课包 3门票 4优惠券")
        private Integer goodsType;
        @ApiModelProperty(value = "已兑换数量")
        private Integer nums;
    }
}
cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -7,9 +7,7 @@
import com.dsh.account.model.LoginSMSCodeVo;
import com.dsh.account.model.LoginWeChatVo;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo;
import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo;
import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo;
import com.dsh.account.model.vo.userBenefitDetail.*;
import com.dsh.account.util.ResultUtil;
import java.util.List;
@@ -119,4 +117,7 @@
    void cancellation(Integer appUserId);
    List<RechargeCentVo> getSysRechargeConfig(Integer appUserId);
    PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis);
}
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -9,8 +9,13 @@
import com.dsh.account.entity.VipPayment;
import com.dsh.account.enums.RechargeRecordEnum;
import com.dsh.account.feignclient.activity.MerChandiseClient;
import com.dsh.account.feignclient.activity.UserConponClient;
import com.dsh.account.feignclient.activity.model.CommodityRequest;
import com.dsh.account.feignclient.activity.model.PointsMerchandise;
import com.dsh.account.feignclient.course.CoursePackageClient;
import com.dsh.account.feignclient.course.CoursePaymentClient;
import com.dsh.account.feignclient.course.model.CourseOfStoreVo;
import com.dsh.account.feignclient.course.model.CoursePackage;
import com.dsh.account.feignclient.course.model.QueryStoreList;
import com.dsh.account.feignclient.course.model.StuCourseResp;
import com.dsh.account.feignclient.other.ImgConfigClient;
@@ -26,14 +31,13 @@
import com.dsh.account.model.JoinPlayPaiVo;
import com.dsh.account.model.LoginSMSCodeVo;
import com.dsh.account.model.LoginWeChatVo;
import com.dsh.account.model.dto.Coupon;
import com.dsh.account.model.vo.classDetails.CourseVenue;
import com.dsh.account.model.vo.classDetails.ExerciseVideo;
import com.dsh.account.model.vo.classDetails.RegisteredCourse;
import com.dsh.account.model.vo.classDetails.WeekedCourse;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo;
import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo;
import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo;
import com.dsh.account.model.vo.userBenefitDetail.*;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.util.*;
import com.dsh.account.util.akeylogin.Md5Util;
@@ -44,10 +48,7 @@
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -100,6 +101,12 @@
    @Resource
    private RechargeConfigClient reconMapper;
    @Resource
    private UserConponClient ucponClient;
    @Resource
    private CoursePackageClient cpageClient;
    @Override
    public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) {
@@ -557,4 +564,130 @@
        return centVos;
    }
    @Override
    public PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis) {
        PointMallDetailsResponse detailsResponse = new PointMallDetailsResponse();
        List<PointMallDetailsResponse.Goods> goods = new ArrayList<>();
        TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis);
        detailsResponse.setName(tAppUser.getName());
        detailsResponse.setIntegral(tAppUser.getIntegral());
        detailsResponse.setHeadImg(tAppUser.getHeadImg());
        CommodityRequest commodityRequest = new CommodityRequest();
        commodityRequest.setLon(request.getLon());
        commodityRequest.setLat(request.getLat());
        List<PointsMerchandise> vicinityGoods = mcClient.getVicinityGoods(commodityRequest);
        if (vicinityGoods.size() > 0) {
            for (PointsMerchandise vicinityGood : vicinityGoods) {
                PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods();
                switch (vicinityGood.getType()) {
                    case 1:
                        commodity.setGoodId(vicinityGood.getId());
                        commodity.setGoodName(vicinityGood.getName());
                        commodity.setGoodImg(vicinityGood.getCover());
                        commodity.setCondition(vicinityGood.getRedemptionMethod());
                        if (vicinityGood.getRedemptionMethod() == 1) {
                            commodity.setIntegral(vicinityGood.getIntegral().intValue());
                        } else {
                            commodity.setIntegral(vicinityGood.getIntegral().intValue());
                            commodity.setAmount(vicinityGood.getCash());
                        }
                        commodity.setBelongsType(vicinityGood.getUserPopulation());
                        commodity.setGoodsType(1);
                        commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
                        break;
                    case 2:
                        commodity.setGoodId(vicinityGood.getCoursePackageId());
                        CoursePackage coursePackage = cpageClient.queryCoursePackageById(vicinityGood.getCoursePackageId());
                        commodity.setGoodImg(coursePackage.getCoverDrawing());
                        commodity.setGoodName(coursePackage.getName());
                        commodity.setCondition(vicinityGood.getRedemptionMethod());
                        if (vicinityGood.getRedemptionMethod() == 1) {
                            commodity.setIntegral(vicinityGood.getIntegral().intValue());
                        } else {
                            commodity.setIntegral(vicinityGood.getIntegral().intValue());
                            commodity.setAmount(vicinityGood.getCash());
                        }
                        commodity.setBelongsType(vicinityGood.getUserPopulation());
                        commodity.setGoodsType(2);
                        commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
                        break;
                    case 3:
                        commodity.setGoodId(vicinityGood.getId());
                        commodity.setGoodName(vicinityGood.getName());
                        commodity.setGoodImg(vicinityGood.getCover());
                        commodity.setCondition(vicinityGood.getRedemptionMethod());
                        if (vicinityGood.getRedemptionMethod() == 1) {
                            commodity.setIntegral(vicinityGood.getIntegral().intValue());
                        } else {
                            commodity.setIntegral(vicinityGood.getIntegral().intValue());
                            commodity.setAmount(vicinityGood.getCash());
                        }
                        commodity.setBelongsType(vicinityGood.getUserPopulation());
                        commodity.setGoodsType(3);
                        commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
                        break;
                    default:
                        break;
                }
                goods.add(commodity);
            }
        }
        List<Coupon> allCoupons = ucponClient.getAllCoupons(commodityRequest);
        if (allCoupons.size() > 0) {
            for (Coupon allCoupon : allCoupons) {
                PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods();
                commodity.setGoodId(allCoupon.getId());
                commodity.setGoodName(allCoupon.getName());
                commodity.setCondition(allCoupon.getRedemptionMethod());
                commodity.setGoodImg(allCoupon.getCover());
                if (allCoupon.getRedemptionMethod() == 1) {
                    commodity.setIntegral(allCoupon.getIntegral().intValue());
                } else {
                    commodity.setIntegral(allCoupon.getIntegral().intValue());
                    commodity.setAmount(allCoupon.getCash());
                }
                commodity.setBelongsType(allCoupon.getUserPopulation());
                commodity.setGoodsType(4);
                commodity.setNums(ucponClient.getRedeemedQuantity(allCoupon.getId()));
                goods.add(commodity);
            }
        }
        if (StringUtils.hasText(request.getSearch())){
            goods = goods.stream()
                    .filter(merchandise -> merchandise.getGoodName().contains(request.getSearch()))
                    .collect(Collectors.toList());
        }
        if (null != request.getRank()){
            switch (request.getRank()){
                case 1:
                    goods = goods.stream()
                            .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral).reversed())
                            .collect(Collectors.toList());
                    break;
                case 2:
                    goods = goods.stream()
                            .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral))
                            .collect(Collectors.toList());
                    break;
                case 3:
                    goods = goods.stream()
                            .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getNums).reversed())
                            .collect(Collectors.toList());
                    break;
                default:
                    break;
            }
        }
        if (null != request.getGoodsType()){
            goods = goods.stream()
                    .filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType()))
                    .collect(Collectors.toList());
        }
        detailsResponse.setGoods(goods);
        return detailsResponse;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -1,11 +1,15 @@
package com.dsh.activity.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.Coupon;
import com.dsh.activity.entity.UserCoupon;
import com.dsh.activity.model.CouponListVo;
import com.dsh.activity.model.request.CommodityRequest;
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.GDMapGeocodingUtil;
import com.dsh.activity.util.ResultUtil;
import com.dsh.activity.util.TokenUtil;
import io.swagger.annotations.ApiImplicitParam;
@@ -14,7 +18,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * @author zhibing.pu
@@ -32,6 +39,9 @@
    @Autowired
    private UserCouponService ucService;
    @Autowired
    private GDMapGeocodingUtil gdMapGeocodingUtil;
@@ -103,4 +113,46 @@
        }
    }
    @PostMapping("/base/coupon/getAllCoupons")
    public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request){
        String provinceCode = "";
        String cityCode = "";
        try {
            Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
            provinceCode = geocode.get("provinceCode");
            cityCode = geocode.get("cityCode");
        }catch (Exception e){
            e.printStackTrace();
        }
        try {
            Integer userAppId = tokenUtil.getUserIdFormRedis();
            List<UserCoupon> list = ucService.list(new QueryWrapper<UserCoupon>()
                    .eq("userId",userAppId ));
            List<Coupon> couponList = couponService.list(new QueryWrapper<Coupon>()
                    .eq("auditStatus",2)
                    .eq("state",1)
                    .eq("status",2));
            if (couponList.size() > 0 ){
                Iterator<Coupon> iterator = couponList.iterator();
                while (iterator.hasNext()) {
                    Coupon merchandise = iterator.next();
                    if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) {
                        iterator.remove(); // 移除符合条件的商品
                    }
                }
            }
            return couponList;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    @PostMapping("/base/coupon/getRedeemedNums")
    public int getRedeemedQuantity(@RequestBody Integer id){
        return ucService.count(new QueryWrapper<UserCoupon>()
                .eq("couponId",id));
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -3,16 +3,19 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.PointsMerchandise;
import com.dsh.activity.entity.UserPointsMerchandise;
import com.dsh.activity.feignclient.model.IntegralCommodity;
import com.dsh.activity.model.request.CommodityRequest;
import com.dsh.activity.service.PointsMerchandiseService;
import com.dsh.activity.service.UserPointsMerchandiseService;
import com.dsh.activity.util.GDMapGeocodingUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
@RestController
@RequestMapping("")
@@ -21,6 +24,12 @@
    @Autowired
    private PointsMerchandiseService pmdsService;
    @Autowired
    private GDMapGeocodingUtil gdMapGeocodingUtil;
    @Autowired
    private UserPointsMerchandiseService upmseService;
@@ -43,4 +52,37 @@
        return commodity;
    }
    @PostMapping("/base/pointMerchars/getCommoditys")
    public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request){
        String provinceCode = "";
        String cityCode = "";
        try {
            Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
            provinceCode = geocode.get("provinceCode");
            cityCode = geocode.get("cityCode");
        }catch (Exception e){
            e.printStackTrace();
        }
        List<PointsMerchandise> list = pmdsService.list(new QueryWrapper<PointsMerchandise>()
                .eq("state", 1));
        if (list.size() > 0 ){
            Iterator<PointsMerchandise> iterator = list.iterator();
            while (iterator.hasNext()) {
                PointsMerchandise merchandise = iterator.next();
                if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) {
                    iterator.remove(); // 移除符合条件的商品
                }
            }
        }
        return list;
    }
    @PostMapping("/base/pointMerchars/getRedeemedNums")
    public int getRedeemedQuantity(@RequestBody Integer goodId){
        return upmseService.count(new QueryWrapper<UserPointsMerchandise>()
                .eq("pointsMerchandiseId",goodId));
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
@@ -158,6 +158,16 @@
    @TableField("insertTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date insertTime;
    /**
     * 封面图
     */
    @TableField("cover")
    private String cover;
    /**
     * 图片
     */
    @TableField("productImages")
    private String productImages;
    @Override
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java
@@ -1,9 +1,12 @@
package com.dsh.activity.feignclient;
import com.dsh.activity.entity.PointsMerchandise;
import com.dsh.activity.feignclient.model.IntegralCommodity;
import com.dsh.activity.model.request.CommodityRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -13,5 +16,10 @@
    @PostMapping("/base/pointMerchars/convertGoods")
    public List<IntegralCommodity> getConvertibleGoods();
    @PostMapping("/base/pointMerchars/getCommoditys")
    public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request);
    @PostMapping("/base/pointMerchars/getRedeemedNums")
    public int getRedeemedQuantity(@RequestBody Integer goodId);
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java
@@ -1,8 +1,11 @@
package com.dsh.activity.feignclient;
import com.dsh.activity.entity.Coupon;
import com.dsh.activity.feignclient.model.CouponStuAvailableVo;
import com.dsh.activity.model.request.CommodityRequest;
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;
import java.util.List;
@@ -14,4 +17,11 @@
    @PostMapping("/base/userConpon/getStuOfConpons")
    public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId);
    @PostMapping("/base/coupon/getAllCoupons")
    public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request);
    @PostMapping("/base/coupon/getRedeemedNums")
    public int getRedeemedQuantity(@RequestBody Integer id);
}
cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java
New file
@@ -0,0 +1,18 @@
package com.dsh.activity.model.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CommodityRequest {
    @ApiModelProperty(value = "经度")
    private String lon;
    @ApiModelProperty(value = "纬度")
    private String lat;
}