74.安心技术梳理 - 结果对象映射输入对象,做数据封装,重写equals和hashCode,干货

对象之间数据映射操作,将结果对象的数据映射到输入对象,复用equals和hashCode实现,仅供参考:

1.处理主流程:

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class HandleData {
    @Resource
    private CouponService couponService;
    //优惠券数据状态打标处理
    public List<DataInfo> signCouponInfo(List<DataInfo> dataInfos){
        //转换数据集
        List<CouponDataInfo> couponDataInfos = dataInfos.stream().map(a -> {
            CouponDataInfo couponDataInfo = CouponDataInfo.of(a.getCouponId(), a.getCouponKey());
            return couponDataInfo;
        }).collect(Collectors.toList());
        //优惠券打标接口-新增优惠券状态
        List<CouponDataInfo> list = couponService.signService(couponDataInfos);
        //打标结果对象映射对象数据
        Map<DataInfo, CouponDataInfo> couponMap = list.stream().collect(Collectors.toMap(o -> DataInfo.of(o.getCouponId(),
                o.getCouponKey()), o -> o, (v1, v2) -> v1));
        //封装打标状态
        dataInfos.forEach(c -> {
            CouponDataInfo data = couponMap.get(c);
            if (null != data) {
                c.setCouponStatus(data.getCouponStatus());
            }
        });
        return dataInfos;
    }
}

2、涉及对象的实现-封装对象

import java.io.Serializable;
import java.util.Objects;
public class DataInfo implements Serializable {
    private Long id;//主键
    private Long couponId;//券编号
    private String couponKey;//券Key
    private Long orderId;//订单号
    private Integer couponStatus;//券状态 0:待领取 1:已领取未使用 2:已使用 3:已过期
    public static DataInfo of(Long couponId, String couponKey) {
        DataInfo dataInfo = new DataInfo();
        dataInfo.setCouponId(couponId);
        dataInfo.setCouponKey(couponKey);
        return dataInfo;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        DataInfo that = (DataInfo) o;
        return Objects.equals(couponId, that.couponId) &&
                Objects.equals(couponKey, that.couponKey);
    }
    @Override
    public int hashCode() {
        return Objects.hash(couponId, couponKey);
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getCouponId() {
        return couponId;
    }
    public void setCouponId(Long couponId) {
        this.couponId = couponId;
    }
    public String getCouponKey() {
        return couponKey;
    }
    public void setCouponKey(String couponKey) {
        this.couponKey = couponKey;
    }
    public Long getOrderId() {
        return orderId;
    }
    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
    public Integer getCouponStatus() {
        return couponStatus;
    }
    public void setCouponStatus(Integer couponStatus) {
        this.couponStatus = couponStatus;
    }
}

3、涉及对象的实现-传递对象

import java.io.Serializable;
public class CouponDataInfo implements Serializable {
    private Long id;//主键
    private Long couponId;//券编号
    private String couponKey;//券Key
    private Integer couponStatus;//券状态 0:待领取 1:已领取未使用 2:已使用 3:已过期
    public static CouponDataInfo of(Long couponId, String couponKey) {
        CouponDataInfo couponDataInfo = new CouponDataInfo();
        couponDataInfo.setCouponId(couponId);
        couponDataInfo.setCouponKey(couponKey);
        return couponDataInfo;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getCouponId() {
        return couponId;
    }
    public void setCouponId(Long couponId) {
        this.couponId = couponId;
    }
    public String getCouponKey() {
        return couponKey;
    }
    public void setCouponKey(String couponKey) {
        this.couponKey = couponKey;
    }
    public Integer getCouponStatus() {
        return couponStatus;
    }
    public void setCouponStatus(Integer couponStatus) {
        this.couponStatus = couponStatus;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值