src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberWalletService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberWalletServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/modules/MallGoodsMapper.xml | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/modules/MallOrderInfoMapper.xml | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
@@ -97,4 +97,7 @@ @TableField(exist = false) private List<String> images; @TableField(exist = false) private String orderNo; } src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java
@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @@ -37,4 +38,6 @@ AdminMailGoodsUpdateVo getMallGoodsUpdateInfoById(@Param("id")long id); List<AdminMallGoodsTreeVo> getAllGoodsTree(); List<MallGoods> selectOrderGoodsList(@Param("memberId") Long memberId, @Param("date") Date date); } src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @@ -45,4 +46,6 @@ Integer selectCntDirect(@Param("inviteId") String inviteId); BigDecimal selectTotalAmount(@Param("memberId") Long memberId); BigDecimal selectTotalAmountForDate(@Param("date") Date date, @Param("member") Long memberId); } src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberWalletService.java
@@ -18,6 +18,8 @@ void add(BigDecimal amount, Long memberId, String field); void add(BigDecimal amount, Long memberId, String... field); void reduce(BigDecimal amount, Long memberId, String field); void commissionChange(CommissionChangeDto commissionChange); src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
New file @@ -0,0 +1,13 @@ package cc.mrbird.febs.mall.service; /** * @author wzy * @date 2022-05-10 **/ public interface IMemberProfitService { /** * 静态分红 */ void staticProfit(); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberWalletServiceImpl.java
@@ -169,6 +169,14 @@ } @Override public void add(BigDecimal amount, Long memberId, String... field) { String[] fields = field.clone(); for (String s : fields) { add(amount, memberId, s); } } @Override public void reduce(BigDecimal amount, Long memberId, String field) { int i = 0; boolean flag = true; src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
New file @@ -0,0 +1,78 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.mapper.MallGoodsMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallOrderItemMapper; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.service.IMemberProfitService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Date; import java.util.List; /** * @author wzy * @date 2022-05-10 **/ @Slf4j @Service @RequiredArgsConstructor public class MemberProfitServiceImpl implements IMemberProfitService { private final MallMemberMapper mallMemberMapper; private final MallOrderInfoMapper mallOrderInfoMapper; private final MallOrderItemMapper mallOrderItemMapper; private final MallGoodsMapper mallGoodsMapper; private final IApiMallMemberWalletService walletService; private final IMallMoneyFlowService moneyFlowService; @Override @Transactional(rollbackFor = Exception.class) public void staticProfit() { log.info("#####静态分红开始运行:{}#####", new Date()); List<MallMember> members = mallMemberMapper.selectList(null); if (CollUtil.isEmpty(members)) { return; } Date profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1); BigDecimal totalIncome = mallOrderInfoMapper.selectTotalAmountForDate(profitDate, null); if (totalIncome.compareTo(BigDecimal.ZERO) == 0) { return; } BigDecimal perProfit = totalIncome.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); for (MallMember member : members) { List<MallGoods> goodsList = mallGoodsMapper.selectOrderGoodsList(member.getId(), profitDate); if (CollUtil.isEmpty(goodsList)) { continue; } for (MallGoods goods : goodsList) { BigDecimal goodsProfit = goods.getStaticProp().multiply(perProfit); walletService.add(goodsProfit, member.getId(), "score", "total_score"); moneyFlowService.addMoneyFlow(member.getId(), goodsProfit, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), goods.getOrderNo(), FlowTypeEnum.SCORE.getValue()); } } } public static void main(String[] args) { System.out.println(DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1)); } } src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -193,4 +193,17 @@ a.goods_name goodsName from mall_goods a </select> <select id="selectOrderGoodsList" resultType="cc.mrbird.febs.mall.entity.MallGoods"> select a.*,c.order_no from mall_goods a inner join mall_order_item b on a.id=b.goods_id inner join mall_order_info c on b.order_id=c.ID where c.status=4 <if test="memberId != null"> and c.member_id=#{memberId} </if> <if test="date != null"> and date_format(c.receving_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') </if> </select> </mapper> src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -178,4 +178,15 @@ select IFNULL(sum(IFNULL(amount,0)),0) from mall_order_info where member_id=#{memberId} and status = 4 </select> <select id="selectTotalAmountForDate" resultType="java.math.BigDecimal"> select IFNULL(sum(IFNULL(amount,0)),0) from mall_order_info where status = 4 <if test="member != null"> and member_id=#{memberId} </if> <if test="date != null"> and date_format(a.receving_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') </if> </select> </mapper>