src/main/java/cc/mrbird/febs/common/utils/MallUtils.java
@@ -37,7 +37,7 @@ SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String dd=df.format(new Date()); if (StrUtil.isNotBlank(prefix)) { return prefix+getRandomNum(2); return prefix+dd+getRandomNum(2); } return dd+getRandomNum(2); } src/main/java/cc/mrbird/febs/mall/mapper/MallMemberStarBuyMapper.java
@@ -16,4 +16,6 @@ void updateStatusById(@Param("status")int i, @Param("id")Long id); List<MallMemberStarBuy> selectByStatusAndMemberId(@Param("status")int i, @Param("memberId")Long memberId); BigDecimal selectSumAvaAmountByStatusAndMemberId(@Param("status")int i, @Param("memberId")Long id); } src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -46,4 +46,6 @@ @Param("isReturn")Integer isReturn); IPage<AdminMallMoneyFlowVo> selectOrderMoneyFlowInPage(Page<AdminMallMoneyFlowVo> page, @Param("record")MallOrderInfo mallOrderInfo); BigDecimal selectSumAmountByStatusAndMemberId(@Param("status")Integer statusIng, @Param("memberId")Long id); } src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -69,4 +69,6 @@ Integer selectCountByCreateTimeAndMemberId(@Param("createdTime")String yyyyMMdd,@Param("memberId")Long memberId); BigDecimal selectTodayAmountByCreateTimeAndMemberId(@Param("createdTime")String yyyyMMdd,@Param("memberId")Long memberId); Integer selectOrderInfoByStatusAndMemberId(@Param("status")int value, @Param("memberId")Long id); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -255,6 +255,15 @@ mallMemberVo.setScore(wallet.getScore()); mallMemberVo.setPrizeScore(wallet.getPrizeScore()); mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); //提现冻结金额 BigDecimal froBalance = mallMoneyFlowMapper.selectSumAmountByStatusAndMemberId(MallMoneyFlow.STATUS_ING, id); mallMemberVo.setFroBalance(froBalance); //剩余保证金 BigDecimal avaAmount = mallMemberStarBuyMapper.selectSumAvaAmountByStatusAndMemberId(1,id); mallMemberVo.setAvaAmount(avaAmount); String accountLevel = mallMemberVo.getAccountLevel(); Integer memberLevelCode = MemberAccountLevelEnum.NORMAL.getMemberLevelCode(accountLevel); mallMemberVo.setAccountLevelCode(memberLevelCode); return new FebsResponse().success().data(mallMemberVo); } @@ -672,7 +681,7 @@ //产生用户升级会员等级记录 MallMemberStarBuy mallMemberStarBuy = new MallMemberStarBuy(); mallMemberStarBuy.setMemberId(mallMember.getId()); mallMemberStarBuy.setBuyCode(MallUtils.getLogisticsNum("ms")); mallMemberStarBuy.setBuyCode(MallUtils.getLogisticsNum("MS")); mallMemberStarBuy.setStarName(buyStarDescription); mallMemberStarBuy.setStarCode(buyStarCode); mallMemberStarBuy.setAmount(buyStarPriceBigDecimal); src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -100,6 +100,14 @@ throw new FebsException(goods.getGoodsName() + "已下架"); } /** * 存在未支付的订单无法下单 */ Integer orderIng = this.baseMapper.selectOrderInfoByStatusAndMemberId(OrderStatusEnum.FINISH.getValue(), mallMember.getId()); if(1 <= orderIng){ throw new FebsException("请先完成未完成的订单"); } /** * 会员一天最多下单次数 */ DataDictionaryCustom buyTimesDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -87,4 +87,13 @@ @ApiModelProperty(value = "是否店长 1-是 2-否") private Integer storeMaster; @ApiModelProperty(value = "剩余保证金") private BigDecimal avaAmount; @ApiModelProperty(value = "会员星级编码") private Integer accountLevelCode; @ApiModelProperty(value = "冻结金额") private BigDecimal froBalance; } src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
@@ -48,4 +48,7 @@ @ApiModelProperty(value = "补贴金额") private BigDecimal subsidyAmount; @ApiModelProperty(value = "物流编号") private String payTradeNo; } src/main/resources/mapper/modules/MallMemberStarBuyMapper.xml
@@ -31,4 +31,13 @@ and member_id = #{memberId} </select> <select id="selectSumAvaAmountByStatusAndMemberId" resultType="java.math.BigDecimal"> select ifnull(sum(a.ava_amount),0) from mall_member_star_buy a where a.member_id = #{memberId} and a.status = #{status} </select> </mapper> src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -154,4 +154,13 @@ where a.order_no = #{record.orderNo} order by a.CREATED_TIME desc </select> <select id="selectSumAmountByStatusAndMemberId" resultType="java.math.BigDecimal"> select ifnull(sum(a.amount),0) from mall_member_withdraw a where a.member_id = #{memberId} and a.status = #{status} </select> </mapper> src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -113,6 +113,7 @@ <result column="deliver_type" property="deliverType" /> <result column="shop_id" property="shopId" /> <result column="subsidy_amount" property="subsidyAmount" /> <result column="pay_trade_no" property="payTradeNo" /> <collection property="items" ofType="cc.mrbird.febs.mall.entity.MallOrderItem"> <id property="id" column="item_id" /> <result property="orderId" column="order_id" /> @@ -322,11 +323,12 @@ count(a.id) from mall_order_info a where <if test="createdTime != null"> date_format(a.CREATED_TIME, '%Y-%m-%d') = #{createdTime} </if> and a.status = 4 a.status <![CDATA[>= ]]> 4 and a.member_id = #{memberId} <if test="createdTime != null"> and date_format(a.CREATED_TIME, '%Y-%m-%d') = #{createdTime} </if> </select> <select id="selectTodayAmountByCreateTimeAndMemberId" resultType="java.math.BigDecimal"> @@ -334,10 +336,20 @@ ifnull(sum(a.subsidy_amount),0) from mall_order_info a where a.status <![CDATA[>= ]]> 4 and a.member_id = #{memberId} <if test="createdTime != null"> date_format(a.CREATED_TIME, '%Y-%m-%d') = #{createdTime} and date_format(a.CREATED_TIME, '%Y-%m-%d') = #{createdTime} </if> and a.status = 4 and a.member_id = #{memberId} </select> <select id="selectOrderInfoByStatusAndMemberId" resultType="java.lang.Integer"> select count(a.id) from mall_order_info a where a.status <![CDATA[< ]]> 4 and a.member_id = #{memberId} </select> </mapper> src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -20,18 +20,23 @@ import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallAchieveService; import cc.mrbird.febs.mall.service.IMemberProfitService; import cc.mrbird.febs.mall.vo.ApiMallSubsidyAmountInfoVo; import cc.mrbird.febs.pay.model.*; import cc.mrbird.febs.pay.service.UnipayService; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSON; import cn.hutool.json.JSONUtil; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -95,35 +100,30 @@ @Test public void directorProfitTest() { MallMember member = mallMemberMapper.selectById(1L); MallOrderInfo orderInfo = mallOrderInfoMapper.selectOrderByMemberIdAndId(member.getId(), 577L); if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { throw new FebsException("订单不存在"); } if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) { throw new FebsException("该状态不能确认收货"); } orderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); orderInfo.setReceivingTime(new Date()); mallOrderInfoMapper.updateById(orderInfo); /** * 通过支付流水记录,返回下单金额 */ MallMoneyFlow payFlow = mallMoneyFlowMapper.selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn( member.getId(), orderInfo.getOrderNo(), MallMoneyFlowTypeEnum.PAY.getCode(), MallMoneyFlow.STATUS_SUCCESS, MallMoneyFlow.IS_RETURN_N); if(ObjectUtil.isNotEmpty(payFlow)){ memberWalletService.addBalance(payFlow.getAmount().negate(),payFlow.getRtMemberId()); payFlow.setIsReturn(MallMoneyFlow.IS_RETURN_Y); mallMoneyFlowMapper.updateById(payFlow); } //产生补贴流水记录 agentProducer.sendDirectRewardMsg(orderInfo.getId()); MallMember member = mallMemberMapper.selectById(633L); ApiMallSubsidyAmountInfoVo apiMallSubsidyAmountInfoVo = new ApiMallSubsidyAmountInfoVo(); DateTime today = DateUtil.date(); DateTime yesterday = DateUtil.yesterday(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String yyyyMMddToday = sdf.format(today); String yyyyMMddYesterday = sdf.format(yesterday); //今日补贴 BigDecimal todayAmount = mallOrderInfoMapper.selectTodayAmountByCreateTimeAndMemberId(yyyyMMddToday,member.getId()); apiMallSubsidyAmountInfoVo.setTodayAmount(todayAmount); //今日累计接单 Integer todayTotalCnt = mallOrderInfoMapper.selectCountByCreateTimeAndMemberId(yyyyMMddToday,member.getId()); apiMallSubsidyAmountInfoVo.setTodayTotalCnt(todayTotalCnt); //昨日补贴 BigDecimal yesterdayAmount = mallOrderInfoMapper.selectTodayAmountByCreateTimeAndMemberId(yyyyMMddYesterday,member.getId()); apiMallSubsidyAmountInfoVo.setYesterdayAmount(yesterdayAmount); //昨日累计接单 Integer totalYesterdayCnt = mallOrderInfoMapper.selectCountByCreateTimeAndMemberId(yyyyMMddYesterday,member.getId()); apiMallSubsidyAmountInfoVo.setTotalYesterdayCnt(totalYesterdayCnt); //获得总额 BigDecimal totalAmount = mallOrderInfoMapper.selectTodayAmountByCreateTimeAndMemberId(null,member.getId()); apiMallSubsidyAmountInfoVo.setTotalAmount(totalAmount); JSON parse = JSONUtil.parse(apiMallSubsidyAmountInfoVo); System.out.println(parse.toString()); } @Autowired