src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderAchieveMapper.java
@@ -13,5 +13,5 @@ List<Map<String, String>> selectListByStateAndCreateTimeAndUniqueCode(@Param("state")Integer i, @Param("offsetDay")DateTime offsetDay); int updateByUniqueCodeStateAndTime(@Param("uniqueCode")String uniqueCode, @Param("state")Integer stateOne, @Param("offsetDay")DateTime dateTime); int updateByUniqueCodeStateAndTime(@Param("updateTime")DateTime updateTime,@Param("uniqueCode")String uniqueCode, @Param("state")Integer stateOne, @Param("offsetDay")DateTime dateTime); } src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -57,7 +57,7 @@ MallOrderInfo selectByOrderNo(@Param("orderNo") String orderNo); int updateOrderConfirmStatus(@Param("date") Date date); int updateOrderConfirmStatus(@Param("updateTime")DateTime updateTime,@Param("date") Date date); List<MallOrderInfo> selectOrderInfoWithNormalGoods(@Param("date") Date date); src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java
@@ -116,7 +116,7 @@ mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE); mallLeaderAchieveMapper.insert(mallLeaderAchieve); } mallOrderInfoMapper.updateOrderConfirmStatus(DateUtil.offsetDay(new Date(), -value)); mallOrderInfoMapper.updateOrderConfirmStatus(DateUtil.date(),DateUtil.offsetDay(new Date(), -value)); } } /** @@ -136,14 +136,15 @@ * a.unique_code uniqueCode 团长特征码 * , IFNULL(sum(a.amount),0) amount 每日提成总金额 */ // DateTime dateTime = DateUtil.offsetDay(new Date(), -1); DateTime dateTime = DateUtil.offsetDay(new Date(), 0); DateTime dateTime = DateUtil.offsetDay(new Date(), -1); // DateTime dateTime = DateUtil.offsetDay(new Date(), 0); List<Map<String, String>> allLeaderAchieve = mallLeaderAchieveMapper.selectListByStateAndCreateTimeAndUniqueCode(MallLeaderAchieve.STATE_ONE,dateTime); if (CollUtil.isNotEmpty(allLeaderAchieve)) { for (Map<String, String> map : allLeaderAchieve) { String uniqueCode = map.get("uniqueCode"); Object amountOrder = map.get("amount"); //直接舍弃小数点的第三位 BigDecimal amount = new BigDecimal(map.get("amount")).setScale(2,BigDecimal.ROUND_DOWN); BigDecimal amount = new BigDecimal(String.valueOf(amountOrder)).setScale(2,BigDecimal.ROUND_DOWN); BigDecimal achieveMoney = amount.multiply(bonusPercent).setScale(2,BigDecimal.ROUND_DOWN); MallMember mallMember = mallMemberMapper.selectInfoByInviteId(uniqueCode); memberWalletService.addBalance(achieveMoney,mallMember.getId()); @@ -157,14 +158,14 @@ //更新到已提成状态 mallLeaderAchieveMapper.updateByUniqueCodeStateAndTime(uniqueCode,MallLeaderAchieve.STATE_ONE,dateTime); mallLeaderAchieveMapper.updateByUniqueCodeStateAndTime(DateUtil.date(),uniqueCode,MallLeaderAchieve.STATE_ONE,dateTime); } } } } public static void main(String[] args) { BigDecimal bigDecimal = new BigDecimal(0.1256).setScale(2,BigDecimal.ROUND_DOWN); System.out.println(bigDecimal); } // public static void main(String[] args) { // BigDecimal bigDecimal = new BigDecimal(0.1256).setScale(2,BigDecimal.ROUND_DOWN); // System.out.println(bigDecimal); // } } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -714,6 +714,20 @@ BigDecimal bb = new BigDecimal(100); int refundMoney = refundAmount.multiply(bb).intValue(); Long refundId = mallRefundEntity.getId(); MallRefundEntity mallRefundOld = mallRefundMapper.selectById(refundId); MallOrderInfo mallOrderInfoOld = this.baseMapper.selectByOrderNo(orderNo); //余额支付退款 if(OrderPayMethodEnum.BALANCE.getName().equals(mallOrderInfo.getPayMethod())){ mallRefundOld.setState(1); mallRefundMapper.updateById(mallRefundOld); mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue()); this.baseMapper.updateById(mallOrderInfoOld); mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); memberWalletService.add(refundAmount, member.getId(), "balance"); return new FebsResponse().success().message("退款成功"); } Boolean flag = false; Boolean debug = xcxProperties.getDebug(); if (debug) { @@ -729,9 +743,6 @@ * 更新退款表 * 更新订单表 */ Long refundId = mallRefundEntity.getId(); MallRefundEntity mallRefundOld = mallRefundMapper.selectById(refundId); MallOrderInfo mallOrderInfoOld = this.baseMapper.selectByOrderNo(orderNo); if(flag){ mallRefundOld.setState(1); mallRefundMapper.updateById(mallRefundOld); src/main/resources/mapper/modules/MallLeaderAchieveMapper.xml
@@ -15,7 +15,7 @@ <update id="updateByUniqueCodeStateAndTime"> update mall_leader_achieve set state = 2, UPDATED_TIME = new Date() UPDATED_TIME = #{updateTime} where unique_code = #{uniqueCode} and state = 1 and date_format(CREATED_TIME, '%Y-%m-%d') = date_format(#{offsetDay}, '%Y-%m-%d') src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -333,7 +333,7 @@ <update id="updateOrderConfirmStatus"> update mall_order_info set status=4, receiving_time=new Date() receiving_time=#{updateTime} where status=3 and date_format(pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') </update> src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -1,18 +1,20 @@ package cc.mrbird.febs; import cc.mrbird.febs.common.entity.FebsResponse; 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.utils.MallUtils; import cc.mrbird.febs.mall.dto.ApiLeaderOrderConfirmDto; 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.mapper.MallOrderItemMapper; import cc.mrbird.febs.mall.service.IAgentService; import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService; import cc.mrbird.febs.mall.service.IMallAchieveService; import cc.mrbird.febs.mall.service.IMemberProfitService; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.*; import cc.mrbird.febs.pay.model.WxGenerateQrCodeDto; import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.apache.commons.collections.CollectionUtils; @@ -187,4 +189,82 @@ String data = febsResponse.get("data").toString(); System.out.println(data); } // // @Autowired // private MallOrderInfoMapper mallOrderInfoMapper; // // @Autowired // private MallGoodsSkuMapper mallGoodsSkuMapper; @Autowired private MallLeaderAchieveMapper mallLeaderAchieveMapper; // // @Autowired // private MallTeamLeaderMapper mallTeamLeaderMapper; // // @Autowired // private IMemberProfitService memberProfitService; // @Autowired // private IMallAchieveService mallAchieveService; @Autowired private DataDictionaryCustomMapper dataDictionaryCustomMapper; @Autowired private MallMemberMapper mallMemberMapper; @Autowired private IMallMoneyFlowService mallMoneyFlowService; @Autowired private IApiMallMemberWalletService memberWalletService; @Test public void achieve(){ DataDictionaryCustom dicBonusSwitch = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_SWITCH.getType(), DataDictionaryEnum.BONUS_SWITCH.getCode()); String bonusSwitch = dicBonusSwitch.getValue(); if("1".equals(bonusSwitch)){ DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN);; //获取每日提成总数 /** * a.unique_code uniqueCode 团长特征码 * , IFNULL(sum(a.amount),0) amount 每日提成总金额 */ // DateTime dateTime = DateUtil.offsetDay(new Date(), -1); DateTime dateTime = DateUtil.offsetDay(new Date(), 0); List<Map<String, String>> allLeaderAchieve = mallLeaderAchieveMapper.selectListByStateAndCreateTimeAndUniqueCode(MallLeaderAchieve.STATE_ONE,dateTime); if (CollUtil.isNotEmpty(allLeaderAchieve)) { for (Map<String, String> map : allLeaderAchieve) { String uniqueCode = map.get("uniqueCode"); Object amountOrder = map.get("amount"); //直接舍弃小数点的第三位 BigDecimal amount = new BigDecimal(String.valueOf(amountOrder)).setScale(2,BigDecimal.ROUND_DOWN); BigDecimal achieveMoney = amount.multiply(bonusPercent).setScale(2,BigDecimal.ROUND_DOWN); MallMember mallMember = mallMemberMapper.selectInfoByInviteId(uniqueCode); memberWalletService.addBalance(achieveMoney,mallMember.getId()); String achieveNo = "TC."+ MallUtils.getOrderNum(); mallMoneyFlowService.addMoneyFlow( mallMember.getId(), achieveMoney, MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), achieveNo, FlowTypeEnum.BALANCE.getValue()); //更新到已提成状态 mallLeaderAchieveMapper.updateByUniqueCodeStateAndTime(DateUtil.date(),uniqueCode,MallLeaderAchieve.STATE_ONE,dateTime); } } } } public static void main(String[] args) { BigDecimal amount = new BigDecimal("0.15").setScale(2,BigDecimal.ROUND_DOWN); System.out.println(amount); } }