Gqingci 1 săptămână în urmă
părinte
comite
4437596d7f
22 a modificat fișierele cu 944 adăugiri și 12 ștergeri
  1. 36 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/controller/MainExamEvaluationController.java
  2. 33 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/controller/PortalBannerController.java
  3. 231 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/controller/PortalCheckController.java
  4. 39 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/Banner.java
  5. 41 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/MainExamEvaluation.java
  6. 30 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/bo/BannerBo.java
  7. 28 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/bo/MainExamEvaluationBo.java
  8. 38 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/vo/BannerVo.java
  9. 7 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/vo/MainBackOrderVo.java
  10. 74 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/vo/MainExamEvaluationVo.java
  11. 8 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/mapper/BannerMapper.java
  12. 20 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/mapper/MainExamEvaluationMapper.java
  13. 11 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/IBannerService.java
  14. 7 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/IMainBackOrderService.java
  15. 17 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/IMainExamEvaluationService.java
  16. 29 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/BannerServiceImpl.java
  17. 58 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainBackOrderServiceImpl.java
  18. 43 0
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainExamEvaluationServiceImpl.java
  19. 6 6
      ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainPostApplyServiceImpl.java
  20. 112 0
      ruoyi-modules/ruoyi-main/src/main/resources/mapper/MainExamEvaluationMapper.xml
  21. 42 6
      script/sql/main.sql
  22. 34 0
      sj.sql

+ 36 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/controller/MainExamEvaluationController.java

@@ -0,0 +1,36 @@
+package org.dromara.main.controller;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.main.domain.bo.MainExamEvaluationBo;
+import org.dromara.main.domain.vo.MainExamEvaluationVo;
+import org.dromara.main.service.IMainExamEvaluationService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/main/examEvaluation")
+public class MainExamEvaluationController extends BaseController {
+
+    private final IMainExamEvaluationService mainExamEvaluationService;
+
+    @GetMapping("/list")
+    public TableDataInfo<MainExamEvaluationVo> list(MainExamEvaluationBo bo, PageQuery pageQuery) {
+        return mainExamEvaluationService.queryPageList(bo, pageQuery);
+    }
+
+    @PutMapping("/status/{id}/{status}")
+    public R<Void> updateStatus(@NotNull(message = "主键不能为空") @PathVariable Long id,
+                                @NotBlank(message = "状态不能为空") @PathVariable String status) {
+        return toAjax(mainExamEvaluationService.updateStatus(id, status));
+    }
+}

+ 33 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/controller/PortalBannerController.java

@@ -0,0 +1,33 @@
+package org.dromara.main.controller;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.main.domain.bo.BannerBo;
+import org.dromara.main.domain.vo.BannerVo;
+import org.dromara.main.service.IBannerService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 门户轮播图接口
+ */
+@SaIgnore
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/portal/banner")
+public class PortalBannerController extends BaseController {
+
+    private final IBannerService bannerService;
+
+    @GetMapping("/list")
+    public R<List<BannerVo>> getBannerList() {
+        BannerBo bo = new BannerBo();
+        bo.setIsEnabled(1L);
+        return R.ok(bannerService.queryList(bo));
+    }
+}

+ 231 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/controller/PortalCheckController.java

@@ -0,0 +1,231 @@
+package org.dromara.main.controller;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.main.domain.bo.MainBackCategoryBo;
+import org.dromara.main.domain.bo.MainBackClauseBo;
+import org.dromara.main.domain.vo.MainBackCategoryVo;
+import org.dromara.main.domain.vo.MainBackClauseVo;
+import org.dromara.main.domain.vo.MainBackOrderVo;
+import org.dromara.main.service.IMainBackCategoryService;
+import org.dromara.main.service.IMainBackClauseService;
+import org.dromara.main.service.IMainBackOrderService;
+import org.dromara.system.domain.vo.SysDictDataVo;
+import org.dromara.system.service.ISysDictTypeService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门户背调公开接口
+ */
+@SaIgnore
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/portal/check")
+public class PortalCheckController extends BaseController {
+
+    private static final Map<String, String> CLAUSE_TYPE_CODE_MAP = Map.of(
+        "身份风险", "1",
+        "职业风险", "2",
+        "能力评估", "3"
+    );
+
+    private final IMainBackCategoryService mainBackCategoryService;
+    private final IMainBackClauseService mainBackClauseService;
+    private final IMainBackOrderService mainBackOrderService;
+    private final ISysDictTypeService dictTypeService;
+
+    @GetMapping("/category/top3")
+    public R<List<CategoryWithClausesVo>> getTop3CategoriesWithClauses() {
+        MainBackCategoryBo categoryBo = new MainBackCategoryBo();
+        categoryBo.setStatus("1");
+
+        List<MainBackCategoryVo> categories = new ArrayList<>(mainBackCategoryService.queryList(categoryBo));
+        categories.sort(Comparator.comparing(MainBackCategoryVo::getId));
+        if (categories.size() > 3) {
+            categories = categories.subList(0, 3);
+        }
+
+        List<CategoryWithClausesVo> result = new ArrayList<>(categories.size());
+        for (MainBackCategoryVo category : categories) {
+            MainBackClauseBo clauseBo = new MainBackClauseBo();
+            clauseBo.setCategoryId(category.getId());
+            clauseBo.setStatus("1");
+            List<MainBackClauseVo> clauses = mainBackClauseService.queryList(clauseBo);
+
+            List<PortalCheckClauseVo> clauseVos = clauses.stream()
+                .map(clause -> toPortalClauseVo(clause, category.getName()))
+                .toList();
+
+            result.add(new CategoryWithClausesVo(toPortalCategoryVo(category), clauseVos));
+        }
+        return R.ok(result);
+    }
+
+    @GetMapping("/clauses/grouped")
+    public R<Map<String, List<PortalCheckClauseVo>>> getAllClausesGrouped() {
+        MainBackClauseBo bo = new MainBackClauseBo();
+        bo.setStatus("1");
+        List<MainBackClauseVo> clauses = mainBackClauseService.queryList(bo);
+
+        MainBackCategoryBo categoryBo = new MainBackCategoryBo();
+        categoryBo.setStatus("1");
+        Map<Long, String> categoryNameMap = new LinkedHashMap<>();
+        for (MainBackCategoryVo category : mainBackCategoryService.queryList(categoryBo)) {
+            categoryNameMap.put(category.getId(), category.getName());
+        }
+
+        Map<String, List<PortalCheckClauseVo>> grouped = new LinkedHashMap<>();
+        for (MainBackClauseVo clause : clauses) {
+            PortalCheckClauseVo clauseVo = toPortalClauseVo(clause, categoryNameMap.get(clause.getCategoryId()));
+            String clauseType = clauseVo.getClauseType();
+            grouped.computeIfAbsent(clauseType == null || clauseType.isBlank() ? "0" : clauseType, key -> new ArrayList<>())
+                .add(clauseVo);
+        }
+        return R.ok(grouped);
+    }
+
+    @GetMapping("/dict/{dictType}")
+    public R<List<SysDictDataVo>> getPublicDict(@PathVariable String dictType) {
+        List<String> allowedTypes = Arrays.asList(
+            "candidate_id_type",
+            "main_clause_type",
+            "check_process_status",
+            "withdraw_account_type",
+            "order_status"
+        );
+        if (!allowedTypes.contains(dictType)) {
+            return R.fail("不允许查询该字典类型");
+        }
+
+        String actualType = "main_clause_type".equals(dictType) ? "sys_clause_type" : dictType;
+        List<SysDictDataVo> data = dictTypeService.selectDictDataByType(actualType);
+        if (data == null) {
+            data = new ArrayList<>();
+        }
+        if ("main_clause_type".equals(dictType)) {
+            data = data.stream().map(this::toPortalClauseTypeDict).toList();
+        }
+        return R.ok(data);
+    }
+
+    @GetMapping("/order/list")
+    public R<List<MainBackOrderVo>> getMyOrders() {
+        String tenantId = LoginHelper.getTenantId();
+        if (tenantId == null || tenantId.isBlank()) {
+            return R.fail("未登录或token已失效");
+        }
+        return R.ok(mainBackOrderService.queryPortalListByTenantId(tenantId));
+    }
+
+    private PortalCheckCategoryVo toPortalCategoryVo(MainBackCategoryVo category) {
+        PortalCheckCategoryVo vo = new PortalCheckCategoryVo();
+        vo.setId(category.getId());
+        vo.setCategoryName(category.getName());
+        vo.setCategoryPrice(category.getPrice());
+        vo.setCreateTime(category.getCreateTime() == null ? null :
+            java.util.Date.from(category.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()));
+        vo.setRemark(category.getRemark());
+        return vo;
+    }
+
+    private PortalCheckClauseVo toPortalClauseVo(MainBackClauseVo clause, String categoryName) {
+        PortalCheckClauseVo vo = new PortalCheckClauseVo();
+        vo.setId(clause.getId());
+        vo.setCategoryId(clause.getCategoryId());
+        vo.setCategoryName(categoryName);
+        vo.setClauseName(clause.getName());
+        vo.setClauseType(normalizeClauseType(clause.getType()));
+        vo.setClauseSetting("0");
+        vo.setClauseContent(clause.getDescription());
+        vo.setClausePrice(clause.getPrice());
+        vo.setIsFree(0);
+        vo.setStatus(parseIntOrDefault(clause.getStatus(), 1));
+        vo.setCreateTime(clause.getCreateTime());
+        vo.setRemark(clause.getRemark());
+        return vo;
+    }
+
+    private String normalizeClauseType(String rawType) {
+        if (rawType == null || rawType.isBlank()) {
+            return "0";
+        }
+        if (rawType.chars().allMatch(Character::isDigit)) {
+            return rawType;
+        }
+        return CLAUSE_TYPE_CODE_MAP.getOrDefault(rawType, rawType);
+    }
+
+    private int parseIntOrDefault(String value, int defaultValue) {
+        if (value == null || value.isBlank()) {
+            return defaultValue;
+        }
+        try {
+            return Integer.parseInt(value);
+        } catch (NumberFormatException ignored) {
+            return defaultValue;
+        }
+    }
+
+    private SysDictDataVo toPortalClauseTypeDict(SysDictDataVo source) {
+        SysDictDataVo target = new SysDictDataVo();
+        target.setDictCode(source.getDictCode());
+        target.setDictSort(source.getDictSort());
+        target.setDictLabel(source.getDictLabel());
+        target.setDictValue(normalizeClauseType(source.getDictValue()));
+        target.setDictType("main_clause_type");
+        target.setCssClass(source.getCssClass());
+        target.setListClass(source.getListClass());
+        target.setIsDefault(source.getIsDefault());
+        target.setRemark(source.getRemark());
+        return target;
+    }
+
+    @Data
+    private static class PortalCheckCategoryVo {
+        private Long id;
+        private String categoryName;
+        private BigDecimal categoryPrice;
+        private java.util.Date createTime;
+        private String remark;
+    }
+
+    @Data
+    private static class PortalCheckClauseVo {
+        private Long id;
+        private Long categoryId;
+        private String categoryName;
+        private String clauseName;
+        private String clauseType;
+        private String clauseSetting;
+        private String clauseContent;
+        private BigDecimal clausePrice;
+        private Integer isFree;
+        private Integer status;
+        private java.util.Date createTime;
+        private String remark;
+    }
+
+    @Data
+    @AllArgsConstructor
+    private static class CategoryWithClausesVo {
+        private PortalCheckCategoryVo category;
+        private List<PortalCheckClauseVo> clauses;
+    }
+}

+ 39 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/Banner.java

@@ -0,0 +1,39 @@
+package org.dromara.main.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.tenant.core.TenantEntity;
+import org.dromara.main.domain.vo.BannerVo;
+
+import java.io.Serial;
+
+/**
+ * 首页轮播图对象 main_banner
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BannerVo.class)
+@TableName("main_banner")
+public class Banner extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id")
+    private Long id;
+
+    private String title;
+
+    private String imageUrl;
+
+    private String linkUrl;
+
+    private Long sortOrder;
+
+    private Long isEnabled;
+
+    private String remark;
+}

+ 41 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/MainExamEvaluation.java

@@ -0,0 +1,41 @@
+package org.dromara.main.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("main_exam_evaluation")
+public class MainExamEvaluation extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private String evaluationName;
+    private String grade;
+    private String position;
+    private String positionType;
+    private String tags;
+    private Long mainImage;
+    private String imageAlbum;
+    private String detail;
+    private BigDecimal price;
+    private Date onTime;
+    private Date downTime;
+    private String status;
+    private String tenantId;
+    private String remark;
+
+    @TableLogic
+    private String delFlag;
+}

+ 30 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/bo/BannerBo.java

@@ -0,0 +1,30 @@
+package org.dromara.main.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.main.domain.Banner;
+
+/**
+ * 首页轮播图业务对象
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Banner.class, reverseConvertGenerate = false)
+public class BannerBo extends BaseEntity {
+
+    private Long id;
+
+    private String title;
+
+    private String imageUrl;
+
+    private String linkUrl;
+
+    private Long sortOrder;
+
+    private Long isEnabled;
+
+    private String remark;
+}

+ 28 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/bo/MainExamEvaluationBo.java

@@ -0,0 +1,28 @@
+package org.dromara.main.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.main.domain.MainExamEvaluation;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = MainExamEvaluation.class, reverseConvertGenerate = false)
+public class MainExamEvaluationBo extends org.dromara.common.mybatis.core.domain.BaseEntity {
+
+    private Long id;
+    private String evaluationName;
+    private String grade;
+    private String position;
+    private String positionType;
+    private String status;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date beginTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+}

+ 38 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/vo/BannerVo.java

@@ -0,0 +1,38 @@
+package org.dromara.main.domain.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.main.domain.Banner;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 首页轮播图视图对象
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = Banner.class)
+public class BannerVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String title;
+
+    private String imageUrl;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "imageUrl")
+    private String imageUrlUrl;
+
+    private String linkUrl;
+
+    private Long sortOrder;
+
+    private Long isEnabled;
+}

+ 7 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/vo/MainBackOrderVo.java

@@ -14,14 +14,21 @@ import java.time.LocalDateTime;
 public class MainBackOrderVo implements Serializable {
 
     private Long id;
+    private Long orderId;
     private String orderNo;
     private String tenantId;
+    private Long companyId;
     private String companyName; // 对应前端“下单企业”
     private Long categoryId;
     private String categoryName;
+    private Integer orderType;
+    private String clauseIds;
+    private BigDecimal unitPrice;
     @TableField("total_amount")
     private BigDecimal totalAmount;
     private String status;
+    private Integer orderStatus;
+    private Integer mainOrderStatus;
     private LocalDateTime createTime;
 
     /** 候选人人数 (需在 Service 中统计或 SQL 关联查询) */

+ 74 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/vo/MainExamEvaluationVo.java

@@ -0,0 +1,74 @@
+package org.dromara.main.domain.vo;
+
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.main.domain.MainExamEvaluation;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AutoMapper(target = MainExamEvaluation.class)
+public class MainExamEvaluationVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @ExcelProperty(value = "测评ID")
+    private Long id;
+
+    @ExcelProperty(value = "测评名称")
+    private String evaluationName;
+
+    @ExcelProperty(value = "岗位等级")
+    private String grade;
+
+    @ExcelProperty(value = "岗位")
+    private String position;
+
+    @ExcelProperty(value = "岗位类型")
+    private String positionType;
+
+    @ExcelProperty(value = "标签")
+    private String tags;
+
+    @ExcelProperty(value = "主图")
+    private Long mainImage;
+
+    private String mainImageUrl;
+
+    @ExcelProperty(value = "商品相册")
+    private String imageAlbum;
+
+    @ExcelProperty(value = "详情")
+    private String detail;
+
+    @ExcelProperty(value = "价格")
+    private BigDecimal price;
+
+    @ExcelProperty(value = "上架时间")
+    private Date onTime;
+
+    @ExcelProperty(value = "下架时间")
+    private Date downTime;
+
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    private String delFlag;
+
+    @ExcelProperty(value = "租户编号")
+    private String tenantId;
+
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ExcelProperty(value = "更新时间")
+    private Date updateTime;
+}

+ 8 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/mapper/BannerMapper.java

@@ -0,0 +1,8 @@
+package org.dromara.main.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.main.domain.Banner;
+import org.dromara.main.domain.vo.BannerVo;
+
+public interface BannerMapper extends BaseMapperPlus<Banner, BannerVo> {
+}

+ 20 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/mapper/MainExamEvaluationMapper.java

@@ -0,0 +1,20 @@
+package org.dromara.main.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.main.domain.MainExamEvaluation;
+import org.dromara.main.domain.bo.MainExamEvaluationBo;
+import org.dromara.main.domain.vo.MainExamEvaluationVo;
+
+import java.util.List;
+
+@InterceptorIgnore(tenantLine = "true")
+public interface MainExamEvaluationMapper extends BaseMapperPlus<MainExamEvaluation, MainExamEvaluationVo> {
+
+    IPage<MainExamEvaluationVo> selectEvaluationPage(Page<MainExamEvaluationVo> page, @Param("bo") MainExamEvaluationBo bo);
+
+    List<MainExamEvaluationVo> selectEvaluationList(@Param("bo") MainExamEvaluationBo bo);
+}

+ 11 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/IBannerService.java

@@ -0,0 +1,11 @@
+package org.dromara.main.service;
+
+import org.dromara.main.domain.bo.BannerBo;
+import org.dromara.main.domain.vo.BannerVo;
+
+import java.util.List;
+
+public interface IBannerService {
+
+    List<BannerVo> queryList(BannerBo bo);
+}

+ 7 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/IMainBackOrderService.java

@@ -5,6 +5,8 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.main.domain.bo.MainBackOrderBo;
 import org.dromara.main.domain.vo.MainBackOrderVo;
 
+import java.util.List;
+
 /**
  * 背调订单Service接口
  */
@@ -14,4 +16,9 @@ public interface IMainBackOrderService {
      * 查询背调订单分页列表
      */
     TableDataInfo<MainBackOrderVo> queryPageList(MainBackOrderBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询门户当前企业的背调订单列表
+     */
+    List<MainBackOrderVo> queryPortalListByTenantId(String tenantId);
 }

+ 17 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/IMainExamEvaluationService.java

@@ -0,0 +1,17 @@
+package org.dromara.main.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.main.domain.bo.MainExamEvaluationBo;
+import org.dromara.main.domain.vo.MainExamEvaluationVo;
+
+import java.util.List;
+
+public interface IMainExamEvaluationService {
+
+    TableDataInfo<MainExamEvaluationVo> queryPageList(MainExamEvaluationBo bo, PageQuery pageQuery);
+
+    List<MainExamEvaluationVo> queryList(MainExamEvaluationBo bo);
+
+    Boolean updateStatus(Long id, String status);
+}

+ 29 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/BannerServiceImpl.java

@@ -0,0 +1,29 @@
+package org.dromara.main.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.main.domain.Banner;
+import org.dromara.main.domain.bo.BannerBo;
+import org.dromara.main.domain.vo.BannerVo;
+import org.dromara.main.mapper.BannerMapper;
+import org.dromara.main.service.IBannerService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@RequiredArgsConstructor
+@Service
+public class BannerServiceImpl implements IBannerService {
+
+    private final BannerMapper baseMapper;
+
+    @Override
+    public List<BannerVo> queryList(BannerBo bo) {
+        LambdaQueryWrapper<Banner> lqw = Wrappers.lambdaQuery();
+        lqw.like(bo.getTitle() != null && !bo.getTitle().isBlank(), Banner::getTitle, bo.getTitle());
+        lqw.eq(bo.getIsEnabled() != null, Banner::getIsEnabled, bo.getIsEnabled());
+        lqw.orderByAsc(Banner::getSortOrder).orderByAsc(Banner::getId);
+        return baseMapper.selectVoList(lqw);
+    }
+}

+ 58 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainBackOrderServiceImpl.java

@@ -2,6 +2,7 @@ package org.dromara.main.service.impl;
 
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.utils.StringUtils;
@@ -21,6 +22,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.math.BigDecimal;
 
 @RequiredArgsConstructor
 @Service
@@ -78,6 +80,62 @@ public class MainBackOrderServiceImpl implements IMainBackOrderService {
 
         return result;
     }
+
+    @Override
+    public List<MainBackOrderVo> queryPortalListByTenantId(String tenantId) {
+        LambdaQueryWrapper<MainBackOrder> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StrUtil.isNotBlank(tenantId), MainBackOrder::getTenantId, tenantId)
+            .orderByDesc(MainBackOrder::getCreateTime);
+
+        List<MainBackOrderVo> list = baseMapper.selectVoList(lqw);
+        for (MainBackOrderVo vo : list) {
+            fillPortalFields(vo);
+        }
+        return list;
+    }
+
+    private void fillPortalFields(MainBackOrderVo vo) {
+        Long count = recordMapper.selectCount(
+            new LambdaQueryWrapper<MainBackRecord>()
+                .eq(MainBackRecord::getOrderId, vo.getId())
+        );
+        vo.setCandidateCount(count);
+        vo.setOrderId(vo.getId());
+        vo.setCompanyId(parseLongOrNull(vo.getTenantId()));
+        vo.setOrderType(vo.getCategoryId() != null ? 1 : 2);
+
+        Integer status = parseIntOrDefault(vo.getStatus(), 0);
+        vo.setOrderStatus(status);
+        vo.setMainOrderStatus(status);
+
+        if (count != null && count > 0 && vo.getTotalAmount() != null) {
+            vo.setUnitPrice(vo.getTotalAmount().divide(BigDecimal.valueOf(count), 2, java.math.RoundingMode.HALF_UP));
+        } else {
+            vo.setUnitPrice(BigDecimal.ZERO);
+        }
+    }
+
+    private Long parseLongOrNull(String value) {
+        if (StringUtils.isBlank(value)) {
+            return null;
+        }
+        try {
+            return Long.parseLong(value);
+        } catch (NumberFormatException ignored) {
+            return null;
+        }
+    }
+
+    private Integer parseIntOrDefault(String value, int defaultValue) {
+        if (StringUtils.isBlank(value)) {
+            return defaultValue;
+        }
+        try {
+            return Integer.parseInt(value);
+        } catch (NumberFormatException ignored) {
+            return defaultValue;
+        }
+    }
 }
 
 

+ 43 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainExamEvaluationServiceImpl.java

@@ -0,0 +1,43 @@
+package org.dromara.main.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.main.domain.MainExamEvaluation;
+import org.dromara.main.domain.bo.MainExamEvaluationBo;
+import org.dromara.main.domain.vo.MainExamEvaluationVo;
+import org.dromara.main.mapper.MainExamEvaluationMapper;
+import org.dromara.main.service.IMainExamEvaluationService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class MainExamEvaluationServiceImpl implements IMainExamEvaluationService {
+
+    private final MainExamEvaluationMapper baseMapper;
+
+    @Override
+    public TableDataInfo<MainExamEvaluationVo> queryPageList(MainExamEvaluationBo bo, PageQuery pageQuery) {
+        IPage<MainExamEvaluationVo> result = baseMapper.selectEvaluationPage(pageQuery.build(), bo);
+        return TableDataInfo.build(result);
+    }
+
+    @Override
+    public List<MainExamEvaluationVo> queryList(MainExamEvaluationBo bo) {
+        return baseMapper.selectEvaluationList(bo);
+    }
+
+    @Override
+    public Boolean updateStatus(Long id, String status) {
+        MainExamEvaluation entity = baseMapper.selectById(id);
+        if (entity == null) {
+            throw new ServiceException("测评不存在");
+        }
+        entity.setStatus(status);
+        return baseMapper.updateById(entity) > 0;
+    }
+}

+ 6 - 6
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainPostApplyServiceImpl.java

@@ -53,7 +53,7 @@ public class MainPostApplyServiceImpl implements IMainPostApplyService {
     public Boolean insertByBo(MainPostApplyBo bo) {
         MainPostApply add = MapstructUtils.convert(bo, MainPostApply.class);
         add.setApplyStatus(add.getApplyStatus() == null ? 0 : add.getApplyStatus());
-        add.setStatus(ObjectUtil.isNotNull(add.getStatus()) ? add.getStatus() : "0");
+        add.setStatus(ObjectUtil.isNotNull(add.getStatus()) ? add.getStatus() : "1");
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
@@ -88,7 +88,7 @@ public class MainPostApplyServiceImpl implements IMainPostApplyService {
 
         MainPostApply update = MapstructUtils.convert(bo, MainPostApply.class);
         update.setApplyStatus(0);
-        update.setStatus("0");
+        update.setStatus("1");
         update.setRejectReason(null);
         update.setAuditId(old.getAuditId());
         update.setPostId(old.getPostId());
@@ -120,10 +120,10 @@ public class MainPostApplyServiceImpl implements IMainPostApplyService {
         if (!Integer.valueOf(2).equals(postApply.getApplyStatus())) {
             throw new ServiceException("仅审核通过的岗位可发布");
         }
-        if ("1".equals(postApply.getStatus())) {
+        if ("0".equals(postApply.getStatus())) {
             return true;
         }
-        postApply.setStatus("1");
+        postApply.setStatus("0");
         return baseMapper.updateById(postApply) > 0;
     }
 
@@ -137,10 +137,10 @@ public class MainPostApplyServiceImpl implements IMainPostApplyService {
         if (!Integer.valueOf(2).equals(postApply.getApplyStatus())) {
             throw new ServiceException("仅审核通过的岗位可取消发布");
         }
-        if ("0".equals(postApply.getStatus())) {
+        if ("1".equals(postApply.getStatus())) {
             return true;
         }
-        postApply.setStatus("0");
+        postApply.setStatus("1");
         return baseMapper.updateById(postApply) > 0;
     }
 

+ 112 - 0
ruoyi-modules/ruoyi-main/src/main/resources/mapper/MainExamEvaluationMapper.xml

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.main.mapper.MainExamEvaluationMapper">
+
+    <resultMap id="MainExamEvaluationResult" type="org.dromara.main.domain.vo.MainExamEvaluationVo">
+        <id property="id" column="id"/>
+        <result property="evaluationName" column="evaluation_name"/>
+        <result property="grade" column="grade"/>
+        <result property="position" column="position"/>
+        <result property="positionType" column="position_type"/>
+        <result property="tags" column="tags"/>
+        <result property="mainImage" column="main_image"/>
+        <result property="mainImageUrl" column="main_image_url"/>
+        <result property="imageAlbum" column="image_album"/>
+        <result property="detail" column="detail"/>
+        <result property="price" column="price"/>
+        <result property="onTime" column="on_time"/>
+        <result property="downTime" column="down_time"/>
+        <result property="status" column="status"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="remark" column="remark"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <sql id="selectMainExamEvaluationVo">
+        SELECT
+            mee.id,
+            mee.evaluation_name,
+            mee.grade,
+            mee.position,
+            mee.position_type,
+            mee.tags,
+            mee.main_image,
+            (
+                SELECT so.url
+                FROM sys_oss so
+                WHERE so.oss_id = mee.main_image
+                LIMIT 1
+            ) AS main_image_url,
+            mee.image_album,
+            mee.detail,
+            mee.price,
+            mee.on_time,
+            mee.down_time,
+            mee.status,
+            mee.del_flag,
+            mee.tenant_id,
+            mee.remark,
+            mee.create_time,
+            mee.update_time
+        FROM main_exam_evaluation mee
+    </sql>
+
+    <select id="selectEvaluationPage" resultMap="MainExamEvaluationResult">
+        <include refid="selectMainExamEvaluationVo"/>
+        WHERE mee.del_flag = '0'
+        <if test="bo != null and bo.evaluationName != null and bo.evaluationName != ''">
+            AND mee.evaluation_name LIKE CONCAT('%', #{bo.evaluationName}, '%')
+        </if>
+        <if test="bo != null and bo.grade != null and bo.grade != ''">
+            AND mee.grade = #{bo.grade}
+        </if>
+        <if test="bo != null and bo.position != null and bo.position != ''">
+            AND mee.position LIKE CONCAT('%', #{bo.position}, '%')
+        </if>
+        <if test="bo != null and bo.positionType != null and bo.positionType != ''">
+            AND mee.position_type = #{bo.positionType}
+        </if>
+        <if test="bo != null and bo.status != null and bo.status != ''">
+            AND mee.status = #{bo.status}
+        </if>
+        <if test="bo != null and bo.beginTime != null">
+            AND mee.on_time <![CDATA[ >= ]]> #{bo.beginTime}
+        </if>
+        <if test="bo != null and bo.endTime != null">
+            AND mee.on_time <![CDATA[ <= ]]> #{bo.endTime}
+        </if>
+        ORDER BY mee.create_time DESC
+    </select>
+
+    <select id="selectEvaluationList" resultMap="MainExamEvaluationResult">
+        <include refid="selectMainExamEvaluationVo"/>
+        WHERE mee.del_flag = '0'
+        <if test="bo != null and bo.evaluationName != null and bo.evaluationName != ''">
+            AND mee.evaluation_name LIKE CONCAT('%', #{bo.evaluationName}, '%')
+        </if>
+        <if test="bo != null and bo.grade != null and bo.grade != ''">
+            AND mee.grade = #{bo.grade}
+        </if>
+        <if test="bo != null and bo.position != null and bo.position != ''">
+            AND mee.position LIKE CONCAT('%', #{bo.position}, '%')
+        </if>
+        <if test="bo != null and bo.positionType != null and bo.positionType != ''">
+            AND mee.position_type = #{bo.positionType}
+        </if>
+        <if test="bo != null and bo.status != null and bo.status != ''">
+            AND mee.status = #{bo.status}
+        </if>
+        <if test="bo != null and bo.beginTime != null">
+            AND mee.on_time <![CDATA[ >= ]]> #{bo.beginTime}
+        </if>
+        <if test="bo != null and bo.endTime != null">
+            AND mee.on_time <![CDATA[ <= ]]> #{bo.endTime}
+        </if>
+        ORDER BY mee.create_time DESC
+    </select>
+
+</mapper>

+ 42 - 6
script/sql/main.sql

@@ -41,7 +41,29 @@ CREATE TABLE `main_back_clause` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='背调条款表';
 
 -- ----------------------------
--- 3. 学员个人信息表 (main_student)
+-- 3. 首页轮播图表 (main_banner)
+-- ----------------------------
+DROP TABLE IF EXISTS `main_banner`;
+CREATE TABLE `main_banner` (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `tenant_id` varchar(20) DEFAULT '000000' COMMENT '所属租户',
+  `title` varchar(255) DEFAULT NULL COMMENT '轮播图标题',
+  `image_url` varchar(255) NOT NULL COMMENT '图片地址(OSS ID)',
+  `link_url` varchar(500) DEFAULT NULL COMMENT '跳转链接',
+  `sort_order` bigint DEFAULT '0' COMMENT '排序权重',
+  `is_enabled` bigint DEFAULT '1' COMMENT '是否启用:0-禁用 1-启用',
+  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
+  `create_by` bigint DEFAULT NULL COMMENT '创建者',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `update_by` bigint DEFAULT NULL COMMENT '更新者',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='首页轮播图表';
+
+-- ----------------------------
+-- 4. 学员个人信息表 (main_student)
 -- ----------------------------
 DROP TABLE IF EXISTS `main_student`;
 CREATE TABLE `main_student` (
@@ -68,7 +90,7 @@ CREATE TABLE `main_student` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学员个人信息表';
 
 -- ----------------------------
--- 4. 企业候选人关系表 (main_candidate)
+-- 5. 企业候选人关系表 (main_candidate)
 -- ----------------------------
 DROP TABLE IF EXISTS `main_candidate`;
 CREATE TABLE `main_candidate` (
@@ -89,7 +111,7 @@ CREATE TABLE `main_candidate` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业候选人关系表';
 
 -- ----------------------------
--- 5. 背调订单表 (main_back_order)
+-- 6. 背调订单表 (main_back_order)
 -- ----------------------------
 DROP TABLE IF EXISTS `main_back_order`;
 CREATE TABLE `main_back_order` (
@@ -113,7 +135,7 @@ CREATE TABLE `main_back_order` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='背调订单表';
 
 -- ----------------------------
--- 6. 背调执行记录表 (main_back_record)
+-- 7. 背调执行记录表 (main_back_record)
 -- ----------------------------
 DROP TABLE IF EXISTS `main_back_record`;
 CREATE TABLE `main_back_record` (
@@ -136,7 +158,7 @@ CREATE TABLE `main_back_record` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='背调执行记录表';
 
 -- ----------------------------
--- 7. 企业入驻申请表 (main_company_apply)
+-- 8. 企业入驻申请表 (main_company_apply)
 -- ----------------------------
 DROP TABLE IF EXISTS `main_company_apply`;
 CREATE TABLE `main_company_apply` (
@@ -168,7 +190,7 @@ CREATE TABLE `main_company_apply` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业入驻申请表';
 
 -- ----------------------------
--- 8. 岗位发布申请表 (main_post_apply)
+-- 9. 岗位发布申请表 (main_post_apply)
 -- ----------------------------
 DROP TABLE IF EXISTS `main_post_apply`;
 CREATE TABLE `main_post_apply` (
@@ -264,3 +286,17 @@ VALUES (null, 2, '职业风险', '职业风险', 'sys_clause_type', '', 'warning
 
 INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) 
 VALUES (null, 3, '能力评估', '能力评估', 'sys_clause_type', '', 'success', 'N', '0', 1, sysdate(), 1, sysdate(), '能力评估');
+
+DELETE FROM `sys_dict_type` WHERE `dict_type` = 'main_clause_type';
+INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (null, '背调条款类型(门户)', 'main_clause_type', '0', 1, sysdate(), 1, sysdate(), '门户背调条款类型列表');
+
+DELETE FROM `sys_dict_data` WHERE `dict_type` = 'main_clause_type';
+INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (null, 1, '身份风险', '1', 'main_clause_type', '', 'primary', 'N', '0', 1, sysdate(), 1, sysdate(), '身份风险');
+
+INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (null, 2, '职业风险', '2', 'main_clause_type', '', 'warning', 'N', '0', 1, sysdate(), 1, sysdate(), '职业风险');
+
+INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (null, 3, '能力评估', '3', 'main_clause_type', '', 'success', 'N', '0', 1, sysdate(), 1, sysdate(), '能力评估');

+ 34 - 0
sj.sql

@@ -131,6 +131,28 @@ CREATE TABLE `main_audit`  (
   INDEX `idx_audit_time`(`audit_time` ASC) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '审核信息表' ROW_FORMAT = Dynamic;
 
+-- ----------------------------
+-- Table structure for main_banner
+-- ----------------------------
+DROP TABLE IF EXISTS `main_banner`;
+CREATE TABLE `main_banner`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '000000' COMMENT '所属租户',
+  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '轮播图标题',
+  `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '图片地址(OSS ID)',
+  `link_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '跳转链接',
+  `sort_order` bigint NULL DEFAULT 0 COMMENT '排序权重',
+  `is_enabled` bigint NULL DEFAULT 1 COMMENT '是否启用:0-禁用 1-启用',
+  `create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
+  `create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
+  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
+  `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '首页轮播图表' ROW_FORMAT = Dynamic;
+
 -- ----------------------------
 -- Table structure for main_back_candidate
 -- ----------------------------
@@ -995,4 +1017,16 @@ CREATE TABLE `test_tree`  (
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '测试树表' ROW_FORMAT = Dynamic;
 
+DELETE FROM `sys_dict_type` WHERE `dict_type` = 'main_clause_type';
+INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (NULL, '背调条款类型(门户)', 'main_clause_type', '0', 1, SYSDATE(), 1, SYSDATE(), '门户背调条款类型列表');
+
+DELETE FROM `sys_dict_data` WHERE `dict_type` = 'main_clause_type';
+INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (NULL, 1, '身份风险', '1', 'main_clause_type', '', 'primary', 'N', '0', 1, SYSDATE(), 1, SYSDATE(), '身份风险');
+INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (NULL, 2, '职业风险', '2', 'main_clause_type', '', 'warning', 'N', '0', 1, SYSDATE(), 1, SYSDATE(), '职业风险');
+INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (NULL, 3, '能力评估', '3', 'main_clause_type', '', 'success', 'N', '0', 1, SYSDATE(), 1, SYSDATE(), '能力评估');
+
 SET FOREIGN_KEY_CHECKS = 1;