MemberBuilder.java 2.33 KB
package com.topdraw.business.module.member.domain;


import com.topdraw.util.IdWorker;
import org.apache.commons.lang3.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Objects;

/**
 * @author XiangHan
 * @date 2021-10-22
 */
public class MemberBuilder {

    private static final Long DEFAULT_VALUE = 0L;
    private static final Integer DEFAULT_VALUE_1 = 1;
    private static final Integer DEFAULT_VALUE_ = -1;

    public static Member build(Member member){
        Member _member = checkMemberData(member);
        return _member;
    }

    private static Member checkMemberData(Member member) {
        String code = member.getCode();
        member.setCode(StringUtils.isEmpty(code)?String.valueOf(IdWorker.generator()):code);
        Integer gender = member.getGender();
        member.setGender(Objects.nonNull(gender) ? gender : DEFAULT_VALUE_);
        Integer type = member.getType();
        member.setType(Objects.nonNull(type) ? type:DEFAULT_VALUE_);
        Integer status = member.getStatus();
        member.setStatus(Objects.nonNull(status) ? status:DEFAULT_VALUE_1);
        Integer vip = member.getVip();
        member.setVip(Objects.nonNull(vip) ? vip:0);
        Integer level = member.getLevel();
        member.setLevel(Objects.nonNull(level) ? level:DEFAULT_VALUE_1);
        member.setExp(DEFAULT_VALUE);
        member.setPoints(DEFAULT_VALUE);
        member.setDuePoints(DEFAULT_VALUE);
        member.setCouponAmount(DEFAULT_VALUE);
        member.setDueCouponAmount(DEFAULT_VALUE);
        member.setBlackStatus(DEFAULT_VALUE);
        member.setBirthday(StringUtils.isBlank(member.getBirthday())?"1900-01-01":member.getBirthday());
        String nickname = member.getNickname();
        if (StringUtils.isNotEmpty(nickname)) {
//            String base64Nickname = new String(Base64.getEncoder().encode(nickname.getBytes(StandardCharsets.UTF_8)));
            member.setNickname(nickname);
        }
        return member;
    }

   public static Member build(Integer type, String avatarUrl, String nickname, int vip){
        // todo 原型模式
       Member member = new Member();
       member.setType(type);
       member.setAvatarUrl(avatarUrl);
       member.setNickname(nickname);
       member.setVip(vip);
       Member _member = checkMemberData(member);
       return _member;
    }
}