Helius
2021-09-24 df9bed358a6c763e6efeef130307c54162bb9630
add money flows
3 files added
8 files modified
206 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 33 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 27 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java 2 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml 18 ●●●●● patch | view | raw | blame | history
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>