src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.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/vo/MallOrderInfoTestVo.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/modules/MallOrderInfoMapper.xml | ●●●●● patch | view | raw | blame | history | |
src/test/java/cc/mrbird/febs/ProfitTest.java | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -48,4 +48,8 @@ IPage<AdminMallMoneyFlowVo> selectOrderMoneyFlowInPage(Page<AdminMallMoneyFlowVo> page, @Param("record")MallOrderInfo mallOrderInfo); BigDecimal selectSumAmountByStatusAndMemberId(@Param("status")Integer statusIng, @Param("memberId")Long id); List<MallMoneyFlow> selectMoneyFlowByOrderNo(@Param("orderNo")String orderNo); void deleteByOrderNo(@Param("orderNo")String orderNo); } src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -8,6 +8,7 @@ import cc.mrbird.febs.mall.vo.AdminMallOrderInfoVo; import cc.mrbird.febs.mall.vo.AdminMallOrderVo; import cc.mrbird.febs.mall.vo.AdminOrderDetailVo; import cc.mrbird.febs.mall.vo.MallOrderInfoTestVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -73,4 +74,8 @@ Integer selectOrderInfoByStatusAndMemberId(@Param("status")int value, @Param("memberId")Long id); Integer selectCountByCreateTime(@Param("createdTime")String yyyyMMdd); List<MallOrderInfoTestVo> selectOrderCntByDate(@Param("createdTime")String yyyyMMdd); List<MallOrderInfo> selectByMemberIdAndDate(@Param("memberId")Long memberId, @Param("createdTime")String dateStr); } src/main/java/cc/mrbird/febs/mall/vo/MallOrderInfoTestVo.java
New file @@ -0,0 +1,11 @@ package cc.mrbird.febs.mall.vo; import lombok.Data; @Data public class MallOrderInfoTestVo { private String name; private Long memberId; private int orderCnt; } src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -159,4 +159,16 @@ a.member_id = #{memberId} and a.status = #{status} </select> <select id="selectMoneyFlowByOrderNo" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow"> select a.* from mall_money_flow a where a.order_no = #{orderNo} and a.type in (1,3,4,6) </select> <delete id="deleteByOrderNo"> delete from mall_money_flow where order_no = #{orderNo} </delete> </mapper> src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -372,4 +372,35 @@ </if> </select> <select id="selectOrderCntByDate" resultType="cc.mrbird.febs.mall.vo.MallOrderInfoTestVo"> SELECT b. NAME, a.member_id memberId, COUNT(a.id) orderCnt FROM mall_order_info a LEFT JOIN mall_member b ON a.member_id = b.id WHERE a. STATUS = 4 AND a.comment_state = 2 AND date_format(a.CREATED_TIME, '%Y-%m-%d') = #{createdTime} GROUP BY a.member_id ORDER BY orderCnt DESC </select> <select id="selectByMemberIdAndDate" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> SELECT a.* FROM mall_order_info a WHERE a. STATUS = 4 AND a.comment_state = 2 AND a.member_id = #{memberId} AND date_format(a.CREATED_TIME, '%Y-%m-%d') = #{createdTime} order by a.CREATED_TIME desc </select> </mapper> src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -18,6 +18,7 @@ import cc.mrbird.febs.mall.quartz.OrderSettlementJob; import cc.mrbird.febs.mall.service.*; import cc.mrbird.febs.mall.vo.ApiMallSubsidyAmountInfoVo; import cc.mrbird.febs.mall.vo.MallOrderInfoTestVo; import cc.mrbird.febs.pay.model.*; import cc.mrbird.febs.pay.service.UnipayService; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; @@ -43,6 +44,7 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; /** * @author wzy @@ -106,6 +108,78 @@ @Autowired private DataDictionaryCustomMapper dataDictionaryCustomMapper; @Autowired private IApiMallMemberWalletService walletService; @Autowired private MallMemberWalletMapper mallMemberWalletMapper; @Test public void retrunOrder(){ /** * 查询出当天下过单的人数 * 比对单数是否超过最大值,超过最大值的订单回退资金,删除数据 */ String dateStr = "2023-04-01"; //获取某一天下单人的全部单数 List<MallOrderInfoTestVo> mallOrderInfoTestVos = mallOrderInfoMapper.selectOrderCntByDate(dateStr); if(CollUtil.isNotEmpty(mallOrderInfoTestVos)){ List<MallOrderInfoTestVo> collect = mallOrderInfoTestVos .stream() .filter(mallOrderInfoTestVo -> mallOrderInfoTestVo.getOrderCnt() > 2) .collect(Collectors.toList()); List<Long> collectMemberId = collect.stream().map(MallOrderInfoTestVo::getMemberId).collect(Collectors.toList()); if(CollUtil.isNotEmpty(collectMemberId)){ for(Long memberId : collectMemberId){ List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectByMemberIdAndDate(memberId,dateStr); if(CollUtil.isNotEmpty(mallOrderInfos)){ int size = mallOrderInfos.size(); for(int i = 2; i < size; i++){ MallOrderInfo mallOrderInfo = mallOrderInfos.get(i); String orderNo = mallOrderInfo.getOrderNo(); List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectMoneyFlowByOrderNo(orderNo); for(MallMoneyFlow mallMoneyFlow : mallMoneyFlows){ Long rtMemberId = mallMoneyFlow.getRtMemberId(); BigDecimal amount = mallMoneyFlow.getAmount(); MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(rtMemberId); if(mallMemberWallet.getBalance().compareTo(amount) >= 0){ walletService.reduceBalance(amount, rtMemberId); } } mallMoneyFlowMapper.deleteByOrderNo(orderNo); mallOrderInfoMapper.deleteById(mallOrderInfo.getId()); } } } } } } @Test public void retrunOrderMemberId(){ String dateStr = "2023-04-02"; Long memberId = 702L; List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectByMemberIdAndDate(memberId,dateStr); if(CollUtil.isNotEmpty(mallOrderInfos)){ int size = mallOrderInfos.size(); for(int i = 2; i < size; i++){ MallOrderInfo mallOrderInfo = mallOrderInfos.get(i); String orderNo = mallOrderInfo.getOrderNo(); List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectMoneyFlowByOrderNo(orderNo); for(MallMoneyFlow mallMoneyFlow : mallMoneyFlows){ Long rtMemberId = mallMoneyFlow.getRtMemberId(); BigDecimal amount = mallMoneyFlow.getAmount(); MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(rtMemberId); if(mallMemberWallet.getBalance().compareTo(amount) >= 0){ walletService.reduceBalance(amount, rtMemberId); } } mallMoneyFlowMapper.deleteByOrderNo(orderNo); mallOrderInfoMapper.deleteById(mallOrderInfo.getId()); } } } @Test public void tetstgetPrikey(){ Map<String, String> wallet = new HashMap<String, String>();