From 2bcf4cc63c2838213cf580af3b53ca757fe8a374 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Wed, 24 Jan 2024 22:49:38 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java | 4 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 14 ++ src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java | 57 +++++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 5 + src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java | 34 ++++++ src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java | 7 + src/main/java/cc/mrbird/febs/vip/service/IVipCommonService.java | 6 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 11 + src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java | 1 src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsDetails.java | 7 + src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java | 42 ++++++++ src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java | 9 + src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java | 12 ++ src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java | 4 src/main/resources/mapper/modules/MallVipConfigMapper.xml | 12 ++ src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 2 src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 7 + src/main/java/cc/mrbird/febs/vip/mapper/MallVipConfigMapper.java | 3 src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefits.java | 5 + 19 files changed, 235 insertions(+), 7 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java new file mode 100644 index 0000000..a65ce85 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java @@ -0,0 +1,34 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +@Getter +public enum ScoreFlowTypeEnum { + + /** + * + */ + PAY(1, "积分支付"), + + BUY(2, "购买商品获得积分"); + + private final int value; + + private final String desc; + + ScoreFlowTypeEnum(int value, String desc) { + this.value = value; + this.desc = desc; + } + + public static String getDescByValue(int value) { + for (ScoreFlowTypeEnum scoreFlowTypeEnum : values()) { + if (value == scoreFlowTypeEnum.getValue()) { + return scoreFlowTypeEnum.getDesc(); + } + } + + return ""; + } + +} 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 0e4af18..0ce1495 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.properties.XcxProperties; import cc.mrbird.febs.common.utils.*; @@ -377,6 +374,12 @@ Long id = LoginUserUtil.getLoginUser().getId(); moneyFlowDto.setMemberId(id); IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiMoneyFlowInPage(page, moneyFlowDto); + +// if (moneyFlowDto.getFlowType() == 3) { +// pages.getRecords().forEach(item -> { +// item.setDescription(ScoreFlowTypeEnum.getDescByValue(item.getType())); +// }); +// } return new FebsResponse().success().data(pages); } 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 7b70a02..923ed98 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 @@ -23,6 +23,8 @@ import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.WeixinServiceUtil; import cc.mrbird.febs.rabbit.producter.AgentProducer; +import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService; +import cc.mrbird.febs.vip.service.IMallVipConfigService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; @@ -86,6 +88,8 @@ private final MallMemberCouponMapper mallMemberCouponMapper; private final MallGoodsCouponMapper mallGoodsCouponMapper; private final CouponGoodsMapper couponGoodsMapper; + + private final IMallVipConfigService mallVipConfigService; @Override @Transactional(rollbackFor = Exception.class) @@ -438,6 +442,7 @@ mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2); agentProducer.sendOrderCoupon(orderInfo.getId()); + agentProducer.sendGetScoreMsg(orderInfo.getId()); break; case "4": if (orderInfo.getOrderType() != 2) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java index 178599f..1e8b998 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java @@ -37,4 +37,11 @@ @ApiModelProperty(value = "时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createdTime; + + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "备注") + private String remark; } diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java index 0d95241..719288a 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java @@ -327,6 +327,7 @@ mallOrderInfoMapper.updateById(order); agentProducer.sendOrderCoupon(order.getId()); + agentProducer.sendGetScoreMsg(order.getId()); mallMoneyFlowService.addMoneyFlow( order.getMemberId(), diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java index a473a08..2470a96 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java +++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java @@ -12,4 +12,6 @@ public static final String ORDER_RETURN_MONEY = "queue_order_return_money_qay"; public static final String ORDER_COUPON = "queue_order_coupon"; + + public static final String GET_SCORE_MSG = "queue_get_score_msg"; } diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java index 9fe3dea..972bd28 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java +++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java @@ -5,6 +5,7 @@ import cc.mrbird.febs.mall.service.IMemberProfitService; import cc.mrbird.febs.rabbit.constants.QueueConstants; import cc.mrbird.febs.rabbit.enumerates.RabbitQueueEnum; +import cc.mrbird.febs.vip.service.IVipCommonService; import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; @@ -82,4 +83,17 @@ log.error("使用优惠卷异常:", e); } } + + @Autowired + private IVipCommonService vipCommonService; + + @RabbitListener(queues = QueueConstants.GET_SCORE_MSG) + public void getScoreMsg(Long orderId) { + log.info("收到积分消息:{}", orderId); + try { + vipCommonService.getScore(orderId); + } catch (Exception e) { + log.error("获取积分消息异常", e); + } + } } diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java index 87376dd..8d11cf6 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java +++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java @@ -15,7 +15,9 @@ ORDER_RETURN_MONEY("exchange_order_return_money_qay", "route_key_order_return_money_qay", "queue_order_return_money_qay"), - ORDER_COUPON("exchange_order_coupon", "route_key_order_coupon", QueueConstants.ORDER_COUPON); + ORDER_COUPON("exchange_order_coupon", "route_key_order_coupon", QueueConstants.ORDER_COUPON), + + GET_SCORE_MSG("exchange_get_score_msg", "route_key_get_score_msg", QueueConstants.GET_SCORE_MSG); private String exchange; diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java index 281c171..d18c404 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java +++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java @@ -83,4 +83,11 @@ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(RabbitQueueEnum.ORDER_COUPON.getExchange(), RabbitQueueEnum.ORDER_COUPON.getRoute(), id, correlationData); } + + public void sendGetScoreMsg(Long orderId) { + log.info("发送获得积分消息:{}", orderId); + + CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); + rabbitTemplate.convertAndSend(RabbitQueueEnum.GET_SCORE_MSG.getExchange(), RabbitQueueEnum.GET_SCORE_MSG.getRoute(), orderId, correlationData); + } } diff --git a/src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java b/src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java index b2a048d..b8af531 100644 --- a/src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java +++ b/src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java @@ -4,10 +4,13 @@ import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.vip.entity.MallVipBenefits; +import cc.mrbird.febs.vip.entity.MallVipConfig; import cc.mrbird.febs.vip.service.IMallVipBenefitsService; import cc.mrbird.febs.vip.service.IMallVipConfigService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; @@ -27,12 +30,18 @@ @ApiOperation(value = "获取会员等级列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = MallVipConfig.class) + }) @GetMapping(value = "/findVipList") public FebsResponse findVipList() { return new FebsResponse().success().data(mallVipConfigService.findConfigList()); } @ApiOperation(value = "获取权益详情") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = MallVipBenefits.class) + }) @GetMapping(value = "/findBenefitsDetailList/{id}") public FebsResponse findVipDetailList(@PathVariable("id") Long id) { MallVipBenefits vipBenefits = mallVipBenefitsService.findVipBenefitsById(id); diff --git a/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefits.java b/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefits.java index b9bc408..885af9f 100644 --- a/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefits.java +++ b/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefits.java @@ -3,6 +3,8 @@ import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -10,11 +12,13 @@ @Data @TableName("mall_vip_benefits") +@ApiModel(value = "MallVipBenefits") public class MallVipBenefits extends BaseEntity { /** * 权益名称 */ + @ApiModelProperty(value = "权益名称") private String name; /** @@ -25,6 +29,7 @@ /** * 权益图标 */ + @ApiModelProperty(value = "权益图标") private String icon; /** diff --git a/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsDetails.java b/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsDetails.java index a7832de..9d55849 100644 --- a/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsDetails.java +++ b/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsDetails.java @@ -3,30 +3,37 @@ import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @TableName("mall_vip_benefits_details") +@ApiModel(value = "MallVipBenefitsDetails") public class MallVipBenefitsDetails extends BaseEntity { /** * 图片链接 */ + @ApiModelProperty(value = "图片") private String image; /** * 是否可点击;1-是 2-否 */ + @ApiModelProperty(value = "是否可点击") private Integer isClick; /** * 链接类型;1-链接 2-领取商品 3-优惠券 */ + @ApiModelProperty(value = "1-链接 2-领取商品 3-优惠券") private Integer linkType; /** * 内容;根据linkType来的 */ + @ApiModelProperty(value = "跳转的链接或者商品/优惠券的ID") private String content; /** diff --git a/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java b/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java index 1413cf6..c2d59b3 100644 --- a/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java +++ b/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java @@ -3,27 +3,39 @@ import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data +@ApiModel(value = "MallVipConfig") @TableName("mall_vip_config") public class MallVipConfig extends BaseEntity { + /** * 会员名称 */ + @ApiModelProperty(value = "名称") private String name; /** * 主图 */ + @ApiModelProperty(value = "主图") private String thumb; + + /** + * 会员编码 + */ + private String code; /** * 等级 */ + @ApiModelProperty(value = "会员等级") private Integer level; /** diff --git a/src/main/java/cc/mrbird/febs/vip/mapper/MallVipConfigMapper.java b/src/main/java/cc/mrbird/febs/vip/mapper/MallVipConfigMapper.java index 31553fb..0a856a4 100644 --- a/src/main/java/cc/mrbird/febs/vip/mapper/MallVipConfigMapper.java +++ b/src/main/java/cc/mrbird/febs/vip/mapper/MallVipConfigMapper.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.vip.entity.MallVipConfig; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -11,4 +12,6 @@ IPage<MallVipConfig> findVipConfigListInPage(IPage<MallVipConfig> page); List<MallVipConfig> selectVipConfigList(); + + MallVipConfig selectVipConfigByCode(@Param("code") String code); } diff --git a/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java b/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java index 2591223..8137f8b 100644 --- a/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java +++ b/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java @@ -1,6 +1,8 @@ package cc.mrbird.febs.vip.service; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.vip.entity.MallVipBenefits; +import cc.mrbird.febs.vip.entity.MallVipBenefitsDetails; import cc.mrbird.febs.vip.entity.MallVipConfig; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -18,4 +20,6 @@ void editVipConfig(MallVipConfig config); void delVipConfig(Long id); + + MallVipBenefits hasVipBenefits(Long memberId); } diff --git a/src/main/java/cc/mrbird/febs/vip/service/IVipCommonService.java b/src/main/java/cc/mrbird/febs/vip/service/IVipCommonService.java new file mode 100644 index 0000000..9cf7861 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/vip/service/IVipCommonService.java @@ -0,0 +1,6 @@ +package cc.mrbird.febs.vip.service; + +public interface IVipCommonService { + + void getScore(Long orderId); +} diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java index 42db833..957b247 100644 --- a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java @@ -1,6 +1,10 @@ package cc.mrbird.febs.vip.service.impl; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.mall.entity.MallMember; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cc.mrbird.febs.vip.entity.MallVipBenefits; import cc.mrbird.febs.vip.entity.MallVipConfig; import cc.mrbird.febs.vip.entity.MallVipConfigBenefits; import cc.mrbird.febs.vip.mapper.MallVipConfigBenefitsMapper; @@ -8,6 +12,8 @@ import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService; import cc.mrbird.febs.vip.service.IMallVipConfigService; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -18,8 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; +import java.util.*; @Slf4j @Service @@ -27,6 +32,7 @@ public class MallVipConfigServiceImpl extends ServiceImpl<MallVipConfigMapper, MallVipConfig> implements IMallVipConfigService { private final IMallVipConfigBenefitsService mallVipConfigBenefitsService; + private final MallMemberMapper mallMemberMapper; @Override public IPage<MallVipConfig> vipConfigList(QueryRequest request) { @@ -85,4 +91,36 @@ delQuery.eq(MallVipConfigBenefits::getConfigId, id); this.mallVipConfigBenefitsService.remove(delQuery); } + + @Override + public MallVipBenefits hasVipBenefits(Long memberId) { + MallMember member = mallMemberMapper.selectById(memberId); + if (member == null) { + throw new FebsException("会员不存在"); + } + + MallVipConfig vipConfig = this.baseMapper.selectVipConfigByCode(member.getLevel()); + if (vipConfig == null) { + throw new FebsException("会员配置不存在"); + } + + String today = DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN); + boolean isBirthday = member.getBirthday().compareTo(DateUtil.parseDate(today)) == 0; + List<MallVipBenefits> benefits = vipConfig.getBenefits(); + Optional<MallVipBenefits> max = benefits.stream().filter(item -> { + if (item.getScoreMultiple() == null) { + return false; + } + + // 生日权益 + if (item.getGainType() == 2 && isBirthday) { + return true; + } + + // 会员日 + return item.getGainType() == 1; + }).max(Comparator.comparing(MallVipBenefits::getScoreMultiple)); + + return max.orElseGet(max::get); + } } diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java new file mode 100644 index 0000000..2f1d1b1 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java @@ -0,0 +1,57 @@ +package cc.mrbird.febs.vip.service.impl; + +import cc.mrbird.febs.common.enumerates.FlowTypeEnum; +import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum; +import cc.mrbird.febs.mall.entity.MallOrderInfo; +import cc.mrbird.febs.mall.entity.MallOrderItem; +import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; +import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; +import cc.mrbird.febs.mall.service.IMallMoneyFlowService; +import cc.mrbird.febs.vip.entity.MallVipBenefits; +import cc.mrbird.febs.vip.service.IMallVipConfigService; +import cc.mrbird.febs.vip.service.IVipCommonService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; + +@Slf4j +@Service +@RequiredArgsConstructor +public class VipCommonServiceImpl implements IVipCommonService { + + private final MallOrderInfoMapper mallOrderInfoMapper; + private final IMallVipConfigService mallVipConfigService; + private final IMallMoneyFlowService mallMoneyFlowService; + private final IApiMallMemberWalletService mallMemberWalletService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void getScore(Long orderId) { + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderDetailsById(orderId); + if (mallOrderInfo == null) { + return; + } + + Long memberId = mallOrderInfo.getMemberId(); + MallVipBenefits mallVipBenefits = mallVipConfigService.hasVipBenefits(memberId); + + BigDecimal multiple = BigDecimal.ONE; + String name = ""; + if (mallVipBenefits != null) { + multiple = mallVipBenefits.getScoreMultiple(); + name = mallVipBenefits.getName(); + } + + double sum = mallOrderInfo.getItems().stream().map(MallOrderItem::getAmount).mapToDouble(BigDecimal::doubleValue).sum(); + + int score = multiple.multiply(BigDecimal.valueOf(sum)).intValue(); + + mallMoneyFlowService.addMoneyFlow(memberId, new BigDecimal(score), ScoreFlowTypeEnum.BUY.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue(), name, 2); + mallMemberWalletService.add(new BigDecimal(score), memberId, "prize_score"); + } +} diff --git a/src/main/resources/mapper/modules/MallVipConfigMapper.xml b/src/main/resources/mapper/modules/MallVipConfigMapper.xml index a68988d..d710e4a 100644 --- a/src/main/resources/mapper/modules/MallVipConfigMapper.xml +++ b/src/main/resources/mapper/modules/MallVipConfigMapper.xml @@ -35,4 +35,16 @@ inner join mall_vip_config_benefits configBenefits on config.id=configBenefits.config_id inner join mall_vip_benefits benefits on configBenefits.benefits_id=benefits.id </select> + + <select id="selectVipConfigByCode" resultMap="vipConfigMap"> + select + config.* + ,benefits.id c_id + ,benefits.name c_name + ,benefits.icon c_icon + from mall_vip_config config + inner join mall_vip_config_benefits configBenefits on config.id=configBenefits.config_id + inner join mall_vip_benefits benefits on configBenefits.benefits_id=benefits.id + where config.code=#{code} + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1