From 86579f21ded7a639f9d6edcf3becdf51dc3a3e41 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 19 Dec 2022 11:57:14 +0800 Subject: [PATCH] 20221219 1、创建订单增加商品ID的入参 2、增加每日购买次数和购买商品会员等级判断 3、注册会员,设置了会员等级 4、商品接口增加了补贴金额和星级字段,增加总评价数量和总评价星数 --- src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | 2 src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java | 8 ++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 30 ++++++++++ src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 9 +++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 6 - src/main/java/cc/mrbird/febs/common/enumerates/MemberAccountLevelEnum.java | 42 ++++++++++++++ src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java | 13 ++++ src/main/resources/mapper/modules/MallGoodsMapper.xml | 4 + src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsCommentMapper.java | 1 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 5 + src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java | 4 + src/main/resources/mapper/modules/MallGoodsCommentMapper.xml | 6 ++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java | 2 src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java | 29 ++++++++- 14 files changed, 151 insertions(+), 10 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberAccountLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberAccountLevelEnum.java new file mode 100644 index 0000000..e51f5fa --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberAccountLevelEnum.java @@ -0,0 +1,42 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +//会员星级 +@Getter +public enum MemberAccountLevelEnum { + /** + * 定级规则 + */ + NORMAL("普通",0,1), + ONE_STAR("一星",50,2), + TWO_STAR("二星",100,3), + THREE_STAR("三星",200,4); + + private String name; + + private Integer amount; + + private Integer code; + + MemberAccountLevelEnum(String name,Integer amount,Integer code) { + this.name = name; + this.amount = amount; + this.code = code; + } + + /** + * 根据输入的会员星级获取对应的Code + * @param name + * @return + */ + public Integer getMemberLevelCode(String name){ + Integer code = 0; + for(MemberAccountLevelEnum memberAccountLevelEnum : MemberAccountLevelEnum.values()){ + if(memberAccountLevelEnum.name.equals(name)){ + code = memberAccountLevelEnum.code; + } + } + return code; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java index 20c120e..4ecab40 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java @@ -3,16 +3,17 @@ import lombok.Getter; import java.math.BigDecimal; +//商品星级 @Getter public enum StarRatingEnum { /** * 定级规则 * 大于最小值,小于等于最大值 */ - NORMAL("普通",0,30), - ONE_STAR("一星",30,50), - TWO_STAR("二星",50,100), - THREE_STAR("三星",100,200); + NORMAL("普通",0,30,1), + ONE_STAR("一星",30,50,2), + TWO_STAR("二星",50,100,3), + THREE_STAR("三星",100,200,4); private String name; @@ -20,10 +21,13 @@ private Integer maxValue; - StarRatingEnum(String name,Integer minValue, Integer maxValue) { + private Integer code; + + StarRatingEnum(String name,Integer minValue, Integer maxValue,Integer code) { this.name = name; this.minValue = minValue; this.maxValue = maxValue; + this.code = code; } /** @@ -44,6 +48,21 @@ return name; } + /** + * 根据输入的商品星级获取对应的Code + * @param name + * @return + */ + public Integer getGoodsStarCode(String name){ + Integer code = 0; + for(StarRatingEnum starRatingEnum : StarRatingEnum.values()){ + if(starRatingEnum.name.equals(name)){ + code = starRatingEnum.code; + } + } + return code; + } + public static void main(String[] args) { String s = StarRatingEnum.NORMAL.belongStarRating(String.valueOf(100)); System.out.println(s); diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java index 5940ee7..bc70f3a 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java @@ -16,6 +16,10 @@ public class AddOrderDto { @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "商品ID", example = "1") + private Long goodsId; + + @NotNull(message = "参数不能为空") @ApiModelProperty(value = "地址ID", example = "1") private Long addressId; diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java index 61a5590..36afe16 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java @@ -134,4 +134,9 @@ */ private Integer storeMaster; + /** + * 会员等级 + */ + private String accountLevel; + } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsCommentMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsCommentMapper.java index 145c577..6e62067 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsCommentMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsCommentMapper.java @@ -12,4 +12,5 @@ IPage<AdminMallGoodsCommentVo> getCommentListInPage(Page<AdminMallGoodsCommentVo> page, @Param("record")AdminMallGoodsCommentDto adminMallGoodsCommentDto); + Double selectSumStarByGoodsId(@Param("goodsId")Long id); } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java index 670a51b..2671ca1 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java @@ -65,4 +65,6 @@ BigDecimal selectTotalAmountByPayDoneAndDataString(@Param("payResult")int i, @Param("date") Date date); BigDecimal selectSumAmountByPayMethodAndSomeStatue(@Param("payMethod")String name, @Param("statues") List<Long> values); + + Integer selectCountByCreateTimeAndMemberId(@Param("createdTime")String yyyyMMdd,@Param("memberId")Long memberId); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java index 6135e77..7808583 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java @@ -66,6 +66,8 @@ objectQueryWrapper.eq("goods_id",id); Integer commentCount = mallGoodsCommentMapper.selectCount(objectQueryWrapper); mallGoodsDetailsVo.setCommentCount(commentCount); + Double star = mallGoodsCommentMapper.selectSumStarByGoodsId(id); + mallGoodsDetailsVo.setStar(star); return mallGoodsDetailsVo; } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 4465115..324e026 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -1,10 +1,7 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.common.enumerates.AgentLevelEnum; -import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; -import cc.mrbird.febs.common.enumerates.FlowTypeEnum; -import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.enumerates.*; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.*; import cc.mrbird.febs.mall.conversion.MallGoodsConversion; @@ -114,6 +111,7 @@ mallMember.setName(registerDto.getName()); mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); + mallMember.setAccountLevel(MemberAccountLevelEnum.NORMAL.getName()); mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name()); mallMember.setSex("男"); mallMember.setBindPhone(registerDto.getAccount()); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index c05d958..113348b 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -25,6 +25,7 @@ import cc.mrbird.febs.pay.service.UnipayService; import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -43,6 +44,7 @@ import java.math.BigDecimal; import java.text.DecimalFormat; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -77,11 +79,39 @@ private final MallMemberBankSignMapper mallMemberBankSignMapper; private final MallMemberBankMapper mallMemberBankMapper; private final MallShopApplyMapper mallShopApplyMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override @Transactional(rollbackFor = Exception.class) public Long createOrder(AddOrderDto addOrderDto) { MallMember member = LoginUserUtil.getLoginUser(); + /** + * 根据会员星级判断是否可以购买该商品 + */ + MallMember mallMember = memberMapper.selectById(member.getId()); + String accountLevel = mallMember.getAccountLevel(); + Integer memberLevelCode = MemberAccountLevelEnum.NORMAL.getMemberLevelCode(accountLevel); + //获取商品星级 + MallGoods goods = mallGoodsMapper.selectById(addOrderDto.getGoodsId()); + String starRating = goods.getStarRating(); + Integer goodsStarCode = StarRatingEnum.NORMAL.getGoodsStarCode(starRating); + if(memberLevelCode < goodsStarCode){ + throw new FebsException("会员等级不够"); + } + /** + * 会员一天最多下单次数 + */ + DataDictionaryCustom buyTimesDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.BUY_TIMES.getType(), DataDictionaryEnum.BUY_TIMES.getCode()); + Integer buyTimes = Integer.parseInt(buyTimesDic.getValue()); + + DateTime date = DateUtil.date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String yyyyMMdd = sdf.format(date); + Integer times = this.baseMapper.selectCountByCreateTimeAndMemberId(yyyyMMdd,member.getId()); + if(buyTimes <= times){ + throw new FebsException("会员今日已无法购买"); + } // MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); // if (address == null) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java index 25eebaa..f755ee5 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java @@ -69,6 +69,17 @@ @ApiModelProperty(value = "样式") private List<GoodsDetailsStyleVo> styles; - @ApiModelProperty(value = "评论数量") + @ApiModelProperty(value = "评论总数量") private Integer commentCount; + + @ApiModelProperty(value = "评论总星数") + private Double star; + //补贴金额 + + @ApiModelProperty(value = "补贴金额") + private BigDecimal subsidyAmount; + //星级等级 + + @ApiModelProperty(value = "星级等级") + private String starRating; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java index bc3d4d4..e0bf224 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java @@ -40,4 +40,12 @@ @ApiModelProperty(value = "是否有运费 1-是 2-包邮") private Integer hasCarriage; + //补贴金额 + + @ApiModelProperty(value = "补贴金额") + private BigDecimal subsidyAmount; + //星级等级 + + @ApiModelProperty(value = "星级等级") + private String starRating; } diff --git a/src/main/resources/mapper/modules/MallGoodsCommentMapper.xml b/src/main/resources/mapper/modules/MallGoodsCommentMapper.xml index e7221ee..ccce507 100644 --- a/src/main/resources/mapper/modules/MallGoodsCommentMapper.xml +++ b/src/main/resources/mapper/modules/MallGoodsCommentMapper.xml @@ -22,4 +22,10 @@ order by a.created_time desc </select> + <select id="selectSumStarByGoodsId" resultType="java.lang.Double"> + select Ifnull(sum(star),0) + from mall_goods_comment a + where goods_id = #{goodsId} + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml index 66ce2c7..55ef542 100644 --- a/src/main/resources/mapper/modules/MallGoodsMapper.xml +++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml @@ -22,6 +22,8 @@ <result property="hasCarriage" column="has_carriage" /> <result property="carriage" column="carriage" /> <result property="isNormal" column="is_normal" /> + <result property="subsidyAmount" column="subsidy_amount" /> + <result property="starRating" column="star_rating" /> <collection property="styles" ofType="cc.mrbird.febs.mall.entity.MallGoodsStyle"> <id property="id" column="style_id" /> <result property="name" column="style_name" /> @@ -70,6 +72,8 @@ a.thumb, a.original_price, a.present_price, + a.subsidy_amount, + a.star_rating, a.score, a.is_hot, min(b.present_price) price, diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml index a16b8d7..5e7a466 100644 --- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml +++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml @@ -309,4 +309,13 @@ #{item} </foreach> </select> + + <select id="selectCountByCreateTimeAndMemberId" resultType="java.lang.Integer"> + select + count(a.id) + from mall_order_info a + where + date_format(a.CREATED_TIME, '%Y-%m-%d') = #{createTime} + and a.member_id = #{memberId} + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1