lsw 10 months ago
parent
commit
a5c378c6c8

+ 18 - 4
app/pages/job/detail.vue

@@ -25,11 +25,11 @@
 		</view>
 		<view class="mfooter">
 			<view class="cn">
-				<view class="tob">
+				<button class="tob">
 					<text class="icon">&#xe637;</text>
 					<view class="mtt">分享</view>
-				</view>
-				<view class="tob">
+				</button>
+				<view class="tob" @click="add()" :class="{ active: flag }">
 					<text class="icon">&#xe626;</text>
 					<view class="mtt">收藏</view>
 				</view>
@@ -48,7 +48,8 @@ export default {
 		return {
 			item: {},
 			enterprise: {},
-			covers: []
+			covers: [],
+			flag: false
 		};
 	},
 	onLoad(e) {
@@ -65,6 +66,16 @@ export default {
 		go(url) {
 			uni.navigateTo({ url: url });
 		},
+		//收藏职位
+		add() {
+			this.http.request({
+				url: '/app/favorite/add/' + this.item.id,
+				success: (res) => {
+					uni.showModal({ content: '收藏成功', showCancel: false });
+					this.flag = true;
+				}
+			});
+		},
 		//投递简历
 		send() {
 			this.http.request({
@@ -164,6 +175,9 @@ export default {
 			margin-right: 15px;
 			float: left;
 			color: $font-c;
+			&.active {
+				color: $main-color;
+			}
 			.icon {
 				font-size: 28px;
 			}

+ 44 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/api/Api_FavoriteController.java

@@ -0,0 +1,44 @@
+package com.ruoyi.web.work.api;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.web.work.domain.Favorite;
+import com.ruoyi.web.work.service.IFavoriteService;
+import org.springframework.beans.factory.annotation.Autowired;
+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.List;
+
+/**
+ * 职位收藏
+ *
+ * @author lsw
+ * @date 2024-06-15
+ */
+@RestController
+@RequestMapping("/app/favorite")
+public class Api_FavoriteController extends BaseController {
+    @Autowired
+    private IFavoriteService favoriteService;
+
+    @GetMapping("/list")
+    public TableDataInfo list(Favorite favorite) {
+        startPage();
+        List<Favorite> list = favoriteService.selectList(favorite);
+        return getDataTable(list);
+    }
+
+    @GetMapping("/add/{id}")
+    public AjaxResult add(@PathVariable("id") Long id) {
+        return favoriteService.add(id);
+    }
+
+    @GetMapping("/remove/{id}")
+    public AjaxResult remove(@PathVariable("id") Long id) {
+        return favoriteService.remove(id);
+    }
+}

+ 53 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Favorite.java

@@ -0,0 +1,53 @@
+package com.ruoyi.web.work.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+/**
+ * @author lsw
+ * @date 2024-06-15
+ */
+@Data
+@TableName(value = "tb_favorite")
+@Accessors(chain = true)
+public class Favorite{
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "职位id")
+    private Long positionId;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "职位名称")
+    private String title;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "类型: 0全职 1兼职")
+    private Integer type;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "薪资范围")
+    private String salary;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "地区名称")
+    private String regionName;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "地点名")
+    private String location;
+}

+ 16 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/mapper/FavoriteMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.work.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.work.domain.Favorite;
+
+import java.util.List;
+
+/**
+ * @author lsw
+ * @date 2024-06-15
+ */
+public interface FavoriteMapper extends BaseMapper<Favorite> {
+    List<Favorite> selectList(Favorite favorite);
+
+    Favorite check(Favorite favorite);
+}

+ 31 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IFavoriteService.java

@@ -0,0 +1,31 @@
+package com.ruoyi.web.work.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.work.domain.Favorite;
+
+import java.util.List;
+
+/**
+ * @author lsw
+ * @date 2024-06-15
+ */
+public interface IFavoriteService extends IService<Favorite> {
+    List<Favorite> selectList(Favorite favorite);
+
+    /**
+     * 添加收藏
+     *
+     * @param id
+     * @return
+     */
+    AjaxResult add(Long id);
+
+    /**
+     * 删除收藏
+     *
+     * @param id
+     * @return
+     */
+    AjaxResult remove(Long id);
+}

+ 55 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/FavoriteServiceImpl.java

@@ -0,0 +1,55 @@
+package com.ruoyi.web.work.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.web.work.api.util.AppUtil;
+import com.ruoyi.web.work.domain.Favorite;
+import com.ruoyi.web.work.mapper.FavoriteMapper;
+import com.ruoyi.web.work.service.IFavoriteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author lsw
+ * @date 2024-06-15
+ */
+@Service
+public class FavoriteServiceImpl extends ServiceImpl<FavoriteMapper, Favorite> implements IFavoriteService {
+    @Autowired
+    private FavoriteMapper favoriteMapper;
+
+    @Override
+    public List<Favorite> selectList(Favorite favorite) {
+        return favoriteMapper.selectList(favorite);
+    }
+
+    @Override
+    public AjaxResult add(Long id) {
+        Favorite collection = favoriteMapper.check(new Favorite().setUserId(AppUtil.getUser().getId()).setPositionId(id));
+        if (collection != null) {
+            return AjaxResult.error("已添加收藏");
+        }
+        collection = new Favorite();
+        collection.setUserId(AppUtil.getUser().getId());
+        collection.setPositionId(id);
+        if (!save(collection)) {
+            throw new ServiceException("添加收藏失败");
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult remove(Long id) {
+        Favorite collection = getById(id);
+        if (collection == null || !collection.getUserId().equals(AppUtil.getUser().getId())) {
+            return AjaxResult.error("收藏不存在或非法操作");
+        }
+        if (!removeById(id)) {
+            throw new ServiceException("删除收藏失败");
+        }
+        return AjaxResult.success();
+    }
+}

+ 28 - 0
ruoyi-admin/src/main/resources/mapper/work/FavoriteMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.work.mapper.FavoriteMapper">
+
+    <select id="selectList" resultType="com.ruoyi.web.work.domain.Favorite">
+        SELECT
+            f.*,
+            p.type,
+            p.title,
+            p.region_name,
+            p.location
+        FROM
+            tb_favorite f
+                LEFT JOIN tb_position p ON p.id = f.position_id
+        WHERE
+            f.user_id = 14
+          AND p.state = 0
+        ORDER BY
+            f.id DESC
+    </select>
+
+    <select id="check" resultType="com.ruoyi.web.work.domain.Favorite">
+        SELECT * FROM tb_favorite WHERE user_id=#{userId} AND position_id=#{positionId}
+    </select>
+
+</mapper>