admin
2023-04-12 651f2856e9ae10aacbfb8327d967aacbb6d58333
fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java
@@ -1,193 +1,220 @@
package com.yeshi.fanli.util.account;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.beanutils.PropertyUtils;
import org.yeshi.utils.HttpUtil;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
public class UserUtil {
   /**
    * 处理输出给客户端的用户信息
    *
    * @param user
    * @return
    */
   public static UserInfo filterForClientUser(UserInfo user) {
      if (user == null)
         return user;
      UserInfo newUser = new UserInfo();
      try {
         PropertyUtils.copyProperties(newUser, user);
      } catch (IllegalAccessException e1) {
         e1.printStackTrace();
      } catch (InvocationTargetException e1) {
         e1.printStackTrace();
      } catch (NoSuchMethodException e1) {
         e1.printStackTrace();
      }
      if (!StringUtil.isNullOrEmpty(user.getPhone())) {
         if (user.getPhone().length() > 5) {
            String phone = user.getPhone().substring(0, 3);
            phone += "******";
            phone += user.getPhone().substring(user.getPhone().length() - 2, user.getPhone().length());
            newUser.setPhone(phone);
         }
      }
      if (user != null) {
         newUser.setRankIcon(UserUtil.getRankIcon(user.getRank()));
         newUser.setRankNamePicture(UserUtil.getRankNamePicture(user.getRank()));
      }
      return newUser;
   }
   public static String getRankIcon(Integer rank) {
      if (rank == null)
         return "";
      if (rank == 0)
         return "";
      else
         return String.format(Constant.systemCommonConfig.getBaseUserRankIconUrl() + "/rank_icon_%s.png", rank + "");
   }
   public static String getRankNamePicture(Integer rank) {
      if (rank == null)
         rank = 0;
      return String.format(Constant.systemCommonConfig.getBaseUserRankIconUrl() + "/rank_picture_%s.png", rank + "");
   }
   public static String getInviteShortLink(Long uid) {
      return HttpUtil.getShortLink(
            "http://" + Constant.wxGZConfig.getLoginHost() + "/" + Constant.systemCommonConfig.getProjectName()
                  + "/client/threeShareNew?uid=" + uid + "&_=" + java.lang.System.currentTimeMillis());
   }
   public static String getInviteCode(Long uid) {
      long num = 1000000000L + uid;
      return convert10To36(num);
   }
   private static String convert10To36(Long num) {
      String numbers = "YE9VFA3N6KG7JZH4LD5IO2RBS0QTMPU1WC8X";
      BigDecimal numBig = new BigDecimal(num);
      int ge = numBig.divideAndRemainder(new BigDecimal(36))[1].intValue();
      int n = 1;
      String result = "";
      result += numbers.charAt(ge);
      while (numBig.divideAndRemainder(new BigDecimal(36).pow(n))[0].compareTo(new BigDecimal(0)) > 0) {
         int w = numBig.divideAndRemainder(new BigDecimal(36).pow(n))[0].divideAndRemainder(new BigDecimal(36))[1]
               .intValue();
         result = numbers.charAt(w) + result;
         n++;
      }
      return result;
   }
   /**
    * 过滤支付宝账号,中间用*代替
    *
    * @param bindingAccountList
    * @return
    */
   public static List<BindingAccount> filterBindingAccount(List<BindingAccount> bindingAccountList) {
      List<BindingAccount> accountList = new ArrayList<>();
      if (bindingAccountList != null)
         for (BindingAccount bindingAccount : bindingAccountList) {
            accountList.add(filterBindingAccount(bindingAccount));
         }
      return accountList;
   }
   public static BindingAccount filterBindingAccount(BindingAccount bindingAccount) {
      BindingAccount dest = new BindingAccount();
      try {
         PropertyUtils.copyProperties(dest, bindingAccount);
         if (!StringUtil.isNullOrEmpty(dest.getAccount()) && !StringUtil.isNullOrEmpty(dest.getName())) {
            String name = "";
            if ((dest.getName() + "").length() > 2)
               for (int i = 0; i < (dest.getName() + "").length(); i++) {
                  if (i == 0)
                     name += dest.getName().charAt(i);
                  else
                     name += "*";
               }
            else
               name = dest.getName().charAt(0) + "*";
            dest.setName(name);
            String account = filterAlipayAccount(dest.getAccount());
            dest.setAccount(account);
         }
      } catch (Exception e) {
      }
      return dest;
   }
   public static String filterAlipayAccount(String alipayAccount) {
      String account = "";
      if (alipayAccount.indexOf("@") > -1) {// 邮箱
         int index = alipayAccount.indexOf("@");
         for (int i = 0; i < alipayAccount.length(); i++) {
            if (i < 3 || i >= index)
               account += alipayAccount.charAt(i);
            else
               account += "*";
         }
      } else if (StringUtil.isMobile(alipayAccount)) {// 电话
         account = alipayAccount.substring(0, 3) + "*****"
               + alipayAccount.substring(alipayAccount.length() - 2, alipayAccount.length());
      } else {// 其他
         if (alipayAccount.length() >= 6) {
            for (int i = 0; i < alipayAccount.length(); i++) {
               if (i < 3 || i >= alipayAccount.length() - 2)
                  account += alipayAccount.charAt(i);
               else
                  account += "*";
            }
         } else {
            for (int i = 0; i < alipayAccount.length(); i++) {
               if (i < 1 || i >= alipayAccount.length() - 1)
                  account += alipayAccount.charAt(i);
               else
                  account += "*";
            }
         }
      }
      return account;
   }
   public static String filterOrderId(String orderId) {
      if (orderId == null || orderId.length() <= 6)
         return orderId;
      if (orderId.length() <= 16) {// 隐藏2位
         return orderId.substring(0, orderId.length() - 2) + "**";
      } else {// 隐藏6位
         return orderId.substring(0, orderId.length() - 6) + "******";
      }
   }
}
package com.yeshi.fanli.util.account;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.yeshi.fanli.vo.user.QQUserInfoVO;
import org.apache.commons.beanutils.PropertyUtils;
import org.yeshi.utils.HttpUtil;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
public class UserUtil {
    /**
     * 处理输出给客户端的用户信息
     *
     * @param user
     * @return
     */
    public static UserInfo filterForClientUser(UserInfo user) {
        if (user == null)
            return user;
        UserInfo newUser = new UserInfo();
        try {
            PropertyUtils.copyProperties(newUser, user);
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        } catch (InvocationTargetException e1) {
            e1.printStackTrace();
        } catch (NoSuchMethodException e1) {
            e1.printStackTrace();
        }
        if (!StringUtil.isNullOrEmpty(user.getPhone())) {
            if (user.getPhone().length() > 5) {
                String phone = user.getPhone().substring(0, 3);
                phone += "******";
                phone += user.getPhone().substring(user.getPhone().length() - 2, user.getPhone().length());
                newUser.setPhone(phone);
            }
        }
        if (user != null) {
            newUser.setRankIcon(UserUtil.getRankIcon(user.getRank()));
            newUser.setRankNamePicture(UserUtil.getRankNamePicture(user.getRank()));
        }
        return newUser;
    }
    public static String getRankIcon(Integer rank) {
        if (rank == null)
            return "";
        if (rank == 0)
            return "";
        else
            return String.format(Constant.systemCommonConfig.getBaseUserRankIconUrl() + "/rank_icon_%s.png", rank + "");
    }
    public static String getRankNamePicture(Integer rank) {
        if (rank == null)
            rank = 0;
        return String.format(Constant.systemCommonConfig.getBaseUserRankIconUrl() + "/rank_picture_%s.png", rank + "");
    }
    public static String getInviteShortLink(Long uid) {
        return HttpUtil.getShortLink(
                "http://" + Constant.wxGZConfig.getLoginHost() + "/" + Constant.systemCommonConfig.getProjectName()
                        + "/client/threeShareNew?uid=" + uid + "&_=" + java.lang.System.currentTimeMillis());
    }
    public static String getInviteCode(int base, Long uid) {
        long num = base * 100000000L + uid;
        return convert10To36(num);
    }
    private static String convert10To36(Long num) {
        String numbers = "YE9VFA3N6KG7JZH4LD5IO2RBS0QTMPU1WC8X";
        BigDecimal numBig = new BigDecimal(num);
        int ge = numBig.divideAndRemainder(new BigDecimal(36))[1].intValue();
        int n = 1;
        String result = "";
        result += numbers.charAt(ge);
        while (numBig.divideAndRemainder(new BigDecimal(36).pow(n))[0].compareTo(new BigDecimal(0)) > 0) {
            int w = numBig.divideAndRemainder(new BigDecimal(36).pow(n))[0].divideAndRemainder(new BigDecimal(36))[1]
                    .intValue();
            result = numbers.charAt(w) + result;
            n++;
        }
        return result;
    }
    /**
     * 过滤支付宝账号,中间用*代替
     *
     * @param bindingAccountList
     * @return
     */
    public static List<BindingAccount> filterBindingAccount(List<BindingAccount> bindingAccountList) {
        List<BindingAccount> accountList = new ArrayList<>();
        if (bindingAccountList != null)
            for (BindingAccount bindingAccount : bindingAccountList) {
                accountList.add(filterBindingAccount(bindingAccount));
            }
        return accountList;
    }
    public static BindingAccount filterBindingAccount(BindingAccount bindingAccount) {
        BindingAccount dest = new BindingAccount();
        try {
            PropertyUtils.copyProperties(dest, bindingAccount);
            if (!StringUtil.isNullOrEmpty(dest.getAccount()) && !StringUtil.isNullOrEmpty(dest.getName())) {
                String name = "";
                if ((dest.getName() + "").length() > 2)
                    for (int i = 0; i < (dest.getName() + "").length(); i++) {
                        if (i == 0)
                            name += dest.getName().charAt(i);
                        else
                            name += "*";
                    }
                else
                    name = dest.getName().charAt(0) + "*";
                dest.setName(name);
                String account = filterAlipayAccount(dest.getAccount());
                dest.setAccount(account);
            }
        } catch (Exception e) {
        }
        return dest;
    }
    public static String filterAlipayAccount(String alipayAccount) {
        String account = "";
        if (alipayAccount.indexOf("@") > -1) {// 邮箱
            int index = alipayAccount.indexOf("@");
            for (int i = 0; i < alipayAccount.length(); i++) {
                if (i < 3 || i >= index)
                    account += alipayAccount.charAt(i);
                else
                    account += "*";
            }
        } else if (StringUtil.isMobile(alipayAccount)) {// 电话
            account = alipayAccount.substring(0, 3) + "*****"
                    + alipayAccount.substring(alipayAccount.length() - 2, alipayAccount.length());
        } else {// 其他
            if (alipayAccount.length() >= 6) {
                for (int i = 0; i < alipayAccount.length(); i++) {
                    if (i < 3 || i >= alipayAccount.length() - 2)
                        account += alipayAccount.charAt(i);
                    else
                        account += "*";
                }
            } else {
                for (int i = 0; i < alipayAccount.length(); i++) {
                    if (i < 1 || i >= alipayAccount.length() - 1)
                        account += alipayAccount.charAt(i);
                    else
                        account += "*";
                }
            }
        }
        return account;
    }
    public static String filterAlipayName(String name) {
        String st = "";
        for (int i = 0; i < name.length(); i++) {
            if (i == 0)
                st += name.charAt(i);
            else
                st += "*";
        }
        return st;
    }
    public static String filterOrderId(String orderId) {
        if (orderId == null || orderId.length() <= 6)
            return orderId;
        if (orderId.length() <= 16) {// 隐藏2位
            return orderId.substring(0, orderId.length() - 2) + "**";
        } else {// 隐藏6位
            return orderId.substring(0, orderId.length() - 6) + "******";
        }
    }
    /**
     * 解析QQ用户信息
     *
     * @param qqUserBase64
     * @return
     */
    public static QQUserInfoVO parseQQUser(String qqUserBase64) {
        if (StringUtil.isNullOrEmpty(qqUserBase64))
            return null;
        String qqUserStr = StringUtil.getFromBase64(qqUserBase64);
        if (StringUtil.isNullOrEmpty(qqUserStr))
            return null;
        QQUserInfoVO qqUserInfo = new Gson().fromJson(qqUserStr, QQUserInfoVO.class);
        return qqUserInfo;
    }
}