Explorar el Código

每个销售绑一个二级域名-新增二级域名生成工具

Long hace 2 meses
padre
commit
05fbc3432c

+ 28 - 0
fs-common/src/main/java/com/fs/common/utils/DomainUtil.java

@@ -0,0 +1,28 @@
+package com.fs.common.utils;
+
+
+import java.util.Random;
+
+public class DomainUtil {
+
+    private static final String LETTER = "abcdefghijklmnopqrstuvwxyz";
+    private static final Random RANDOM = new Random();
+
+    /**
+     * 生成二级域名
+     * @param domain 主域名
+     * @param length 名称长度
+     * @param suffix 后缀
+     * @return  二级域名
+     */
+    public static String generateSubDomain(String domain, int length, String suffix) {
+        if (length < 6) {
+            length = 6;
+        }
+        StringBuilder sub = new StringBuilder(length);
+        for (int i = 0; i < length; i++) {
+            sub.append(LETTER.charAt(RANDOM.nextInt(LETTER.length())));
+        }
+        return sub + "-" + suffix + "." + domain;
+    }
+}

+ 21 - 0
fs-company/src/main/java/com/fs/company/controller/CompanyUserController.java

@@ -4,8 +4,10 @@ import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import cn.hutool.json.JSONUtil;
 import com.fs.common.core.domain.R;
 
+import com.fs.common.utils.DomainUtil;
 import com.fs.company.domain.*;
 import com.fs.company.param.CompanyUserQwParam;
 import com.fs.company.service.*;
@@ -13,9 +15,11 @@ import com.fs.company.vo.CompanyUserQwListVO;
 import com.fs.company.vo.CompanyUserVO;
 import com.fs.core.security.LoginUser;
 import com.fs.core.web.service.TokenService;
+import com.fs.course.config.CourseConfig;
 import com.fs.qw.vo.CompanyUserQwVO;
 import com.fs.qw.vo.QwUserVO;
 import com.fs.his.vo.OptionsVO;;
+import com.fs.system.service.ISysConfigService;
 import com.fs.system.vo.DictVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -59,6 +63,8 @@ public class CompanyUserController extends BaseController
 
     @Autowired
     private ICompanyVoiceCallerService callerService;
+    @Autowired
+    private ISysConfigService configService;
 
     /**
      * 获取用户列表
@@ -199,6 +205,21 @@ public class CompanyUserController extends BaseController
         return toAjax(companyUserService.updateUser(user));
     }
 
+    @PreAuthorize("@ss.hasPermi('company:user:query')")
+    @GetMapping(value = "generateSubDomain")
+    public AjaxResult generateSubDomain() {
+        // 获取配置中的主域名
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+
+        // 生成二级域名
+        String subDomain =  DomainUtil.generateSubDomain(config.getCourseDomainName(), 6, String.valueOf(SecurityUtils.getLoginUser().getUser().getUserId()));
+
+        AjaxResult result = AjaxResult.success();
+        result.put("data", subDomain);
+        return result;
+    }
+
     /**
      * 删除用户
      */

+ 2 - 2
fs-service-system/src/main/java/com/fs/company/domain/CompanyUser.java

@@ -3,9 +3,8 @@ package com.fs.company.domain;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
 import com.fs.common.core.domain.BaseEntity;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Pattern;
 import java.util.Date;
 import java.util.List;
@@ -131,6 +130,7 @@ public class CompanyUser extends BaseEntity
     /** 域名 */
     private String domain;
 
+    @NotBlank(message = "二级域名不能为空")
     @Pattern(regexp = "^(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,})|(?:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}))$", message = "域名格式不正确")
     public String getDomain() {
         return domain;

+ 1 - 0
fs-service-system/src/main/java/com/fs/course/config/CourseConfig.java

@@ -14,5 +14,6 @@ public class CourseConfig implements Serializable {
     private Integer answerIntegral;//答题获得积分
     private Integer defaultLine;//默认看课线路
     private String realLinkDomainName;//真链域名
+    private String courseDomainName;//链接域名
 
 }