src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
New file @@ -0,0 +1,38 @@ package cc.mrbird.febs.common.enumerates; import lombok.Getter; /** * @author wzy * @date 2021-09-24 * 1-分红收入 2-业绩奖励 3-订单支付 4-退款 5-转账 **/ @Getter public enum MoneyFlowTypeEnum { /** * 分红 */ BONUS(1), /** * 业绩 */ ACHIEVE(2), /** * 支付 */ PAY(3), /** * 退款 */ REFUND(4), /** * 转账 */ TRANSFER(5); private final int value; MoneyFlowTypeEnum(int value) { this.value = value; } } src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -3,9 +3,11 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.ForgetPwdDto; import cc.mrbird.febs.mall.dto.ModifyMemberInfoDto; import cc.mrbird.febs.mall.dto.MoneyFlowDto; import cc.mrbird.febs.mall.dto.TeamListDto; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.vo.MallMemberVo; import cc.mrbird.febs.mall.vo.MoneyFlowVo; import cc.mrbird.febs.mall.vo.TeamListVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -69,4 +71,13 @@ public FebsResponse teamList(@RequestBody TeamListDto teamListDto) { return memberService.teamList(teamListDto); } @ApiOperation(value = "资金流水列表") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = MoneyFlowVo.class) }) @PostMapping(value = "/moneyFlow") public FebsResponse moneyFlow(@RequestBody MoneyFlowDto moneyFlowDto) { return null; } } src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java
New file @@ -0,0 +1,26 @@ package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author wzy * @date 2021-09-24 **/ @Data @ApiModel(value = "MoneyFlowDto", description = "资金流水接收参数类") public class MoneyFlowDto { @ApiModelProperty(value = "一页多少个", example = "10") private Integer pageSize; @ApiModelProperty(value = "页码", example = "1") private Integer pageNum; @ApiModelProperty(value = "类型 1-全部 2-支出 3-收入") private Integer type; @ApiModelProperty(hidden = true) private Long memberId; } src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
@@ -27,6 +27,8 @@ private String description; private String remark; private Long rtMemberId; /** src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -1,8 +1,10 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.dto.MoneyFlowDto; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMoneyFlow; import cc.mrbird.febs.mall.vo.AdminMallMoneyFlowVo; import cc.mrbird.febs.mall.vo.MoneyFlowVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,4 +14,5 @@ IPage<AdminMallMoneyFlowVo> selectMoneyFlowInPage(Page<AdminMallMoneyFlowVo> page, @Param("record")MallMember mallMember); IPage<MoneyFlowVo> selectApiMoneyFlowInPage(IPage<MoneyFlowVo> page, @Param("record") MoneyFlowDto moneyFlowDto); } src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -5,6 +5,8 @@ import cc.mrbird.febs.mall.entity.MallMember; import com.baomidou.mybatisplus.extension.service.IService; import java.math.BigDecimal; public interface IApiMallMemberService extends IService<MallMember> { FebsResponse register(RegisterDto registerDto); @@ -23,4 +25,8 @@ FebsResponse modifyMemberInfo(ModifyMemberInfoDto modifyMemberInfoDto); FebsResponse teamList(TeamListDto teamListDto); FebsResponse moneyFlows(MoneyFlowDto moneyFlowDto); void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -10,14 +10,13 @@ import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberWallet; import cc.mrbird.febs.mall.entity.MallMoneyFlow; import cc.mrbird.febs.mall.entity.MallShoppingCart; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallShoppingCartMapper; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.service.ICommonService; import cc.mrbird.febs.mall.vo.MallMemberVo; import cc.mrbird.febs.mall.vo.MoneyFlowVo; import cc.mrbird.febs.mall.vo.TeamListVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; @@ -27,6 +26,8 @@ import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -53,6 +54,7 @@ private final RedisUtils redisUtils; private final MallOrderInfoMapper mallOrderInfoMapper; private final MallShoppingCartMapper mallShoppingCartMapper; private final MallMoneyFlowMapper mallMoneyFlowMapper; @Value("${spring.profiles.active}") private String active; @@ -290,4 +292,27 @@ list.add(0, own); return new FebsResponse().success().data(list); } @Override public FebsResponse moneyFlows(MoneyFlowDto moneyFlowDto) { IPage<MoneyFlowVo> page = new Page<>(moneyFlowDto.getPageNum(), moneyFlowDto.getPageSize()); Long id = LoginUserUtil.getLoginUser().getId(); moneyFlowDto.setMemberId(id); IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiMoneyFlowInPage(page, moneyFlowDto); return new FebsResponse().success().data(pages); } @Override public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status) { MallMoneyFlow flow = new MallMoneyFlow(); flow.setMemberId(memberId); flow.setAmount(amount); flow.setType(type); flow.setOrderNo(orderNo); flow.setDescription(description); flow.setRemark(remark); flow.setRtMemberId(rtMemberId); flow.setStatus(status); mallMoneyFlowMapper.insert(flow); } } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -1,5 +1,6 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.enumerates.OrderRefundStatusEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; @@ -12,8 +13,10 @@ import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; import cc.mrbird.febs.mall.service.MallMemberService; import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; import cc.mrbird.febs.mall.vo.OrderRefundVo; @@ -55,6 +58,7 @@ private final MallOrderRefundMapper mallOrderRefundMapper; private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper; private final MallShoppingCartMapper mallShoppingCartMapper; private final IApiMallMemberService memberService; private final RedisUtils redisUtils; @Override @@ -161,19 +165,32 @@ throw new FebsException("订单状态不能支付"); } String orderNo = ""; switch (payOrderDto.getType()) { case "1": // TODO 微信支付 orderInfo.setPayMethod("微信支付"); break; case "2": // TODO 支付宝支付 orderInfo.setPayMethod("支付宝支付"); break; case "3": return balancePay(orderInfo, payOrderDto.getTradePwd()); orderNo = balancePay(orderInfo, payOrderDto.getTradePwd()); orderInfo.setPayMethod("积分支付"); default: } return ""; orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setPayTime(new Date()); orderInfo.setPayOrderNo(orderInfo.getOrderNo()); orderInfo.setPayResult("1"); this.baseMapper.updateById(orderInfo); memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null); return orderNo; } private String balancePay(MallOrderInfo orderInfo, String tradePwd) { @@ -193,12 +210,6 @@ memberWalletService.reduceBalance(orderInfo.getAmount(), mallMember.getId()); orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setPayTime(new Date()); orderInfo.setPayMethod("积分支付"); orderInfo.setPayOrderNo(orderInfo.getOrderNo()); orderInfo.setPayResult("1"); this.baseMapper.updateById(orderInfo); return orderInfo.getOrderNo(); } src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java
New file @@ -0,0 +1,40 @@ package cc.mrbird.febs.mall.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * @author wzy * @date 2021-09-24 **/ @Data @ApiModel(value = "MoneyFlowVo", description = "资金列表返回参数类") public class MoneyFlowVo { @ApiModelProperty(value = "订单号") private String orderNo; @ApiModelProperty(value = "金额,有正负") private BigDecimal amount; @ApiModelProperty(value = "类型 1-分红收入 2-业绩奖励 3-订单支付 4-退款 5-转账") private Integer type; @ApiModelProperty(value = "对方手机号") private String phone; @ApiModelProperty(value = "代理等级") private String memberLevel; @ApiModelProperty(value = "提现状态 1-提现中2-成功 3-拒绝") private Integer status; @ApiModelProperty(value = "时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createdTime; } src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
@@ -1,5 +1,6 @@ package cc.mrbird.febs.mall.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -23,6 +24,7 @@ private String orderNo; @ApiModelProperty(value = "下单时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date orderTime; @ApiModelProperty(value = "支付方式") src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -7,4 +7,22 @@ order by a.CREATED_TIME desc </select> <select id="selectApiMoneyFlowInPage" resultType="cc.mrbird.febs.mall.vo.MoneyFlowVo"> select a.*, b.phone from mall_money_flow a inner join mall_member on a.rt_member_id=b.member_id <where> <if test="record.type == 2"> and a.amount > 0 </if> <if test="record.type == 3"> and 0 > a.amount </if> <if test="record.memberId != null"> and a.member_id=#{record.memberId} </if> </where> </select> </mapper>