diff --git a/buildAndStart.sh b/buildAndStart.sh index cbaa5ec..26f111a 100644 --- a/buildAndStart.sh +++ b/buildAndStart.sh @@ -7,7 +7,7 @@ JAR_PATH=${DES_PATH}/ruoyi-admin/target/ruoyi-admin.jar LOG_PATH=${DES_PATH}/logs LOG_FILE=${LOG_PATH}/backend.log BACK_LOG=${LOG_PATH}/back/backend-info.log -MODEL_NAME=backend +MODEL_NAME=${JAR_PATH} PROFILE=dev # JVM配置 @@ -32,37 +32,77 @@ __red() { } __kill() { - local process_name=$1 - PID=$(ps -ef | grep "${process_name}.jar" | grep -v grep | awk '{print $2}' | xargs) + local jar_path="$1" local sleep_seconds=10 local cur_sleep_second=1 + local pids=() - if [[ -z "$PID" ]]; then - __green "进程 ${process_name} 未运行" + # 使用临时文件或直接遍历 jps 输出(避免进程替换) + jps -l 2>/dev/null | while read -r pid main_class; do + if [ "$main_class" = "$jar_path" ]; then + echo "$pid" + fi + done > /tmp/ruoyi_pids.$$ + + # 读取匹配的 PID 到数组(在当前 shell 中) + while IFS= read -r pid; do + [ -n "$pid" ] && pids+=("$pid") + done < /tmp/ruoyi_pids.$$ + + # 清理临时文件 + rm -f /tmp/ruoyi_pids.$$ + + if [ ${#pids[@]} -eq 0 ]; then + __green "未找到运行中的进程: $jar_path" return 0 fi - while [[ -n "$PID" && "$sleep_seconds" -ge "$cur_sleep_second" ]]; do - __green "尝试kill PID: ${PID}" + __green "找到 ${#pids[@]} 个匹配进程: ${pids[*]}" - if [ "$sleep_seconds" -eq "$cur_sleep_second" ]; then - __red "强制关闭: ${cur_sleep_second}" - kill -9 $PID >> /dev/null 2>&1 - else - kill $PID >> /dev/null 2>&1 - fi - - __green "停止程序计时: ${cur_sleep_second}秒" - sleep 1 - cur_sleep_second="$(_math "$cur_sleep_second" + 1)" - PID=$(ps -ef | grep "${process_name}.jar" | grep -v grep | awk '{print $2}' | xargs) + # 发送 SIGTERM + for pid in "${pids[@]}"; do + __green "发送 SIGTERM 到 PID: $pid" + kill "$pid" >/dev/null 2>&1 done - if [[ -n "$PID" ]]; then - __red "无法停止进程 ${process_name}, PID: ${PID}" + # 等待退出 + while [ $cur_sleep_second -le $sleep_seconds ]; do + remaining=() + for pid in "${pids[@]}"; do + if kill -0 "$pid" 2>/dev/null; then + remaining+=("$pid") + fi + done + + if [ ${#remaining[@]} -eq 0 ]; then + __green "所有进程已成功停止" + return 0 + fi + + __green "等待进程退出... (${cur_sleep_second}/${sleep_seconds} 秒)" + sleep 1 + cur_sleep_second=$((cur_sleep_second + 1)) + done + + # 强制 kill -9 + __red "优雅关闭超时,强制终止剩余进程: ${remaining[*]}" + for pid in "${remaining[@]}"; do + kill -9 "$pid" 2>/dev/null + done + + # 检查是否还有存活 + still_alive=() + for pid in "${remaining[@]}"; do + if kill -0 "$pid" 2>/dev/null; then + still_alive+=("$pid") + fi + done + + if [ ${#still_alive[@]} -gt 0 ]; then + __red "无法终止进程: ${still_alive[*]}" return 1 else - __green "进程 ${process_name} 已成功停止" + __green "所有进程已强制终止" return 0 fi } diff --git a/ruoyi-abuwx/pom.xml b/ruoyi-abuwx/pom.xml deleted file mode 100644 index 4c9b28e..0000000 --- a/ruoyi-abuwx/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - ruoyi - com.ruoyi - 3.8.8 - - 4.0.0 - - ruoyi-abuwx - - 微信小程序 - - - - - com.ruoyi - ruoyi-common - - - - com.ruoyi - ruoyi-system - - - com.ruoyi - ruoyi-framework - - - com.ruoyi - ruoyi-common - - - org.projectlombok - lombok - - - cn.hutool - hutool-all - 5.8.31 - - - - \ No newline at end of file diff --git a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/controller/AbucoderWxuserController.java b/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/controller/AbucoderWxuserController.java deleted file mode 100644 index 42b3c77..0000000 --- a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/controller/AbucoderWxuserController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ruoyi.abuwx.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.annotation.Log; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.abuwx.domain.AbucoderWxuser; -import com.ruoyi.abuwx.service.IAbucoderWxuserService; -import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.common.core.page.TableDataInfo; - -/** - * 微信用户Controller - * - * @author 阿卜Coder QQ932696181 - * @date 2022-06-26 - */ -@RestController -@RequestMapping("/abuwx/wxuser") -public class AbucoderWxuserController extends BaseController -{ - @Autowired - private IAbucoderWxuserService abucoderWxuserService; - - /** - * 查询微信用户列表 - */ - @PreAuthorize("@ss.hasPermi('abuwx:wxuser:list')") - @GetMapping("/list") - public TableDataInfo list(AbucoderWxuser abucoderWxuser) - { - startPage(); - List list = abucoderWxuserService.selectAbucoderWxuserList(abucoderWxuser); - return getDataTable(list); - } - - /** - * 导出微信用户列表 - */ - @PreAuthorize("@ss.hasPermi('abuwx:wxuser:export')") - @Log(title = "微信用户", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, AbucoderWxuser abucoderWxuser) - { - List list = abucoderWxuserService.selectAbucoderWxuserList(abucoderWxuser); - ExcelUtil util = new ExcelUtil(AbucoderWxuser.class); - util.exportExcel(response, list, "微信用户数据"); - } - - /** - * 获取微信用户详细信息 - */ - @PreAuthorize("@ss.hasPermi('abuwx:wxuser:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return AjaxResult.success(abucoderWxuserService.selectAbucoderWxuserById(id)); - } - - /** - * 新增微信用户 - */ - @PreAuthorize("@ss.hasPermi('abuwx:wxuser:add')") - @Log(title = "微信用户", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody AbucoderWxuser abucoderWxuser) - { - return toAjax(abucoderWxuserService.insertAbucoderWxuser(abucoderWxuser)); - } - - /** - * 修改微信用户 - */ - @PreAuthorize("@ss.hasPermi('abuwx:wxuser:edit')") - @Log(title = "微信用户", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody AbucoderWxuser abucoderWxuser) - { - return toAjax(abucoderWxuserService.updateAbucoderWxuser(abucoderWxuser)); - } - - /** - * 删除微信用户 - */ - @PreAuthorize("@ss.hasPermi('abuwx:wxuser:remove')") - @Log(title = "微信用户", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(abucoderWxuserService.deleteAbucoderWxuserByIds(ids)); - } -} diff --git a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/domain/AbucoderWxuser.java b/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/domain/AbucoderWxuser.java deleted file mode 100644 index cec85c4..0000000 --- a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/domain/AbucoderWxuser.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ruoyi.abuwx.domain; - -import com.ruoyi.common.annotation.Excel; -import com.ruoyi.common.core.domain.BaseEntity; -import lombok.Data; - -@Data -public class AbucoderWxuser extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** ID */ - private Long id; - - /** 微信名称 */ - @Excel(name = "微信名称") - private String nickname; - - /** 头像 */ - @Excel(name = "头像") - private String avatar; - - /** OpenID */ - @Excel(name = "OpenID") - private String openid; - - /** 性别 */ - @Excel(name = "性别") - private Integer gender; -} diff --git a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/mapper/AbucoderWxuserMapper.java b/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/mapper/AbucoderWxuserMapper.java deleted file mode 100644 index d05d4f4..0000000 --- a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/mapper/AbucoderWxuserMapper.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ruoyi.abuwx.mapper; - -import java.util.List; -import com.ruoyi.abuwx.domain.AbucoderWxuser; - -/** - * 微信用户Mapper接口 - * - * @author 阿卜Coder QQ932696181 - * @date 2022-06-26 - */ -public interface AbucoderWxuserMapper -{ - /** - * 查询微信用户 - * - * @param id 微信用户主键 - * @return 微信用户 - */ - public AbucoderWxuser selectAbucoderWxuserById(Long id); - - /** - * 查询微信用户列表 - * - * @param abucoderWxuser 微信用户 - * @return 微信用户集合 - */ - public List selectAbucoderWxuserList(AbucoderWxuser abucoderWxuser); - - /** - * 新增微信用户 - * - * @param abucoderWxuser 微信用户 - * @return 结果 - */ - public int insertAbucoderWxuser(AbucoderWxuser abucoderWxuser); - - /** - * 修改微信用户 - * - * @param abucoderWxuser 微信用户 - * @return 结果 - */ - public int updateAbucoderWxuser(AbucoderWxuser abucoderWxuser); - - /** - * 删除微信用户 - * - * @param id 微信用户主键 - * @return 结果 - */ - public int deleteAbucoderWxuserById(Long id); - - /** - * 批量删除微信用户 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteAbucoderWxuserByIds(Long[] ids); - - /** - * 通过OpenID查询微信用户信息 - * @param openid - * @return - */ - public AbucoderWxuser selectAbucoderWxuserOpenID(String openid); -} diff --git a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/service/IAbucoderWxuserService.java b/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/service/IAbucoderWxuserService.java deleted file mode 100644 index 7ceb1d3..0000000 --- a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/service/IAbucoderWxuserService.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ruoyi.abuwx.service; - -import java.util.List; -import com.ruoyi.abuwx.domain.AbucoderWxuser; - -/** - * 微信用户Service接口 - * - * @author 阿卜Coder QQ932696181 - * @date 2022-06-26 - */ -public interface IAbucoderWxuserService -{ - /** - * 查询微信用户 - * - * @param id 微信用户主键 - * @return 微信用户 - */ - public AbucoderWxuser selectAbucoderWxuserById(Long id); - - /** - * 查询微信用户列表 - * - * @param abucoderWxuser 微信用户 - * @return 微信用户集合 - */ - public List selectAbucoderWxuserList(AbucoderWxuser abucoderWxuser); - - /** - * 新增微信用户 - * - * @param abucoderWxuser 微信用户 - * @return 结果 - */ - public int insertAbucoderWxuser(AbucoderWxuser abucoderWxuser); - - /** - * 修改微信用户 - * - * @param abucoderWxuser 微信用户 - * @return 结果 - */ - public int updateAbucoderWxuser(AbucoderWxuser abucoderWxuser); - - /** - * 批量删除微信用户 - * - * @param ids 需要删除的微信用户主键集合 - * @return 结果 - */ - public int deleteAbucoderWxuserByIds(Long[] ids); - - /** - * 删除微信用户信息 - * - * @param id 微信用户主键 - * @return 结果 - */ - public int deleteAbucoderWxuserById(Long id); - - /** - * 通过OpenID查询微信用户信息 - * @param openid - * @return - */ - public AbucoderWxuser selectAbucoderWxuserOpenID(String openid); -} diff --git a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/service/impl/AbucoderWxuserServiceImpl.java b/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/service/impl/AbucoderWxuserServiceImpl.java deleted file mode 100644 index e5318e3..0000000 --- a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwx/service/impl/AbucoderWxuserServiceImpl.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.ruoyi.abuwx.service.impl; - -import java.util.List; -import com.ruoyi.common.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ruoyi.abuwx.mapper.AbucoderWxuserMapper; -import com.ruoyi.abuwx.domain.AbucoderWxuser; -import com.ruoyi.abuwx.service.IAbucoderWxuserService; - -/** - * 微信用户Service业务层处理 - * - * @author 阿卜Coder QQ932696181 - * @date 2022-06-26 - */ -@Service -public class AbucoderWxuserServiceImpl implements IAbucoderWxuserService -{ - @Autowired - private AbucoderWxuserMapper abucoderWxuserMapper; - - /** - * 查询微信用户 - * - * @param id 微信用户主键 - * @return 微信用户 - */ - @Override - public AbucoderWxuser selectAbucoderWxuserById(Long id) - { - return abucoderWxuserMapper.selectAbucoderWxuserById(id); - } - - /** - * 查询微信用户列表 - * - * @param abucoderWxuser 微信用户 - * @return 微信用户 - */ - @Override - public List selectAbucoderWxuserList(AbucoderWxuser abucoderWxuser) - { - return abucoderWxuserMapper.selectAbucoderWxuserList(abucoderWxuser); - } - - /** - * 新增微信用户 - * - * @param abucoderWxuser 微信用户 - * @return 结果 - */ - @Override - public int insertAbucoderWxuser(AbucoderWxuser abucoderWxuser) - { - abucoderWxuser.setCreateTime(DateUtils.getNowDate()); - return abucoderWxuserMapper.insertAbucoderWxuser(abucoderWxuser); - } - - /** - * 修改微信用户 - * - * @param abucoderWxuser 微信用户 - * @return 结果 - */ - @Override - public int updateAbucoderWxuser(AbucoderWxuser abucoderWxuser) - { - abucoderWxuser.setUpdateTime(DateUtils.getNowDate()); - return abucoderWxuserMapper.updateAbucoderWxuser(abucoderWxuser); - } - - /** - * 批量删除微信用户 - * - * @param ids 需要删除的微信用户主键 - * @return 结果 - */ - @Override - public int deleteAbucoderWxuserByIds(Long[] ids) - { - return abucoderWxuserMapper.deleteAbucoderWxuserByIds(ids); - } - - /** - * 删除微信用户信息 - * - * @param id 微信用户主键 - * @return 结果 - */ - @Override - public int deleteAbucoderWxuserById(Long id) - { - return abucoderWxuserMapper.deleteAbucoderWxuserById(id); - } - - /** - * 通过OpenID查询微信用户信息 - * @param openid - * @return - */ - @Override - public AbucoderWxuser selectAbucoderWxuserOpenID(String openid) { - return abucoderWxuserMapper.selectAbucoderWxuserOpenID(openid); - } -} diff --git a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwxapi/WxLoginController.java b/ruoyi-abuwx/src/main/java/com/ruoyi/abuwxapi/WxLoginController.java deleted file mode 100644 index 6e7497e..0000000 --- a/ruoyi-abuwx/src/main/java/com/ruoyi/abuwxapi/WxLoginController.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.ruoyi.abuwxapi; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.ruoyi.abuwx.domain.AbucoderWxuser; -import com.ruoyi.abuwx.service.IAbucoderWxuserService; -import com.ruoyi.common.config.RuoYiConfig; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.file.FileUploadUtils; -import com.ruoyi.common.utils.file.FileUtils; -import com.ruoyi.common.utils.http.HttpUtils; -import com.ruoyi.framework.config.ServerConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -@RestController -@RequestMapping("/wxapi/") -public class WxLoginController { - private static final Logger log = LoggerFactory.getLogger(WxLoginController.class); - @Autowired - private IAbucoderWxuserService iAbucoderWxuserService; - - @Autowired - private ServerConfig serverConfig; - - /** - * 你自己的微信小程序APPID - */ - - private final static String AppID = "你自己的微信小程序APPID"; - /** - * 你自己的微信APP密钥 - */ - private final static String AppSecret = "你自己的微信APP密钥"; - - /** - * 登录时获取的 code(微信官方提供的临时凭证) - * @param object - * @return - */ - @PostMapping("/wxlogin") - public AjaxResult wxLogin(@RequestBody JSONObject object){ - //微信官方提供的微信小程序登录授权时使用的URL地址 - String url = "https://api.weixin.qq.com/sns/jscode2session"; - log.info("微信登录,传入参数:"+object); - /** - * 拼接需要的参数 - * appid = AppID 你自己的微信小程序APPID - * js_code = AppSecret 你自己的微信APP密钥 - * grant_type=authorization_code = code 微信官方提供的临时凭证 - */ - String params = StrUtil.format("appid={}&secret={}&js_code={}&grant_type=authorization_code", AppID, AppSecret, object.get("code")); - //开始发起网络请求,若依管理系统自带网络请求工具,直接使用即可 - String res = HttpUtils.sendGet(url,params); - JSONObject jsonObject = JSON.parseObject(res); - String openid = (String) jsonObject.get("openid"); - if (StrUtil.isEmpty(openid)) { - return AjaxResult.error("未获取到openid"); - } - /**先通过openid来查询是否存在*/ - AbucoderWxuser abucoderWxuser = iAbucoderWxuserService.selectAbucoderWxuserOpenID(openid); - if (abucoderWxuser == null){ - /**如果不存在就插入到我们的数据库里*/ - AbucoderWxuser wxuser = new AbucoderWxuser(); - wxuser.setOpenid(openid); - wxuser.setCreateTime(DateUtils.getNowDate()); - iAbucoderWxuserService.insertAbucoderWxuser(wxuser); - /**返回结果集到前段*/ - return AjaxResult.success(wxuser); - }else { - /**返回结果集到前段*/ - return AjaxResult.success(abucoderWxuser); - } - } - - @PostMapping("/upload") - @ResponseBody - public AjaxResult uploadFile(MultipartFile file) throws Exception - { - System.out.println(file); - try - { - // 上传文件路径 - String filePath = RuoYiConfig.getUploadPath(); - // 上传并返回新文件名称 - String fileName = FileUploadUtils.upload(filePath, file); - String url = serverConfig.getUrl() + fileName; - AjaxResult ajax = AjaxResult.success(); - ajax.put("url", url); - ajax.put("fileName", fileName); - ajax.put("newFileName", FileUtils.getName(fileName)); - ajax.put("originalFilename", file.getOriginalFilename()); - return ajax; - } - catch (Exception e) - { - return AjaxResult.error(e.getMessage()); - } - } - - /** - * 保存昵称与头像信息到用户信息里 - * @param object - * @return - */ - @PostMapping("/saveUserInfo") - @ResponseBody - public AjaxResult saveUserInfo(@RequestBody JSONObject object){ - System.out.println(object); - AbucoderWxuser abucoderWxuser = iAbucoderWxuserService.selectAbucoderWxuserOpenID(String.valueOf(object.get("openid"))); - if (StringUtils.hasLength(String.valueOf(object.get("nickName")))){ - abucoderWxuser.setNickname(String.valueOf(object.get("nickName"))); - abucoderWxuser.setCreateBy(String.valueOf(object.get("nickName"))); - } - if (StringUtils.hasLength(String.valueOf(object.get("avatarUrl")))){ - abucoderWxuser.setAvatar(String.valueOf(object.get("avatarUrl"))); - } - abucoderWxuser.setUpdateTime(DateUtils.getNowDate()); - iAbucoderWxuserService.updateAbucoderWxuser(abucoderWxuser); - //返回前段需要的数据 - return AjaxResult.success(abucoderWxuser); - } - -} diff --git a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderBannersMapper.xml b/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderBannersMapper.xml deleted file mode 100644 index b4dd303..0000000 --- a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderBannersMapper.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, banner_title, banner_url, banner_img, create_by, create_time, update_by, update_time, remark from abucoder_banners - - - - - - - - insert into abucoder_banners - - banner_title, - banner_url, - banner_img, - create_by, - create_time, - update_by, - update_time, - remark, - - - #{bannerTitle}, - #{bannerUrl}, - #{bannerImg}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{remark}, - - - - - update abucoder_banners - - banner_title = #{bannerTitle}, - banner_url = #{bannerUrl}, - banner_img = #{bannerImg}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - remark = #{remark}, - - where id = #{id} - - - - delete from abucoder_banners where id = #{id} - - - - delete from abucoder_banners where id in - - #{id} - - - \ No newline at end of file diff --git a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderItemsMapper.xml b/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderItemsMapper.xml deleted file mode 100644 index 944b6dd..0000000 --- a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderItemsMapper.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, item_name, item_desc, item_content, create_by, create_time, update_by, update_time, remark from abucoder_items - - - - - - - - insert into abucoder_items - - item_name, - item_desc, - item_content, - create_by, - create_time, - update_by, - update_time, - remark, - - - #{itemName}, - #{itemDesc}, - #{itemContent}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{remark}, - - - - - update abucoder_items - - item_name = #{itemName}, - item_desc = #{itemDesc}, - item_content = #{itemContent}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - remark = #{remark}, - - where id = #{id} - - - - delete from abucoder_items where id = #{id} - - - - delete from abucoder_items where id in - - #{id} - - - \ No newline at end of file diff --git a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderProgramsMapper.xml b/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderProgramsMapper.xml deleted file mode 100644 index c65334d..0000000 --- a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderProgramsMapper.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - select id, program_name, program_tag, program_img, program_content, create_by, create_time, update_by, update_time, remark from abucoder_programs - - - - - - - - insert into abucoder_programs - - program_name, - program_tag, - program_img, - program_content, - create_by, - create_time, - update_by, - update_time, - remark, - - - #{programName}, - #{programTag}, - #{programImg}, - #{programContent}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{remark}, - - - - - update abucoder_programs - - program_name = #{programName}, - program_tag = #{programTag}, - program_img = #{programImg}, - program_content = #{programContent}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - remark = #{remark}, - - where id = #{id} - - - - delete from abucoder_programs where id = #{id} - - - - delete from abucoder_programs where id in - - #{id} - - - \ No newline at end of file diff --git a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderWxappConfigMapper.xml b/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderWxappConfigMapper.xml deleted file mode 100644 index 8e365ee..0000000 --- a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderWxappConfigMapper.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, appid, app_secret, state, create_by, create_time, update_by, update_time, remark from abucoder_wxapp_config - - - - - - - - - insert into abucoder_wxapp_config - - appid, - app_secret, - state, - create_by, - create_time, - update_by, - update_time, - remark, - - - #{appid}, - #{appSecret}, - #{state}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{remark}, - - - - - update abucoder_wxapp_config - - appid = #{appid}, - app_secret = #{appSecret}, - state = #{state}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - remark = #{remark}, - - where id = #{id} - - - - delete from abucoder_wxapp_config where id = #{id} - - - - delete from abucoder_wxapp_config where id in - - #{id} - - - \ No newline at end of file diff --git a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderWxuserMapper.xml b/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderWxuserMapper.xml deleted file mode 100644 index 7232fbe..0000000 --- a/ruoyi-abuwx/src/main/resources/mapper/abuwx/AbucoderWxuserMapper.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - select id, nickname, avatar, openid, gender, create_by, create_time, update_by, update_time, remark from abucoder_wxuser - - - - - - - - - insert into abucoder_wxuser - - nickname, - avatar, - openid, - gender, - create_by, - create_time, - update_by, - update_time, - remark, - - - #{nickname}, - #{avatar}, - #{openid}, - #{gender}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{remark}, - - - - - update abucoder_wxuser - - nickname = #{nickname}, - avatar = #{avatar}, - openid = #{openid}, - gender = #{gender}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - remark = #{remark}, - - where id = #{id} - - - - delete from abucoder_wxuser where id = #{id} - - - - delete from abucoder_wxuser where id in - - #{id} - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java index dfbaab3..38297c8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java @@ -16,6 +16,8 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; /** @@ -33,6 +35,8 @@ public class SysOssController extends BaseController @PostMapping("/upload") public AjaxResult upload(@RequestParam("file") MultipartFile file) throws Exception { + LocalDateTime now = LocalDateTime.now(); + String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); if (file.isEmpty()) { throw new OssException("上传文件不能为空"); @@ -48,7 +52,7 @@ public class SysOssController extends BaseController ossEntity.setFileSuffix(suffix); ossEntity.setCreateBy(SecurityUtils.getUsername()); ossEntity.setFileName(fileName); - ossEntity.setCreateTime(new Date()); + ossEntity.setCreateTime(formattedDate); ossEntity.setService(storage.getService()); return toAjax(sysOssService.save(ossEntity)).put("url", ossEntity.getUrl()).put("fileName",ossEntity.getFileName()); } diff --git a/ruoyi-admin/src/main/resources/application-local.yml b/ruoyi-admin/src/main/resources/application-local.yml index d25e787..5214637 100644 --- a/ruoyi-admin/src/main/resources/application-local.yml +++ b/ruoyi-admin/src/main/resources/application-local.yml @@ -59,11 +59,32 @@ spring: wall: config: multi-statement-allow: true + redis: + # 地址 + host: 124.243.245.42 + # 端口,默认为6379 + port: 5379 + # 数据库索引 + database: 5 + # 密码 + password: ZKR2024@@.com + # 连接超时时间 + timeout: 10s + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 0 + # 连接池中的最大空闲连接 + max-idle: 8 + # 连接池的最大数据库连接数 + max-active: 8 + # #连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms # easy-es easy-es: enable: true banner: false - address: 127.0.0.1 + address: 124.243.245.42:9200 global-config: process-index-mode: manual db-config: diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index feb412f..24ad9af 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -52,7 +52,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: dev + active: local # 文件上传 servlet: multipart: diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCommonController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCommonController.java index 4afc17e..ed9bfdd 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCommonController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCommonController.java @@ -1,6 +1,5 @@ package com.ruoyi.cms.controller.app; -import com.ruoyi.cms.domain.AppUser; import com.ruoyi.cms.domain.BussinessDictData; import com.ruoyi.cms.domain.CommercialArea; import com.ruoyi.cms.domain.SubwayLine; @@ -8,22 +7,17 @@ import com.ruoyi.cms.service.*; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.TreeSelect; -import com.ruoyi.common.core.domain.entity.JobTitle; -import com.ruoyi.common.core.domain.entity.SysDictData; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import static com.ruoyi.common.utils.PageUtils.startPage; - @RestController @RequestMapping("/app/common") @Api(tags = "移动端:常用参数查询") @@ -73,6 +67,7 @@ public class AppCommonController extends BaseController { List dictData = iBussinessDictTypeService.selectDictDataByType(dictType); return success(dictData); } + @ApiOperation("字段标准") @GetMapping("/standar/filed") public AjaxResult standarFiled() { diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCompanyController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCompanyController.java index ec64e90..1a55f9a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCompanyController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppCompanyController.java @@ -1,7 +1,6 @@ package com.ruoyi.cms.controller.app; -import com.ruoyi.cms.domain.BussinessDictData; import com.ruoyi.cms.domain.Company; import com.ruoyi.cms.domain.CompanyCard; import com.ruoyi.cms.domain.query.LabelQuery; @@ -9,16 +8,14 @@ import com.ruoyi.cms.mapper.CompanyCardMapper; import com.ruoyi.cms.service.ICompanyCardService; import com.ruoyi.cms.service.ICompanyCollectionService; import com.ruoyi.cms.service.ICompanyService; -import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.BussinessLog; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.core.page.TableSupport; 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.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -46,7 +43,6 @@ public class AppCompanyController extends BaseController * 获取公司详细信息 */ @ApiOperation("获取公司详细信息") - @PreAuthorize("@ss.hasPermi('bussiness:company:query')") @GetMapping(value = "/{companyId}") public AjaxResult getInfo(@PathVariable("companyId") Long companyId) { @@ -55,7 +51,7 @@ public class AppCompanyController extends BaseController /** * 用户收藏公司 */ - @Log(title = "用户收藏公司") + @BussinessLog(title = "用户收藏公司") @PostMapping("/collection/{companyId}") @ApiOperation("用户收藏公司") public AjaxResult companyCollection(@PathVariable("companyId") Long companyId) @@ -66,7 +62,7 @@ public class AppCompanyController extends BaseController /** * 用户取消收藏公司 */ - @Log(title = "用户取消收藏公司") + @BussinessLog(title = "用户取消收藏公司") @DeleteMapping("/collection/{companyId}") @ApiOperation("用户取消收藏公司") public AjaxResult companyCancel(@PathVariable("companyId") Long companyId) @@ -76,7 +72,6 @@ public class AppCompanyController extends BaseController /** * 公司下的岗位 */ - @Log(title = "公司下的岗位") @GetMapping("/job/{companyId}") @ApiOperation("公司下的岗位") public TableDataInfo jobCompany(@ApiParam("公司id") @PathVariable Long companyId) @@ -84,7 +79,6 @@ public class AppCompanyController extends BaseController startPage(); return getDataTable(companyCollectionService.jobCompany(companyId)); } - @Log(title = "查看企业卡片") @GetMapping("/card") @ApiOperation("查看企业卡片") public TableDataInfo card() @@ -92,7 +86,7 @@ public class AppCompanyController extends BaseController startPage(); return getDataTable(companyCardService.cardApp()); } - @Log(title = "收藏企业卡片") + @BussinessLog(title = "收藏企业卡片") @PutMapping("/card/collection/{companyCardId}") @ApiOperation("收藏企业卡片") public AjaxResult cardCollection(@PathVariable Long companyCardId) @@ -100,7 +94,7 @@ public class AppCompanyController extends BaseController companyCardService.cardCollection(companyCardId); return success(); } - @Log(title = "取消收藏企业卡片") + @BussinessLog(title = "取消收藏企业卡片") @DeleteMapping("/card/collection/{companyCardId}") @ApiOperation("取消收藏公司卡片") public AjaxResult cardCancel(@PathVariable Long companyCardId) @@ -108,7 +102,6 @@ public class AppCompanyController extends BaseController companyCardService.cardCancel(companyCardId); return success(); } - @Log(title = "公司招聘的岗位数量") @GetMapping("/count/{companyId}") @ApiOperation("公司招聘的岗位数量") public AjaxResult count(@PathVariable Long companyId) @@ -116,24 +109,28 @@ public class AppCompanyController extends BaseController Integer count = companyService.count(companyId); return success(count); } - @Log(title = "公司标签下的公司") @GetMapping("/label") @ApiOperation("公司标签下的公司") - public TableDataInfo label(LabelQuery labelQuery) + public TableDataInfo label(@RequestBody LabelQuery labelQuery) { CompanyCard companyCard = companyCardMapper.selectById(labelQuery.getCardId()); startPage(); List companyList = companyService.label(companyCard,labelQuery); return getDataTable(companyList); } - @GetMapping("/importLabel500") - public void importLabel() + @PostMapping("/register") + @ApiOperation("招聘企业登记") + @BussinessLog(title = "招聘企业登记") + public AjaxResult register(Company company) { - companyService.importLabel(); + companyService.register(company); + return AjaxResult.success(); } - @GetMapping("/importLabelBank") - public void importLabelBank() + @GetMapping("/register/status") + @ApiOperation("招聘企业登记进度查询") + public AjaxResult registerStatus() { - companyService.importLabelBank(); + Company status = companyService.registerStatus(); + return AjaxResult.success(status); } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java index b7040bd..8bfad01 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java @@ -4,7 +4,7 @@ package com.ruoyi.cms.controller.app; import com.ruoyi.cms.domain.JobFair; import com.ruoyi.cms.service.IFairCollectionService; import com.ruoyi.cms.service.IJobFairService; -import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.BussinessLog; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; @@ -33,7 +33,7 @@ public class AppFairController extends BaseController /** * 招聘会列表 */ - @Log(title = "招聘会列表") + @BussinessLog(title = "招聘会列表") @GetMapping public TableDataInfo list(JobFair jobFair) { @@ -45,7 +45,7 @@ public class AppFairController extends BaseController /** * 招聘会详情 */ - @Log(title = "招聘会详情") + @BussinessLog(title = "招聘会详情") @GetMapping("/{fairId}") public AjaxResult appDetail(@ApiParam("招聘会id") @PathVariable Long fairId) { @@ -55,7 +55,7 @@ public class AppFairController extends BaseController /** * 用户收藏招聘会 */ - @Log(title = "用户收藏招聘会") + @BussinessLog(title = "用户收藏招聘会") @PostMapping("/collection/{fairId}") public AjaxResult companyCollection(@ApiParam("招聘会id") @PathVariable Long fairId) { @@ -65,7 +65,7 @@ public class AppFairController extends BaseController /** * 用户取消收藏招聘会 */ - @Log(title = "用户取消收藏招聘会") + @BussinessLog(title = "用户取消收藏招聘会") @DeleteMapping("/collection/{fairId}") public AjaxResult companyCancel(@ApiParam("招聘会id") @PathVariable Long fairId) { diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java index 44e0b35..f05317c 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java @@ -1,6 +1,7 @@ package com.ruoyi.cms.controller.app; import com.ruoyi.cms.service.IFileService; +import com.ruoyi.common.annotation.BussinessLog; import com.ruoyi.common.core.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -14,6 +15,7 @@ import org.springframework.web.multipart.MultipartFile; public class AppFileController { @Autowired private IFileService fileService; + @BussinessLog(title = "上传文件") @PostMapping("/upload") public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam(value = "bussinessId",required = false) Long bussinessId) { return fileService.uploadFile(file,bussinessId); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppJobController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppJobController.java index 26f9733..d5f6d77 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppJobController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppJobController.java @@ -3,12 +3,10 @@ package com.ruoyi.cms.controller.app; import com.ruoyi.cms.domain.ESJobDocument; import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.query.ESJobSearch; -import com.ruoyi.cms.domain.vo.CompetitivenessResponse; -import com.ruoyi.cms.domain.vo.RadarChart; import com.ruoyi.cms.service.IESJobSearchService; import com.ruoyi.cms.service.IJobCollectionService; import com.ruoyi.cms.service.IJobService; -import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.BussinessLog; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; @@ -18,8 +16,8 @@ import io.swagger.annotations.ApiParam; import org.dromara.easyes.core.biz.EsPageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import java.util.*; + +import java.util.List; /** * 岗位Controller @@ -39,37 +37,28 @@ public class AppJobController extends BaseController @Autowired private IESJobSearchService esJobSearchService; - private Calendar calendar = Calendar.getInstance(); - private Date date = new Date(); - { - calendar.set(Calendar.YEAR, 2025); // 设置年份 - calendar.set(Calendar.MONTH, Calendar.JULY); // 设置月份(7月) - calendar.set(Calendar.DAY_OF_MONTH, 12); // 设置日期 - date = calendar.getTime(); // 转换为Date对象 -} - /** * 查询岗位列表 */ @ApiOperation("查询岗位列表") @GetMapping("/list") - public TableDataInfo list(ESJobSearch job, HttpServletRequest request) + public TableDataInfo list(ESJobSearch job) { - // 打印请求参数 - System.out.println("Request Parameters:"); - request.getParameterMap().forEach((key, value) -> { - System.out.println(key + " = " + String.join(", ", value)); - }); - // 打印请求头 - System.out.println("Request Headers:"); - Enumeration headerNames = request.getHeaderNames(); - Iterator iterator = Collections.list(headerNames).iterator(); - iterator.forEachRemaining(headerName -> { - System.out.println(headerName + " = " + request.getHeader(headerName)); - }); EsPageInfo list = jobService.appList(job); - return getTableDataInfo(list); + return getTableDataInfo2(list,job); } + + private TableDataInfo getTableDataInfo2(EsPageInfo list, ESJobSearch job) { + long total = list.getTotal(); + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(200); + rspData.setRows(list.getList()); + rspData.setTotal(total > 200 ? 200 : total); + job.setCompany(null); + rspData.setData(job); + return rspData; + } + /** * 获取5条推荐岗位 */ @@ -78,12 +67,9 @@ public class AppJobController extends BaseController public AjaxResult recommend(ESJobSearch esJobSearch) { List jobList = jobService.recommend(esJobSearch); - for (ESJobDocument esJobDocument:jobList){ - esJobDocument.setPostingDate(date); - } return success(jobList); } - @ApiOperation("获取littleVideo") + @ApiOperation("获取短视频") @GetMapping("/littleVideo") public AjaxResult littleVideo(ESJobSearch esJobSearch) { @@ -91,21 +77,13 @@ public class AppJobController extends BaseController return success(jobList); } - @ApiOperation("获取littleVideo") + @ApiOperation("随机获取短视频") @GetMapping("/littleVideo/random") public AjaxResult littleVideo(@RequestParam(required = true) String uuid,@RequestParam(required = false) Integer count,@RequestParam(required = false) String jobTitle) { List jobList = jobService.littleVideoRandom(uuid,count,jobTitle); return success(jobList); } - /** - * 获取5条推荐岗位 - */ - @GetMapping("/updateLon") - public void updateLon() - { - jobService.updateLon(); - } /** * 附件工作 */ @@ -115,9 +93,6 @@ public class AppJobController extends BaseController { EsPageInfo list = esJobSearchService.nearJob(jobQuery); List jobList = list.getList(); - for (ESJobDocument esJobDocument:jobList){ - esJobDocument.setPostingDate(date); - } list.setList(jobList); return getTableDataInfo(list); } @@ -130,9 +105,6 @@ public class AppJobController extends BaseController { EsPageInfo list = jobService.countyJobList(job); List jobList = list.getList(); - for (ESJobDocument esJobDocument:jobList){ - esJobDocument.setPostingDate(date); - } list.setList(jobList); return getTableDataInfo(list); } @@ -145,9 +117,6 @@ public class AppJobController extends BaseController { EsPageInfo list = jobService.subway(jobQuery); List jobList = list.getList(); - for (ESJobDocument esJobDocument:jobList){ - esJobDocument.setPostingDate(date); - } list.setList(jobList); return getTableDataInfo(list); } @@ -161,9 +130,6 @@ public class AppJobController extends BaseController { EsPageInfo list = jobService.commercialArea(jobQuery); List jobList = list.getList(); - for (ESJobDocument esJobDocument:jobList){ - esJobDocument.setPostingDate(date); - } list.setList(jobList); return getTableDataInfo(list); } @@ -175,14 +141,13 @@ public class AppJobController extends BaseController public AjaxResult getInfo(@PathVariable("jobId") Long jobId) { Job job = jobService.selectJobByJobIdApp(jobId); - job.setPostingDate(date); return success(job); } /** * 用户收藏岗位 */ - @Log(title = "用户收藏岗位") + @BussinessLog(title = "用户收藏岗位") @PostMapping("/collection/{jobId}") @ApiOperation("用户收藏") public AjaxResult jobCollection(@ApiParam("岗位id") @PathVariable Long jobId) @@ -193,7 +158,7 @@ public class AppJobController extends BaseController /** * 用户取消收藏岗位 */ - @Log(title = "用户取消收藏岗位") + @BussinessLog(title = "用户取消收藏岗位") @DeleteMapping("/collection/{jobId}") @ApiOperation("用户取消收藏岗位") public AjaxResult cancel(@ApiParam("岗位id") @PathVariable Long jobId) @@ -203,38 +168,17 @@ public class AppJobController extends BaseController /** * 用户申请岗位 */ - @Log(title = "用户申请岗位") + @BussinessLog(title = "用户申请岗位") @GetMapping("/apply/{jobId}") @ApiOperation("用户申请岗位") public AjaxResult apply(@ApiParam("岗位id") @PathVariable Long jobId) { return toAjax(jobCollectionService.apply(jobId)); } - @Log(title = "竞争力分析") @GetMapping("/competitiveness/{jobId}") @ApiOperation("竞争力分析") public AjaxResult competitiveness(@ApiParam("岗位id") @PathVariable Long jobId) { - // Generate random values for the response - Random random = new Random(); - - // Build radar chart with random values between 60-95 - RadarChart radarChart = new RadarChart(); - radarChart.setAge(60 + random.nextInt(36)); // 60-95 - radarChart.setExperience(60 + random.nextInt(36)); - radarChart.setEducation(60 + random.nextInt(36)); - radarChart.setSkill(60 + random.nextInt(36)); - radarChart.setSalary(60 + random.nextInt(36)); - radarChart.setLocation(60 + random.nextInt(36)); - - // Build response with random values - CompetitivenessResponse response = new CompetitivenessResponse(); - response.setTotalApplicants(0); // Always 0 as requested - response.setMatchScore(60 + random.nextInt(41)); // 60-100 - response.setRank(1 + random.nextInt(10)); // 1-10 - response.setPercentile(random.nextInt(101)); // 0-100 - response.setRadarChart(radarChart); - - return success(response); + return success(jobCollectionService.competitiveness(jobId)); } private TableDataInfo getTableDataInfo(EsPageInfo result){ long total = result.getTotal(); @@ -244,45 +188,11 @@ public class AppJobController extends BaseController rspData.setTotal(total > 200 ? 200 : total); return rspData; } - @GetMapping("/import") - public AjaxResult importData() + @BussinessLog(title = "移动端发布岗位") + @PostMapping("/publishJob") + public AjaxResult fix(@RequestBody Job job) { - jobService.importData(); + jobService.publishJob(job); return success(); } - @GetMapping("/importRow") - public AjaxResult importRow() - { - jobService.importRow(); - return success(); - } - @GetMapping("/update") - public AjaxResult update() - { - jobService.updateEs(); - return success(); - } - @PostMapping("/getWechatUrl") - public AjaxResult getWechatUrl(@RequestBody HashMap url) - { - String s = url.get("imgUrl"); - return AjaxResult.success(jobService.getWechatUrl(s)); - } - @PostMapping("/insert") - public AjaxResult insertTemp(@RequestBody Job job) - { - return AjaxResult.success(jobService.insertTemp(job)); - } - @ApiOperation("生成分享的html") - @GetMapping("/htmlGen/{id}") - public AjaxResult htmlGen(@PathVariable(required = true) Long id) - { - String result = jobService.htmlGen(id); - return AjaxResult.success(result); - } - @GetMapping("/fix") - public void fix() - { - jobService.fix(); - } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppNoticeInfoController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppNoticeInfoController.java index 55ed43a..6a913a3 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppNoticeInfoController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppNoticeInfoController.java @@ -1,15 +1,12 @@ package com.ruoyi.cms.controller.app; -import com.ruoyi.cms.domain.AppUser; import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.Notice; -import com.ruoyi.cms.domain.vo.AppNoticeVO; import com.ruoyi.cms.service.IAppNoticeService; +import com.ruoyi.common.annotation.BussinessLog; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.page.PageDomain; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.utils.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -17,8 +14,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -import static com.ruoyi.common.utils.PageUtils.startPage; - @RestController @RequestMapping("/app/notice") @Api(tags = "移动端:消息") @@ -43,6 +38,7 @@ public class AppNoticeInfoController extends BaseController { } @ApiOperation("系统通知已读") @PostMapping("/read/sysNotice") + @BussinessLog(title = "系统通知标记已读") public AjaxResult sysNotice(@RequestParam String id) { appNoticeService.sysNotice(id); @@ -50,6 +46,7 @@ public class AppNoticeInfoController extends BaseController { } @ApiOperation("岗位推荐、招聘会已读") @PostMapping("/read") + @BussinessLog(title = "岗位推荐、招聘会已读标记已读") public AjaxResult read(@RequestParam String id) { appNoticeService.read(id); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppScriptController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppScriptController.java new file mode 100644 index 0000000..bdc1461 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppScriptController.java @@ -0,0 +1,61 @@ +package com.ruoyi.cms.controller.app; + +import com.ruoyi.cms.service.ICompanyService; +import com.ruoyi.cms.service.IJobService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 岗位Controller + * + * @author lishundong + * @date 2024-09-03 + */ +@RestController +@RequestMapping("/app/script") +@Api(tags = "移动端:脚本") +public class AppScriptController extends BaseController +{ + @Autowired + private IJobService jobService; + @Autowired + private ICompanyService companyService; + //更新经纬度 + @GetMapping("/updateLon") + public void updateLon() + { + jobService.updateLon(); + } + //导入数据 + @GetMapping("/import") + public AjaxResult importData() + { + jobService.importData(); + return success(); + } + //导入原始数据 + @GetMapping("/importRow") + public AjaxResult importRow(@RequestParam String path) + { + jobService.importRow(path); + return success(); + } + // 导入500强 + @GetMapping("/importLabel500") + public void importLabel() + { + companyService.importLabel(); + } + // 随机导入3个公司到银行标签 + @GetMapping("/importLabelBank") + public void importLabelBank() + { + companyService.importLabelBank(); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppSpeechController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppSpeechController.java new file mode 100644 index 0000000..d1f9776 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppSpeechController.java @@ -0,0 +1,37 @@ +package com.ruoyi.cms.controller.app; + +import com.alibaba.nls.client.AccessToken; +import com.ruoyi.cms.handler.SpeechRecognizerAI; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * app语音Controller + * + * @author lishundong + * @date 2024-09-03 + */ +@RestController +@RequestMapping("/app/speech") +@Api(tags = "移动端:用户相关") +public class AppSpeechController extends BaseController +{ + private String appKey = "4lFYn2yPsQymwGu8"; + private String id = "LTAI5t9hhSqdDHqwH3RjgyYj"; + private String secret = "ni5aW3vxrWouMwcGqJPfh9Uu56PBuv"; + private String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1"); + @ApiOperation("统计") + @GetMapping("/getToken") + public AjaxResult getToken() + { + SpeechRecognizerAI recognizerDemo = new SpeechRecognizerAI(appKey, id, secret, url); + AccessToken accessToken = recognizerDemo.getAccessToken(); + String token = "wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1?appkey="+appKey+"&token="+accessToken.getToken(); + return AjaxResult.success(token); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppUserController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppUserController.java index 9a85baf..d8ed998 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppUserController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppUserController.java @@ -6,6 +6,7 @@ import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.JobFair; import com.ruoyi.cms.domain.query.MineJobQuery; import com.ruoyi.cms.service.*; +import com.ruoyi.common.annotation.BussinessLog; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; @@ -46,6 +47,7 @@ public class AppUserController extends BaseController */ @ApiOperation("保存简历") @PostMapping("/resume") + @BussinessLog(title = "保存简历") public AjaxResult saveResume(@RequestBody AppUser appUser) { appUser.setUserId(SecurityUtils.getUserId()); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/BussinessOperlogController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/BussinessOperlogController.java index a74eb71..ec89663 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/BussinessOperlogController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/BussinessOperlogController.java @@ -24,7 +24,7 @@ import java.util.List; */ @RestController @RequestMapping("/cms/operlog") -@Api(tags = "后台:App用户日志") +@Api(tags = "后台:App用户操作日志") public class BussinessOperlogController extends BaseController { @Autowired diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java index c8c4b84..ddaabc3 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java @@ -61,7 +61,7 @@ public class CmsJobController extends BaseController * 导出岗位列表 */ @ApiOperation("导出岗位列表") - @PreAuthorize("@ss.hasPermi('app:job:export')") + @PreAuthorize("@ss.hasPermi('bussiness:job:export')") @Log(title = "岗位", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, Job job) @@ -74,7 +74,7 @@ public class CmsJobController extends BaseController * 新增岗位 */ @ApiOperation("新增岗位") - @PreAuthorize("@ss.hasPermi('app:job:add')") + @PreAuthorize("@ss.hasPermi('bussiness:job:add')") @Log(title = "岗位", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody Job job) @@ -86,7 +86,7 @@ public class CmsJobController extends BaseController * 修改岗位 */ @ApiOperation("修改岗位") - @PreAuthorize("@ss.hasPermi('app:job:edit')") + @PreAuthorize("@ss.hasPermi('bussiness:job:edit')") @Log(title = "岗位", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody Job job) @@ -98,32 +98,22 @@ public class CmsJobController extends BaseController * 删除岗位 */ @ApiOperation("删除岗位") - @PreAuthorize("@ss.hasPermi('app:job:remove')") + @PreAuthorize("@ss.hasPermi('bussiness:job:remove')") @Log(title = "岗位", businessType = BusinessType.DELETE) @DeleteMapping("/{jobIds}") public AjaxResult remove(@PathVariable Long[] jobIds) { return toAjax(jobService.deleteJobByJobIds(jobIds)); } + @ApiOperation("候选人查询") @Log(title = "岗位", businessType = BusinessType.DELETE) @GetMapping("/candidates") + @PreAuthorize("@ss.hasPermi('bussiness:job:candidates')") public TableDataInfo candidates(Long jobId) { startPage(); List list = jobService.candidates(jobId); return getDataTable(list); } - @GetMapping("/import") - public AjaxResult importData() - { - jobService.importData(); - return success(); - } - @GetMapping("/importRow") - public AjaxResult importRow() - { - jobService.importRow(); - return success(); - } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppNotice.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppNotice.java index 1e21dfa..730eb5f 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppNotice.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppNotice.java @@ -1,103 +1,42 @@ package com.ruoyi.cms.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.xss.Xss; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; -/** - * 通知公告表 sys_notice - * - * @author ruoyi - */ +@Data +@ApiModel("APP通知") +@TableName(value = "app_notice") public class AppNotice extends BaseEntity { + @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 公告ID */ + @TableId(value = "notice_id",type = IdType.AUTO) + @ApiModelProperty("公司id") private Long noticeId; - /** 公告标题 */ + @Xss(message = "消息标题不能包含脚本字符") + @NotBlank(message = "消息标题不能为空") + @Size(min = 0, max = 50, message = "消息标题不能超过50个字符") private String noticeTitle; - /** 公告类型(1通知 2公告) */ + @ApiModelProperty("消息类型") private String noticeType; - /** 公告内容 */ + @ApiModelProperty("消息内容") private String noticeContent; - /** 公告状态(0正常 1关闭) */ + @ApiModelProperty("消息状态 0正常 1关闭") private String status; - public Long getNoticeId() - { - return noticeId; - } - - public void setNoticeId(Long noticeId) - { - this.noticeId = noticeId; - } - - public void setNoticeTitle(String noticeTitle) - { - this.noticeTitle = noticeTitle; - } - - @Xss(message = "公告标题不能包含脚本字符") - @NotBlank(message = "公告标题不能为空") - @Size(min = 0, max = 50, message = "公告标题不能超过50个字符") - public String getNoticeTitle() - { - return noticeTitle; - } - - public void setNoticeType(String noticeType) - { - this.noticeType = noticeType; - } - - public String getNoticeType() - { - return noticeType; - } - - public void setNoticeContent(String noticeContent) - { - this.noticeContent = noticeContent; - } - - public String getNoticeContent() - { - return noticeContent; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getStatus() - { - return status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("noticeId", getNoticeId()) - .append("noticeTitle", getNoticeTitle()) - .append("noticeType", getNoticeType()) - .append("noticeContent", getNoticeContent()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppReviewJob.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppReviewJob.java index b185ebb..5c78277 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppReviewJob.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppReviewJob.java @@ -1,16 +1,15 @@ package com.ruoyi.cms.domain; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import com.ruoyi.common.annotation.Excel; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** * 用户岗位浏览记录对象 app_review_job * @author ${author} @@ -26,14 +25,15 @@ public class AppReviewJob extends BaseEntity @TableId(value = "id",type = IdType.AUTO) private Long id; + @ApiModelProperty("用户id") private Long userId; + @ApiModelProperty("岗位id") private Long jobId; - /** 浏览日期 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "浏览日期", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("浏览日期") - private Date reviewDate; + private String reviewDate; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppUser.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppUser.java index 795fd56..e22c815 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppUser.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/AppUser.java @@ -26,78 +26,63 @@ public class AppUser extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 用户ID */ @TableId(value = "user_id",type = IdType.AUTO) @ApiModelProperty("用户ID") private Long userId; - /** 用户名称 */ @Excel(name = "用户名称") @ApiModelProperty("用户名称") private String name; - /** 年龄段 对应字典age */ @Excel(name = "年龄段 对应字典age") @ApiModelProperty("年龄段 对应字典age") private String age; - /** 用户性别(0男 1女)对应字典sex */ @Excel(name = "用户性别", readConverterExp = "0=男,1=女") @ApiModelProperty("用户性别(0男 1女)对应字典sex") private String sex; - /** 生日 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("生日") private Date birthDate; - /** 学历 对应字典education */ @Excel(name = "学历 对应字典education") @ApiModelProperty("学历 对应字典education") private String education; - /** 政治面貌 */ @Excel(name = "政治面貌") @ApiModelProperty("政治面貌") private String politicalAffiliation; - /** 手机号码 */ @Excel(name = "手机号码") @ApiModelProperty("手机号码") private String phone; - /** 头像地址 */ @Excel(name = "头像地址") @ApiModelProperty("头像地址") private String avatar; - /** 最低工资 */ @Excel(name = "最低工资") @ApiModelProperty("最低工资") private String salaryMin; - /** 最高工资 */ @Excel(name = "最高工资") @ApiModelProperty("最高工资") private String salaryMax; - /** 期望工作地 对应字典area */ @Excel(name = "期望工作地 对应字典area") @ApiModelProperty("期望工作地 对应字典area") private String area; - /** 帐号状态(0正常 1停用) */ @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用") @ApiModelProperty("帐号状态(0正常 1停用)") private String status; - /** 最后登录IP */ @Excel(name = "最后登录IP") @ApiModelProperty("最后登录IP") private String loginIp; - /** 最后登录时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("最后登录时间") @@ -105,10 +90,14 @@ public class AppUser extends BaseEntity @ApiModelProperty("期望岗位,逗号分隔") private String jobTitleId; + @ApiModelProperty("期望薪资") private String experience; + @ApiModelProperty("是否开启推荐(0不推荐 1推荐)") private Integer isRecommend; + @TableField(exist = false) + @ApiModelProperty("期望岗位列表") private List jobTitle; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictData.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictData.java index 3f47830..21d2094 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictData.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictData.java @@ -1,177 +1,69 @@ package com.ruoyi.cms.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; -import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; -/** - * 字典数据表 sys_dict_data - * - * @author ruoyi - */ + +@Data +@ApiModel("业务数据表") +@TableName(value = "bussiness_dict_data") public class BussinessDictData extends BaseEntity { + @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 字典编码 */ + @ApiModelProperty("字典编码") @Excel(name = "字典编码", cellType = ColumnType.NUMERIC) + @TableId(value = "dict_code",type = IdType.AUTO) private Long dictCode; - /** 字典排序 */ + @ApiModelProperty("字典排序") @Excel(name = "字典排序", cellType = ColumnType.NUMERIC) private Long dictSort; - /** 字典标签 */ @Excel(name = "字典标签") + @ApiModelProperty("字典标签") + @NotBlank(message = "字典标签不能为空") + @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符") private String dictLabel; - /** 字典键值 */ @Excel(name = "字典键值") + @ApiModelProperty("字典键值") + @NotBlank(message = "字典键值不能为空") + @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符") private String dictValue; - /** 字典类型 */ + @ApiModelProperty("字典类型") @Excel(name = "字典类型") + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符") private String dictType; - /** 样式属性(其他样式扩展) */ + @ApiModelProperty("样式属性(其他样式扩展)") + @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") private String cssClass; - /** 表格字典样式 */ + @ApiModelProperty("表格字典样式") + @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") private String listClass; - /** 是否默认(Y是 N否) */ + @ApiModelProperty("是否默认(Y是 N否)") @Excel(name = "是否默认", readConverterExp = "Y=是,N=否") private String isDefault; - /** 状态(0正常 1停用) */ + @ApiModelProperty("状态 0=正常,1=停用 ") @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; - public Long getDictCode() - { - return dictCode; - } - - public void setDictCode(Long dictCode) - { - this.dictCode = dictCode; - } - - public Long getDictSort() - { - return dictSort; - } - - public void setDictSort(Long dictSort) - { - this.dictSort = dictSort; - } - - @NotBlank(message = "字典标签不能为空") - @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符") - public String getDictLabel() - { - return dictLabel; - } - - public void setDictLabel(String dictLabel) - { - this.dictLabel = dictLabel; - } - - @NotBlank(message = "字典键值不能为空") - @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符") - public String getDictValue() - { - return dictValue; - } - - public void setDictValue(String dictValue) - { - this.dictValue = dictValue; - } - - @NotBlank(message = "字典类型不能为空") - @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符") - public String getDictType() - { - return dictType; - } - - public void setDictType(String dictType) - { - this.dictType = dictType; - } - - @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") - public String getCssClass() - { - return cssClass; - } - - public void setCssClass(String cssClass) - { - this.cssClass = cssClass; - } - - public String getListClass() - { - return listClass; - } - - public void setListClass(String listClass) - { - this.listClass = listClass; - } - - public boolean getDefault() - { - return UserConstants.YES.equals(this.isDefault); - } - - public String getIsDefault() - { - return isDefault; - } - - public void setIsDefault(String isDefault) - { - this.isDefault = isDefault; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("dictCode", getDictCode()) - .append("dictSort", getDictSort()) - .append("dictLabel", getDictLabel()) - .append("dictValue", getDictValue()) - .append("dictType", getDictType()) - .append("cssClass", getCssClass()) - .append("listClass", getListClass()) - .append("isDefault", getIsDefault()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictType.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictType.java index 34fe65d..e18f14a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictType.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessDictType.java @@ -1,20 +1,20 @@ package com.ruoyi.cms.domain; +import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.core.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; +import io.swagger.annotations.ApiModel; +import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; -/** - * 字典类型表 sys_dict_type - * - * @author ruoyi - */ + +@Data +@ApiModel("字典类型表") +@TableName(value = "bussiness_dict_type") public class BussinessDictType extends BaseEntity { private static final long serialVersionUID = 1L; @@ -25,73 +25,19 @@ public class BussinessDictType extends BaseEntity /** 字典名称 */ @Excel(name = "字典名称") + @NotBlank(message = "字典名称不能为空") + @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符") private String dictName; /** 字典类型 */ @Excel(name = "字典类型") + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符") + @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)") private String dictType; /** 状态(0正常 1停用) */ @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; - public Long getDictId() - { - return dictId; - } - - public void setDictId(Long dictId) - { - this.dictId = dictId; - } - - @NotBlank(message = "字典名称不能为空") - @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符") - public String getDictName() - { - return dictName; - } - - public void setDictName(String dictName) - { - this.dictName = dictName; - } - - @NotBlank(message = "字典类型不能为空") - @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符") - @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)") - public String getDictType() - { - return dictType; - } - - public void setDictType(String dictType) - { - this.dictType = dictType; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("dictId", getDictId()) - .append("dictName", getDictName()) - .append("dictType", getDictType()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessOperLog.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessOperLog.java index 497e688..d813ec6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessOperLog.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/BussinessOperLog.java @@ -24,92 +24,75 @@ public class BussinessOperLog extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 日志主键 */ @TableId(value = "oper_id",type = IdType.AUTO) @ApiModelProperty("日志主键") private Long operId; - /** 模块标题 */ @Excel(name = "模块标题") @ApiModelProperty("模块标题") private String title; - /** 业务类型(0其它 1新增 2修改 3删除) */ @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除") @ApiModelProperty("业务类型(0其它 1新增 2修改 3删除)") private Integer businessType; - /** 方法名称 */ @Excel(name = "方法名称") @ApiModelProperty("方法名称") private String method; - /** 请求方式 */ @Excel(name = "请求方式") @ApiModelProperty("请求方式") private String requestMethod; - /** 操作类别(0其它 1后台用户 2手机端用户) */ @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户") @ApiModelProperty("操作类别(0其它 1后台用户 2手机端用户)") private Integer operatorType; - /** 操作人员 */ @Excel(name = "操作人员") @ApiModelProperty("操作人员") private String operName; - /** 部门名称 */ @Excel(name = "部门名称") @ApiModelProperty("部门名称") private String deptName; - /** 请求URL */ @Excel(name = "请求URL") @ApiModelProperty("请求URL") private String operUrl; - /** 主机地址 */ @Excel(name = "主机地址") @ApiModelProperty("主机地址") private String operIp; - /** 操作地点 */ @Excel(name = "操作地点") @ApiModelProperty("操作地点") private String operLocation; - /** 请求参数 */ @Excel(name = "请求参数") @ApiModelProperty("请求参数") private String operParam; - /** 返回参数 */ @Excel(name = "返回参数") @ApiModelProperty("返回参数") private String jsonResult; - /** 操作状态(0正常 1异常) */ @Excel(name = "操作状态", readConverterExp = "0=正常,1=异常") @ApiModelProperty("操作状态(0正常 1异常)") private Integer status; - /** 错误消息 */ @Excel(name = "错误消息") @ApiModelProperty("错误消息") private String errorMsg; - /** 操作时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("操作时间") private Date operTime; - /** 消耗时间 */ @Excel(name = "消耗时间") @ApiModelProperty("消耗时间") private Long costTime; - /** 业务类型数组 */ + @ApiModelProperty("业务类型数组") private Integer[] businessTypes; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CommercialArea.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CommercialArea.java index c4ae16d..02210f0 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CommercialArea.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CommercialArea.java @@ -23,26 +23,24 @@ public class CommercialArea extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "commercial_area_id",type = IdType.AUTO) @ApiModelProperty("id") private Long commercialAreaId; - /** 商圈名称 */ @Excel(name = "商圈名称") @ApiModelProperty("商圈名称") private String commercialAreaName; - /** 纬度 */ @Excel(name = "纬度") @ApiModelProperty("纬度") private BigDecimal latitude; - /** 经度 */ @Excel(name = "经度") @ApiModelProperty("经度") private BigDecimal longitude; + @Excel(name = "地址") + @ApiModelProperty("地址") private String address; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java index 63a2476..19b98ba 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java @@ -22,42 +22,69 @@ public class Company extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 公司id */ @TableId(value = "company_id",type = IdType.AUTO) @ApiModelProperty("公司id") private Long companyId; - /** 单位名称 */ @Excel(name = "单位名称") @ApiModelProperty("单位名称") private String name; - /** 单位地点 */ @Excel(name = "单位地点") @ApiModelProperty("单位地点") private String location; - /** 主要行业 */ @Excel(name = "主要行业") @ApiModelProperty("主要行业") private String industry; - /** 单位规模 对应字典scale */ @Excel(name = "单位规模 对应字典scale") @ApiModelProperty("单位规模 对应字典scale") private String scale; + @Excel(name = "信用代码") @ApiModelProperty("信用代码") private String code; + @Excel(name = "单位介绍") @ApiModelProperty("单位介绍") private String description; + @Excel(name = "性质") @ApiModelProperty("性质") private String nature; + @ApiModelProperty("招聘数量") private Integer totalRecruitment; + @TableField(exist = false) @ApiModelProperty("是否收藏") private Integer isCollection; + + @ApiModelProperty("所属用户id") + private Long userId; + + @ApiModelProperty("营业执照Url") + private String businessLicenseUrl; + + @ApiModelProperty("法人身份证复印件-正面") + private String idCardPictureUrl; + + @ApiModelProperty("法人身份证复印件-反面") + private String idCardPictureBackUrl; + + @ApiModelProperty("授权代理书") + private String powerOfAttorneyUrl; + + @ApiModelProperty("联系人") + private String contactPerson; + + @ApiModelProperty("联系人电话") + private String contactPersonPhone; + + @ApiModelProperty("审核状态 0审核中 1审核通过 2审核未通过") + private Integer status; + + @ApiModelProperty("审核未通过原因") + private String notPassReason; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCard.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCard.java index 29b0105..08fc357 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCard.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCard.java @@ -22,29 +22,33 @@ public class CompanyCard extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 公司id */ @TableId(value = "company_card_id",type = IdType.AUTO) - @ApiModelProperty("公司id") + @ApiModelProperty("公司卡片id") private Long companyCardId; - /** 卡片名称 */ @Excel(name = "卡片名称") @ApiModelProperty("卡片名称") private String name; - /** 标签,逗号分开 */ @Excel(name = "标签,逗号分开") @ApiModelProperty("标签,逗号分开") private String targ; + @Excel(name = "企业性质") @ApiModelProperty("企业性质,逗号分开") private String companyNature; - /** 背景色 */ + @Excel(name = "背景色") @ApiModelProperty("背景色") private String backgroudColor; + + @ApiModelProperty("状态 0未发布 1发布") private Integer status; + + @ApiModelProperty("排序") private Integer cardOrder; + + @ApiModelProperty("描述") private String description; - private String icon; + } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCardCollection.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCardCollection.java index 3f80fa1..053cf53 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCardCollection.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCardCollection.java @@ -22,16 +22,16 @@ public class CompanyCardCollection extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 公司id */ @TableId(value = "company_card_collection_id",type = IdType.AUTO) @ApiModelProperty("公司id") private Long companyCardCollectionId; - /** 用户id */ + @Excel(name = "用户id") @ApiModelProperty("用户id") private Long userId; - @Excel(name = "用户id") - @ApiModelProperty("用户id") + + @Excel(name = "公司卡片id") + @ApiModelProperty("公司卡片id") private Long companyCardId; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCollection.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCollection.java index 739f605..97d030d 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCollection.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyCollection.java @@ -22,17 +22,14 @@ public class CompanyCollection extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "id",type = IdType.AUTO) @ApiModelProperty("id") private Long id; - /** 公司id */ @Excel(name = "公司id") @ApiModelProperty("公司id") private Long companyId; - /** App用户id */ @Excel(name = "App用户id") @ApiModelProperty("App用户id") private Long userId; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyLabel.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyLabel.java index b428b99..825ea4d 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyLabel.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/CompanyLabel.java @@ -26,8 +26,10 @@ public class CompanyLabel extends BaseEntity @TableId(value = "id",type = IdType.AUTO) private Long id; + @ApiModelProperty("公司标签") private String dictValue; + @ApiModelProperty("公司id") private Long companyId; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ESJobDocument.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ESJobDocument.java index 0c9d667..5130122 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ESJobDocument.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ESJobDocument.java @@ -2,6 +2,7 @@ package com.ruoyi.cms.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.dromara.easyes.annotation.IndexField; import org.dromara.easyes.annotation.IndexId; @@ -16,104 +17,126 @@ import java.util.Date; /** * 全文索引 ES数据模型 **/ -@IndexName("job_document_gt") +@IndexName("job_document") @Data public class ESJobDocument { - /** - * es中的唯一id - */ + + @ApiModelProperty("es中的唯一id") @IndexId(type = IdType.NONE) @JsonIgnore private String id; - /** 公告ID */ + @ApiModelProperty("岗位id") private Long jobId; - /** 公告标题 */ + @ApiModelProperty("公告标题") @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD) private String jobTitle; - /** 内容 */ + @ApiModelProperty("内容") @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD) private String description; - /** 公告状态 */ - @JsonIgnore - private String status; - + @ApiModelProperty("最小薪资(元)") private Long minSalary; - /** 最大薪资(元) */ + @ApiModelProperty("最大薪资(元)") private Long maxSalary; - /** 学历要求 对应字典education */ + @ApiModelProperty("学历要求 对应字典education") private String education; - /** 工作经验要求 对应字典experience */ + @ApiModelProperty("工作经验要求 对应字典experience") private String experience; - /** 用人单位名称 */ + @ApiModelProperty("用人单位名称") private String companyName; - /** 工作地点 */ + @ApiModelProperty("工作地点") private String jobLocation; + @ApiModelProperty("工作地点区县字典代码") private Integer jobLocationAreaCode; - /** 发布时间 */ @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty("发布时间") private Date postingDate; - /** 招聘人数 */ + @ApiModelProperty("招聘人数") private Long vacancies; - /** 纬度 */ + @ApiModelProperty("纬度") private BigDecimal latitude; - /** 经度 */ + @ApiModelProperty("经度") private BigDecimal longitude; - /** 浏览量 */ + @ApiModelProperty("浏览量") private Long view; - /** 公司id */ + @ApiModelProperty("公司id") private Long companyId; + @ApiModelProperty("是否火") private Integer isHot; + @ApiModelProperty("申请次数") private Integer applyNum; + @JsonIgnore + @ApiModelProperty("公司") private Company company; + @ApiModelProperty("是否申请 0为否 1为是") private Integer isApply; + @ApiModelProperty("是否收藏 0为否 1为是") private Integer isCollection; + @ApiModelProperty("数据来源") private String dataSource; + @ApiModelProperty("岗位链接") private String jobUrl; + @JsonIgnore @IndexField(fieldType = FieldType.GEO_POINT) + @ApiModelProperty("经纬度") private String latAndLon; + @JsonIgnore + @ApiModelProperty("公司规模") private String scaleDictCode; + @ApiModelProperty("行业分类") private String industry; + @ApiModelProperty("岗位分类") private String jobCategory; + @JsonIgnore + @ApiModelProperty("学历要求 对应字典education int类型 es方便查询") private Integer education_int; @JsonIgnore + @ApiModelProperty("工作经验要求 对应字典experience int类型 es方便查询") private Integer experience_int; -// @JsonIgnore + + @ApiModelProperty("公司规模 int类型 es方便查询") private Integer scale; + @ApiModelProperty("岗位链接 APP内") private String appJobUrl; + @ApiModelProperty("公司性质") private String companyNature; + @ApiModelProperty("是否有视频介绍") private Integer isExplain; + + @ApiModelProperty("视频介绍URL") private String explainUrl; + + @ApiModelProperty("视频封面URL") private String cover; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCollection.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCollection.java index 6881f5b..9ef1748 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCollection.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCollection.java @@ -23,17 +23,14 @@ public class FairCollection extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "id",type = IdType.AUTO) @ApiModelProperty("id") private Long id; - /** 岗位id */ @Excel(name = "招聘会id") @ApiModelProperty("招聘会id") private Long fairId; - /** App用户id */ @Excel(name = "App用户id") @ApiModelProperty("App用户id") private Long userId; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCompany.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCompany.java index e5af236..e67a97c 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCompany.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/FairCompany.java @@ -22,17 +22,14 @@ public class FairCompany extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "id",type = IdType.AUTO) @ApiModelProperty("id") private Long id; - /** 公司id */ @Excel(name = "公司id") @ApiModelProperty("公司id") private Long companyId; - /** 招聘会id */ @Excel(name = "招聘会id") @ApiModelProperty("招聘会id") private Long jobFairId; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/File.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/File.java index 2de4338..ad6843a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/File.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/File.java @@ -22,17 +22,14 @@ public class File extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "id",type = IdType.AUTO) @ApiModelProperty("id") private Long id; - /** url */ @Excel(name = "url") @ApiModelProperty("url") private String fileUrl; - /** 业务id */ @Excel(name = "业务id") @ApiModelProperty("业务id") private Long bussinessId; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java index 4a22338..28a38f2 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java @@ -1,18 +1,18 @@ package com.ruoyi.cms.domain; -import java.math.BigDecimal; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.Data; -import com.ruoyi.common.annotation.Excel; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; /** * 岗位对象 job * @author lishundong @@ -26,42 +26,34 @@ public class Job extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 工作id */ @TableId(value = "job_id",type = IdType.AUTO) @ApiModelProperty("工作id") private Long jobId; - /** 职位名称 */ @Excel(name = "职位名称") @ApiModelProperty("职位名称") private String jobTitle; - /** 最小薪资(元) */ @Excel(name = "最小薪资", readConverterExp = "元=") @ApiModelProperty("最小薪资(元)") private Long minSalary; - /** 最大薪资(元) */ @Excel(name = "最大薪资", readConverterExp = "元=") @ApiModelProperty("最大薪资(元)") private Long maxSalary; - /** 学历要求 对应字典education */ @Excel(name = "学历要求 对应字典education") @ApiModelProperty("学历要求 对应字典education") private String education; - /** 工作经验要求 对应字典experience */ @Excel(name = "工作经验要求 对应字典experience") @ApiModelProperty("工作经验要求 对应字典experience") private String experience; - /** 用人单位名称 */ @Excel(name = "用人单位名称") @ApiModelProperty("用人单位名称") private String companyName; - /** 工作地点 */ @Excel(name = "工作地点") @ApiModelProperty("工作地点") private String jobLocation; @@ -69,34 +61,28 @@ public class Job extends BaseEntity @ApiModelProperty("工作地点区县字典代码") private Integer jobLocationAreaCode; - /** 发布时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("发布时间") - private Date postingDate; + private String postingDate; - /** 招聘人数 */ @Excel(name = "招聘人数") @ApiModelProperty("招聘人数") private Long vacancies; - /** 纬度 */ @Excel(name = "纬度") @ApiModelProperty("纬度") private BigDecimal latitude; - /** 经度 */ @Excel(name = "经度") @ApiModelProperty("经度") private BigDecimal longitude; - /** 浏览量 */ @Excel(name = "浏览量") @ApiModelProperty("浏览量") - @TableField("\"VIEW\"") + @TableField("\"view\"") private Long view; - /** 公司id */ @Excel(name = "公司id") @ApiModelProperty("公司id") private Long companyId; @@ -125,24 +111,41 @@ public class Job extends BaseEntity @ApiModelProperty("是否发布 0未发布 1发布") private Integer isPublish; + @ApiModelProperty("数据来源") private String dataSource; - @ApiModelProperty("数据来源") + + @ApiModelProperty("岗位链接") private String jobUrl; + @ApiModelProperty("jobRow对应id") private Long rowId; + @TableField(exist = false) + @ApiModelProperty("公司规模") private String scale; + @TableField(exist = false) + @ApiModelProperty("行业分类") private String industry; + @ApiModelProperty("岗位分类") private String jobCategory; + @TableField(exist = false) + @ApiModelProperty("公司性质") private String companyNature; + @TableField(exist = false) + @ApiModelProperty("申请时间") private String applyTime; + @ApiModelProperty("是否有视频介绍") private Integer isExplain; + + @ApiModelProperty("视频介绍URL") private String explainUrl; + + @ApiModelProperty("视频封面URL") private String cover; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobApply.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobApply.java index ac00d3a..c6818da 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobApply.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobApply.java @@ -22,22 +22,18 @@ public class JobApply extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "id",type = IdType.AUTO) @ApiModelProperty("id") private Long id; - /** 岗位id */ @Excel(name = "岗位id") @ApiModelProperty("岗位id") private Long jobId; - /** App用户id */ @Excel(name = "App用户id") @ApiModelProperty("App用户id") private Long userId; - /** 匹配度 */ @Excel(name = "匹配度") @ApiModelProperty("匹配度") private Long matchingDegree; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobCollection.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobCollection.java index 5f63dde..4a1f6d2 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobCollection.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobCollection.java @@ -1,15 +1,14 @@ package com.ruoyi.cms.domain; -import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.Data; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import com.ruoyi.common.core.domain.BaseEntity; - -import java.util.Date; +import lombok.Data; /** * 用户岗位收藏对象 job_collection @@ -24,17 +23,14 @@ public class JobCollection extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "id",type = IdType.AUTO) @ApiModelProperty("id") private Long id; - /** 岗位id */ @Excel(name = "岗位id") @ApiModelProperty("岗位id") private Long jobId; - /** App用户id */ @Excel(name = "App用户id") @ApiModelProperty("App用户id") private Long userId; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobFair.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobFair.java index 4f889ef..66bbc85 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobFair.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobFair.java @@ -27,56 +27,56 @@ public class JobFair extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** 招聘会id */ @TableId(value = "job_fair_id",type = IdType.AUTO) @ApiModelProperty("招聘会id") private Long jobFairId; - /** 招聘会名称 */ @Excel(name = "招聘会名称") @ApiModelProperty("招聘会名称") private String name; - /** 招聘会类型 对应字典 job_fair_type */ @Excel(name = "招聘会类型 对应字典 job_fair_type") @ApiModelProperty("招聘会类型 对应字典 job_fair_type") private String jobFairType; - /** 地点 */ @Excel(name = "地点") @ApiModelProperty("地点") private String location; - /** 纬度 */ @Excel(name = "纬度") @ApiModelProperty("纬度") private BigDecimal latitude; - /** 经度 */ @Excel(name = "经度") @ApiModelProperty("经度") private BigDecimal longitude; + @ApiModelProperty("描述") private String description; + @ApiModelProperty("地点") private String address; - /** 招聘会开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "招聘会开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("招聘会开始时间") private Date startTime; - /** 招聘会结束时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "招聘会结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("招聘会结束时间") private Date endTime; @TableField(exist = false) + @ApiModelProperty("公司列表") private List companyList; + @TableField(exist = false) @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty("程序时间") private Date queryDate; + @TableField(exist = false) + @ApiModelProperty("是否收藏") public Integer isCollection; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobRecomment.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobRecomment.java index 678cd1f..dbd6a3a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobRecomment.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobRecomment.java @@ -23,17 +23,14 @@ public class JobRecomment extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "id",type = IdType.AUTO) @ApiModelProperty("id") private Long id; - /** 岗位id */ @Excel(name = "岗位id") @ApiModelProperty("岗位id") private Long jobId; - /** App用户id */ @Excel(name = "App用户id") @ApiModelProperty("App用户id") private Long userId; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java index e2a161e..1ac25f6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -17,19 +18,34 @@ public class Notice extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** ID */ @TableId(value = "notice_id",type = IdType.AUTO) private Long noticeId; - /** 公告标题 */ + + @ApiModelProperty("标题") private String title; + + @ApiModelProperty("副标题") private String subTitle; + + @ApiModelProperty("未读数量") private Integer notReadCount; + + @ApiModelProperty("是否阅读") private Integer isRead; + @JsonFormat(pattern = "MM-dd") + @ApiModelProperty("日期") private Date date; + + @ApiModelProperty("通知类型") private String noticeType; - /** 公告内容 */ + + @ApiModelProperty("公告内容") private String noticeContent; + + @ApiModelProperty("用户id") private Long userId; + + @ApiModelProperty("业务id") private Long bussinessId; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/RowWork.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/RowWork.java index 56d10ad..f1a9778 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/RowWork.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/RowWork.java @@ -1,9 +1,11 @@ package com.ruoyi.cms.domain; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; @Data +@TableName(value = "row_work") public class RowWork { private String Id; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Statics.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Statics.java index aa2472c..89d6927 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Statics.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Statics.java @@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; -import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -24,8 +22,12 @@ public class Statics extends BaseEntity /** id */ @TableId(value = "id",type = IdType.AUTO) private Long id; + @ApiModelProperty("时间") private String time; + @ApiModelProperty("类型") private String type; + @ApiModelProperty("名称") private String name; + @ApiModelProperty("数据") private String data; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayLine.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayLine.java index ae3f913..e6a7840 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayLine.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayLine.java @@ -25,12 +25,10 @@ public class SubwayLine extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "line_id",type = IdType.AUTO) @ApiModelProperty("id") private Long lineId; - /** 线路名称 */ @Excel(name = "线路名称") @ApiModelProperty("线路名称") private String lineName; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayStation.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayStation.java index 1fb16c3..c7988c8 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayStation.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/SubwayStation.java @@ -23,37 +23,34 @@ public class SubwayStation extends BaseEntity @TableField(exist = false) private static final long serialVersionUID = 1L; - /** id */ @TableId(value = "station_id",type = IdType.AUTO) @ApiModelProperty("id") private Long stationId; - /** 地铁名称 */ @Excel(name = "地铁名称") @ApiModelProperty("地铁名称") private String stationName; - /** 所属线路名称 */ @Excel(name = "所属线路名称") @ApiModelProperty("所属线路名称") private String lineName; - /** 线路id */ @Excel(name = "线路id") @ApiModelProperty("线路id") private Long lineId; - /** 纬度 */ @Excel(name = "纬度") @ApiModelProperty("纬度") private BigDecimal latitude; - /** 经度 */ @Excel(name = "经度") @ApiModelProperty("经度") private BigDecimal longitude; + @ApiModelProperty("排序") private Integer stationOrder; + + @ApiModelProperty("地址") private String address; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/ESJobSearch.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/ESJobSearch.java index 73a28ee..b14443e 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/ESJobSearch.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/ESJobSearch.java @@ -51,4 +51,7 @@ public class ESJobSearch extends Job private String salaryDictCode; private String scaleDictCode; + + private String area; + } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/Staticsquery.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/Staticsquery.java index c82dd29..6dd20c3 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/Staticsquery.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/query/Staticsquery.java @@ -194,29 +194,5 @@ public class Staticsquery { return Integer.compare(this.quarter, other.quarter); } } -// public static void main(String[] args) { -// // Month example -// Staticsquery monthQuery = new Staticsquery(); -// monthQuery.setTimeDimension("月"); -// monthQuery.setStartTime("2024-01"); -// monthQuery.setEndTime("2024-04"); -// System.out.println(monthQuery.generateTimeRange()); -// // Output: [2024-01, 2024-02, 2024-03, 2024-04] -// -// // Quarter example -// Staticsquery quarterQuery = new Staticsquery(); -// quarterQuery.setTimeDimension("季度"); -// quarterQuery.setStartTime("2023-第四季度"); -// quarterQuery.setEndTime("2024-第二季度"); -// System.out.println(quarterQuery.generateTimeRange()); -// // Output: [2023-第4季度, 2024-第1季度, 2024-第2季度] -// -// // Year example -// Staticsquery yearQuery = new Staticsquery(); -// yearQuery.setTimeDimension("年"); -// yearQuery.setStartTime("2020"); -// yearQuery.setEndTime("2024"); -// System.out.println(yearQuery.generateTimeRange()); -// // Output: [2020, 2021, 2022, 2023, 2024] -// } + } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java index 5b146bd..398afd6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java @@ -17,9 +17,9 @@ public class SpeechRecognitionWebSocketHandler { public SpeechRecognitionWebSocketHandler() { // 初始化语音识别器 - String appKey = "LuvNcrddU3PH8Tau"; - String id = "LTAI5tRBahK93vPNF1JDVEPA"; - String secret = "x95OWb4cV6ccQVtbEJ2Gxm2Uwl2thJ"; + String appKey = "4lFYn2yPsQymwGu8"; + String id = "LTAI5t9hhSqdDHqwH3RjgyYj"; + String secret = "ni5aW3vxrWouMwcGqJPfh9Uu56PBuv"; String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1"); recognizerDemo = new SpeechRecognizerAI(appKey, id, secret, url); } @@ -44,6 +44,7 @@ public class SpeechRecognitionWebSocketHandler { recognizerDemo.processStream(session, new ByteArrayInputStream(audioData), 16000); } + /** * 连接关闭调用的方法 */ diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java index f0f33ab..17b1203 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java @@ -7,23 +7,24 @@ import com.alibaba.nls.client.protocol.SampleRateEnum; import com.alibaba.nls.client.protocol.asr.SpeechRecognizer; import com.alibaba.nls.client.protocol.asr.SpeechRecognizerListener; import com.alibaba.nls.client.protocol.asr.SpeechRecognizerResponse; +import lombok.Data; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.websocket.Session; import java.io.IOException; import java.io.InputStream; - +@Data public class SpeechRecognizerAI { private static final Logger logger = LoggerFactory.getLogger(SpeechRecognizerAI.class); private String appKey; private NlsClient client; - + private AccessToken accessToken; public SpeechRecognizerAI(String appKey, String id, String secret, String url) { this.appKey = appKey; // 获取 AccessToken - AccessToken accessToken = new AccessToken(id, secret); + accessToken = new AccessToken(id, secret); try { accessToken.apply(); // 申请 Token logger.info("Token: {}, Expire Time: {}", accessToken.getToken(), accessToken.getExpireTime()); @@ -114,4 +115,28 @@ public class SpeechRecognizerAI { client.shutdown(); } } + /** + * 获取当前有效的 AccessToken + * + * @param id 阿里云 AccessKey ID + * @param secret 阿里云 AccessKey Secret + * @return 返回申请到的 AccessToken 字符串,失败时返回 null + */ + public static String getAccessToken(String id, String secret) { + try { + AccessToken accessToken = new AccessToken(id, secret); + accessToken.apply(); // 申请 token + + if (accessToken.getToken() != null) { + logger.info("成功获取 Token: {}, 过期时间: {}", accessToken.getToken(), accessToken.getExpireTime()); + return accessToken.getToken(); + } else { + logger.error("get token fail:"+accessToken.getToken()); + return null; + } + } catch (IOException e) { + logger.error("申请 Token 时发生网络错误: {}", e.getMessage()); + return null; + } + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java index 5b0dba2..29fcbbf 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java @@ -18,4 +18,6 @@ public interface AppUserMapper extends BaseMapper * @return APP用户集合 */ public List selectAppUserList(AppUser appUser); + + List selectByJobId(Long jobId); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobApplyMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobApplyMapper.java index 6ead1dd..9c662f9 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobApplyMapper.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobApplyMapper.java @@ -22,7 +22,7 @@ public interface JobApplyMapper extends BaseMapper */ public List selectJobApplyList(JobApply jobApply); - //todo + List applyJob(Long userId); List candidates(Long jobId); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ICompanyService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ICompanyService.java index 500517f..65c8122 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ICompanyService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ICompanyService.java @@ -1,5 +1,6 @@ package com.ruoyi.cms.service; +import java.util.HashMap; import java.util.List; import com.ruoyi.cms.domain.Company; import com.ruoyi.cms.domain.CompanyCard; @@ -68,4 +69,8 @@ public interface ICompanyService void importLabel(); void importLabelBank(); + + void register(Company company); + + Company registerStatus(); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IESJobSearchService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IESJobSearchService.java index f485a83..e109201 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IESJobSearchService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IESJobSearchService.java @@ -63,4 +63,8 @@ public interface IESJobSearchService ESJobDocument selectById(Long jobId); void fix(); + + void updateJob(Long jobId); + + void deleteJob(Long jobId); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobCollectionService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobCollectionService.java index 3b5921d..4dfda81 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobCollectionService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobCollectionService.java @@ -4,6 +4,7 @@ import java.util.List; import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.JobCollection; +import com.ruoyi.cms.domain.vo.CompetitivenessResponse; /** * 用户岗位收藏Service接口 @@ -70,5 +71,5 @@ public interface IJobCollectionService List collectionJob(); - String competitiveness(Long jobId); + CompetitivenessResponse competitiveness(Long jobId); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java index 07a778a..63998ec 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java @@ -78,7 +78,7 @@ public interface IJobService Job selectJobByJobIdApp(Long jobId); - void importRow(); + void importRow(String path); List candidates(Long jobId); @@ -88,13 +88,5 @@ public interface IJobService List littleVideoRandom(String uuid, Integer count,String jobTitle); - void updateEs(); - - AppWechatEntity getWechatUrl(String wechatUrl); - - String insertTemp(Job job); - - String htmlGen(Long id); - - void fix(); + void publishJob(Job job); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppReviewJobServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppReviewJobServiceImpl.java index 5ecd53e..56c5ff7 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppReviewJobServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppReviewJobServiceImpl.java @@ -1,25 +1,20 @@ package com.ruoyi.cms.service.impl; -import java.text.SimpleDateFormat; -import java.util.List; -import java.util.Arrays; -import java.util.stream.Collectors; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.cms.domain.AppReviewJob; -import com.ruoyi.cms.domain.Company; import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.query.MineJobQuery; import com.ruoyi.cms.mapper.AppReviewJobMapper; import com.ruoyi.cms.service.IAppReviewJobService; -import com.ruoyi.cms.service.IJobService; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * 用户岗位浏览记录Service业务层处理 @@ -32,8 +27,7 @@ public class AppReviewJobServiceImpl extends ServiceImpl imple companyLabelMapper.insert(label); }); } + + @Override + public void register(Company company) { + Long userId = SecurityUtils.getUserId(); + company.setUserId(userId); + if(companyMapper.selectCount(Wrappers.lambdaQuery().eq(Company::getName, company.getName()).in(Company::getStatus,Arrays.asList(0,1)))>0){ + throw new ServiceException(company.getName()+"已经存在"); + } + company.setStatus(0); + } + + @Override + public Company registerStatus() { + Long userId = SecurityUtils.getUserId(); + Company company = companyMapper.selectOne(Wrappers.lambdaQuery().eq(Company::getUserId, userId).orderByDesc(Company::getUpdateTime)); + return company; + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java index b75fe0f..0b1b9e6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java @@ -75,7 +75,7 @@ public class ESJobSearchImpl implements IESJobSearchService public void resetTextCache() { logger.info("正在重新刷新es"); // 删除并重新创建索引 - esJobDocumentMapper.deleteIndex("job_document_gt"); + esJobDocumentMapper.deleteIndex("job_document"); esJobDocumentMapper.createIndex(); // 分批次处理数据 @@ -107,14 +107,14 @@ public class ESJobSearchImpl implements IESJobSearchService if(!StringUtil.isEmptyOrNull(job.getExperience())){ esJobDocument.setExperience_int(Integer.valueOf(job.getExperience())); }else { - esJobDocument.setExperience("8"); - esJobDocument.setEducation_int(8); + esJobDocument.setExperience("0"); + esJobDocument.setEducation_int(0); } if(!StringUtil.isEmptyOrNull(job.getEducation())){ esJobDocument.setEducation_int(Integer.valueOf(job.getEducation())); }else { - esJobDocument.setEducation("11"); - esJobDocument.setExperience_int(11); + esJobDocument.setEducation("-1"); + esJobDocument.setExperience_int(-1); } if (esJobDocument.getLatitude() != null) { esJobDocument.setLatAndLon(esJobDocument.getLatitude().toString() + "," + esJobDocument.getLongitude().toString()); @@ -137,37 +137,97 @@ public class ESJobSearchImpl implements IESJobSearchService @Override public List selectTextListExceptJobId(ESJobSearch esJobSearch, List jobIds) { + ESJobSearch newSearch = new ESJobSearch(); + BeanUtils.copyProperties(esJobSearch,newSearch); //查询 if(SecurityUtils.isLogin()){ AppUser appUser = appUserService.selectAppUserByUserId(SecurityUtils.getUserId()); - if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())&&!StringUtil.isEmptyOrNull(esJobSearch.getJobTitle())){ - esJobSearch.setJobTitle(String.join(",", appUser.getJobTitle())); + if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){ + List jobTitle = appUser.getJobTitle(); + newSearch.setJobTitle(String.join(",", jobTitle)); } - if(!StringUtil.isEmptyOrNull(appUser.getEducation())&&!StringUtil.isEmptyOrNull(esJobSearch.getEducation())){ - esJobSearch.setEducation(appUser.getEducation()); + if(!StringUtil.isEmptyOrNull(esJobSearch.getJobTitle())){ + newSearch.setJobTitle(esJobSearch.getJobTitle()); } + if(!StringUtil.isEmptyOrNull(appUser.getEducation())){ + newSearch.setEducation(appUser.getEducation()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getEducation())){ + newSearch.setEducation(esJobSearch.getEducation()); + } + if(!StringUtil.isEmptyOrNull(appUser.getArea())){ - esJobSearch.setJobLocationAreaCode(Integer.valueOf(appUser.getArea())); + newSearch.setArea(appUser.getArea()); } - if(!StringUtil.isEmptyOrNull(appUser.getExperience())&&!StringUtil.isEmptyOrNull(esJobSearch.getExperience())){ - esJobSearch.setExperience(appUser.getExperience()); + if(!StringUtil.isEmptyOrNull(esJobSearch.getArea())){ + newSearch.setArea(esJobSearch.getArea()); + } + if(!StringUtil.isEmptyOrNull(appUser.getExperience())){ + newSearch.setExperience(appUser.getExperience()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getExperience())){ + newSearch.setExperience(esJobSearch.getExperience()); } if(!StringUtil.isEmptyOrNull(appUser.getSalaryMax())){ - esJobSearch.setMaxSalary(Long.valueOf(appUser.getSalaryMax())); + newSearch.setMaxSalary(Long.valueOf(appUser.getSalaryMax())); } if(!StringUtil.isEmptyOrNull(appUser.getSalaryMin())){ - esJobSearch.setMaxSalary(Long.valueOf(appUser.getSalaryMin())); + newSearch.setMinSalary(Long.valueOf(appUser.getSalaryMin())); } } - LambdaEsQueryWrapper wrapper = getWrapper(esJobSearch); - if(!ListUtil.isListEmptyOrNull(jobIds)){ - wrapper.in(ESJobDocument::getJobId, jobIds); - } + LambdaEsQueryWrapper wrapper = getWrapper(newSearch,jobIds); + //todo 暂时 wrapper.limit(esJobSearch.getPageSize()); - wrapper.orderByDesc(ESJobDocument::getCompanyId); - return esJobDocumentMapper.selectList(wrapper); + List esJobDocuments = esJobDocumentMapper.selectList(wrapper); + + if (esJobDocuments.size() < esJobSearch.getPageSize()) { + // 定义要逐步放宽的搜索条件字段 + List relaxConditions = new ArrayList<>(); + relaxConditions.add(() -> newSearch.setArea(null)); + relaxConditions.add(() -> newSearch.setExperience(null)); + relaxConditions.add(() -> newSearch.setMaxSalary(null)); + relaxConditions.add(() -> newSearch.setMinSalary(null)); + relaxConditions.add(() -> newSearch.setEducation(null)); + relaxConditions.add(()-> newSearch.setJobTitle(null)); + // 保存所有查询到的文档 + List allDocuments = new ArrayList<>(esJobDocuments); + + // 记录已经放宽的条件数量 + int relaxedConditions = 0; + + // 继续放宽条件直到满足分页或所有条件都已放宽 + while (allDocuments.size() < esJobSearch.getPageSize() + && relaxedConditions < relaxConditions.size()) { + // 放宽下一个条件 + relaxConditions.get(relaxedConditions).run(); + relaxedConditions++; + + // 查询新增的文档(不包含之前已经查询到的) + wrapper = getWrapper(newSearch, jobIds); + wrapper.limit(esJobSearch.getPageSize() - allDocuments.size()); + if (!allDocuments.isEmpty()) { + // 排除已经查询到的文档ID + Set existingIds = allDocuments.stream() + .map(ESJobDocument::getId) + .collect(Collectors.toSet()); + wrapper.not().in(ESJobDocument::getId, existingIds); + } + + List newDocuments = esJobDocumentMapper.selectList(wrapper); + allDocuments.addAll(newDocuments); + } + + // 如果总数超过分页大小,截取所需数量 + if (allDocuments.size() > esJobSearch.getPageSize()) { + esJobDocuments = allDocuments.subList(0, esJobSearch.getPageSize()); + } else { + esJobDocuments = allDocuments; + } + } + + return esJobDocuments; } @@ -221,7 +281,7 @@ public class ESJobSearchImpl implements IESJobSearchService public EsPageInfo nearJob(ESJobSearch jobQuery) { Integer pageNum = jobQuery.getCurrent(); Integer pageSize = jobQuery.getPageSize(); - LambdaEsQueryWrapper wrapper = getWrapper(jobQuery); + LambdaEsQueryWrapper wrapper = getWrapper(jobQuery,null); EsPageInfo esJobDocumentEsPageInfo = esJobDocumentMapper.pageQuery(wrapper, pageNum, pageSize); return esJobDocumentEsPageInfo; } @@ -230,7 +290,7 @@ public class ESJobSearchImpl implements IESJobSearchService public EsPageInfo countyJobList(ESJobSearch jobQuery) { Integer pageNum = jobQuery.getCurrent(); Integer pageSize = jobQuery.getPageSize(); - LambdaEsQueryWrapper wrapper = getWrapper(jobQuery); + LambdaEsQueryWrapper wrapper = getWrapper(jobQuery, null); if(jobQuery.getCountyIds()!=null){ wrapper.and(x->x.in(ESJobDocument::getJobLocationAreaCode,jobQuery.getCountyIds())); } @@ -242,7 +302,7 @@ public class ESJobSearchImpl implements IESJobSearchService public EsPageInfo subway(ESJobSearch jobQuery) { Integer pageNum = jobQuery.getCurrent(); Integer pageSize = jobQuery.getPageSize(); - LambdaEsQueryWrapper wrapper = getWrapper(jobQuery); + LambdaEsQueryWrapper wrapper = getWrapper(jobQuery,null); EsPageInfo esJobDocumentEsPageInfo = esJobDocumentMapper.pageQuery(wrapper, pageNum, pageSize); return esJobDocumentEsPageInfo; } @@ -251,7 +311,7 @@ public class ESJobSearchImpl implements IESJobSearchService public EsPageInfo commercialArea(ESJobSearch jobQuery) { Integer pageNum = jobQuery.getCurrent(); Integer pageSize = jobQuery.getPageSize(); - LambdaEsQueryWrapper wrapper = getWrapper(jobQuery); + LambdaEsQueryWrapper wrapper = getWrapper(jobQuery,null); if(jobQuery.getLongitude()!=null){ wrapper.geoDistance(ESJobDocument::getLatAndLon,Double.valueOf(jobQuery.getRadius()), DistanceUnit.KILOMETERS,new GeoPoint(Double.parseDouble(jobQuery.getLatitude().toString()), Double.parseDouble(jobQuery.getLongitude().toString()))); } @@ -263,7 +323,6 @@ public class ESJobSearchImpl implements IESJobSearchService public List littleVideo(ESJobSearch esJobSearch) { LambdaEsQueryWrapper wrapper = new LambdaEsQueryWrapper<>(); wrapper.eq(ESJobDocument::getIsExplain, 1); - wrapper.orderByDesc(ESJobDocument::getIsExplain); wrapper.limit(esJobSearch.getPageSize()); return esJobDocumentMapper.selectList(wrapper); } @@ -297,29 +356,17 @@ public class ESJobSearchImpl implements IESJobSearchService return esJobDocumentMapper.selectList(wrapper); } - private LambdaEsQueryWrapper getWrapper(ESJobSearch esJobSearch){ - List searchList = new ArrayList<>(); - if(!StringUtil.isEmptyOrNull(esJobSearch.getJobTitle())){ - searchList.add(esJobSearch.getJobTitle()); - }else { - if(SecurityUtils.isLogin()){ - AppUser appUser = appUserService.selectAppUserByUserId(SecurityUtils.getUserId()); - List jobTitleList = appUser.getJobTitle(); - if(!jobTitleList.isEmpty()){ - searchList.addAll(jobTitleList); - } - } - } + private LambdaEsQueryWrapper getWrapper(ESJobSearch esJobSearch,List jobIds){ + LambdaEsQueryWrapper wrapper = new LambdaEsQueryWrapper<>(); - if (!searchList.isEmpty()) - { - for (String keyWords:searchList){ - wrapper.or(a -> a.like(ESJobDocument::getJobTitle, keyWords, 5.0f) - .or() - .like(ESJobDocument::getDescription, keyWords, 1.0f) + if(!StringUtil.isEmptyOrNull(esJobSearch.getJobTitle())){ + for (String keyWord:esJobSearch.getJobTitle().split(",")) { + wrapper.and(a -> a.match(ESJobDocument::getJobTitle, keyWord, 5.0f) ); } + } + if(esJobSearch.getLongitude()!=null){ wrapper.geoDistance(ESJobDocument::getLatAndLon,Double.valueOf(esJobSearch.getRadius()), DistanceUnit.KILOMETERS,new GeoPoint(Double.parseDouble(esJobSearch.getLatitude().toString()), Double.parseDouble(esJobSearch.getLongitude().toString()))); } @@ -344,6 +391,10 @@ public class ESJobSearchImpl implements IESJobSearchService Integer maxValue = StringUtil.findMaxValue(esJobSearch.getScale()); wrapper.and(x->x.le(ESJobDocument::getScale,maxValue)); } + if(!StringUtil.isEmptyOrNull(esJobSearch.getArea())){ + List integers = StringUtil.convertStringToIntegerList(esJobSearch.getArea()); + wrapper.and(x->x.in(ESJobDocument::getJobLocationAreaCode,integers)); + } if(Objects.nonNull(esJobSearch.getOrder())){ if(esJobSearch.getOrder()==1){ wrapper.orderByDesc(ESJobDocument::getIsHot); @@ -352,7 +403,9 @@ public class ESJobSearchImpl implements IESJobSearchService wrapper.orderByDesc(ESJobDocument::getPostingDate); } } - //TODO LIST + if(!ListUtil.isListEmptyOrNull(jobIds)){ + wrapper.not().in(ESJobDocument::getJobId, jobIds); + } return wrapper; } @@ -362,6 +415,13 @@ public class ESJobSearchImpl implements IESJobSearchService Integer pageNum = jobQuery.getCurrent(); Integer pageSize = jobQuery.getPageSize(); LambdaEsQueryWrapper wrapper = new LambdaEsQueryWrapper<>(); +// if(SecurityUtils.isLogin()){ +// AppUser appUser = appUserService.selectAppUserByUserId(SecurityUtils.getUserId()); +// if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){ +// List jobTitle = appUser.getJobTitle(); +// jobQuery.setJobTitle(String.join(",", jobTitle)); +// } +// } if(!StringUtil.isEmptyOrNull(jobQuery.getJobTitle())){ wrapper.and(a->a.match(ESJobDocument::getJobTitle,jobQuery.getJobTitle(),5.0f) .or() @@ -370,7 +430,10 @@ public class ESJobSearchImpl implements IESJobSearchService if(!StringUtil.isEmptyOrNull(jobQuery.getEducation())){ wrapper.and(a->a.le(ESJobDocument::getEducation,jobQuery.getEducation())); } - + if(!StringUtil.isEmptyOrNull(jobQuery.getArea())){ + List integers = StringUtil.convertStringToIntegerList(jobQuery.getArea()); + wrapper.and(x->x.in(ESJobDocument::getJobLocationAreaCode,integers)); + } if(!StringUtil.isEmptyOrNull(jobQuery.getExperience())){ wrapper.and(a->a.le(ESJobDocument::getExperience,jobQuery.getExperience())); } @@ -430,7 +493,51 @@ public class ESJobSearchImpl implements IESJobSearchService for (ESJobDocument esJobDocument : esJobDocuments) { Job job = new Job(); BeanUtils.copyProperties(esJobDocument,job); + job.setJobId(null); jobMapper.insert(job); } } + + @Override + public void deleteJob(Long jobId) { + LambdaEsQueryWrapper lambdaEsQueryWrapper = new LambdaEsQueryWrapper(); + lambdaEsQueryWrapper.eq(ESJobDocument::getJobId,jobId); + esJobDocumentMapper.delete(lambdaEsQueryWrapper); + } + + @Override + public void updateJob(Long jobId) { + ESJobDocument esJobDocument = new ESJobDocument(); + Job job = jobMapper.selectById(jobId); + + BeanUtils.copyBeanProp(esJobDocument, job); + esJobDocument.setAppJobUrl("https://ks.zhaopinzao8dian.com/app#/packageA/pages/post/post?jobId="+ Base64.getEncoder().encodeToString(String.valueOf(job.getJobId()).getBytes())); + if(!StringUtil.isEmptyOrNull(job.getScale())){ + esJobDocument.setScale(Integer.valueOf(job.getScale())); + }else { + esJobDocument.setScale(0); + } + if(!StringUtil.isEmptyOrNull(job.getExperience())){ + esJobDocument.setExperience_int(Integer.valueOf(job.getExperience())); + }else { + esJobDocument.setExperience("0"); + esJobDocument.setExperience_int(0); + } + if(!StringUtil.isEmptyOrNull(job.getEducation())){ + esJobDocument.setEducation_int(Integer.valueOf(job.getEducation())); + }else { + esJobDocument.setEducation("-1"); + esJobDocument.setEducation_int(-1); + } + if (esJobDocument.getLatitude() != null) { + esJobDocument.setLatAndLon(esJobDocument.getLatitude().toString() + "," + esJobDocument.getLongitude().toString()); + } + if(StringUtil.isEmptyOrNull(job.getCompanyNature())){ + esJobDocument.setCompanyNature("6"); + } + LambdaEsQueryWrapper lambdaEsQueryWrapper = new LambdaEsQueryWrapper(); + lambdaEsQueryWrapper.eq(ESJobDocument::getJobId,job.getJobId()); + esJobDocumentMapper.delete(lambdaEsQueryWrapper); + esJobDocumentMapper.insert(esJobDocument); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java index 36043db..3f33709 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java @@ -1,21 +1,24 @@ package com.ruoyi.cms.service.impl; -import java.util.List; -import java.util.Arrays; +import java.time.LocalDate; +import java.time.Period; +import java.time.ZoneId; +import java.util.*; import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ruoyi.cms.domain.AppUser; -import com.ruoyi.cms.domain.Job; -import com.ruoyi.cms.domain.JobApply; +import com.ruoyi.cms.domain.*; +import com.ruoyi.cms.domain.vo.CompetitivenessResponse; +import com.ruoyi.cms.domain.vo.RadarChart; import com.ruoyi.cms.mapper.AppUserMapper; import com.ruoyi.cms.mapper.JobApplyMapper; +import com.ruoyi.cms.mapper.JobMapper; +import com.ruoyi.cms.service.IBussinessDictTypeService; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import com.ruoyi.cms.mapper.JobCollectionMapper; -import com.ruoyi.cms.domain.JobCollection; import com.ruoyi.cms.service.IJobCollectionService; import org.springframework.transaction.annotation.Transactional; @@ -34,6 +37,10 @@ public class JobCollectionServiceImpl extends ServiceImpl appUsers = appUserMapper.selectByJobId(jobId); + Long applyCount = (long) appUsers.size(); + + if (appUsers.isEmpty()) { + // 没有人申请,返回默认值或0 + CompetitivenessResponse emptyResponse = new CompetitivenessResponse(); + emptyResponse.setTotalApplicants(0); + emptyResponse.setMatchScore(0); + emptyResponse.setRank(0); + emptyResponse.setPercentile(0); + RadarChart radarChart = new RadarChart(); + emptyResponse.setRadarChart(radarChart); + return emptyResponse; + } + + // ================== 数据字典映射(用于排序比较)================== + // 假设你有字典工具类,如 DictUtils.getSort("education", value) 返回排序值 + // 这里我们用 Map 模拟字典排序(越小要求越低) + // 获取字典数据 + List educationDict = iBussinessDictTypeService.selectDictDataByType("education"); + List experienceDict = iBussinessDictTypeService.selectDictDataByType("experience"); + + // 构建学历排序映射:dictLabel -> dictSort(越小要求越低) + Map educationRank = educationDict.stream() + .collect(Collectors.toMap( + BussinessDictData::getDictLabel, + data -> Math.toIntExact(data.getDictSort()), + (a, b) -> a // 若有重复 key,保留第一个 + )); + + Map experienceRank = experienceDict.stream() + .collect(Collectors.toMap( + BussinessDictData::getDictLabel, + data -> Math.toIntExact(data.getDictSort()), + (a, b) -> a + )); + + // ================== 提取岗位要求 ================== + Integer jobEducationRank = educationRank.getOrDefault(job.getEducation(), 999); + Integer jobExperienceRank = experienceRank.getOrDefault(job.getExperience(), 999); + Integer jobMinSalary = job.getMinSalary() != null ? job.getMinSalary().intValue() : 0; + String jobLocation = job.getJobLocation(); + + // ================== 聚合用户数据用于分析 ================== + List userScores = new ArrayList<>(); + + for (AppUser user : appUsers) { + int matchScore = 0; + int totalFactors = 6; // 年龄、经验、学历、技能(暂用期望岗位匹配)、薪资、地点 + + // 1. 学历匹配(越接近越好) + Integer userEduRank = educationRank.getOrDefault(user.getEducation(), 999); + if (userEduRank <= jobEducationRank) { + matchScore += 1; // 达标 + } else if (userEduRank == jobEducationRank + 1) { + matchScore += 0.5; // 略高也算匹配 + } + + // 2. 经验匹配 + Integer userExpRank = experienceRank.getOrDefault(user.getExperience(), 999); + if (userExpRank >= jobExperienceRank) { + matchScore += 1; // 满足经验要求 + } + + // 3. 薪资匹配(用户期望 <= 岗位最大薪资,且不低于最小太多) + Integer userMinSalary = parseSalary(user.getSalaryMin()); + if (userMinSalary != null && userMinSalary <= job.getMaxSalary()) { + if (userMinSalary >= job.getMinSalary()) { + matchScore += 1; + } else if (userMinSalary >= job.getMinSalary() * 0.8) { + matchScore += 0.5; + } + } + + // 4. 地点匹配 + if (user.getArea() != null && user.getArea().contains(jobLocation) || jobLocation.contains(user.getArea())) { + matchScore += 1; + } + + // 5. 年龄估算(从生日计算) + int userAge = getUserAge(user.getBirthDate()); + // 假设最佳年龄区间为 22-35,越接近越匹配 + if (userAge >= 22 && userAge <= 35) { + matchScore += 1; + } else if (userAge >= 18 && userAge <= 45) { + matchScore += 0.5; + } + + // 6. 技能/岗位匹配(简化:期望岗位是否包含该岗位关键词) + boolean jobMatch = user.getJobTitle() != null && + user.getJobTitle().stream().anyMatch(title -> title.contains(job.getJobTitle()) || job.getJobTitle().contains(title)); + if (jobMatch) { + matchScore += 1; + } + + // 匹配度:0-6 → 映射为 0-100 分 + int finalScore = (int) Math.round((matchScore / (double) totalFactors) * 100); + userScores.add(new UserCompetitiveness(user, finalScore)); + } + + // 按匹配度降序 + userScores.sort((a, b) -> Integer.compare(b.getScore(), a.getScore())); + + // ================== 计算雷达图数据(取平均值)================== + RadarChart radarChart = new RadarChart(); + + double avgAgeScore = userScores.stream().mapToInt(u -> getAgeScore(u.getUser().getBirthDate())).average().orElse(0); + double avgExperienceScore = userScores.stream().mapToInt(u -> getExperienceScore(u.getUser().getExperience(), job.getExperience(), experienceRank)).average().orElse(0); + double avgEducationScore = userScores.stream().mapToInt(u -> getEducationScore(u.getUser().getEducation(), job.getEducation(), educationRank)).average().orElse(0); + double avgSkillScore = userScores.stream().mapToInt(u -> getSkillScore(u.getUser(), job)).average().orElse(0); + double avgSalaryScore = userScores.stream().mapToInt(u -> getSalaryScore(u.getUser(), job)).average().orElse(0); + double avgLocationScore = userScores.stream().mapToInt(u -> getLocationScore(u.getUser(), job)).average().orElse(0); + + radarChart.setAge((int) avgAgeScore); + radarChart.setExperience((int) avgExperienceScore); + radarChart.setEducation((int) avgEducationScore); + radarChart.setSkill((int) avgSkillScore); + radarChart.setSalary((int) avgSalaryScore); + radarChart.setLocation((int) avgLocationScore); + + // ================== 返回响应 ================== + CompetitivenessResponse response = new CompetitivenessResponse(); + response.setTotalApplicants(Math.toIntExact(applyCount)); + + // Top 用户的匹配分 + int topMatchScore = userScores.get(0).getScore(); + response.setMatchScore(topMatchScore); + + // 排名(Top1) + response.setRank(1); + + // 百分位:top用户超过多少人?(100%) + response.setPercentile(100); + + response.setRadarChart(radarChart); + + return response; + } + private int getUserAge(Date birthDate) { + if (birthDate == null) return 0; + try { + LocalDate birth = birthDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Period.between(birth, LocalDate.now()).getYears(); + } catch (Exception e) { + return 0; + } + } + private int getEducationScore(String userEdu, String jobEdu, Map rankMap) { + if (userEdu == null || jobEdu == null) return 60; + Integer u = rankMap.getOrDefault(userEdu, 999); + Integer j = rankMap.getOrDefault(jobEdu, 999); + if (u <= j) return 90; + if (u == j + 1) return 75; + return 60; + } + private int getExperienceScore(String userExp, String jobExp, Map rankMap) { + if (userExp == null || jobExp == null) return 60; + Integer u = rankMap.getOrDefault(userExp, 999); + Integer j = rankMap.getOrDefault(jobExp, 999); + if (u >= j) return 90; + if (u >= j - 1) return 75; // 容忍略低一年 + return 60; + } + private int getSalaryScore(AppUser user, Job job) { + Integer min = parseSalary(user.getSalaryMin()); + if (min == null) return 60; + if (job.getMinSalary() == null || job.getMaxSalary() == null) return 60; + + long jobMin = job.getMinSalary(); + long jobMax = job.getMaxSalary(); + + if (min >= jobMin && min <= jobMax) return 90; + if (min >= jobMin * 0.8 && min <= jobMax * 1.2) return 75; + return 60; + } + private int getLocationScore(AppUser user, Job job) { + String area = user.getArea(); + String loc = job.getJobLocation(); + if (area != null && (area.contains(loc) || loc.contains(area))) return 90; + return 60; + } + private int getSkillScore(AppUser user, Job job) { + String jobTitle = job.getJobTitle(); + List userTitles = user.getJobTitle(); + if (jobTitle == null || userTitles == null || userTitles.isEmpty()) return 60; + + boolean match = userTitles.stream() + .anyMatch(title -> title != null && + (title.contains(jobTitle) || jobTitle.contains(title))); + return match ? 90 : 60; + } + private Integer parseSalary(String salaryStr) { + if (salaryStr == null || salaryStr.trim().isEmpty()) return null; + try { + // 提取第一个连续数字 + String numberStr = salaryStr.replaceAll("[^0-9]", ""); + return numberStr.isEmpty() ? null : Integer.parseInt(numberStr); + } catch (Exception e) { + return null; + } + } + private int getAgeScore(Date birthDate) { + int age = getUserAge(birthDate); + if (age == 0) return 60; // 无法获取年龄,默认低分 + if (age >= 22 && age <= 35) return 90; + if (age >= 18 && age <= 45) return 75; + return 60; + } + private static class UserCompetitiveness { + private final AppUser user; + private final int score; + + public UserCompetitiveness(AppUser user, int score) { + this.user = user; + this.score = score; + } + + public AppUser getUser() { + return user; + } + + public int getScore() { + return score; + } } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java index 2fe3279..e1e1d7d 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java @@ -33,6 +33,8 @@ import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -253,12 +255,17 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe @Override public int updateJob(Job job) { + LocalDateTime now = LocalDateTime.now(); + String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + //修改岗位状态 //修改岗位状态 if(job.getIsPublish()!=null) { if(job.getIsPublish()==1){ - job.setPostingDate(new Date()); + job.setPostingDate(formattedDate); + iesJobSearchService.updateJob(job.getJobId()); }else { job.setPostingDate(null); + iesJobSearchService.deleteJob(job.getJobId()); } } return jobMapper.updateById(job); @@ -295,7 +302,6 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe }else { jobList = cacheObject.toList(Long.class); } - //从kafka中消费 bert模型跑出来的结果 //从es中查询 List jobListResult = iesJobSearchService.selectTextListExceptJobId(esJobSearch,jobList); //存入当前session中查看的岗位 避免重复 todo 定时删除 key上保存用户信息 @@ -331,41 +337,36 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe @Override public Job selectJobByJobIdApp(Long jobId) { - try { - Job job = new Job(); - ESJobDocument esJobDocument = iesJobSearchService.selectById(jobId); - BeanUtils.copyProperties(esJobDocument,job); + Job job = jobMapper.selectById(jobId); //查询公司信息 if(Objects.nonNull(job.getCompanyId())){ Company company = companyMapper.selectById(job.getCompanyId()); job.setCompany(company); } -// if(SecurityUtils.isLogin()){ -// //查询申请信息 -// Long applyCount = jobApplyMapper.selectCount(Wrappers.lambdaQuery().eq(JobApply::getJobId, jobId).eq(JobApply::getUserId, SecurityUtils.getUserId())); -// job.setIsApply(applyCount>0?1:0); -// //查询收藏信息 -// Long collectionCount = jobCollectionMapper.selectCount(Wrappers.lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, SecurityUtils.getUserId())); -// job.setIsCollection(collectionCount>0?1:0); -// //todo asyn -// //保存浏览记录 -// List appReviewJobs = appReviewJobMapper.selectList(Wrappers.lambdaQuery().eq(AppReviewJob::getUserId, SecurityUtils.getUserId()).eq(AppReviewJob::getJobId, jobId)); -// //之前相同岗位的记录删除 保存最新的浏览记录 -// if(!appReviewJobs.isEmpty()){ -// appReviewJobMapper.deleteBatchIds(appReviewJobs.stream().map(AppReviewJob::getId).collect(Collectors.toList())); -// } -// AppReviewJob appReviewJob = new AppReviewJob(); -// appReviewJob.setUserId(SecurityUtils.getUserId()); -// appReviewJob.setReviewDate(new Date()); -// appReviewJob.setJobId(jobId); -// appReviewJobMapper.insert(appReviewJob); -// } - //浏览量+1 -// this.view(jobId); + if(SecurityUtils.isLogin()){ + //查询申请信息 + Long applyCount = jobApplyMapper.selectCount(Wrappers.lambdaQuery().eq(JobApply::getJobId, jobId).eq(JobApply::getUserId, SecurityUtils.getUserId())); + job.setIsApply(applyCount>0?1:0); + //查询收藏信息 + Long collectionCount = jobCollectionMapper.selectCount(Wrappers.lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, SecurityUtils.getUserId())); + job.setIsCollection(collectionCount>0?1:0); + //todo asyn + //保存浏览记录 + List appReviewJobs = appReviewJobMapper.selectList(Wrappers.lambdaQuery().eq(AppReviewJob::getUserId, SecurityUtils.getUserId()).eq(AppReviewJob::getJobId, jobId)); + //之前相同岗位的记录删除 保存最新的浏览记录 + if(!appReviewJobs.isEmpty()){ + appReviewJobMapper.deleteBatchIds(appReviewJobs.stream().map(AppReviewJob::getId).collect(Collectors.toList())); + } + AppReviewJob appReviewJob = new AppReviewJob(); + appReviewJob.setUserId(SecurityUtils.getUserId()); + LocalDateTime now = LocalDateTime.now(); + String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + appReviewJob.setReviewDate(formattedDate); + appReviewJob.setJobId(jobId); + appReviewJobMapper.insert(appReviewJob); + } + this.view(jobId); return job; - }catch (Exception e){ - return this.selectJobByJobId(jobId); - } } @@ -398,12 +399,9 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe @Override public List littleVideo(ESJobSearch esJobSearch) { - return iesJobSearchService.littleVideo(esJobSearch); - } - @Override - public void updateEs() { - iesJobSearchService.updateEs(); + return iesJobSearchService.littleVideo(esJobSearch); + } @Override @@ -450,77 +448,12 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe return esJobDocuments; } - // @Override -// public void importRow() { -// -// -// try { -// logger.info("开始导入Excel数据..."); -// -// // 读取Excel文件中的数据 -// List rowWorks = ExcelToObject.readExcelToObjects("D:\\QD\\青岛市近一个月数据.xlsx", RowWork.class); -// logger.info("从Excel中读取到 {} 条数据", rowWorks.size()); -// -// // 从数据库中获取已有的数据 -// List rowWorksInMysql = jobMapper.selectAllRowWork(); -// logger.info("从数据库中查询到 {} 条已有数据", rowWorksInMysql.size()); -// -// // 创建一个Set来存储数据库中已有的记录的唯一标识 -// Set existingRecords = new HashSet<>(); -// for (RowWork rowWork : rowWorksInMysql) { -// String uniqueKey = rowWork.getJobCategory() + "_" + rowWork.getAca112() + "_" + rowWork.getAcb202(); -// existingRecords.add(uniqueKey); -// } -// logger.info("已加载 {} 条唯一标识到内存", existingRecords.size()); -// -// // 创建一个列表来收集待插入的数据 -// List batchList = new ArrayList<>(); -// int batchSize = 100; // 每批次插入的数量 -// int totalInserted = 0; // 记录总共插入的数据量 -// -// // 遍历Excel中的数据,进行去重并收集待插入的数据 -// for (RowWork rowWork : rowWorks) { -// String uniqueKey = rowWork.getStd_class() + "_" + rowWork.getAca112() + "_" + rowWork.getAcb202(); -// if (!existingRecords.contains(uniqueKey)) { -// batchList.add(rowWork); // 添加到待插入列表 -// existingRecords.add(uniqueKey); // 添加到已存在集合,避免重复 -// // 当待插入列表达到批次大小时,执行批量插入 -// if (batchList.size() >= batchSize) { -// try { -// jobMapper.insertBatchRowWork(batchList); // 批量插入 -// totalInserted += batchList.size(); -// logger.info("成功插入 {} 条数据,当前总共插入 {} 条数据", batchList.size(), totalInserted); -// batchList.clear(); // 清空列表,准备下一批次 -// } catch (Exception e) { -// logger.error("批量插入失败: " + e.getMessage(), e); -// } -// } -// } -// } -// -// // 插入剩余的数据(如果不足100条) -// if (!batchList.isEmpty()) { -// try { -// jobMapper.insertBatchRowWork(batchList); // 插入剩余数据 -// totalInserted += batchList.size(); -// logger.info("成功插入剩余的 {} 条数据,当前总共插入 {} 条数据", batchList.size(), totalInserted); -// } catch (Exception e) { -// logger.error("批量插入剩余数据失败: " + e.getMessage(), e); -// } -// } -// -// logger.info("数据导入完成,总共插入 {} 条数据", totalInserted); -// } catch (Exception e) { -// logger.error("导入数据过程中发生异常: " + e.getMessage(), e); -// throw new RuntimeException(e); -// } -// } @Override - public void importRow() { + public void importRow(String path) { try { logger.info("开始导入Excel数据..."); // 读取Excel文件中的数据 - List rowWorks = ExcelToObject.readExcelToObjects("/home/lapuda/Desktop/import.xlsx", RowWork.class); + List rowWorks = ExcelToObject.readExcelToObjects(path, RowWork.class); logger.info("从Excel中读取到 {} 条数据", rowWorks.size()); // 按ORG分类存储数据 @@ -647,18 +580,30 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe int totalJobInserted = 0; String string = UUID.randomUUID().toString(); logger.info("生成唯一标识符: {}", string); - + LocalDateTime now = LocalDateTime.now(); + String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); for (RowWork rowWork : rowWorks) { try { Job job = new Job(); + if(StringUtil.isEmptyOrNull(rowWork.getAca112())){ + continue; + } job.setJobTitle(rowWork.getAca112()); job.setMinSalary(Long.valueOf(rowWork.getSalaryLow())); job.setMaxSalary(Long.valueOf(rowWork.getSalaryHight())); - job.setEducation(iBussinessDictDataService.findCode(dictData, rowWork.getAac011())); - job.setExperience(iBussinessDictDataService.findCode(expData, rowWork.getExperience())); + if(Objects.isNull(rowWork.getAac011())){ + job.setEducation("-1"); + }else { + job.setEducation(iBussinessDictDataService.findCode(dictData, rowWork.getAac011())); + } + if(Objects.isNull(rowWork.getExperience())){ + job.setExperience("0"); + }else { + job.setExperience(iBussinessDictDataService.findCode(expData, rowWork.getExperience())); + } job.setCompanyName(rowWork.getAAB004()); job.setJobLocation(rowWork.getAAE006()); - job.setPostingDate(new Date()); + job.setPostingDate(formattedDate); job.setJobCategory(rowWork.getJobCategory()); if (rowWork.getAcb240() == null) { job.setVacancies(-1L); @@ -673,7 +618,11 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe job.setCompanyId(getCompanyId(allCompany, rowWork.getAAB004())); job.setIsHot(0); job.setApplyNum(0); - job.setJobLocationAreaCode(Integer.valueOf(Objects.requireNonNull(iBussinessDictDataService.findCode(areaData, rowWork.getCounty())))); + if(Objects.isNull(rowWork.getCounty())){ + job.setJobLocationAreaCode(null); + }else { + job.setJobLocationAreaCode(Integer.valueOf(Objects.requireNonNull(iBussinessDictDataService.findCode(areaData, rowWork.getCounty())))); + } job.setDescription(rowWork.getAcb22a()); job.setIsPublish(1); job.setDataSource(rowWork.getORG()); @@ -681,7 +630,7 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe job.setRemark(string); job.setDelFlag("0"); job.setCreateBy(string); - job.setCreateTime(new Date()); + job.setCreateTime(formattedDate); job.setRowId(Long.valueOf(rowWork.getId())); jobBatch.add(job); @@ -726,23 +675,34 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe List natureData = iBussinessDictTypeService.selectDictDataByType("company_nature"); List treeSelects = industryService.appIndustry(); List companyList = new ArrayList<>(); + LocalDateTime now = LocalDateTime.now(); + String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); for(Company company:companyRowList){ Company companyNew = new Company(); companyNew.setName(company.getName()); companyNew.setLocation(company.getLocation()); - companyNew.setScale(iBussinessDictDataService.findCode(scaleData,company.getScale())); + if(Objects.isNull(company.getScale())){ + companyNew.setScale("0"); + }else { + companyNew.setScale(iBussinessDictDataService.findCode(scaleData,company.getScale())); + } companyNew.setDelFlag("0"); companyNew.setCreateBy("system"); - companyNew.setCreateTime(new Date()); + companyNew.setCreateTime(formattedDate); companyNew.setRemark("add"); companyNew.setDescription(company.getDescription()); companyNew.setIndustry(findIndustry(treeSelects,company)); - companyNew.setNature(iBussinessDictDataService.findCode(natureData,company.getNature())); + if(Objects.isNull(company.getNature())){ + companyNew.setNature("8"); + }else { + companyNew.setNature(iBussinessDictDataService.findCode(natureData,company.getNature())); + } companyList.add(companyNew); } return companyList; } + private String findIndustry(List treeSelects, Company company) { if(company.getRemark()==null){return "";} if(Objects.equals(company.getRemark(), "")){return "";} @@ -776,108 +736,16 @@ public class JobServiceImpl extends ServiceImpl implements IJobSe } return jobs; } - @Autowired - private WechatUtil wechatUtil; - @Override - public AppWechatEntity getWechatUrl(String weChatUrl) { - return wechatUtil.sign(weChatUrl); - } @Override - public String insertTemp(Job job) { - String companyName = job.getCompanyName(); - Company company = new Company(); - company.setName(companyName); - companyMapper.insert(company); + public void publishJob(Job job) { + job.setIsPublish(0); + Long userId = SecurityUtils.getUserId(); + Company company = companyMapper.selectOne(Wrappers.lambdaQuery().eq(Company::getUserId, userId).eq(Company::getStatus, 1)); + if(Objects.isNull(company)){ + throw new ServiceException("请先完成招聘企业登记"); + } job.setCompanyId(company.getCompanyId()); - this.insertJob(job); - System.out.println(job.getJobId()); - String url = "https://qd.zhaopinzao8dian.com/app#/packageA/pages/post/post?jobId="+Base64.getEncoder().encodeToString(String.valueOf(job.getJobId()).getBytes()); - return url; - } - - @Override - public String htmlGen(Long id) { - ESJobDocument esJobDocument = iesJobSearchService.selectById(id); - String jobTitle = esJobDocument.getJobTitle(); - Long maxSalary = esJobDocument.getMaxSalary(); - Long minSalary = esJobDocument.getMinSalary(); - String companyName = esJobDocument.getCompanyName(); - Long vacancies = esJobDocument.getVacancies(); - - // 1. 从服务器获取模板文件内容 - String templateContent = fetchTemplateFromServer(); - if (templateContent == null || templateContent.isEmpty()) { - return ""; - } - - // 2. 替换模板中的动态变量 - String htmlContent = templateContent - .replace("${jobTitle}", jobTitle) - .replace("${companyName}", companyName) - .replace("${minSalary}", String.valueOf(minSalary)) - .replace("${maxSalary}", String.valueOf(maxSalary)) - .replace("${vacancies}", String.valueOf(vacancies)) - .replace("${jobId}", String.valueOf(id)); - - // 3. 检查并创建目录 - String directoryPath = "/data/file/share"; - String directoryPath_domain = "/file/share"; - File directory = new File(directoryPath); - if (!directory.exists()) { - directory.mkdirs(); - } - - // 4. 生成HTML文件 - String fileName = "share_" + id + ".html"; - String filePath = directoryPath + "/" + fileName; - File htmlFile = new File(filePath); - - try { - // 如果文件已存在,先删除 - if (htmlFile.exists()) { - return "https://qd.zhaopinzao8dian.com/file/share/"+fileName; - } - - // 写入新内容 - FileWriter writer = new FileWriter(htmlFile); - writer.write(htmlContent); - writer.close(); - - return "https://qd.zhaopinzao8dian.com/file/share/"+fileName; - } catch (IOException e) { - e.printStackTrace(); - return ""; - } - } - - private String fetchTemplateFromServer() { - String templateUrl = "https://qd.zhaopinzao8dian.com/file/share/template.html"; - try { - URL url = new URL(templateUrl); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - - if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { - BufferedReader reader = new BufferedReader( - new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); - StringBuilder response = new StringBuilder(); - String line; - - while ((line = reader.readLine()) != null) { - response.append(line).append("\n"); - } - reader.close(); - return response.toString(); - } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - @Override - public void fix() { - iesJobSearchService.fix(); + jobMapper.insert(job); } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java index 4ef1f52..2bf2d61 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java @@ -1,5 +1,7 @@ package com.ruoyi.cms.util; +import com.ruoyi.cms.domain.query.ESJobSearch; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -47,4 +49,13 @@ public class StringUtil { } + public static List convertStringToStringList(String input) { + if (isEmptyOrNull(input)) { + return new ArrayList<>(); + } + + return Arrays.stream(input.split(",")) // 按逗号分割字符串 + .map(String::trim) // 去除每个部分的前后空格 + .collect(Collectors.toList()); // 收集为List + } } diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/AppReviewJobMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/AppReviewJobMapper.xml index 5629426..1ba16be 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/AppReviewJobMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/AppReviewJobMapper.xml @@ -17,7 +17,7 @@ \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml index 4b1f260..a1953f5 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml @@ -36,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/CommercialAreaMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/CommercialAreaMapper.xml index 7c77ec5..a463c53 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/CommercialAreaMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/CommercialAreaMapper.xml @@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - del_flag = 0 + del_flag = '0' and user_id = #{userId} and company_card_id = #{companyCardId} diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyCardMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyCardMapper.xml index bb4bd01..09fc4d9 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyCardMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyCardMapper.xml @@ -19,11 +19,10 @@ - - select company_card_id, name, targ, backgroud_color, del_flag, create_by, create_time, update_by, update_time, remark,status,company_nature,card_order,description,icon from company_card + select company_card_id, name, targ, backgroud_color, del_flag, create_by, create_time, update_by, update_time, remark,status,company_nature,card_order,description from company_card - del_flag = 0 + del_flag = '0' and company_id = #{companyId} and user_id = #{userId} @@ -30,10 +30,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml index 206fb0c..911cc80 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml @@ -20,6 +20,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + @@ -49,7 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - del_flag = 0 + del_flag = '0' and company_id = #{companyId} and job_fair_id = #{jobFairId} diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/FileMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/FileMapper.xml index b2a0beb..0ec4ab4 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/FileMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/FileMapper.xml @@ -21,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - del_flag = 0 + del_flag = '0' and parent_id = #{parentId} and industry_name like concat('%', #{industryName}, '%') and order_num = #{orderNum} diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/JobApplyMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/JobApplyMapper.xml index 2e78378..8d69cc7 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/JobApplyMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/JobApplyMapper.xml @@ -23,27 +23,27 @@ \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/JobCollectionMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/JobCollectionMapper.xml index 61dc07e..f49230a 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/JobCollectionMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/JobCollectionMapper.xml @@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select * from job - where del_flag = 0 + where del_flag = '0' and is_publish = 1 and job_id in (SELECT DISTINCT (job_id) - FROM qd.job_collection - where del_flag = 0 and user_id = #{userId} + FROM job_collection + where del_flag = '0' and user_id = #{userId} order by create_time desc) \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/JobFairMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/JobFairMapper.xml index cfe4f25..bb6e6c2 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/JobFairMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/JobFairMapper.xml @@ -29,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - del_flag = 0 + del_flag = '0' and job_title = #{jobTitle} and min_salary = #{minSalary} and max_salary = #{maxSalary} @@ -126,11 +126,11 @@ and experience = #{experience} and company_name like concat('%', #{companyName}, '%') and job_location = #{jobLocation} - and posting_date = #{postingDate} + and posting_date = #{postingDate} and vacancies = #{vacancies} and latitude = #{latitude} and longitude = #{longitude} - and "VIEW" = #{view} + and "view" = #{view} and company_id = #{companyId} and is_hot = #{isHot} and apply_num = #{applyNum} @@ -139,7 +139,7 @@ - del_flag = 0 + del_flag = '0' and parent_id = #{parentId} and job_name like concat('%', #{jobName}, '%') and order_num = #{orderNum} diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/SubwayLineMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/SubwayLineMapper.xml index ac9edd7..c9b5204 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/SubwayLineMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/SubwayLineMapper.xml @@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -41,6 +41,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select l.line_id, l.line_name,s.station_id, s.station_name, s.line_name,s.latitude, s.longitude,s.station_order from subway_line as l inner join subway_station as s on s.line_id = l.line_id - where l.del_flag = 0 and s.del_flag = 0 + where l.del_flag = '0' and s.del_flag = '0' \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/SubwayStationMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/SubwayStationMapper.xml index 45618bb..da39042 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/SubwayStationMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/SubwayStationMapper.xml @@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/sql/highgo_function.sql b/sql/highgo_function.sql new file mode 100644 index 0000000..02b41df --- /dev/null +++ b/sql/highgo_function.sql @@ -0,0 +1,53 @@ +CREATE OR replace function ks_db4.generate_subscripts(anyarray,int) + +RETURNS SETOF int AS $$ + +begin + +SELECT generate_series(array_lower($1,$2), array_upper($1,$2)); + +end + +$$ LANGUAGE plpgsql; + + + + +CREATE OR REPLACE FUNCTION ks_db4.find_in_set(str integer, strlist text) + +RETURNS boolean AS $$ + +SELECT i > 0 + +FROM generate_subscripts(string_to_array($2,','),1) g(i) + +WHERE (string_to_array($2, ','))[i] = $1::text + +$$ LANGUAGE sql STRICT; + + +CREATE OR REPLACE FUNCTION ks_db4.find_in_set(str bigint, strlist text) + +RETURNS boolean AS $$ + +SELECT i > 0 + +FROM generate_subscripts(string_to_array($2,','),1) g(i) + +WHERE (string_to_array($2, ','))[i] = $1::text + +$$ LANGUAGE sql STRICT; + + + +CREATE OR REPLACE FUNCTION ks_db4.find_in_set(str text, strlist text) + +RETURNS boolean AS $$ + +SELECT i > 0 + +FROM generate_subscripts(string_to_array($2,','),1) g(i) + +WHERE (string_to_array($2, ','))[i] = $1 + +$$ LANGUAGE sql STRICT; \ No newline at end of file