admin
2022-05-12 fa705507ba574c857b1667553737d23b1b7ff495
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.ks.app.utils.user;
 
import java.math.BigDecimal;
 
/**
 * @author hxh
 * @title: InviteCodeUtil
 * @description: 邀请码工具类
 * @date 2022/4/18 15:25
 */
public class InviteCodeUtil {
 
    public static String createInviteCode(Long uid) {
        return createInviteCode((int) (Math.random() * 10 + 1), uid);
    }
 
 
    public static String createInviteCode(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;
    }
 
}