src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsRecord.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/vip/mapper/MallVipBenefitsRecordMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/modules/MallOrderInfoMapper.xml | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -59,7 +59,12 @@ WIN_CASH("WIN_PROBABILITY", "WIN_CASH"), RANK_BONUS("BONUS_TYPE", "RANK_BONUS"), CASHOUT_SETTING("CASHOUT_SET", "CASHOUT_SETTING"), INDIRECT_BONUS_SETTING("INDIRECT_BONUS_SETTING", ""); INDIRECT_BONUS_SETTING("INDIRECT_BONUS_SETTING", ""), /** * 会员日 */ VIP_DATE("VIP_DATE", "VIP_DATE"); private String type; src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -139,4 +139,7 @@ @TableField(exist = false) private String orderIds; @TableField(exist = false) private String expressNo; } src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
@@ -57,4 +57,7 @@ @ApiModelProperty(value = "是否送货上门 1:是 2:否") private Integer isHome; @ApiModelProperty(value = "快递单号") private String expressNo; } src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsRecord.java
New file @@ -0,0 +1,28 @@ package cc.mrbird.febs.vip.entity; import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; @Data @TableName(value = "mall_vip_benefits_record") public class MallVipBenefitsRecord extends BaseEntity { private String memberId ; /** 权益名称 */ private String benefitsName ; /** 权益类型; 1-会员日 2-生日 */ private Integer benefitsType ; /** 领取名称 */ private String receiveName ; /** 领取数量 */ private Integer receiveCnt ; /** 领取时间 */ private Date receiveTime ; /** 领取类型;2-商品 3-优惠券 */ private Integer receiveType ; /** 领取ID */ private Long receiveId ; } src/main/java/cc/mrbird/febs/vip/mapper/MallVipBenefitsRecordMapper.java
New file @@ -0,0 +1,7 @@ package cc.mrbird.febs.vip.mapper; import cc.mrbird.febs.vip.entity.MallVipBenefitsRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface MallVipBenefitsRecordMapper extends BaseMapper<MallVipBenefitsRecord> { } src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.vip.service.impl; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; @@ -11,14 +12,18 @@ import cc.mrbird.febs.mall.vo.AdminMallNewsInfoVo; import cc.mrbird.febs.vip.entity.MallVipBenefits; import cc.mrbird.febs.vip.entity.MallVipBenefitsDetails; import cc.mrbird.febs.vip.entity.MallVipBenefitsRecord; import cc.mrbird.febs.vip.mapper.MallVipBenefitsDetailsMapper; import cc.mrbird.febs.vip.mapper.MallVipBenefitsMapper; import cc.mrbird.febs.vip.mapper.MallVipBenefitsRecordMapper; import cc.mrbird.febs.vip.service.IMallVipBenefitsDetailsService; import cc.mrbird.febs.vip.service.IMallVipBenefitsService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; @@ -31,6 +36,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; @Slf4j @Service @@ -44,6 +50,8 @@ private final MallAddressInfoMapper mallAddressInfoMapper; private final MallOrderInfoMapper mallOrderInfoMapper; private final MallOrderItemMapper mallOrderItemMapper; private final MallVipBenefitsRecordMapper mallVipBenefitsRecordMapper; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override public IPage<MallVipBenefits> vipBenefitsListInPage(QueryRequest request) { @@ -115,7 +123,48 @@ throw new FebsException("权益不存在"); } MallVipBenefits vipBenefits = this.baseMapper.selectById(benefits.getId()); if (vipBenefits == null) { throw new FebsException("权益不存在"); } Integer linkType = benefits.getLinkType(); if (vipBenefits.getGainType() == 2) { String today = DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN); boolean isBirthday = member.getBirthday().compareTo(DateUtil.parseDate(today)) == 0; if (!isBirthday) { throw new FebsException("未达到权益领取条件:未到生日"); } } if (vipBenefits.getGainType() == 3) { DataDictionaryCustom data = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.VIP_DATE.getType(), DataDictionaryEnum.VIP_DATE.getCode()); String today = DateUtil.format(new Date(), "MM-dd"); if (!StrUtil.equals(data.getValue(), today)) { throw new FebsException("未达到权益领取条件:未到会员日"); } } LambdaQueryWrapper<MallVipBenefitsRecord> recordQuery = new LambdaQueryWrapper<>(); recordQuery.ge(MallVipBenefitsRecord::getReceiveTime, DateUtil.beginOfDay(new Date())) .le(MallVipBenefitsRecord::getReceiveTime, DateUtil.endOfDay(new Date())) .eq(MallVipBenefitsRecord::getMemberId, member.getId()) .eq(MallVipBenefitsRecord::getBenefitsType, vipBenefits.getType()) .eq(MallVipBenefitsRecord::getReceiveId, Long.parseLong(benefits.getContent())); List<MallVipBenefitsRecord> mallVipBenefitsRecords = mallVipBenefitsRecordMapper.selectList(recordQuery); if (CollUtil.isNotEmpty(mallVipBenefitsRecords)) { throw new FebsException("已领取过权益"); } MallVipBenefitsRecord record = new MallVipBenefitsRecord(); record.setBenefitsType(vipBenefits.getGainType()); record.setBenefitsName(vipBenefits.getName()); record.setReceiveTime(new Date()); record.setReceiveType(linkType); record.setReceiveId(Long.parseLong(benefits.getContent())); // 商品 if (linkType == 2) { @@ -181,6 +230,7 @@ orderItem.setCostPrice(sku.getCostPrice()); } record.setReceiveName(goods.getGoodsName()); mallOrderInfoMapper.insert(orderInfo); mallOrderItemMapper.insert(orderItem); } @@ -200,6 +250,8 @@ memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), coupon.getExpireDay())); memberCoupon.setMemberId(member.getId()); mallMemberCouponMapper.insert(memberCoupon); record.setReceiveName(coupon.getName()); } } src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java
@@ -1,8 +1,11 @@ package cc.mrbird.febs.vip.service.impl; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.vip.entity.MallVipBenefits; import cc.mrbird.febs.vip.entity.MallVipConfig; @@ -33,6 +36,7 @@ private final IMallVipConfigBenefitsService mallVipConfigBenefitsService; private final MallMemberMapper mallMemberMapper; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override public IPage<MallVipConfig> vipConfigList(QueryRequest request) { @@ -117,8 +121,11 @@ return true; } DataDictionaryCustom data = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.VIP_DATE.getType(), DataDictionaryEnum.VIP_DATE.getCode()); String todayTime = DateUtil.format(new Date(), "MM-dd"); // 会员日 return item.getGainType() == 1; return item.getGainType() == 1 && StrUtil.equals(data.getValue(), todayTime); }).max(Comparator.comparing(MallVipBenefits::getScoreMultiple)); return max.orElseGet(max::get); src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -386,12 +386,15 @@ <result column="city" property="city" /> <result column="township" property="township" /> <result column="detail_address" property="detailAddress" /> <result column="express_no" property="expressNo" /> </resultMap> <select id="selectNewApiOrderListInPage" resultMap="NewOrderInfoMap"> select a.* ,express.express_no from mall_order_info a left join mall_express_info express on a.id=express.order_id <where> a.del_flag=2 <if test="record.memberId != null">