Commit 3ffa3955 by 涂亚平

居家办公前版本

1 parent cdf767b7
Showing with 1652 additions and 1850 deletions
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -275,7 +275,7 @@
</dependencies>
<build>
<finalName>subsidy-ts</finalName>
<finalName>ecnutracks</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
......
package com.subsidy.common.constant;
public class MemberType {
public static final String PRINCIPAL = "团队负责人";
public static final String TEAM_MEMBER = "团队成员";
public static final String MENTOR = "指导教师";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class Platform {
/*
学生端
*/
public static final String student = "student";
/*
院校端
*/
public static final String school = "school";
/*
中心端
*/
public static final String center = "center";
/*
评审端
*/
public static final String review = "review";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectReview {
/**
* 评分状态(对于评分)
*/
public static final String SUBMITTED = "已评审";
public static final String TO_SCORE = "待评审";
/**
* 评审状态(对于项目)
*/
public static final String TO_REVIEWED = "待评审";
public static final String ASSIGNED = "已分配";
public static final String UNASSIGNED = "未分配";
public static final String REVIEW = "已评审";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectSchedule {
//报名阶段
public static final String REGISTER = "校内报名";
public static final String SEMI_FINAL_REVIEW = "市级复赛";
public static final String FINAL_REVIEW = "市级决赛";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectStatus {
public static final String UN_SUBMITTED = "填写中";
public static final String TO_REVIEW = "待评审";
public static final String WITHDRAWN = "已撤回";
public static final String SCHOOL_NOT_PASSED = "淘汰";
public static final String REMATCH_WINNING_AWARD = "优秀奖";
public static final String REMATCH_SILVER_AWARD = "银奖";
public static final String REMATCH_BRONZE_AWARD = "铜奖";
public static final String REMATCH_FINALS_GOLD_AWARD = "金奖";
}
package com.subsidy.common.constant;
/**
* <p>
* 项目组别
* </p>
*
* @author DengMin
* @since 2021/6/9
*/
public class ProjectType {
/**
* 赛道
*/
public static final String MAIN_TRACK = "主赛道";
public static final String SEED_TRACK = "种子赛道";
public static final String VOCATIONAL = "职教赛道";
/**
* 组别
*/
public static final String TECHNOLOGY_INNOVATION_GROUP = "科技创新";
public static final String CULTURAL_CREATIVE_GROUP = "文化创意";
public static final String VOCATIONAL_GROUP = "高职";
public static final String SECONDARY_GROUP = "中职";
}
package com.subsidy.common.constant;
public class Role {
public static final String LEADER = "参赛教师";
public static final String MEMBER = "课程团队";
}
......@@ -2,22 +2,23 @@ package com.subsidy.common.constant;
import lombok.Getter;
@Getter
public enum SmsCode {
public class SmsCode {
SIGN_IN("SMS_234409992", "签到通知"),
TEST("SMS_234414789", "测试通知"),
CLASS_START("SMS_228137810", "开课通知"),
ALL("SMS_228137810", "全部成员"),
NOT_SIGNED_IN("SMS_234409992","未签到成员"),
UNFINISHED("SMS_234414789","未完课成员");
/**
* 平台:student(学生端)、school(院校端)、center(中心端)、review(评审端)
*/
public static final String student = "student";
private String type;
public static final String school = "school";
private String code;
public static final String center = "center";
SmsCode(String code, String type) {
this.code = code;
this.type = type;
}
public static final String review = "review";
/**
* 行为标识:register(注册标识)、login(登录标识)
*/
public static final String register = "register";
public static final String login = "login";
}
......@@ -3,8 +3,8 @@ package com.subsidy.common.interceptor;
import com.auth0.jwt.interfaces.Claim;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.subsidy.common.exception.HttpException;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.model.AdministerDO;
import com.subsidy.mapper.TeacherMapper;
import com.subsidy.model.TeacherDO;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.Localstorage;
......@@ -32,7 +32,7 @@ import java.util.Map;
public class AuthenticationInterceptor implements HandlerInterceptor {
@Autowired
private AdministerMapper administerMapper;
private TeacherMapper teacherMapper;
@Override
@CrossOrigin()
......@@ -73,9 +73,9 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
//String[] role = methodAnnotation.value();
String type = claimMap.get("type").asString();
if (ConstantUtils.ADMINISTER_TERMINATE.equals(type)) {
AdministerDO administerDO = administerMapper.selectById(claimMap.get("id").asLong());
if (administerDO != null) {
Localstorage.setUser(administerDO);
TeacherDO teacherDO = teacherMapper.selectById(claimMap.get("id").asLong());
if (teacherDO != null) {
Localstorage.setUser(teacherDO,type);
return true;
}
} else if (ConstantUtils.MOBILE_TERMINATE.equals(type)) {
......
......@@ -16,5 +16,5 @@ import java.lang.annotation.*;
@Inherited
public @interface LoginRequired {
//String[] value();
String[] value();
}
\ No newline at end of file
......@@ -3,56 +3,68 @@ package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.common.interceptor.TimeRequired;
import com.subsidy.dto.administer.AppLoginDTO;
import com.subsidy.dto.administer.ChangeServiceDTO;
import com.subsidy.dto.administer.AdministerPageDTO;
import com.subsidy.dto.administer.LoginDTO;
import com.subsidy.model.AdministerDO;
import com.subsidy.service.AdministerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 管理平台用户 前端控制器
* 中心管理账户表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@RestController
@Api(tags = "管理平台用户")
@Api(tags = "中心管理账户表")
@RequestMapping("/administer")
public class AdministerController {
@Autowired
private AdministerService administerService;
@PostMapping("changeService")
@ApiOperation("查看账号下的所有伙伴 id 账号id laborServiceName pagSize pageNum")
public ResponseVO changeService(@RequestBody ChangeServiceDTO changeServiceDTO){
return ResponseData.generateCreatedResponse(0,administerService.changeService(changeServiceDTO));
@PostMapping(value = "/login")
@ApiOperation("中心端 --- 登录:手机号/telephone, code/验证码")
public ResponseVO login(@RequestBody LoginDTO loginDTO) {
return ResponseData.generateCreatedResponse(0, administerService.login(loginDTO));
}
@PostMapping("appLogin")
@ApiOperation("应用端 手机号accountName timestamp sign")
@TimeRequired
public ResponseVO kunchiLogin(@RequestBody AppLoginDTO appLoginDTO, HttpServletRequest request){
return ResponseData.generateCreatedResponse(0,administerService.appLogin(appLoginDTO,request));
@PostMapping(value = "/getAdministerPage")
@ApiOperation("中心端 --- 成员管理分页查询:listItem/角色、 username/搜索名称、pageNum/当前页数、pageSize/每页显示条数")
public ResponseVO getAdministerPage(@RequestBody AdministerPageDTO administerPageDTO) {
return ResponseData.generateCreatedResponse(0, administerService.getAdministerPage(administerPageDTO));
}
@PostMapping(value = "/createAdminister")
@ApiOperation("中心端 --- 新增成员:username/名称、telephone/手机号、avatar/头像、role/角色")
public ResponseVO createAdminister(@RequestBody AdministerDO administerDO) {
administerService.save(administerDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/updateAdminister")
@ApiOperation("中心端 --- 编辑成员:id/成员ID、username/名称、telephone/手机号、avatar/头像、role/角色")
public ResponseVO updateAdminister(@RequestBody AdministerDO administerDO) {
administerService.updateById(administerDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("/getPermissions")
@ApiOperation("权限查询")
@LoginRequired
public ResponseVO getPermissions() {
return ResponseData.generateCreatedResponse(0, administerService.getPermissions());
@PostMapping(value = "/deleteById")
@ApiOperation("中心端 --- 删除成员:id/成员ID")
public ResponseVO delete(@RequestBody AdministerDO administerDO) {
administerService.removeById(administerDO.getId());
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.college.FileManagementDTO;
import com.subsidy.model.CollegeFileDO;
import com.subsidy.service.CollegeFileService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-09
*/
@RestController
@Api(tags = "院校材料")
@RequestMapping("/collegeFile")
public class CollegeFileController {
@Autowired
private CollegeFileService collegeFileService;
@PostMapping("submitFile")
@ApiOperation("院校端--材料上传 matchId collegeId summaryUrl summaryName pptUrl pptName wordReportUrl wordReportName supportFileUrl supportFileName ")
public ResponseVO submitFile(@RequestBody CollegeFileDO collegeFileDO)throws Exception{
return ResponseData.generateCreatedResponse(0,collegeFileService.submitFile(collegeFileDO));
}
@PostMapping("recentFile")
@ApiOperation("院校端--最近一次上传时间 matchId collegeId ")
public ResponseVO recentFile(@RequestBody CollegeFileDO collegeFileDO){
return ResponseData.generateCreatedResponse(0,collegeFileService.recentFile(collegeFileDO));
}
@PostMapping("fileManagement")
@ApiOperation("中心端--材料管理 pageSize pageNum matchId projectGroup projectName")
public ResponseVO fileManagement(@RequestBody FileManagementDTO fileManagementDTO){
return ResponseData.generateCreatedResponse(0, collegeFileService.fileManagement(fileManagementDTO));
}
}
package com.subsidy.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.college.GetCollegesListDTO;
import com.subsidy.dto.project.ProjectCollegeListDTO;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.CollegesDictService;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 院校字典表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@RestController
@Api(tags = "院校字典表")
@RequestMapping("/collegesDict")
public class CollegesDictController {
@Autowired
public CollegesDictService collegesDictService;
@PostMapping(value = "/getCollegesList")
@ApiOperation("查询所有就读院校: name/院校名称 pageSize pageNum")
public ResponseVO getCollegesList(@RequestBody GetCollegesListDTO getCollegesListDTO) {
Page page = new Page(getCollegesListDTO.getPageNum(), getCollegesListDTO.getPageSize());
QueryWrapper<CollegesDictDO> queryWrapper = new QueryWrapper();
if (StringUtils.isNotBlank(getCollegesListDTO.getName())) {
queryWrapper.lambda().like(CollegesDictDO::getName, getCollegesListDTO.getName());
}
// queryWrapper.lambda().eq(CollegesDictDO::getLoginStatus,1);
return ResponseData.generateCreatedResponse(0, collegesDictService.page(page, queryWrapper));
}
@PostMapping(value = "/login")
@ApiOperation("院校端 --- 登录: account/账户, password/密码")
public ResponseVO login(@RequestBody CollegesDictDO collegesDictDO) {
return ResponseData.generateCreatedResponse(0, collegesDictService.login(collegesDictDO));
}
@PostMapping(value = "updateCollegeById")
@ApiOperation("院校端 --- 更新院校信息: id/ID, account/账户,code/代码, name/名称, password/密码")
public ResponseVO updateCollegeById(@RequestBody CollegesDictDO collegesDictDO) {
collegesDictService.updateById(collegesDictDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "addContact")
@ApiOperation("院校端 --- 新增联系人:id 院校idleaderName/领导姓名、leaderPost/领导职务、leaderPhone/领导手机号、contactName/联系人姓名、contactPost/联系人职务、contactPhone/联系人手机号")
public ResponseVO addContact(@RequestBody CollegesDictDO collegesDictDO) {
collegesDictService.addContact(collegesDictDO);
return ResponseData.generateCreatedResponse(0);
}
// @PostMapping(value = "/createColleges")
// @ApiOperation("中心端 --- 新建院校: name/搜索名称, code/院校代码、 phone/手机号")
// public ResponseVO createColleges(@RequestBody CollegesDictDO collegesDictDO) {
// collegesDictService.createColleges(collegesDictDO);
// return ResponseData.generateCreatedResponse(0);
// }
//
// @PostMapping(value = "/delete")
// @ApiOperation("中心端 --- 删除院校: id/院校ID")
// public ResponseVO delete(@RequestBody CollegesDictDO collegesDictDO) {
// collegesDictService.removeById(collegesDictDO.getId());
// return ResponseData.generateCreatedResponse(0);
// }
// @PostMapping(value = "/exportCollege")
// @ApiOperation("导出院校名录")
// public ResponseVO exportCollege() {
// collegesDictService.exportCollege();
// return ResponseData.generateCreatedResponse(0);
// }
@PostMapping(value = "/exportProjectCollegeList")
@ApiOperation("院校端 --- 批量导出院校项目: ids[]")
public void exportProjectCollegeList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) {
collegesDictService.exportProjectCollegeList(projectCollegeListDTO);
}
@PostMapping(value = "/exportSchoolProjectSummary")
@ApiOperation("院校端 --- 批量导出院校项目汇总表 collegeId")
public void exportSchoolProjectSummary(@RequestBody ProjectDO projectDO) {
collegesDictService.exportSchoolProjectSummary(projectDO);
}
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 群组人员映射表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@RestController
@Api(tags = "群组人员映射表")
@RequestMapping("/group-member-mapping-do")
public class GroupMemberMappingController {
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 伙伴群组字典表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@RestController
@Api(tags = "伙伴群组字典表")
@RequestMapping("/labor-group-dict-do")
public class LaborGroupDictController {
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 伙伴项目映射表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@RestController
@Api(tags = "伙伴项目映射表")
@RequestMapping("/labor-project-mapping-do")
public class LaborProjectMappingController {
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.labor.AbnormalRecordDTO;
import com.subsidy.dto.labor.AddProjectDTO;
import com.subsidy.dto.labor.ProjectManageDTO;
import com.subsidy.dto.labor.ProjectsDTO;
import com.subsidy.model.AdministerDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.service.LaborServiceDictService;
import com.subsidy.vo.labor.ProjectManageVO;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 劳务公司字典表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@RestController
@Api(tags = "劳务公司字典表")
@RequestMapping("/laborServiceDict")
public class LaborServiceDictController {
@Autowired
private LaborServiceDictService laborServiceDictService;
@PostMapping("login")
@ApiOperation("登录 accountName password ")
public ResponseVO login(@RequestBody AdministerDO administerDO){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.login(administerDO));
}
@PostMapping("/getPermissions")
@ApiOperation("权限查询")
@LoginRequired
public ResponseVO getPermissions() {
return ResponseData.generateCreatedResponse(0, laborServiceDictService.getPermissions());
}
@PostMapping("projects")
@ApiOperation("项目列表 laborId 当前laborId projectName pageSize pageNum")
public ResponseVO projects(@RequestBody ProjectsDTO projectsDTO){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.projects(projectsDTO));
}
@PostMapping("addProject")
@ApiOperation("添加项目 userId projectName companyId laborServiceId salaryDate startDate endDate")
public ResponseVO addProject(@RequestBody AddProjectDTO addProjectDTO){
laborServiceDictService.addProject(addProjectDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("updateProject")
@ApiOperation("修改项目 id userId projectName companyId laborServiceId salaryDate startDate endDate")
public ResponseVO updateProject(@RequestBody AddProjectDTO addProjectDTO){
laborServiceDictService.updateProject(addProjectDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("deleteProject")
@ApiOperation("删除项目 id userId")
public ResponseVO deleteProject(@RequestBody AddProjectDTO addProjectDTO){
laborServiceDictService.deleteProject(addProjectDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("projectManage")
@ApiOperation("详情--项目管理 projectId 项目id userInfo 姓名或手机号 pageSize pageNum")
public ResponseVO projectManage(@RequestBody ProjectManageDTO projectManageDTO){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.projectManage(projectManageDTO));
}
@PostMapping("updateJobName")
@ApiOperation("id : projectManage接口返回的mappingId jobName 修改职位")
public ResponseVO updateJobName(@RequestBody ProjectMemberMappingDO projectMemberMappingDO){
laborServiceDictService.updateJobName(projectMemberMappingDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("fireMember")
@ApiOperation("操作离职 id : projectManage接口返回的mappingId ")
public ResponseVO fireMember(@RequestBody ProjectMemberMappingDO projectMemberMappingDO){
laborServiceDictService.fireMember(projectMemberMappingDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("abnormalRecord")
@ApiOperation("异动记录 projectId 项目id pageSize pageNum userInfo 姓名或者手机号")
public ResponseVO abnormalRecord(@RequestBody AbnormalRecordDTO abnormalRecordDTO ){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.abnormalRecord(abnormalRecordDTO));
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.model.MatchDictDO;
import com.subsidy.service.MatchDictService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 赛事年份管理 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
@RestController
@Api(tags = "赛事年份管理")
@RequestMapping("/matchDict")
public class MatchDictController {
@Autowired
private MatchDictService matchDictService;
@PostMapping("matches")
@ApiOperation("查询赛事 matchName ")
public ResponseVO matches(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.matches(matchDictDO));
}
@PostMapping("addMatch")
@ApiOperation("新增赛事 matchName year startTime endTime status vodStartTime vodEndTime")
public ResponseVO addMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.addMatch(matchDictDO));
}
@PostMapping("deleteMatch")
@ApiOperation("删除赛事 id ")
public ResponseVO deleteMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.deleteMatch(matchDictDO));
}
@PostMapping("updateMatch")
@ApiOperation("修改赛事 id match startTime endTime vodStartTime vodEndTime fileStartTime fileEndTime ")
public ResponseVO updateMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.updateMatch(matchDictDO));
}
@PostMapping("openMatch")
@ApiOperation("开启赛事 id ")
public ResponseVO openMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.openMatch(matchDictDO));
}
@PostMapping("openedMatch")
@ApiOperation("查看开启的赛事")
public ResponseVO openedMatch(){
return ResponseData.generateCreatedResponse(0,matchDictService.openedMatch());
}
@PostMapping("openOneMatch")
@ApiOperation("查询单个赛事 id 赛事id")
public ResponseVO openOneMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.openOneMatch(matchDictDO));
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.dto.labor.AddProjectDTO;
import com.subsidy.dto.member.AddProjectMembersDTO;
import com.subsidy.dto.member.DownloadFailClassMembers;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.MemberService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@RestController
@Api(tags = "人才表")
@RequestMapping("/member")
public class MemberController {
@Autowired
private MemberService memberService;
@PostMapping("getMembers")
@ApiOperation("获取成员(树) id 项目id")
public ResponseVO getMembers(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,memberService.getMembers(projectDO));
}
@PostMapping("importClassMembers")
@ApiOperation("导入学员 file projectId")
public ResponseVO importClassMembers(@RequestParam("file") MultipartFile file, Long projectId){
return ResponseData.generateCreatedResponse(0,memberService.importClassMembers(file,projectId));
}
@PostMapping("downloadFailClassMembers")
@ApiOperation("下载导入失败的班级学员 downloadFailClassMembersDTOS[] 失败返回的那些字段")
public void downloadFailClassMembers(@RequestBody DownloadFailClassMembers downloadFailClassMembers){
memberService.downloadFailClassMembers(downloadFailClassMembers);
}
@PostMapping("addProjectMembers")
@ApiOperation("项目里添加成员 projectId projectMemberMappingDOS[memberId jobName]")
public ResponseVO addProjectMembers(@RequestBody AddProjectMembersDTO addProjectMembersDTO){
memberService.addProjectMembers(addProjectMembersDTO);
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.message.CreateMessageDTO;
import com.subsidy.dto.message.MessagePageDTO;
import com.subsidy.model.MessageDO;
import com.subsidy.service.MessageService;
import com.subsidy.util.DateFormatUtil;
import com.subsidy.vo.message.MessageVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 通知消息表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@RestController
@Api(tags = "赛事公告")
@RequestMapping("/message")
public class MessageController {
@Autowired
private MessageService messageService;
@PostMapping(value = "/getMessage")
@ApiOperation("查询通知")
public ResponseVO getMessage() {
List<MessageVO> messages = new ArrayList();
List<MessageDO> list = messageService.list(new QueryWrapper<MessageDO>()
.lambda()
.orderByDesc(MessageDO::getCreateDate));
for (MessageDO messageDO : list) {
MessageVO messageVO = new MessageVO();
BeanUtils.copyProperties(messageDO, messageVO);
messageVO.setReleaseTime(messageDO.getReleaseTime());
messages.add(messageVO);
}
return ResponseData.generateCreatedResponse(0, messages);
}
@PostMapping(value = "/getMessageById")
@ApiOperation("中心端 --- 根据ID查询详情:id/ID")
public ResponseVO getMessageById(@RequestBody MessageDO messageDO) {
return ResponseData.generateCreatedResponse(0, messageService.getById(messageDO.getId()));
}
@PostMapping(value = "/getMessagePage")
@ApiOperation("中心端 ---分页查询通知: pageNum/当前页数, pageSize/每页显示条数")
public ResponseVO getMessagePage(@RequestBody MessagePageDTO messagePageDTO) {
return ResponseData.generateCreatedResponse(0, messageService.getMessagePage(messagePageDTO));
}
@PostMapping(value = "/createMessage")
@ApiOperation("中心端 ---创建通知: title/标题, content/内容, attachmentUrl/附件地址, releaseTime/发布时间, attachmentName/附件名称, attachmentType/附件类型")
public ResponseVO createMessage(@RequestBody CreateMessageDTO createMessageDTO) {
messageService.createMessage(createMessageDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/updateMessage")
@ApiOperation("中心端 ---编辑通知: id/ID, title/标题, content/内容, attachmentUrl/附件地址, attachmentName/附件名称, attachmentType/附件类型")
public ResponseVO updateMessage(@RequestBody MessageDO messageDO) {
messageService.updateById(messageDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/delete")
@ApiOperation("中心端 ---删除通知: id/ID, ")
public ResponseVO delete(@RequestBody MessageDO messageDO) {
messageService.removeById(messageDO.getId());
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
......@@ -7,11 +8,10 @@ import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.vo.oss.GetSecretVO;
import com.subsidy.dto.oss.GetSecretVO;
import com.subsidy.vo.oss.UploadFileVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -35,8 +35,8 @@ public class OssController {
public static final String secret = "0ueqhIfdAZyw5lWlBVSLpAxTtx37RY";
@Value("${spring.profiles.active}")
private String env;
// @Value("${spring.profiles.active}")
// private String env;
@PostMapping("getSecret")
@ApiOperation("oss秘钥")
......@@ -47,6 +47,7 @@ public class OssController {
return ResponseData.generateCreatedResponse(0, getSecretVO);
}
@PostMapping("uploadFile")
@ApiOperation("分片上传")
public ResponseVO fenpian(@RequestParam("file") MultipartFile file) {
......@@ -54,63 +55,35 @@ public class OssController {
UploadFileVO uploadFileVO = new UploadFileVO();
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-beijing.aliyuncs.com";
String endpoint = "http://oss-cn-shanghai.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = keyId;
String accessKeySecret = secret;
// 填写Bucket名称,例如examplebucket。
// String bucketName = "zhongzhi-cms";
String bucketName = "ecnutracks";
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
String objectName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
if (env.equals("dev")) {
env = "ykhl-bigger-test";
}
if (env.equals("prod")) {
env = "ykhl-bigger";
}
try {
// 创建InitiateMultipartUploadRequest对象。
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(env, objectName);
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);
// 如果需要在初始化分片时设置请求头,请参考以下示例代码。
ObjectMetadata metadata = new ObjectMetadata();
//
metadata.setContentType(file.getContentType());
if ("pdf".equals(file.getContentType())){
metadata.setContentType("application/x-pcx");
}
metadata.setContentDisposition("inline");
// 如果需要在初始化分片时设置请求头,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// 指定该Object的网页缓存行为。
// metadata.setCacheControl("no-cache");
// 指定该Object被下载时的名称。
// metadata.setContentDisposition("attachment;filename=oss_MultipartUpload.txt");
// 指定该Object的内容编码格式。
// metadata.setContentEncoding(OSSConstants.DEFAULT_CHARSET_NAME);
// 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。
// metadata.setHeader("x-oss-forbid-overwrite", "true");
// 指定上传该Object的每个part时使用的服务器端加密方式。
// metadata.setHeader(OSSHeaders.OSS_SERVER_SIDE_ENCRYPTION, ObjectMetadata.KMS_SERVER_SIDE_ENCRYPTION);
// 指定Object的加密算法。如果未指定此选项,表明Object使用AES256加密算法。
// metadata.setHeader(OSSHeaders.OSS_SERVER_SIDE_DATA_ENCRYPTION, ObjectMetadata.KMS_SERVER_SIDE_ENCRYPTION);
// 指定KMS托管的用户主密钥。
// metadata.setHeader(OSSHeaders.OSS_SERVER_SIDE_ENCRYPTION_KEY_ID, "9468da86-3509-4f8d-a61e-6eab1eac****");
// 指定Object的存储类型。
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard);
// 指定Object的对象标签,可同时设置多个标签。
// metadata.setHeader(OSSHeaders.OSS_TAGGING, "a:1");
// request.setObjectMetadata(metadata);
metadata.setHeader("x-oss-force-download", false);
// metadata.setHeader("x-oss-force-download", false);
request.setObjectMetadata(metadata);
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
// 初始化分片。
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
String uploadId = upresult.getUploadId();
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
......@@ -137,7 +110,7 @@ public class OssController {
long startPos = i * partSize;
long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(env);
uploadPartRequest.setBucketName(bucketName);
uploadPartRequest.setKey(objectName);
uploadPartRequest.setUploadId(uploadId);
// 设置上传的分片流。
......@@ -159,7 +132,7 @@ public class OssController {
// 创建CompleteMultipartUploadRequest对象。
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
CompleteMultipartUploadRequest completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(env, objectName, uploadId, partETags);
new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);
// 如果需要在完成分片上传的同时设置文件访问权限,请参考以下示例代码。
// completeMultipartUploadRequest.setObjectACL(CannedAccessControlList.Private);
......@@ -172,7 +145,7 @@ public class OssController {
// 完成分片上传。
CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
uploadFileVO.setUrl(completeMultipartUploadResult.getLocation());
uploadFileVO.setUrl(completeMultipartUploadResult.getLocation().replace("http","https"));
System.out.println(completeMultipartUploadResult.getLocation());
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
......@@ -198,4 +171,6 @@ public class OssController {
return ResponseData.generateCreatedResponse(0, uploadFileVO);
}
}
......@@ -8,15 +8,15 @@ import io.swagger.annotations.Api;
/**
* <p>
* 管理员-伙伴映射表 前端控制器
* 权限表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-08
*/
@RestController
@Api(tags = "管理员-伙伴映射表")
@RequestMapping("/administer-labor-mapping-do")
public class AdministerLaborMappingController {
@Api(tags = "权限表")
@RequestMapping("/permissions-do")
public class PermissionsController {
}
package com.subsidy.controller;
import io.swagger.annotations.Api;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.project.*;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.ProjectService;
import com.subsidy.util.ConstantUtils;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 项目表 前端控制器
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
@RestController
@Api(tags = "项目")
@Api(tags = "项目")
@RequestMapping("/project")
public class ProjectController {
@Autowired
private ProjectService projectService;
@PostMapping("createProject")
@ApiOperation("基本信息--保存并继续 id matchId teacherId courseName courseCode courseType grade courseHour theoryHour practiseHour" +
"score years startDate1 endDate1 startDate2 endDate2 studentTotalNum vodUrl")
public ResponseVO createProject(@RequestBody UpdateProjectDTO updateProjectDTO)throws Exception{
return ResponseData.generateCreatedResponse(0, projectService.createProject(updateProjectDTO));
}
@PostMapping("updateProject")
@ApiOperation("[弃用]基本信息--课程团队/课程信息 id semester startDate endDate teachHours teachGrade classTotalNum " +
"projectMembersDOS[userName birthDate education position title major semester courseTarget startDate endDate teachHours teachGrade classTotalNum ]" +
"courseTeam courseDesc courseTarget courseContent teachFiles teachResult courseFeature attachment " +
"vodUrl")
public ResponseVO updateProject(@RequestBody UpdateProjectDTO updateProjectDTO) throws Exception{
return ResponseData.generateCreatedResponse(0, projectService.updateProject(updateProjectDTO));
}
@PostMapping("oneProject")
@ApiOperation("查询单个项目 id")
public ResponseVO oneProject(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.oneProject(projectDO));
}
@PostMapping("oneProjectByTeacherId")
@ApiOperation("查询单个项目 matchId teacherId")
public ResponseVO oneProjectByTeacherId(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.oneProjectByTeacherId(projectDO));
}
@PostMapping("teacherProject")
@ApiOperation("查询老师某一届的项目 matchId teacherId")
public ResponseVO oneTeacherProject(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.teacherProject(projectDO));
}
@PostMapping("downloadPdf")
@ApiOperation("生成pdf id 项目id")
public void downloadPdf(@RequestBody ProjectDO projectDO) {
projectService.downloadPdf(projectDO);
}
@PostMapping(value = "/getSeedTrackProjectPage")
@ApiOperation("中心端 --- 分页查询种子赛道全部项目:matchId/赛事ID,projectGroup/职教、高教、projectSchedule/项目进度(全部项目传空字符串、校内报名、市级复赛、市级决赛), " +
"projectStatus/项目状态, itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数 ")
public ResponseVO getSeedTrackProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectPage(projectListPageDTO));
}
@PostMapping(value = "/pass")
@ApiOperation("中心端/院校端 --- (校内赛/初赛/复赛/决赛)通过:id/项目ID、" +
"projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
public ResponseVO pass(@RequestBody ApproveDTO approveDTO) {
projectService.pass(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/batchPass")
@ApiOperation("中心端/院校端 --- 批量(校内赛/初赛/复赛/决赛)通过:ids/项目ID、" +
"projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
public ResponseVO batchPass(@RequestBody ApproveDTO approveDTO) {
projectService.batchPass(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/exportProjectList")
@ApiOperation("中心端 --- 批量导出种子赛道项目:matchId/赛事ID")
public void exportProjectList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) {
projectService.exportProjectList(projectCollegeListDTO);
}
@PostMapping("matchCollegeVods")
@ApiOperation("院校端查看某一届的视频 collegeId 院校id matchId 赛事id")
public ResponseVO matchCollegeVods(@RequestBody MatchCollegeVodsDTO matchCollegeVodsDTO) {
return ResponseData.generateCreatedResponse(0, projectService.matchCollegeVods(matchCollegeVodsDTO));
}
@PostMapping("recentVod")
@ApiOperation("视频最近更新日期(返回的项目 uploadDate) collegeId matchId")
public ResponseVO recentVod(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.recentVod(projectDO));
}
@PostMapping(value = "getDataOverview")
@ApiOperation("中心端 --- 数据概览 projectGroup")
public ResponseVO getDataOverview(@RequestBody DataOverviewDTO dataOverviewDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getVocationalDataOverview(dataOverviewDTO));
}
@PostMapping(value = "/withdrawn")
@ApiOperation("学生端 ---撤回申请:id/项目ID")
public ResponseVO withdrawn(@RequestBody ProjectDO projectDO)throws Exception {
projectService.withdrawn(projectDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/rollback")
@ApiOperation("院校端 ---上报撤回:id/项目ID")
public ResponseVO rollback(@RequestBody ProjectDO projectDO)throws Exception {
projectService.rollback(projectDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "getVocationalProjectNum")
@ApiOperation("中心端/院校端 --- (职教)项目管理数量:id 院校id matchId/赛事ID、projectGroup/项目组别")
public ResponseVO getVocationalProjectNum(@RequestBody SeedTrackProjectNumDTO seedTrackProjectNumDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectNum(seedTrackProjectNumDTO));
}
@PostMapping(value = "/getSeedTrackProjectList")
@ApiOperation("院校端 --- 分页查询种子赛道全部项目:collegeId 院校id matchId/赛事ID,projectSchedule/项目进度(全部项目传空字符串、校内赛、复赛、决赛), " +
"projectStatus/项目状态,name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
public ResponseVO getSeedTrackProjectList(@RequestBody ProjectListPageDTO projectListPageDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectList(projectListPageDTO));
}
/* -- 管理端 -- */
@PostMapping(value = "/getVocationalProjectPage")
@ApiOperation("中心端 --- 分页查询职教赛道项目管理:matchId/赛事ID,projectGroup/项目组别(高职、中职)、projectSchedule/项目进度(全部项目传空字符串、校内赛、市级初赛、市级复赛、市级决赛), " +
"projectStatus/项目状态, itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
public ResponseVO getVocationalProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectPage(projectListPageDTO));
}
@PostMapping(value = "/weedOut")
@ApiOperation("院校端 --- 不予提交:id/项目ID")
public ResponseVO weedOut(@RequestBody ApproveDTO approveDTO) {
projectService.weedOut(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/batchWeedOut")
@ApiOperation("院校端 --- 批量不予提交:ids/项目ID")
public ResponseVO batchWeedOut(@RequestBody ApproveDTO approveDTO) {
projectService.batchWeedOut(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("/signature")
@ApiOperation("获取签名")
public ResponseVO signature()throws Exception{
return ResponseData.generateCreatedResponse(0,projectService.signature());
}
@PostMapping("uploadVods")
@ApiOperation("上传某个视频 id vodUrl")
public ResponseVO uploadVods(@RequestBody ProjectDO projectDO)throws Exception{
return ResponseData.generateCreatedResponse(0,projectService.uploadVods(projectDO));
}
@PostMapping("uploadVodsTimeLimit")
@ApiOperation("上传某个视频 id vodUrl")
public ResponseVO uploadVodsTimeLimit(@RequestBody ProjectDO projectDO)throws Exception{
return ResponseData.generateCreatedResponse(0,projectService.uploadVodsTimeLimit(projectDO));
}
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 项目人员映射表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@RestController
@Api(tags = "项目人员映射表")
@RequestMapping("/project-member-mapping-do")
public class ProjectMemberMappingController {
}
......@@ -12,11 +12,11 @@ import io.swagger.annotations.Api;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-07
*/
@RestController
@Api(tags = "")
@RequestMapping("/access-token-do")
public class AccessTokenController {
@RequestMapping("/positionMembers")
public class ProjectMembersController {
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.dto.labor.LaborProjectsDTO;
import com.subsidy.dto.project.ProjectMembersDTO;
import com.subsidy.dto.project.TalentListDTO;
import com.subsidy.dto.project.TalentSalaryDTO;
import com.subsidy.dto.project.TalentSalaryDetailDTO;
import com.subsidy.dto.salary.CommitSalaryDTO;
import com.subsidy.dto.salary.PushMsgDTO;
import com.subsidy.dto.salary.SaveSalaryDTO;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.model.ProjectSalaryHistoryDO;
import com.subsidy.service.ProjectSalaryHistoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>
* 工资单历史表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@RestController
@Api(tags = "工资单历史表")
@RequestMapping("/projectSalaryHistory")
public class ProjectSalaryHistoryController {
@Autowired
private ProjectSalaryHistoryService projectSalaryHistoryService;
@PostMapping("laborProjects")
@ApiOperation("工资发放-按项目 laborId projectName")
public ResponseVO laborProjects(@RequestBody LaborProjectsDTO laborProjectMappingDO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.laborProjects(laborProjectMappingDO));
}
@PostMapping("talentSalary")
@ApiOperation("项目-工资明细 projectId userName salaryMonth 2024-07 这种格式 pageSize pageNum")
public ResponseVO talentSalary(@RequestBody TalentSalaryDTO talentSalaryDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.talentSalary(talentSalaryDTO));
}
@PostMapping("talentList")
@ApiOperation("按人才-人才列表 laborId userName pageSize pageNum")
public ResponseVO talentList(@RequestBody TalentListDTO talentListDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.talentList(talentListDTO));
}
@PostMapping("talentSalaryDetail")
@ApiOperation("人才-工资明细 projectId memberId laborId pageSize pageNum")
public ResponseVO talentSalaryDetail(@RequestBody TalentSalaryDetailDTO talentSalaryDetailDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.talentSalaryDetail(talentSalaryDetailDTO));
}
@PostMapping("projectMembers")
@ApiOperation("工资发放-详情:查看某个项目下的所有人才 projectId userName salaryMonth pageSize pageNum")
public ResponseVO projectMembers(@RequestBody ProjectMembersDTO projectMembersDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.projectMembers(projectMembersDTO));
}
@PostMapping("saveSalary")
@ApiOperation("保存工资/编辑 projectId salaryMonth projectSalaryHistoryDOS[projectMappingId memberId salary salaryDate salaryMark]")
public ResponseVO saveSalary(@RequestBody SaveSalaryDTO saveSalaryDTO){
projectSalaryHistoryService.saveSalary(saveSalaryDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("exportTemplate")
@ApiOperation("下载模板 projectId")
public ResponseVO exportTemplate(@RequestBody SaveSalaryDTO saveSalaryDTO){
projectSalaryHistoryService.exportTemplate(saveSalaryDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("importSalary")
@ApiOperation("导入工资单 projectId salaryMonth file")
public ResponseVO importSalary(@RequestParam("file") MultipartFile file,Long projectId,String salaryMonth){
projectSalaryHistoryService.importSalary(file,projectId,salaryMonth);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("commitSalary")
@ApiOperation("提交工资 unCommitIds[] projectMembers接口s返回的unCommitId")
public ResponseVO commitSalary(@RequestBody CommitSalaryDTO commitSalaryDTO){
projectSalaryHistoryService.commitSalary(commitSalaryDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("pushMsg")
@ApiOperation("消息推送 projectId salaryMonth projectSalaryNoticeDOS[noticeType noticeTime]")
public void pushMsg(@RequestBody PushMsgDTO pushMsgDTO){
projectSalaryHistoryService.pushMsg(pushMsgDTO);
}
@GetMapping("testPush")
@ApiOperation("测试推送消息")
public void testPush(){
projectSalaryHistoryService.testPush();
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.model.ProjectSalaryNoticeDO;
import com.subsidy.service.ProjectSalaryNoticeService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-30
*/
@RestController
@Api(tags = "通知")
@RequestMapping("/projectSalaryNotice")
public class ProjectSalaryNoticeController {
@Autowired
private ProjectSalaryNoticeService projectSalaryNoticeService;
@PostMapping("addNotice")
@ApiOperation("新增一个通知 projectId salaryMonth noticeType")
public ResponseVO addNotice(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.addNotice(projectSalaryNoticeDO));
}
@PostMapping("updateNotice")
@ApiOperation("修改一个通知 id projectId salaryMonth noticeTime")
@LoginRequired
public ResponseVO updateNotice(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.updateNotice(projectSalaryNoticeDO));
}
@PostMapping("deleteNotice")
@ApiOperation("删除一个通知 id")
@LoginRequired
public ResponseVO deleteNotice(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.deleteNotice(projectSalaryNoticeDO));
}
@PostMapping("queryClassNotices")
@ApiOperation("查看某个课程的通知提醒 projectId salaryMonth status 状态(待发送/已发送)")
@LoginRequired
public ResponseVO queryClassNotices(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.queryClassNotices(projectSalaryNoticeDO));
}
}
......@@ -3,9 +3,8 @@ package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.company.OperatorsDTO;
import com.subsidy.service.CompanyDictService;
import com.subsidy.model.AdministerDO;
import com.subsidy.service.SmsVerifyCodeService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -17,26 +16,24 @@ import io.swagger.annotations.Api;
/**
* <p>
* 企业字典表 前端控制器
* 短信验证码记录表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-31
* @since 2025-01-07
*/
@RestController
@Api(tags = "企业字典表")
@RequestMapping("/companyDict")
public class CompanyDictController {
@Api(tags = "短信验证码记录表")
@RequestMapping("/smsVerifyCode")
public class SmsVerifyCodeController {
@Autowired
private CompanyDictService companyDictService;
private SmsVerifyCodeService smsVerifyCodeService;
@PostMapping("/administers")
@ApiOperation("查询所有企业 {userId id companyName fieldId 行业id superviseName 监管第三方名称 pageNum pageSize }")
@LoginRequired
public ResponseVO operators(@RequestBody OperatorsDTO operatorsDTO){
return ResponseData.generateCreatedResponse(0,companyDictService.operators(operatorsDTO));
@PostMapping(value = "/sendAdministerLoginCode")
@ApiOperation("中心端 --- 中心端登陆验证码:telephone/手机号")
public ResponseVO sendAdministerLoginCode(@RequestBody AdministerDO administerDO) {
smsVerifyCodeService.sendAdministerLoginCode(administerDO);
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.dto.teacher.RegisterDTO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.subsidy.model.TeacherDO;
import com.subsidy.service.TeacherService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 教师信息表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
@RestController
@Api(tags = "教师信息表")
@RequestMapping("/teacher")
public class TeacherController {
@Autowired
private TeacherService teacherService;
@PostMapping("registerCode")
@ApiOperation("教师注册--发送验证码 telephone")
public ResponseVO registerCode(@RequestBody TeacherDO teacherDO)throws Exception{
return ResponseData.generateCreatedResponse(0,teacherService.registerCode(teacherDO));
}
@PostMapping("register")
@ApiOperation("教师注册-提交 userName idCard nationality education collegeId major position title email telephone verifyCode")
public ResponseVO register(@RequestBody RegisterDTO registerDTO){
return ResponseData.generateCreatedResponse(0,teacherService.register(registerDTO));
}
@PostMapping("loginCode")
@ApiOperation("教师登录--发送验证码 telephone")
public ResponseVO loginCode(@RequestBody SmsVerifyCodeDO smsVerifyCodeDO){
return ResponseData.generateCreatedResponse(0,teacherService.loginCode(smsVerifyCodeDO));
}
@PostMapping("login")
@ApiOperation("教师登录--发送验证码 telephone verifyCode")
public ResponseVO login(@RequestBody SmsVerifyCodeDO smsVerifyCodeDO){
return ResponseData.generateCreatedResponse(0,teacherService.login(smsVerifyCodeDO));
}
@PostMapping("teacherInfo")
@ApiOperation("创建项目--教师基本信息 id 教师id")
public ResponseVO teacherInfo(@RequestBody TeacherDO teacherDO){
return ResponseData.generateCreatedResponse(0,teacherService.teacherInfo(teacherDO));
}
@PostMapping("updateTeacher")
@ApiOperation("创建项目--编辑 id nationality education major position title email")
public ResponseVO updateTeacher(@RequestBody TeacherDO teacherDO){
return ResponseData.generateCreatedResponse(0,teacherService.updateTeacher(teacherDO));
}
}
package com.subsidy.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.configure.RestTemplateConfig;
import com.subsidy.common.configure.WechatConfig;
import com.subsidy.dto.wewchat.AuthenRequestVO;
import com.subsidy.dto.wewchat.JsSdkVO;
import com.subsidy.dto.wewchat.SignVO;
import com.subsidy.mapper.AccessTokenMapper;
import com.subsidy.mapper.MemberMapper;
import com.subsidy.model.AccessTokenDO;
import com.subsidy.model.MemberDO;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.SecretUtils;
import com.subsidy.vo.wechat.AccessTokenVO;
import com.subsidy.vo.wechat.AuthenTokenVO;
import com.subsidy.vo.wechat.PushMsgVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("/wechat")
@Api(tags = "微信授权")
public class WechatController {
@Autowired
private RestTemplateConfig restTemplateConfig;
@Autowired
private WechatConfig wechatConfig;
@Autowired
private AccessTokenMapper accessTokenMapper;
@Autowired
private MemberMapper memberMapper;
@PostMapping("/getJsapiTicket")
@ApiOperation("通过token请求获得jsapi_ticket {url}")
public ResponseVO getJsapiTicket(@RequestBody SignVO signVO) {
List<AccessTokenDO> accessTokens = accessTokenMapper.selectList(null);
String accessToken = "";
if (accessTokens.size()==0){
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
accessToken = response.getBody().getAccess_token();
AccessTokenDO accessToken1 = new AccessTokenDO();
accessToken1.setAccessToken(accessToken);
accessTokenMapper.insert(accessToken1);
}else {
AccessTokenDO accessToken1 = accessTokens.get(0);
long diff = ChronoUnit.SECONDS.between(accessToken1.getUpdateDate(),LocalDateTime.now());
if (diff>=2*60*60*1000-5*1000){
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
accessToken = response.getBody().getAccess_token();
// AccessToken accessToken2= new AccessToken();
accessToken1.setAccessToken(accessToken);
accessTokenMapper.updateById(accessToken1);
}else {
accessToken = accessToken1.getAccessToken();
}
}
signVO.setAccess_token(accessToken);
String url1 = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken+ "&type=jsapi";
ResponseEntity<JsSdkVO> response1 = restTemplateConfig.restTemplate()
.exchange(url1, HttpMethod.GET, null, JsSdkVO.class);
String ticket = response1.getBody().getTicket();
signVO.setJsapi_ticket(ticket);
signVO.setNoncestr("1rtgtafNdHhxADMD");
signVO.setTimestamp(String.valueOf(System.currentTimeMillis()));
String signStr = "jsapi_ticket=" + signVO.getJsapi_ticket() + "&noncestr=" + signVO.getNoncestr() + "&timestamp=" + signVO.getTimestamp()
+ "&url=" + signVO.getUrl();
signVO.setSign(SecretUtils.getSHAString(signStr));
return ResponseData.generateCreatedResponse(0,signVO);
}
@PostMapping("/webAuthen")
@ApiOperation("网页授权 通过code换取身份信息 {code phone 手机号}")
public ResponseVO webAuthen(@RequestBody AuthenRequestVO authenRequestVO) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wechatConfig.getAppId() + "&secret=" +
wechatConfig.getAppSecret() + "&code=" + authenRequestVO.getCode() + "&grant_type=authorization_code";
ResponseEntity<AuthenTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AuthenTokenVO.class);
AuthenTokenVO authenTokenVO = response.getBody();
//通过openId从库里查询
MemberDO memberDO = memberMapper.selectOne(new QueryWrapper<MemberDO>()
.lambda()
.eq(MemberDO::getOpenId,authenTokenVO.getOpenid()));
if (null==memberDO){
String url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=" + authenTokenVO.getAccess_token() + "&openid=" + authenTokenVO.getOpenid() + "&lang=zh_CN";
ResponseEntity<AuthenTokenVO> response1 = restTemplateConfig.restTemplate()
.exchange(url1, HttpMethod.GET, null, AuthenTokenVO.class);
return ResponseData.generateCreatedResponse(0,response1.getBody());
}else {
//该openId已存在,查出该用户的角色信息
// UserRole userRole1 = userRoleMapper.selectOne(new QueryWrapper<UserRole>()
// .lambda()
// .eq(UserRole::getUserId,user.getId()));
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("id",memberDO.getId());
//queryWrapper.eq("role_type","学生");
List<MemberDO> memberDOS = memberMapper.selectList(queryWrapper);
return ResponseData.generateCreatedResponse(0,memberDOS);
}
}
public static void main(String[] args) throws Exception{
LocalDateTime now1 = LocalDateTime.now();
Thread.sleep(2560);
LocalDateTime now2 = LocalDateTime.now();
System.out.println(ChronoUnit.SECONDS.between(now1,now2));
}
}
......@@ -3,14 +3,14 @@ package com.subsidy.dto.administer;
import lombok.Data;
@Data
public class ChangeServiceDTO {
public class AdministerPageDTO {
private String laborServiceName;
private String listItem;
private Integer pageSize;
private String username;
private Integer pageNum;
private Long id;
private Integer pageSize;
}
package com.subsidy.dto.administer;
import lombok.Data;
@Data
public class AppLoginDTO {
private String appId;
private String authCorpId;
private String authCorpName;
private String openId;
private String accountName;
private Long id;
private String mobile;
private String nickname;
private Long timestamp;
private String sign;
}
......@@ -3,9 +3,10 @@ package com.subsidy.dto.administer;
import lombok.Data;
@Data
public class VerifyCodeDTO {
public class LoginDTO {
private String telephone;
private String verifyCode;
private String code;
}
package com.subsidy.dto.college;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class ExportCollegeDTO {
@ExcelColumn(col = 1, value = "学校代码")
private String code;
@ExcelColumn(col = 2, value = "学校名称")
private String name;
@ExcelColumn(col = 3 , value = "分管领导")
private String leaderName;
@ExcelColumn(col = 4 , value = "职务")
private String leaderPost;
@ExcelColumn(col = 5 , value = "手机号")
private String leaderPhone;
@ExcelColumn(col = 6 , value = "联系人姓名")
private String contactName;
@ExcelColumn(col = 7 , value = "职务")
private String contactPost;
@ExcelColumn(col = 8 , value = "手机号")
private String contactPhone;
@ExcelColumn(col = 9, value = "账户")
private String account;
@ExcelColumn(col = 10, value = "密码")
private String password;
@ExcelColumn(col = 11, value = "联系地址")
private String address;
}
package com.subsidy.dto.labor;
package com.subsidy.dto.college;
import lombok.Data;
@Data
public class ProjectsDTO {
private Long laborId;
public class FileManagementDTO {
private Integer pageSize;
private Integer pageNum;
private String projectName;
private Long matchId;
private String projectGroup;
private String name;
private Long userId;
}
package com.subsidy.dto.labor;
package com.subsidy.dto.college;
import lombok.Data;
@Data
public class ProjectManageDTO {
private Long projectId;
private String userInfo;
public class GetCollegesListDTO {
private Integer pageSize;
private Integer pageNum;
private String name;
}
package com.subsidy.dto.company;
import lombok.Data;
@Data
public class OperatorsDTO {
private Integer pageSize;
private Integer pageNum;
private Integer role;
private Long fieldId;
private String companyName;
private String userName;
private Long id;
private String superviseName;
private Long userId;
}
package com.subsidy.dto.labor;
import lombok.Data;
@Data
public class LaborProjectsDTO {
private Long laborId;
private String projectName;
}
package com.subsidy.dto.member;
import com.subsidy.model.ProjectMemberMappingDO;
import lombok.Data;
import java.util.List;
@Data
public class AddProjectMembersDTO {
private Long projectId;
private List<ProjectMemberMappingDO> projectMemberMappingDOS;
}
package com.subsidy.dto.member;
import lombok.Data;
import java.util.List;
@Data
public class DownloadFailClassMembers {
private List<DownloadFailClassMembersDTO> downloadFailClassMembersDTOS;
}
package com.subsidy.dto.member;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class DownloadFailClassMembersDTO {
@ExcelColumn(value = "姓名", col = 1)
private String userName;
@ExcelColumn(value = "身份证", col = 2)
private String idCard;
@ExcelColumn(value = "手机号", col = 3)
private String telephone;
@ExcelColumn(value = "原因", col = 4)
private String reason;
}
package com.subsidy.dto.member;
import com.subsidy.util.excel.ExcelColumnUtil;
import lombok.Data;
@Data
public class ImportClassMemberDTO {
private Long id;
@ExcelColumnUtil(value = "姓名", col = 1)
private String userName;
@ExcelColumnUtil(value = "身份证", col = 2)
private String idCard;
@ExcelColumnUtil(value = "手机号", col = 3)
private String telephone;
private Long laborId;
private String reason;
private Long groupId;
}
package com.subsidy.dto.labor;
package com.subsidy.dto.message;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.MessageDO;
import lombok.Data;
@Data
public class AddProjectDTO extends ProjectDO {
public class CreateMessageDTO extends MessageDO {
private Long userId;
......
package com.subsidy.dto.labor;
package com.subsidy.dto.message;
import lombok.Data;
@Data
public class AbnormalRecordDTO {
public class MessagePageDTO {
private Long projectId;
private String userInfo;
private Integer pageNum;
private Integer pageSize;
private Integer pageNum;
}
package com.subsidy.vo.oss;
package com.subsidy.dto.oss;
import lombok.Data;
......@@ -9,4 +9,6 @@ public class GetSecretVO {
private String secret;
}
package com.subsidy.vo.member;
package com.subsidy.dto.project;
import lombok.Data;
import java.util.List;
@Data
public class GetMembersVO {
public class ApproveDTO {
private Long id;
private String groupName;
private List<Long> ids;
private List<GroupMembersVO> groupMembersVOS;
private Long id;
private List<GetMembersVO> getMembersVOS;
private Integer projectStatus;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class DataOverviewDTO {
private String projectGroup;
private Long matchId;
}
package com.subsidy.dto.project;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class ExportProjectDTO {
@ExcelColumn(col = 1, value = "届数")
private String matchName;
@ExcelColumn(col = 2, value = "课程名称")
private String projectName;
@ExcelColumn(col = 3, value = "组别")
private String projectProgress;
@ExcelColumn(col = 4, value = "参赛教师")
private String name;
@ExcelColumn(col = 5, value = "院校")
private String collegeName;
@ExcelColumn(col = 6, value = "职位")
private String position;
@ExcelColumn(col = 7, value = "职称")
private String title;
@ExcelColumn(col = 8, value = "学历")
private String education;
@ExcelColumn(col = 9, value = "专业/专长")
private String major;
@ExcelColumn(col = 10, value = "手机号")
private String telephone;
@ExcelColumn(col = 11, value = "课程团队")
private String teamMembers;
@ExcelColumn(col = 12, value = "项目阶段")
private String projectSchedule;
@ExcelColumn(col = 13, value = "课程编码(教务系统中的编码)")
private String courseCode;
@ExcelColumn(col = 14, value = "课程性质")
private String courseType;
@ExcelColumn(col = 15, value = "开课年级")
private String grade;
@ExcelColumn(col = 16, value = "课程总学时")
private Integer courseHour;
@ExcelColumn(col = 17, value = "理论课学时")
private Integer theoryHour;
@ExcelColumn(col = 18, value = "实践学时")
private Integer practiseHour;
@ExcelColumn(col = 19, value = "学分")
private Integer score;
@ExcelColumn(col = 20, value = "授课年数")
private String years;
@ExcelColumn(col = 21, value = "最近两轮开课时间")
private String dates;
@ExcelColumn(col = 22, value = "最近两轮学生总人数")
private Integer studentTotalNum;
@ExcelColumn(col = 23, value = "课程概述")
private String courseDesc;
@ExcelColumn(col = 24, value = "课程目标")
private String courseMission;
@ExcelColumn(col = 25, value = "课程内容与教学安排")
private String courseContent;
@ExcelColumn(col = 26, value = "教材及教辅材料")
private String teachFiles;
@ExcelColumn(col = 27, value = "教研成果及教学改革")
private String teachResult;
@ExcelColumn(col = 28, value = "课程特色与创新点")
private String courseFeature;
}
......@@ -3,11 +3,7 @@ package com.subsidy.dto.project;
import lombok.Data;
@Data
public class TalentListDTO {
private Long laborId;
private String userName;
public class GetSeedTrackMatchPageDTO {
private Integer pageSize;
......
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class MatchCollegeVodsDTO {
private Long matchId;
private Long collegeId;
}
package com.subsidy.dto.project;
import lombok.Data;
import java.util.List;
@Data
public class ProjectCollegeListDTO {
private List<Long> ids;
private String projectSchedule;
private String projectGroup;
private Long matchId;
private String projectProgress;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class ProjectListPageDTO {
private String projectSchedule;
private String projectGroup;
private Long matchId;
private String courseName;
private Integer pageNum;
private Integer pageSize;
private String projectStatus;
private String itemField;
private String name;
private String projectProgress;
private Long collegeId;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class ProjectMembersDTO {
private Long projectId;
private Integer pageSize;
private Integer pageNum;
private String userName;
private String salaryMonth;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class SeedTrackProjectNumDTO {
private Long id;
private Long matchId;
private String projectGroup;
private String projectProgress;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class TalentSalaryDTO {
private Long projectId;
private String userName;
private String salaryMonth;
private Integer pageSize;
private Integer pageNum;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class TalentSalaryDetailDTO {
private Integer pageSize;
private Integer pageNum;
private Long projectId;
private Long memberId;
private Long laborId;
}
package com.subsidy.dto.project;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.ProjectMembersDO;
import lombok.Data;
import java.util.List;
@Data
public class UpdateProjectDTO extends ProjectDO {
/**
* 课程团队
*/
private List<ProjectMembersDO> projectMembersDOS;
}
package com.subsidy.dto.project;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
public class UploadVodsDTO {
private Long id;
/**
* 科目id
*/
@TableField("subject")
private String subjectId;
/**
* 视频名称
*/
private String vodName;
/**
* 视频地址
*/
private String vodUrl;
/**
* 课型
*/
private String vodType;
/**
* 视频介绍
*/
private String vodIntro;
/**
* 视频时长
*/
private Integer vodLength;
/**
* 视频在腾讯云上的code
*/
private String vodCode;
/**
* 视频提供者
*/
@TableField("teacher_id")
private Long administerId;
/**
* 封面
*/
private String coverPage;
/**
* 0:待审核 1:已审核
*/
private String status;
/**
* 审核人
*/
private Integer checkId;
/**
* 分享状态
*/
private String shareStatus;
/**
* 审核状态 1:审核通过 3:未通过 2: 审核中
*/
private String checkStatus;
/**
* 通过/不通过原因
*/
private String reason;
}
package com.subsidy.dto.salary;
import lombok.Data;
import java.util.List;
@Data
public class CommitSalaryDTO {
private List<Long> unCommitIds;
}
package com.subsidy.dto.salary;
import com.subsidy.util.excel.ExcelColumnUtil;
import lombok.Data;
@Data
public class ImportSalaryDTO {
@ExcelColumnUtil(value = "姓名", col = 1)
private String userName;
@ExcelColumnUtil(value = "手机号", col = 2)
private String telephone;
@ExcelColumnUtil(value = "工资账户", col = 3)
private String payrollAccount;
@ExcelColumnUtil(value = "明细", col = 4)
private String salaryMark;
@ExcelColumnUtil(value = "金额", col = 5)
private String salary;
@ExcelColumnUtil(value = "发放时间", col = 6)
private String salaryDate;
}
package com.subsidy.dto.salary;
import com.subsidy.model.ProjectSalaryNoticeDO;
import lombok.Data;
import java.util.List;
@Data
public class PushMsgDTO {
private Long projectId;
private String salaryMonth;
private List<ProjectSalaryNoticeDO> projectSalaryNoticeDOS;
}
package com.subsidy.dto.salary;
import com.subsidy.model.ProjectSalaryHistoryDO;
import lombok.Data;
import java.util.List;
@Data
public class SaveSalaryDTO {
private Long projectId;
private String salaryMonth;
private List<ProjectSalaryHistoryDO> projectSalaryHistoryDOS;
}
package com.subsidy.vo.labor;
package com.subsidy.dto.teacher;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.subsidy.model.TeacherDO;
import lombok.Data;
@Data
public class LoginVO {
public class LoginVO extends TeacherDO {
private String token;
private String collegeName;
}
package com.subsidy.dto.teacher;
import com.subsidy.model.TeacherDO;
import lombok.Data;
@Data
public class RegisterDTO extends TeacherDO {
private String verifyCode;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class AuthenRequestVO {
private String code;
private String phone;
private String openId;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class JsSdkVO {
private String errcode;
private String errmsg;
private String ticket;
private String expires_in;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class PushMsgPO {
private String openId;
private String accountType;
private String salary;
private String projectName;
private String salaryDate;
private String salaryMark;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class SignVO {
private String access_token;
private String noncestr;
private String jsapi_ticket;
private String timestamp;
private String url;
private String sign;
private String code;
}
package com.subsidy.job;
import com.subsidy.common.configure.RestTemplateConfig;
import com.subsidy.common.configure.WechatConfig;
import com.subsidy.common.constant.CourseNotification;
import com.subsidy.dto.wewchat.PushMsgPO;
import com.subsidy.mapper.MemberMapper;
import com.subsidy.mapper.ProjectMapper;
import com.subsidy.mapper.ProjectSalaryHistoryMapper;
import com.subsidy.mapper.ProjectSalaryNoticeMapper;
import com.subsidy.model.*;
import com.subsidy.vo.member.GetMemberListVO;
import com.subsidy.vo.wechat.AccessTokenVO;
import com.subsidy.vo.wechat.PushMsgVO;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* <p>
* 课程通知
* </p>
*
* @author DengMin
* @since 2022/2/14
*/
@Component
public class ProjectSalaryNotificationJob implements Job {
@Autowired
private MemberMapper memberMapper;
@Autowired
private ProjectSalaryNoticeMapper projectSalaryNoticeMapper;
@Autowired
private ProjectMapper projectMapper;
@Autowired
private WechatConfig wechatConfig;
@Autowired
private RestTemplateConfig restTemplateConfig;
@Override
public void execute(JobExecutionContext jobExecutionContext) {
Map<String, Object> map = jobExecutionContext.getJobDetail().getJobDataMap();
Map<String, Object> params = (Map<String, Object>) map.get("params");
ProjectDO projectDO = projectMapper.selectById((Long) params.get("projectId"));
if (params != null) {
ProjectSalaryNoticeDO projectSalaryNoticeDO = projectSalaryNoticeMapper.selectById((Long) params.get("id"));
if (null != projectSalaryNoticeDO) {
//需要发送通知的人(已提交)
List<GetMemberListVO> list = memberMapper.getMemberList((Long) params.get("projectId"), (String) params.get("salaryMonth"));
if (list != null && list.size() > 0) {
for (GetMemberListVO memberMonthSalaryVO : list) {
if (memberMonthSalaryVO != null) {
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
PushMsgPO pushMsgDTO = new PushMsgPO();
pushMsgDTO.setOpenId(memberMonthSalaryVO.getOpenId());
pushMsgDTO.setProjectName(projectDO.getProjectName());
pushMsgDTO.setSalary(memberMonthSalaryVO.getSalary());
pushMsgDTO.setAccountType("工资");
pushMsgDTO.setSalaryDate(memberMonthSalaryVO.getSalaryDate());
pushMsgDTO.setSalaryMark(memberMonthSalaryVO.getSalaryMark());
String token = response.getBody().getAccess_token();
// pushMsg(pushMsgDTO,token);
}
}
}
projectSalaryNoticeDO.setStatus(CourseNotification.SENT);
projectSalaryNoticeMapper.updateById(projectSalaryNoticeDO);
}
}
}
public void pushMsg(PushMsgPO pushMsgPO, String token){
// https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
String msgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
// pushMsgPO.setOpenId("ooRcY6cvS36qli-3sOVdkGJ_AODY");
pushMsgPO.setOpenId(pushMsgPO.getOpenId());
pushMsgPO.setAccountType(pushMsgPO.getAccountType());
pushMsgPO.setProjectName(pushMsgPO.getProjectName());
pushMsgPO.setSalary(pushMsgPO.getSalary());
pushMsgPO.setSalaryDate(pushMsgPO.getSalaryDate());
// pushMsgPO.setSalaryDate("2024年08月08日");
String input = "{\n" +
" \"touser\":\"" + pushMsgPO.getOpenId() + "\",\n" +
" \"template_id\":\"" + wechatConfig.getTemplateId() + "\",\n" +
" \"url\":\"" + wechatConfig.getMsgUrl() + "\",\n" +
" \"data\":{\n" +
" \"thing3\":{\n" +
" \"value\":\"" + pushMsgPO.getAccountType() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing2\":{\n" +
" \"value\":\"" + pushMsgPO.getProjectName() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"amount4\":{\n" +
" \"value\":\"" + pushMsgPO.getSalary() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing6\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryMark() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"time8\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryDate() + "\",\n" +
" \"color\":\"#173177\"\n" +
" }" +
" }\n" +
"}";
HttpHeaders headers = new HttpHeaders();
ResponseEntity<PushMsgVO> responseEntity = restTemplateConfig.restTemplate()
.exchange(msgUrl, HttpMethod.POST, new HttpEntity<>(input.getBytes(), headers), PushMsgVO.class);
System.out.println(responseEntity);
}
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.AdministerDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.model.LaborServiceDictDO;
import com.subsidy.vo.administer.PermissionsVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 管理平台用户 Mapper 接口
* 中心管理账户表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Repository
public interface AdministerMapper extends BaseMapper<AdministerDO> {
IPage<LaborServiceDictDO> administerLabors(IPage page, Long administerId, String laborServiceName);
List<PermissionsVO> getPermissions(Long id);
}
package com.subsidy.mapper;
import com.subsidy.model.MemberDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.CollegeFileDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.member.GetMemberListVO;
import com.subsidy.vo.college.CollegeInfoVO;
import com.subsidy.vo.college.FileManagementVO;
import com.subsidy.vo.college.RecentFileVO;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -13,14 +16,18 @@ import java.util.List;
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-09
*/
@Repository
public interface MemberMapper extends BaseMapper<MemberDO> {
public interface CollegeFileMapper extends BaseMapper<CollegeFileDO> {
IPage<FileManagementVO> fileManagement(IPage iPage,Long matchId,String education,String name);
/**
* 查到该项目这个月已经提交的人
* 某一届赛事某院校情况
*/
List<GetMemberListVO> getMemberList(Long projectId, String salaryMonth);
CollegeInfoVO collegeInfo(Long collegeId, Long matchId);
RecentFileVO recentFile(Long collegeId, Long matchId);
}
package com.subsidy.mapper;
import com.subsidy.model.LaborProjectMappingDO;
import com.subsidy.model.CollegesDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.model.ProjectDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 伙伴项目映射表 Mapper 接口
* 院校字典表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-08
*/
@Repository
public interface LaborProjectMappingMapper extends BaseMapper<LaborProjectMappingDO> {
@Repository
public interface CollegesDictMapper extends BaseMapper<CollegesDictDO> {
List<ProjectDO> getPreliminaryProjectList(Long matchId, String projectSchedule,Long collegeId);
}
package com.subsidy.mapper;
import com.subsidy.model.GroupMemberMappingDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.member.GroupMembersVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 群组人员映射表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@Repository
public interface GroupMemberMappingMapper extends BaseMapper<GroupMemberMappingDO> {
//群组下的人员
List<GroupMembersVO> groupMembers(Long groupId,Long projectId);
//查看该伙伴下的所有学员
List<String> allLaborMembers(Long laborId);
//查看该项目下的所有学员
List<String> allProjectMembers(Long projectId);
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.LaborServiceDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.administer.PermissionsVO;
import com.subsidy.vo.labor.AbnormalRecordVO;
import com.subsidy.vo.labor.ProjectManageVO;
import com.subsidy.vo.labor.ProjectsVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 劳务公司字典表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Repository
public interface LaborServiceDictMapper extends BaseMapper<LaborServiceDictDO> {
List<PermissionsVO> getPermissions(Long id);
IPage<ProjectsVO> projects(IPage iPage,String projectName, Long laborId);
IPage<ProjectManageVO> projectManage(IPage iPage, Long projectId, String userInfo);
IPage<AbnormalRecordVO> abnormalRecord(IPage page, Long projectId, String userInfo);
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.CompanyDictDO;
import com.subsidy.model.MatchDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.company.OperatorsVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 企业字典表 Mapper 接口
* 赛事年份管理 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-31
* @since 2025-01-07
*/
@Repository
public interface CompanyDictMapper extends BaseMapper<CompanyDictDO> {
public interface MatchDictMapper extends BaseMapper<MatchDictDO> {
List<MatchDictDO> matches(String matchName);
/**
* 查询全部企业
* 关闭赛事
*/
IPage<OperatorsVO> allOperators(IPage page, String companyName, Long fieldId, String superviseName);
void closeMatch();
/**
* 企业管理--查找所有主账号 、运营者
* 开启赛事
*/
IPage<OperatorsVO> operators(IPage page, Long userId, String companyName, Long fieldId, String superviseName);
void openMatch(Long matchId);
}
package com.subsidy.mapper;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.MessageDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 伙伴群组字典表 Mapper 接口
* 通知消息表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-24
* @since 2025-01-08
*/
@Repository
public interface LaborGroupDictMapper extends BaseMapper<LaborGroupDictDO> {
public interface MessageMapper extends BaseMapper<MessageDO> {
}
package com.subsidy.mapper;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.model.PermissionsDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.administer.PermissionVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 项目人员映射表 Mapper 接口
* 权限表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Repository
public interface ProjectMemberMappingMapper extends BaseMapper<ProjectMemberMappingDO> {
public interface PermissionsMapper extends BaseMapper<PermissionsDO> {
List<PermissionVO> getPermissionById(Long id);
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.subsidy.model.MatchDictDO;
import com.subsidy.model.ProjectDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.college.MatchCollegeVodsVO;
import com.subsidy.vo.project.RecentVodVO;
import com.subsidy.vo.project.SeedTrackProjectPageVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 项目表 Mapper 接口
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
@Repository
@Repository
public interface ProjectMapper extends BaseMapper<ProjectDO> {
IPage<SeedTrackProjectPageVO> getSeedTrackProjectPage(Page page, Long matchId, String projectGroup, String courseName);
IPage<SeedTrackProjectPageVO> getSeedTrackProjectPage1(Page page, Long matchId, String projectGroup, @Param("type") String type,
Long collegeId, String projectSchedule,
String projectStatus, @Param("name") String name,@Param("projectProgress") String projectProgress);
List<MatchCollegeVodsVO> matchCollegeVods(Long collegeId, Long matchId);
List<MatchDictDO> getList( @Param("projectGroup") String projectGroup);
List<ProjectDO> getSeedTrackProjectList(Long collegeId,Long matchId, String projectGroup, @Param("projectProgress")String projectProgress);
List<RecentVodVO> recentVod(Long matchId,Long collegeId);
}
package com.subsidy.mapper;
import com.subsidy.model.AccessTokenDO;
import com.subsidy.model.ProjectMembersDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
......@@ -10,9 +10,9 @@ import org.springframework.stereotype.Repository;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-07
*/
@Repository
public interface AccessTokenMapper extends BaseMapper<AccessTokenDO> {
public interface ProjectMembersMapper extends BaseMapper<ProjectMembersDO> {
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.dto.project.TalentListDTO;
import com.subsidy.dto.salary.CommitSalaryDTO;
import com.subsidy.model.ProjectSalaryHistoryDO;
import com.subsidy.vo.labor.ProjectsVO;
import com.subsidy.vo.project.LaborProjectsVO;
import com.subsidy.vo.project.TalentListVO;
import com.subsidy.vo.project.TalentSalaryDetailVO;
import com.subsidy.vo.project.TalentSalaryVO;
import com.subsidy.vo.salary.ProjectMembersVO;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
/**
* <p>
* 工资单历史表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-11
*/
@Repository
public interface ProjectSalaryHistoryMapper extends BaseMapper<ProjectSalaryHistoryDO> {
List<LaborProjectsVO> laborProjects(Long laborId,String projectName);
IPage<TalentSalaryVO> talentSalary(IPage page, Long projectId, String userName, String salaryMonth);
IPage<TalentListVO> talentList(IPage page,Long laborId,String userName);
IPage<TalentSalaryDetailVO> talentSalaryDetail(IPage page,Long projectId, Long memberId, Long laborId);
/**
* 项目下的成员
*/
IPage<ProjectMembersVO> projectMembers(IPage page, Long projectId, String userName,String salaryMonth);
/**
* 导出模板 不要工资数据
*/
List<ProjectMembersVO> exportTemplate(Long projectMappingId);
void commitSalary(Long id);
void updateSalary(Long id, String salary, String salaryMark, String salaryDate, Date updateDate);
/**
* 查看某个项目这个月是否已经提交过
*/
List<Long> commitMonthSalary(Long projectId,String salaryMonth,Integer commitStatus);
void deleteSalary(String salaryMonth,Long id);
}
package com.subsidy.mapper;
import com.subsidy.model.ProjectSalaryNoticeDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-30
*/
@Repository
public interface ProjectSalaryNoticeMapper extends BaseMapper<ProjectSalaryNoticeDO> {
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.model.SmsVerifyCodeDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
......@@ -9,10 +9,13 @@ import org.springframework.stereotype.Repository;
* 短信验证码记录表 Mapper 接口
* </p>
*
* @author DengMin
* @since 2021-10-14
* @author Tuyp
* @since 2025-01-07
*/
@Repository
@Repository
public interface SmsVerifyCodeMapper extends BaseMapper<SmsVerifyCodeDO> {
SmsVerifyCodeDO getOneByTelePhone(String telephone, String type, String platform);
}
package com.subsidy.mapper;
import com.subsidy.model.AdministerLaborMappingDO;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.TeacherDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 管理员-伙伴映射表 Mapper 接口
* 教师信息表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-07
*/
@Repository
public interface AdministerLaborMappingMapper extends BaseMapper<AdministerLaborMappingDO> {
public interface TeacherMapper extends BaseMapper<TeacherDO> {
CollegesDictDO teacherCollege(Long teacherId);
}
......@@ -4,16 +4,17 @@ import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 管理平台用户
* 中心管理账户表
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
......@@ -34,46 +35,18 @@ public class AdministerDO extends BaseModel {
private String telephone;
/**
* 账号
*/
private String accountName;
/**
* 密码
*/
private String password;
/**
* 公司id
*/
private Long companyId;
/**
* 成员名称
*/
private String userName;
private String username;
/**
* 头像
*/
private String img;
private String avatar;
/**
* 1:启用 0:禁用
* 角色
*/
private String status;
/**
* 角色 0:应用 1:企业关联客户 2:中心 3:企业唯一账号,4:院校唯一账号 5:院校关联账号 6:伙伴唯一账号 7:伙伴关联账号
*/
private Integer role;
/**
* 备注
*/
private String remark;
private Long laborId;
private String role;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 管理员-伙伴映射表
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("administer_labor_mapping")
public class AdministerLaborMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long administerId;
private Long laborId;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 管理员-项目映射表
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("administer_project_mapping")
public class AdministerProjectMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long administerId;
private Long projectId;
}
......@@ -13,19 +13,46 @@ import lombok.EqualsAndHashCode;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("access_token")
public class AccessTokenDO extends BaseModel {
@TableName("college_file")
public class CollegeFileDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private Long id;
private String accessToken;
private Long collegeId;
private Long matchId;
/**
* 汇总表
*/
private String summaryUrl;
private String summaryName;
private String pptUrl;
private String pptName;
/**
* 文字报告
*/
private String wordReportUrl;
private String wordReportName;
/**
* 支持材料
*/
private String supportFileUrl;
private String supportFileName;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 院校字典表
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("colleges_dict")
public class CollegesDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 学校代码
*/
private String code;
/**
* 学历 (中职、大专、本科及以上)
*/
private String education;
/**
* 院校名称
*/
private String name;
/**
* 账户
*/
private String account;
/**
* 密码
*/
private String password;
/**
* 分管领导姓名
*/
private String leaderName;
/**
* 分管领导职位
*/
private String leaderPost;
/**
* 分管领导手机号
*/
private String leaderPhone;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系人职位
*/
private String contactPost;
/**
* 联系人手机号
*/
private String contactPhone;
/**
* 登录时间
*/
private LocalDateTime loginTime;
/**
* 登录状态
*/
private Integer loginStatus;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 群组人员映射表
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("group_member_mapping")
public class GroupMemberMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long groupId;
private Long memberId;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 伙伴项目映射表
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("labor_project_mapping")
public class LaborProjectMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long laborId;
private Long projectId;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 劳务公司字典表
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("labor_service_dict")
public class LaborServiceDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String laborServiceName;
private String shortName;
private String location;
private String serviceCode;
}
......@@ -10,16 +10,16 @@ import lombok.EqualsAndHashCode;
/**
* <p>
*
* 赛事年份管理
* </p>
*
* @author Tuyp
* @since 2024-07-30
* @since 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("project_salary_notice")
public class ProjectSalaryNoticeDO extends BaseModel {
@TableName("match_dict")
public class MatchDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
......@@ -27,29 +27,36 @@ public class ProjectSalaryNoticeDO extends BaseModel {
private Long id;
/**
* 项目id
* 赛事名称
*/
private Long projectId;
private String matchName;
/**
* 通知类型
* 赛事年份
*/
private String noticeType;
private String year;
/**
* 工资月薪
* 报名开始时间
*/
private String salaryMonth;
private String startTime;
/**
* 通知时间
* 报名结束时间
*/
private String noticeTime;
private String endTime;
/**
* 发送状态
* 状态(1:启动,0:暂停)
*/
private String status;
private Integer status;
private String vodStartTime;
private String vodEndTime;
private String fileStartTime;
private String fileEndTime;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("member")
public class MemberDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 院校id
*/
private Long academyId;
/**
* 公司名 弃用
*/
private Long companyId;
/**
* 姓名
*/
private String userName;
/**
* 账号
*/
private String accountName;
/**
* 英文名
*/
private String accountNameEn;
/**
* 邮箱
*/
private String email;
/**
* 工号
*/
private String workNo;
/**
* 入职时间
*/
private String inductionDate;
/**
* 手机号
*/
private String telephone;
/**
* 密码
*/
private String password;
/**
* 性别
*/
private String gender;
/**
* 头像
*/
private String image;
/**
* 人脸核验--照片
*/
private String checkImage;
/**
* 采集时间
*/
private LocalDateTime checkTime;
/**
* 身份证号
*/
private String idCard;
/**
* 身份证照片
*/
private String idCardPhoto;
/**
* 启用/冻结
*/
private String status;
/**
* 是否登陆过 1 是 0 不是
*/
private Integer firstLogin;
/**
* QQ号
*/
private String qqNo;
/**
* 微信账号
*/
private String wechat;
/**
* 实习状态
*/
private String practiceStatus;
/**
* 学院id
*/
private Long collegeId;
/**
* 专业id
*/
private String major;
/**
* 入学年份
*/
private String enrollmentYear;
/**
* 工资账户
*/
private String payrollAccount;
/**
* 开户行
*/
private String bank;
/**
* 0:学生 2:职工 3:人才
*/
private Integer memberType;
/**
* 微信的openId
*/
private String openId;
}
......@@ -3,22 +3,25 @@ package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 项目人员映射
* 通知消息
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("project_member_mapping")
public class ProjectMemberMappingDO extends BaseModel {
@TableName("message")
public class MessageDO extends BaseModel {
private static final long serialVersionUID = 1L;
......@@ -26,32 +29,47 @@ public class ProjectMemberMappingDO extends BaseModel {
private Long id;
/**
* 人员id
* 发布者
*/
private String username;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 置顶
*/
private Long memberId;
private Integer top;
/**
* 项目id
* 发布时间
*/
private Long projectId;
private String releaseTime;
/**
* 职位名称
* 附件地址
*/
private String jobName;
private String attachmentUrl;
/**
* 工资
* 附件名称
*/
private String salary;
private String attachmentName;
/**
* 排序
* 附件类型
*/
private Integer orderNo;
private String attachmentType;
/**
* 1:在职 0 已离职
* 状态(0:停用,1:启用)
*/
private Integer status;
......
......@@ -4,32 +4,36 @@ import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 伙伴群组字典
* 权限
* </p>
*
* @author Tuyp
* @since 2024-07-24
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("labor_group_dict")
public class LaborGroupDictDO extends BaseModel {
@TableName("permissions")
public class PermissionsDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long laborId;
/**
* 父级ID
*/
private Long parentId;
private String groupName;
/**
* 名称
*/
private String name;
}
......@@ -9,11 +9,11 @@ import lombok.EqualsAndHashCode;
/**
* <p>
* 项目表
*
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
......@@ -25,25 +25,76 @@ public class ProjectDO extends BaseModel {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long matchId;
private Long teacherId;
private Long collegeId;
private String projectGroup;
/**
* 课程名称
*/
private String courseName;
/**
* 课程编码
*/
private String courseCode;
/**
* 课程性质
*/
private String courseType;
/**
* 开课年级
*/
private String grade;
/**
* 课程总学时
*/
private Integer courseHour;
/**
* 理论学时
*/
private Integer theoryHour;
/**
* 项目名称
* 实践学时
*/
private String projectName;
private Integer practiseHour;
/**
* 关联企业
* 分数
*/
private Long companyId;
private Integer score;
/**
* 伙伴id
* 授课年数
*/
private Long laborServiceId;
private String years;
private String startDate1;
private String endDate1;
private String startDate2;
private String endDate2;
/**
* 薪资发放日
* 最近两轮学生总人数
*/
private String salaryDate;
private Integer studentTotalNum;
/**
* 学期
*/
private String semester;
/**
* 开始时间
......@@ -55,5 +106,94 @@ public class ProjectDO extends BaseModel {
*/
private String endDate;
/**
* 授课学时
*/
private Integer teachHours;
/**
* 授课年级
*/
private String teachGrade;
/**
* 班级人数
*/
private Integer classTotalNum;
/**
* 整体课程团队教学情况
*/
private String courseTeam;
/**
* 课程概述
*/
private String courseDesc;
/**
* 课程目标
*/
private String courseTarget;
/**
* 授课任务 300字
*/
private String courseMission;
/**
* 课程内容与教学安排
*/
private String courseContent;
/**
* 教材及教辅材料
*/
private String teachFiles;
/**
* 教研成果及教学改革
*/
private String teachResult;
/**
* 课程特色与创新点
*/
private String courseFeature;
/**
* 项目状态
*/
private String projectStatus;
/**
* 项目进度
*/
private String projectSchedule;
/**
* 审核状态
*/
private String projectReview;
/**
* 分配状态
*/
private String projectAssigned;
/**
* 盖章pdf附件
*/
private String attachment;
/**
* 视频
*/
private String vodUrl;
/**
* 视频上传时间
*/
private String uploadDate;
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!