lsw 10 månader sedan
förälder
incheckning
6e16b70537

+ 3 - 0
app/common/common.scss

@@ -486,3 +486,6 @@
 		padding-right: 3px;
 	}
 }
+.pt0{
+	padding-top: 0px;
+}

+ 19 - 11
app/pages.json

@@ -4,16 +4,16 @@
 	},
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
 		{
-			"path": "pages/job/search",
+			"path": "pages/job/list",
 			"style": {
-				"navigationBarTitleText": "职位搜索"
+				"navigationBarTitleText": "找工作",
+				"enablePullDownRefresh": true
 			}
 		},
 		{
-			"path": "pages/job/list",
+			"path": "pages/job/search",
 			"style": {
-				"navigationBarTitleText": "找工作",
-				"enablePullDownRefresh": true
+				"navigationBarTitleText": "职位搜索"
 			}
 		},
 		{
@@ -99,12 +99,6 @@
 			}
 		},
 		{
-			"path": "pages/job/company",
-			"style": {
-				"navigationBarTitleText": "公司信息"
-			}
-		},
-		{
 			"path": "pages/other/webview",
 			"style": {
 				"navigationBarTitleText": "政策资讯"
@@ -169,6 +163,20 @@
 			"style": {
 				"navigationBarTitleText": "新闻详情"
 			}
+		},
+		{
+			"path" : "pages/job/enterprise/detail",
+			"style" : 
+			{
+				"navigationBarTitleText" : "企业详情"
+			}
+		},
+		{
+			"path" : "pages/job/enterprise/list",
+			"style" : 
+			{
+				"navigationBarTitleText" : "正在招聘职位"
+			}
 		}
 	],
 	"tabBar": {

+ 0 - 139
app/pages/job/company.vue

@@ -1,139 +0,0 @@
-<template>
-	<view>
-		<view class="main">
-			<view class="ms" @click="detail()">
-				<image src="../../static/favicon.png" mode="widthFix"></image>
-				<view class="con">
-					<view class="mti">广西龙坚贸易有限公司</view>
-					<view class="address">南宁青秀山航洋城1433</view>
-				</view>
-			</view>
-		</view>
-		<view class="bos">
-			<view class="mtitle">公司介绍</view>
-			<view class="item">淘宝店-有料素材店是一个基于UI界面设计师的素材模板售卖网店,面向设计社区,设计师、平面设计师和创意行业人员,在这里可以买到自己需要或者学习的设计素材,可供于学习使用。</view>
-			<view class="item">这里是公司介绍信息文字示例,淘宝店-有料素材店是一个基于UI界面设计师的素材模板售卖网店,是要来面向设计社区,设计师、平面设计师和创意行业人员</view>
-			<view class="rows">
-				<view class="r50">
-					<view class="int">
-						<view class="out">
-							<image src="../../static/a1.png" mode="widthFix"></image>
-						</view>
-					</view>
-				</view>
-				<view class="r50">
-					<view class="int">
-						<view class="out">
-							<image src="../../static/a1.png" mode="widthFix"></image>
-						</view>
-					</view>
-				</view>
-			</view>
-			<view class="mtitle">更多信息</view>
-			<view class="item b">公司地址:</view>
-			<view class="item">北京市海淀区银谷大厦某某号楼某</view>
-			<view class="item b">法定代表人:</view>
-			<view class="item">杨从</view>
-			<view class="item b">注册资金:</view>
-			<view class="item">100万人民币</view>
-			<view class="item b">公司行业:</view>
-			<view class="item">传媒</view>
-			<map style="width: 100%; height: 150px" :latitude="latitude" :longitude="longitude" :markers="covers"></map>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			latitude: 39.909,
-			longitude: 116.39742,
-			covers: [
-				{
-					latitude: 39.909,
-					longitude: 116.39742,
-					iconPath: '../../static/location.png'
-				},
-				{
-					latitude: 39.9,
-					longitude: 116.39,
-					iconPath: '../../static/location.png'
-				}
-			]
-		};
-	},
-	methods: {
-		detail() {
-			uni.navigateTo({
-				url: '/pages/clsd/job/company'
-			});
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-.ms {
-	overflow: hidden;
-	.mtitle {
-		font-weight: bold;
-		margin-bottom: 10px;
-	}
-	image {
-		float: left;
-		width: 55px;
-		height: 55px;
-		border-radius: 50%;
-	}
-	.con {
-		float: left;
-		padding-left: 10px;
-		.mti {
-			font-weight: bold;
-			padding-bottom: 5px;
-		}
-		.address {
-			font-size: 14px;
-		}
-	}
-}
-.bos {
-	background-color: white;
-	padding: 20px;
-	border-radius: 25px 25px 0px 0px;
-	.mtitle {
-		font-weight: bold;
-		margin-bottom: 10px;
-	}
-	.item {
-		font-size: 14px;
-		padding-top: 7px;
-	}
-	.b{
-		font-weight: bold;
-	}
-	.rows {
-		overflow: hidden;
-		margin-left: -5px;
-		margin-right: -5px;
-		margin-top: 15px;
-		.r50 {
-			.int {
-				.out {
-					padding: 5px;
-					image{
-						width: 100%;
-						border-radius: 5px;
-					}
-				}
-			}
-		}
-	}
-	map {
-		border-radius: 8px;
-		overflow: hidden;
-		margin-top: 15px;
-	}
-}
-</style>

+ 70 - 68
app/pages/job/detail.vue

@@ -1,29 +1,27 @@
 <template>
 	<view>
 		<view class="main">
-			<view class="title">快递装卸工</view>
-			<view class="price">5000/月</view>
-			<view class="desc">两班倒 · 需10人 · 学历不限 · 经验不限</view>
+			<view class="title">{{ item.title }}</view>
+			<view class="price" v-if="item.type == 0">{{ item.salary == '面议' ? item.salary : item.salary + '/月' }}</view>
+			<view class="desc">{{ item.experience }} · {{ item.positionName }} · {{ item.type == 0 ? '全职' : '兼职' }}</view>
 		</view>
 		<view class="bos">
-			<view class="ms" style="margin-top: 0px;">
+			<view class="ms" style="margin-top: 0px">
 				<view class="mtitle">职位描述</view>
-				<view class="item">1、装车、卸货、扫码计重</view>
-				<view class="item">2、3~4人装卸一辆17.5米的大货车,每车货物重33吨左右,每个小组装卸量约3辆车/天;</view>
-				<view class="item">3、年龄要求18~45岁以内,低于18岁超过45岁均不安排:</view>
-				<view class="item">4、底薪(保底货量)+奖金(超保底货量),装蓰儱瘕卸多少吨货,给多少工资,做多得多,上不封顶5、免费住宿,伙食补贴12.5/天:</view>
-				<view class="item">5、上班时间两个班次19:00~凌晨5:00,中途有休息,或凌晨12:00~早上9点,均为固定长期夜班。</view>
-				<view class="item">6、暑假工/临时工勿扰</view>
+				<u-parse :content="item.contents" class="item"></u-parse>
 			</view>
-			<view class="ms" @click="detail()">
-				<image src="../../static/favicon.png" mode="widthFix"></image>
-				<view class="con">
-					<view class="mti">广西龙坚贸易有限公司</view>
-					<view class="address">南宁青秀山航洋城1433</view>
+			<!--企业信息-->
+			<view v-if="item.type == 0">
+				<view class="ms" @click="go('/pages/job/enterprise/detail?id=' + enterprise.id)">
+					<view class="icon gs">&#xe646;</view>
+					<view class="con">
+						<view class="mti">{{ enterprise.name }}</view>
+						<view class="address omit">{{ enterprise.address }}</view>
+					</view>
+					<text class="icon more">&#xe62b;</text>
 				</view>
-				<text class="icon">&#xe62b;</text>
+				<map :latitude="item.latitude" :longitude="item.longitude" :markers="covers"></map>
 			</view>
-			<map style="width: 100%; height: 150px" :latitude="latitude" :longitude="longitude" :markers="covers"></map>
 		</view>
 		<view class="footer">
 			<view class="td">
@@ -37,27 +35,24 @@
 export default {
 	data() {
 		return {
-			latitude: 39.909,
-			longitude: 116.39742,
-			covers: [
-				{
-					latitude: 39.909,
-					longitude: 116.39742,
-					iconPath: '../../../static/location.png'
-				},
-				{
-					latitude: 39.9,
-					longitude: 116.39,
-					iconPath: '../../../static/location.png'
-				}
-			]
+			item: {},
+			enterprise: {},
+			covers: []
 		};
 	},
+	onLoad(e) {
+		this.http.request({
+			url: '/app/position/detail/' + e.id,
+			success: (res) => {
+				this.item = res.data.data.position;
+				this.enterprise = res.data.data.enterprise;
+				this.covers.push({ latitude: this.item.latitude, longitude: this.item.longitude });
+			}
+		});
+	},
 	methods: {
-		detail() {
-			uni.navigateTo({
-				url: '/pages/clsd/job/company'
-			});
+		go(url) {
+			uni.navigateTo({ url: url });
 		}
 	}
 };
@@ -80,46 +75,53 @@ export default {
 .bos {
 	background-color: white;
 	padding: 20px;
-	border-radius: 25px 25px 0px 0px;
-}
-.ms {
-	margin-top: 20px;
-	overflow: hidden;
-	.mtitle {
-		font-weight: bold;
-		margin-bottom: 10px;
-	}
-	.item {
-		font-size: 14px;
-		padding-top: 7px;
-	}
-	image {
-		float: left;
-		width: 55px;
-		height: 55px;
-		border-radius: 50%;
-	}
-	.con {
-		float: left;
-		padding-left: 10px;
-		.mti {
+	border-radius: 25px;
+	.ms {
+		margin-top: 20px;
+		overflow: hidden;
+		.mtitle {
 			font-weight: bold;
-			padding-bottom: 5px;
+			margin-bottom: 10px;
 		}
-		.address {
+		.item {
 			font-size: 14px;
+			padding-top: 7px;
+		}
+		.gs {
+			float: left;
+			width: 50px;
+			height: 50px;
+			border-radius: 50%;
+			background-color: #f1f1f1;
+			text-align: center;
+			font-size: 30px;
+			line-height: 47px;
+		}
+		.con {
+			float: left;
+			padding-left: 10px;
+			width: 70%;
+			.mti {
+				font-weight: bold;
+				padding-bottom: 5px;
+			}
+			.address {
+				font-size: 13px;
+			}
+		}
+		.more {
+			float: right;
+			margin-top: 14px;
 		}
 	}
-	.icon {
-		float: right;
-		margin-top: 14px;
+	map {
+		border-radius: 8px;
+		overflow: hidden;
+		margin-top: 15px;
+		width: 100%;
+		height: 150px;
 	}
 }
-map {
-	border-radius: 8px;
-	overflow: hidden;
-	margin-top: 15px;
-}
 .footer {
 	position: fixed;
 	width: 100%;

+ 101 - 0
app/pages/job/enterprise/detail.vue

@@ -0,0 +1,101 @@
+<template>
+	<view>
+		<view class="main">
+			<view class="ms">
+				<view class="icon gs">&#xe646;</view>
+				<view class="con">
+					<view class="mti">{{ item.name }}</view>
+					<view class="address omit">{{ item.address }}</view>
+				</view>
+			</view>
+		</view>
+		<view class="bos">
+			<view class="item b">法定代表人:</view>
+			<view class="item">{{ item.legalPerson }}</view>
+			<view class="item b">联系电话:</view>
+			<view class="item">{{ item.phone }}</view>
+			<view class="item b">电子邮箱:</view>
+			<view class="item">{{ item.email }}</view>
+			<view class="item b">注册资金:</view>
+			<view class="item">{{ item.capital }}万人民币</view>
+			<view class="item b">公司地址:</view>
+			<view class="item">北京市海淀区银谷大厦某某号楼某</view>
+			<view class="item b">公司介绍</view>
+			<view class="item">{{ item.contents }}</view>
+			<button class="btn" @click="go()">更多职位</button>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			item: {},
+			param: { pageNum: 1, pageSize: 100, orderBy: 'id' }
+		};
+	},
+	onLoad(e) {
+		this.http.request({
+			url: '/app/enterprise/detail/' + e.id,
+			success: (res) => {
+				this.item = res.data.data;
+			}
+		});
+	},
+	methods: {
+		go(url) {
+			uni.navigateTo({
+				url: '/pages/job/enterprise/list?name=' + this.item.name + '&id=' + this.item.id
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.ms {
+	overflow: hidden;
+	.gs {
+		float: left;
+		width: 50px;
+		height: 50px;
+		border-radius: 50%;
+		background-color: white;
+		text-align: center;
+		font-size: 30px;
+		line-height: 47px;
+	}
+	.con {
+		float: left;
+		padding-left: 10px;
+		width: 70%;
+		.mti {
+			font-weight: bold;
+			padding-bottom: 5px;
+		}
+		.address {
+			font-size: 13px;
+		}
+	}
+}
+.bos {
+	background-color: white;
+	padding: 20px;
+	border-radius: 25px;
+	.mtitle {
+		font-weight: bold;
+		margin-bottom: 10px;
+	}
+	.item {
+		font-size: 14px;
+		padding-top: 7px;
+	}
+	.b {
+		font-weight: bold;
+	}
+	.btn {
+		width: 60%;
+	}
+}
+</style>

+ 93 - 0
app/pages/job/enterprise/list.vue

@@ -0,0 +1,93 @@
+<template>
+	<view class="main pt0">
+		<view class="tab">
+			<u-tabs :list="tab" @click="tabClick"></u-tabs>
+			<view class="filters" @click="show = true">
+				<text class="icon">&#xe68c;</text>
+				<text>筛选</text>
+			</view>
+		</view>
+		<view class="list">
+			<job :list="list"></job>
+			<view class="loading" v-if="loadMore"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+			<u-empty v-if="!loadMore && list.length == 0"></u-empty>
+		</view>
+		<filters v-model="show" @confirm="confirm"></filters>
+	</view>
+</template>
+<script>
+export default {
+	data() {
+		return {
+			tab: [
+				{ name: '最新', orderBy: 'id' },
+				{ name: '附近', orderBy: 'distance' }
+			],
+			list: [],
+			param: { pageNum: 1, pageSize: 10, type: 0, orderBy: 'id' },
+			loadMore: true,
+			show: false
+		};
+	},
+	onLoad(e) {
+		this.param.enterpriseId = e.id;
+		if (this.getLocation()) {
+			this.param.latitude = this.getLocation().latitude;
+			this.param.longitude = this.getLocation().longitude;
+		}
+		setTimeout(() => {
+			uni.setNavigationBarTitle({ title: e.name });
+		}, 300);
+		this.getData();
+	},
+	methods: {
+		getData() {
+			this.http.request({
+				url: '/app/position/list',
+				data: this.param,
+				loading: 'false',
+				success: (res) => {
+					this.loadMore = res.data.pages > this.param.pageNum ? true : false;
+					this.list.push(...res.data.rows);
+				}
+			});
+		},
+		tabClick(e) {
+			this.param.orderBy = e.orderBy;
+			this.refresh();
+		},
+		confirm(e) {
+			this.param.experience = e.experience.map((item) => item.name).toString() || '';
+			this.param.salary = e.salary.map((item) => item.name).toString() || '';
+			this.param.positionId = e.positionId || '';
+			this.refresh();
+		},
+		go(url) {
+			uni.navigateTo({ url: url });
+		},
+		//刷新数据
+		refresh() {
+			this.loadMore = true;
+			this.param.pageNum = 1;
+			this.list = [];
+			this.getData();
+		}
+	},
+	//下拉刷新
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.refresh();
+			uni.stopPullDownRefresh();
+		}, 1000);
+	},
+	//上拉加载
+	onReachBottom() {
+		if (this.loadMore) {
+			this.param.pageNum++;
+			this.getData();
+		}
+	}
+};
+</script>
+
+<style lang="scss"></style>

+ 2 - 1
app/pages/job/list.vue

@@ -27,7 +27,7 @@ export default {
 				{ name: '附近', orderBy: 'distance' }
 			],
 			list: [],
-			param: { pageNum: 1, pageSize: 10, type: 0, orderBy: 'id' },
+			param: { pageNum: 1, pageSize: 10, orderBy: 'id' },
 			loadMore: true,
 			show: false
 		};
@@ -37,6 +37,7 @@ export default {
 			this.param.latitude = this.getLocation().latitude;
 			this.param.longitude = this.getLocation().longitude;
 		}
+		this.param.type = e.type || 0;
 		this.getData();
 	},
 	methods: {

BIN
app/static/a1.jpg


BIN
app/static/a2.jpg


BIN
app/static/a3.jpg


BIN
app/static/tb.jpg


+ 5 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/api/Api_EnterpriseController.java

@@ -20,6 +20,11 @@ public class Api_EnterpriseController extends BaseController {
         return enterpriseService.index();
     }
 
+    @GetMapping("/detail/{id}")
+    public AjaxResult detail(@PathVariable("id") Long id) {
+        return enterpriseService.detail(id);
+    }
+
     @PostMapping("/edit")
     public AjaxResult edit(@Validated @RequestBody Enterprise enterprise) {
         return enterpriseService.edit(enterprise);

+ 5 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/api/Api_PositionController.java

@@ -34,6 +34,11 @@ public class Api_PositionController extends BaseController {
         return getDataTable(list);
     }
 
+    @GetMapping("/detail/{id}")
+    public AjaxResult detail(@PathVariable("id") Long id) {
+        return positionService.detail(id);
+    }
+
     @GetMapping("/manage/list")
     public TableDataInfo manageList(Position position) {
         startPage();

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/api/config/InterceptorConfig.java

@@ -24,6 +24,9 @@ public class InterceptorConfig implements WebMvcConfigurer {
         registration.excludePathPatterns("/app/home/**"); //排除
         registration.excludePathPatterns("/app/notice/**"); //排除
         registration.excludePathPatterns("/app/news/**"); //排除
+        registration.excludePathPatterns("/app/position/list"); //排除
+        registration.excludePathPatterns("/app/position/detail/**"); //排除
+        registration.excludePathPatterns("/app/enterprise/detail/**"); //排除
     }
 
     @Override

+ 0 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Position.java

@@ -121,7 +121,6 @@ public class Position extends BaseData {
     @ApiModelProperty(value = "状态 (0关闭 1已发布任务 2已接单 3业主已选中 4任务开始 5验收 6付款)")
     private Integer status;
 
-
     @TableField(exist = false)
     @JsonIgnore
     private String regionId;

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/dto/PositionQueryDto.java

@@ -18,6 +18,9 @@ import java.util.List;
 @Accessors(chain = true)
 public class PositionQueryDto {
 
+    @ApiModelProperty(value = "企业id")
+    private Long enterpriseId;
+
     @NotNull(message = "职位类型为空")
     @Min(value = 0, message = "type 只能是 0 或者 1")
     @Max(value = 1, message = "type 只能是 0 或者 1")

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IEnterpriseService.java

@@ -16,4 +16,6 @@ public interface IEnterpriseService extends IService<Enterprise>{
     AjaxResult index();
 
     AjaxResult edit(Enterprise enterprise);
+
+    AjaxResult detail(Long id);
 }

+ 9 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IPositionService.java

@@ -22,6 +22,14 @@ public interface IPositionService extends IService<Position> {
     List<PositionListVo> indexList(PositionQueryDto dto);
 
     /**
+     * 职位详情
+     *
+     * @param id
+     * @return
+     */
+    AjaxResult detail(Long id);
+
+    /**
      * 发布职位
      *
      * @param dto
@@ -31,6 +39,7 @@ public interface IPositionService extends IService<Position> {
 
     /**
      * 编辑职位
+     *
      * @param dto
      * @return
      */

+ 9 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/EnterpriseServiceImpl.java

@@ -52,4 +52,13 @@ public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterpr
         }
         return AjaxResult.success();
     }
+
+    @Override
+    public AjaxResult detail(Long id) {
+        Enterprise enterprise = getById(id);
+        if (enterprise == null || enterprise.getState() != 1) {
+            return AjaxResult.error("企业信息不存在或未认证");
+        }
+        return AjaxResult.success(enterprise);
+    }
 }

+ 28 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/PositionServiceImpl.java

@@ -7,6 +7,7 @@ import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.web.work.api.util.AppUtil;
 import com.ruoyi.web.work.domain.Column;
+import com.ruoyi.web.work.domain.Enterprise;
 import com.ruoyi.web.work.domain.Position;
 import com.ruoyi.web.work.domain.dto.PositionDto;
 import com.ruoyi.web.work.domain.dto.PositionQueryDto;
@@ -14,6 +15,7 @@ import com.ruoyi.web.work.domain.dto.PositionStateDto;
 import com.ruoyi.web.work.domain.vo.PositionListVo;
 import com.ruoyi.web.work.mapper.PositionMapper;
 import com.ruoyi.web.work.service.IColumnService;
+import com.ruoyi.web.work.service.IEnterpriseService;
 import com.ruoyi.web.work.service.IPositionService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +35,9 @@ public class PositionServiceImpl extends ServiceImpl<PositionMapper, Position> i
     @Autowired
     private IColumnService columnService;
 
+    @Autowired
+    private IEnterpriseService enterpriseService;
+
     @Override
     public List<Position> selectList(Position position) {
         return positionMapper.selectList(position);
@@ -64,7 +69,29 @@ public class PositionServiceImpl extends ServiceImpl<PositionMapper, Position> i
     }
 
     @Override
+    public AjaxResult detail(Long id) {
+        AjaxResult result = new AjaxResult();
+        Position position = getById(id);
+        if (position == null || position.getState() != 0 || position.getAudit() != 1) {
+            return AjaxResult.error("职位不存在或已下架");
+        }
+        if (position.getType() == 0) {
+            Enterprise enterprise = enterpriseService.getById(position.getUserId());
+            result.put("enterprise", enterprise);
+        }
+        result.put("position", position);
+        return AjaxResult.success(result);
+    }
+
+    @Override
     public AjaxResult manageAdd(PositionDto dto) {
+        //如果发布全职需要审核企业信息通过才允许发布
+        if (dto.getType() == 0) {
+            Enterprise enterprise = enterpriseService.getById(AppUtil.getUser().getId());
+            if (enterprise == null || enterprise.getState() != 1) {
+                return AjaxResult.error("未认证企业信息或审核不通过");
+            }
+        }
         Position position = new Position();
         BeanUtils.copyProperties(dto, position);
         Column region = columnService.selectRegion(new Column().setTitle(position.getRegionName()).setLevel(3));
@@ -93,7 +120,7 @@ public class PositionServiceImpl extends ServiceImpl<PositionMapper, Position> i
             return AjaxResult.error("职位不存在或非法操作");
         }
         if (position.getAudit() == 1) {
-           // return AjaxResult.error("该职位已审核通过不允许编辑");
+            // return AjaxResult.error("该职位已审核通过不允许编辑");
         }
         BeanUtils.copyProperties(dto, position);
         Column region = columnService.selectRegion(new Column().setTitle(position.getRegionName()).setLevel(3));

+ 1 - 0
ruoyi-admin/src/main/resources/mapper/work/PositionMapper.xml

@@ -36,6 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         state = 0
         AND audit = 1
         AND type = #{type}
+        <if test="enterpriseId != null "> and user_id = #{enterpriseId}</if>
         <if test="title != null and title != ''"> AND title LIKE concat('%', #{title}, '%')</if>
         <if test="positionId != null"> AND position_id=#{positionId}</if>
         <if test="experience != null  and experience.size() > 0">AND experience IN (<foreach collection="experience" item="name" separator=",">#{name}</foreach>)</if>