From 51542f45e01ff434381ebed7584917bca5b5c197 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 06 Sep 2022 15:10:09 +0800 Subject: [PATCH] 20220902 --- src/main/java/cc/mrbird/febs/mall/dto/ApiOrderProfitDto.java | 25 ++++++++ src/main/resources/mapper/modules/MallLeaderAchieveMapper.xml | 21 ++++++ src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java | 15 +++-- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 10 +++ src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderAchieveMapper.java | 4 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 6 + src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java | 12 ++++ src/main/java/cc/mrbird/febs/mall/conversion/MallLeaderAchieveConversion.java | 17 +++++ src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java | 3 + src/main/java/cc/mrbird/febs/mall/vo/ApiOrderProfitVo.java | 36 ++++++++++++ src/main/java/cc/mrbird/febs/mall/entity/MallLeaderAchieve.java | 8 ++ 11 files changed, 149 insertions(+), 8 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java index 04528ff..6db1995 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java @@ -136,5 +136,17 @@ return iApiMallTeamLeaderService.leaderProfit(); } + /** + * 团长查看已提成收益 + */ + @ApiOperation(value = "团长查看已提成收益", notes = "团长查看已提成收益") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiOrderProfitVo.class) + }) + @PostMapping(value = "/leaderProfitList") + public FebsResponse leaderProfitList(@RequestBody ApiOrderProfitDto apiOrderProfitDto) { + return new FebsResponse().success().data(iApiMallTeamLeaderService.findLeaderProfitListInPage(apiOrderProfitDto)); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallLeaderAchieveConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallLeaderAchieveConversion.java new file mode 100644 index 0000000..bb2e8b5 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallLeaderAchieveConversion.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.conversion; + +import cc.mrbird.febs.mall.entity.MallLeaderAchieve; +import cc.mrbird.febs.mall.vo.ApiOrderProfitVo; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public abstract class MallLeaderAchieveConversion { + + public static final MallLeaderAchieveConversion INSTANCE = Mappers.getMapper(MallLeaderAchieveConversion.class); + + public abstract List<ApiOrderProfitVo> entitysToVos(List<MallLeaderAchieve> mallLeaderAchieves); + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiOrderProfitDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiOrderProfitDto.java new file mode 100644 index 0000000..906afe0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiOrderProfitDto.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel(value = "ApiOrderProfitDto", description = "商品评论接收类") +public class ApiOrderProfitDto { + + @ApiModelProperty(value = "第几页", example = "1") + private Integer pageNum; + + @ApiModelProperty(value = "每页数量", example = "10") + private Integer pageSize; + + @ApiModelProperty(value = "创建时间", example = "10") + private Date createdTime; + + @ApiModelProperty(hidden = true) + private String invitedId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderAchieve.java b/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderAchieve.java index c18b567..99babd2 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderAchieve.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderAchieve.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.entity; import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -13,10 +14,14 @@ //订单所属的用户ID private Long memberId; + //订单详情ID + private Long orderItemId; //订单编号 private String orderNo; //订单金额 private BigDecimal amount; + //收益 + private BigDecimal profitAmount; //团长特征码 private String uniqueCode; //1:未提成 2:已提成 @@ -24,4 +29,7 @@ public static final Integer STATE_ONE = 1; public static final Integer STATE_TWO = 2; + @TableField(exist = false) + private String goodsName; + } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderAchieveMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderAchieveMapper.java index 1278530..ba88684 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderAchieveMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderAchieveMapper.java @@ -1,8 +1,10 @@ package cc.mrbird.febs.mall.mapper; +import cc.mrbird.febs.mall.dto.ApiOrderProfitDto; import cc.mrbird.febs.mall.entity.MallLeaderAchieve; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; @@ -17,4 +19,6 @@ int updateByUniqueCodeStateAndTime(@Param("updateTime")DateTime updateTime,@Param("uniqueCode")String uniqueCode, @Param("state")Integer stateOne, @Param("offsetDay")DateTime dateTime); BigDecimal selectProfitByStateAndDateTimeAndUniqueCode(@Param("state")Integer state, @Param("date") Date DateTime, @Param("uniqueCode")String uniqueCode); + + IPage<MallLeaderAchieve> selectApiLeaderProfitListInPage(IPage<MallLeaderAchieve> page, @Param("record")ApiOrderProfitDto apiOrderProfitDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java index f852aea..0a09cb7 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java @@ -110,6 +110,8 @@ List<MallOrderInfo> orderInfos = mallOrderInfoMapper.selectOrderByStatusAndPayTime(3,DateUtil.offsetDay(new Date(), -value)); if(CollUtil.isNotEmpty(orderInfos)){ for(MallOrderInfo orderInfo : orderInfos){ + DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); + BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN); //生成一条团长提成记录 Long id = orderInfo.getId(); List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id); @@ -120,9 +122,11 @@ MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve(); mallLeaderAchieve.setMemberId(orderInfo.getMemberId()); mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo()); + mallLeaderAchieve.setOrderItemId(mallOrderItem.getId()); BigDecimal itemAmount = mallOrderItem.getAmount(); -// BigDecimal subtract = orderInfo.getAmount().subtract(orderInfo.getCarriage() == null ? BigDecimal.ZERO : orderInfo.getCarriage()); mallLeaderAchieve.setAmount(itemAmount); + BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN); + mallLeaderAchieve.setProfitAmount(bigDecimal); mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode()); mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE); mallLeaderAchieveMapper.insert(mallLeaderAchieve); @@ -146,8 +150,8 @@ 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);; +// 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 团长特征码 @@ -159,10 +163,9 @@ if (CollUtil.isNotEmpty(allLeaderAchieve)) { for (Map<String, String> map : allLeaderAchieve) { String uniqueCode = map.get("uniqueCode"); - Object amountOrder = map.get("amount"); + Object profitAmount = map.get("profitAmount"); //直接舍弃小数点的第三位 - BigDecimal amount = new BigDecimal(String.valueOf(amountOrder)).setScale(2,BigDecimal.ROUND_DOWN); - BigDecimal achieveMoney = amount.multiply(bonusPercent).setScale(2,BigDecimal.ROUND_DOWN); + BigDecimal achieveMoney = new BigDecimal(String.valueOf(profitAmount)).setScale(2,BigDecimal.ROUND_DOWN); MallMember mallMember = mallMemberMapper.selectInfoByInviteId(uniqueCode); memberWalletService.addBalance(achieveMoney,mallMember.getId()); String achieveNo = "TC."+ MallUtils.getOrderNum(); diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java index ba08fef..12b69cc 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java @@ -4,6 +4,7 @@ import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.MallTeamLeader; import cc.mrbird.febs.mall.vo.ApiLeaderListVo; +import cc.mrbird.febs.mall.vo.ApiOrderProfitVo; import cc.mrbird.febs.mall.vo.OrderListVo; import com.baomidou.mybatisplus.extension.service.IService; @@ -32,4 +33,6 @@ FebsResponse refundOrderInfo(ApiRefundOrderInfoDto apiRefundOrderInfoDto); FebsResponse leaderProfit(); + + List<ApiOrderProfitVo> findLeaderProfitListInPage(ApiOrderProfitDto apiOrderProfitDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 0220164..5d503c2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -513,15 +513,19 @@ Long orderInfoId = orderInfo.getId(); List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId); if(CollUtil.isNotEmpty(mallOrderItemList)){ + DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); + BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN); for(MallOrderItem mallOrderItem : mallOrderItemList){ Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState(); if(1 == state){ MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve(); mallLeaderAchieve.setMemberId(orderInfo.getMemberId()); mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo()); + mallLeaderAchieve.setOrderItemId(mallOrderItem.getId()); BigDecimal itemAmount = mallOrderItem.getAmount(); -// BigDecimal subtract = orderInfo.getAmount().subtract(orderInfo.getCarriage() == null ? BigDecimal.ZERO : orderInfo.getCarriage()); mallLeaderAchieve.setAmount(itemAmount); + BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN); + mallLeaderAchieve.setProfitAmount(bigDecimal); mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode()); mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE); mallLeaderAchieveMapper.insert(mallLeaderAchieve); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java index eae60b2..d127eb4 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java @@ -6,6 +6,7 @@ import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.ShareCodeUtil; import cc.mrbird.febs.common.utils.SpringContextHolder; +import cc.mrbird.febs.mall.conversion.MallLeaderAchieveConversion; import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion; import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion; import cc.mrbird.febs.mall.dto.*; @@ -416,4 +417,13 @@ return new FebsResponse().success().data(apiLeaderProfitVo); } + @Override + public List<ApiOrderProfitVo> findLeaderProfitListInPage(ApiOrderProfitDto apiOrderProfitDto) { + MallMember member = LoginUserUtil.getLoginUser(); + IPage<MallLeaderAchieve> page = new Page<>(apiOrderProfitDto.getPageNum(), apiOrderProfitDto.getPageSize()); + apiOrderProfitDto.setInvitedId(member.getInviteId()); + IPage<MallLeaderAchieve> mallLeaderAchieves = mallLeaderAchieveMapper.selectApiLeaderProfitListInPage(page, apiOrderProfitDto); + return MallLeaderAchieveConversion.INSTANCE.entitysToVos(mallLeaderAchieves.getRecords()); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiOrderProfitVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiOrderProfitVo.java new file mode 100644 index 0000000..53d0928 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiOrderProfitVo.java @@ -0,0 +1,36 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@ApiModel(value = "ApiOrderProfitVo", description = "信息返回类") +public class ApiOrderProfitVo { + + //订单编号 + @ApiModelProperty(value = "订单编号") + private String orderNo; + //订单金额 + @ApiModelProperty(value = "订单金额") + private BigDecimal amount; + //收益 + @ApiModelProperty(value = "收益") + private BigDecimal profitAmount; + //团长特征码 + @ApiModelProperty(value = "团长特征码") + private String uniqueCode; + // + @ApiModelProperty(value = "1:未提成 2:已提成") + private Integer state; + + @ApiModelProperty(value = "创建时间") + private Date createdTime; + + @ApiModelProperty(value = "产品名称") + private String goodsName;; + +} diff --git a/src/main/resources/mapper/modules/MallLeaderAchieveMapper.xml b/src/main/resources/mapper/modules/MallLeaderAchieveMapper.xml index 7688d37..6d6155c 100644 --- a/src/main/resources/mapper/modules/MallLeaderAchieveMapper.xml +++ b/src/main/resources/mapper/modules/MallLeaderAchieveMapper.xml @@ -5,7 +5,7 @@ <select id="selectListByStateAndCreateTimeAndUniqueCode" resultType="java.util.Map"> select a.unique_code uniqueCode, - IFNULL(sum(a.amount),0) amount + IFNULL(sum(a.profit_amount),0) profitAmount from mall_leader_achieve a where a.state = #{state} and date_format(a.CREATED_TIME, '%Y-%m-%d') = date_format(#{offsetDay}, '%Y-%m-%d') @@ -38,4 +38,23 @@ </where> </select> + <select id="selectApiLeaderProfitListInPage" resultType="cc.mrbird.febs.mall.entity.MallLeaderAchieve"> + select a.*, + c.goods_name goodsName + from mall_leader_achieve a + inner join mall_order_item c on a.order_item_id = c.id + <where> + a.state = 2 + <if test="record != null"> + <if test="record.invitedId != null and record.invitedId != ''"> + and a.unique_code = #{record.invitedId} + </if> + <if test="record.createdTime!=null"> + and date_format(a.CREATED_TIME, '%Y-%m-%d') = date_format(#{record.createdTime}, '%Y-%m-%d') + </if> + </if> + </where> + GROUP BY a.id order by a.created_time desc + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.1