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