From 5723081b2da05257b254196d440e3f1f6d7a654b Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 03 Apr 2023 13:41:15 +0800 Subject: [PATCH] 设定时区,这样创建的时间就不会出现问题 --- src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | 5 + src/test/java/cc/mrbird/febs/ProfitTest.java | 74 ++++++++++++++++++++++++ src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 31 ++++++++++ src/main/java/cc/mrbird/febs/mall/vo/MallOrderInfoTestVo.java | 11 +++ src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 12 ++++ src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java | 4 + 6 files changed, 137 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java index 9acffe6..f660277 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java +++ b/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); } 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 2fcd3e9..387a5c8 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java +++ b/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); } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallOrderInfoTestVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallOrderInfoTestVo.java new file mode 100644 index 0000000..0317dff --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallOrderInfoTestVo.java @@ -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; +} diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml index f340c0e..088f717 100644 --- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml index 55144df..0a4d3a4 100644 --- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml +++ b/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> \ No newline at end of file diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index b3b3892..ef4e90d 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/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>(); -- Gitblit v1.9.1