Selaa lähdekoodia

我的需求更改

一个番茄酱 2 vuotta sitten
vanhempi
commit
d7dd963d13

+ 25 - 5
education_family/service/service-education/src/main/java/com/xunwang/education/controller/StudentRequirementsController.java

@@ -1,18 +1,16 @@
 package com.xunwang.education.controller;
 
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
-import com.xunwang.commonutils.JwtUtils;
 import com.xunwang.commonutils.R;
-import com.xunwang.commonutils.RedisIdWorker;
-import com.xunwang.education.entity.StudentRequirements;
+import com.xunwang.education.entity.StuNeeds;
 import com.xunwang.education.service.StudentRequirementsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -34,7 +32,7 @@ public class StudentRequirementsController {
 
     @ApiOperation("发布学生需求")
     @PostMapping("publishRequirements")
-    public R publishRequirements(@RequestBody StudentRequirements requirements, HttpServletRequest request) {
+    public R publishRequirements(@RequestBody StuNeeds requirements, HttpServletRequest request) {
         boolean b = requirementsService.publishRequirements(requirements, request);
         if (b) {
             return R.ok().message("提交成功,请等待审核");
@@ -42,5 +40,27 @@ public class StudentRequirementsController {
             return R.ok().message("提交失败,请稍后再试");
         }
     }
+
+    @ApiOperation("查询个人上架了需求数量 以及 提交的需求信息")
+    @GetMapping("getPublishCounts")
+    public R getPublishCounts(HttpServletRequest request) {
+        int count = requirementsService.getPublishCounts(request);
+        List<StuNeeds> list = requirementsService.getPersonCourse(request);
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("count", count);
+        hashMap.put("list", list);
+        return R.ok().data(hashMap);
+    }
+
+    @ApiOperation("更新个人需求上下架")
+    @GetMapping("updatePersonDisplay")
+    public R updatePersonDisplay(HttpServletRequest request) {
+        boolean b = requirementsService.updatePersonDisplay(request);
+        if (b) {
+            return R.ok();
+        } else {
+            return R.error();
+        }
+    }
 }
 

+ 3 - 3
education_family/service/service-education/src/main/java/com/xunwang/education/entity/StudentRequirements.java → education_family/service/service-education/src/main/java/com/xunwang/education/entity/StuNeeds.java

@@ -26,7 +26,7 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @ApiModel(value="StudentRequirements对象", description="需求表")
 @TableName("stu_needs")
-public class StudentRequirements implements Serializable {
+public class StuNeeds implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -35,10 +35,10 @@ public class StudentRequirements implements Serializable {
     private Integer id;
 
     @ApiModelProperty(value = "无序唯一id")
-    private long requireId;
+    private String requireId;
 
     @ApiModelProperty(value = "无序唯一id")
-    private long uid;
+    private String uid;
 
     @ApiModelProperty(value = "学生姓名")
     private String name;

+ 2 - 4
education_family/service/service-education/src/main/java/com/xunwang/education/mapper/StudentRequirementsMapper.java

@@ -1,10 +1,8 @@
 package com.xunwang.education.mapper;
 
-import com.xunwang.education.entity.StudentRequirements;
+import com.xunwang.education.entity.StuNeeds;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
-import java.util.List;
-
 /**
  * <p>
  * 需求表 Mapper 接口
@@ -13,7 +11,7 @@ import java.util.List;
  * @author Long
  * @since 2022-11-16
  */
-public interface StudentRequirementsMapper extends BaseMapper<StudentRequirements> {
+public interface StudentRequirementsMapper extends BaseMapper<StuNeeds> {
 
 
 }

+ 12 - 4
education_family/service/service-education/src/main/java/com/xunwang/education/service/StudentRequirementsService.java

@@ -1,7 +1,6 @@
 package com.xunwang.education.service;
 
-import com.xunwang.commonutils.R;
-import com.xunwang.education.entity.StudentRequirements;
+import com.xunwang.education.entity.StuNeeds;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import javax.servlet.http.HttpServletRequest;
@@ -15,8 +14,17 @@ import java.util.List;
  * @author Long
  * @since 2022-11-16
  */
-public interface StudentRequirementsService extends IService<StudentRequirements> {
+public interface StudentRequirementsService extends IService<StuNeeds> {
 
     // 发布学生需求
-    boolean publishRequirements(StudentRequirements requirements, HttpServletRequest request);
+    boolean publishRequirements(StuNeeds requirements, HttpServletRequest request);
+
+    // 查询个人上架需求数量
+    int getPublishCounts(HttpServletRequest request);
+
+    // 个人发布的需求
+    List<StuNeeds> getPersonCourse(HttpServletRequest request);
+
+    // 更新个人需求上下架
+    boolean updatePersonDisplay(HttpServletRequest request);
 }

+ 45 - 8
education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/StudentRequirementsServiceImpl.java

@@ -1,9 +1,10 @@
 package com.xunwang.education.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.xunwang.commonutils.JwtUtils;
-import com.xunwang.commonutils.R;
 import com.xunwang.commonutils.RedisIdWorker;
-import com.xunwang.education.entity.StudentRequirements;
+import com.xunwang.education.entity.StuNeeds;
 import com.xunwang.education.mapper.StudentRequirementsMapper;
 import com.xunwang.education.service.StudentRequirementsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -22,7 +23,7 @@ import java.util.List;
  * @since 2022-11-16
  */
 @Service
-public class StudentRequirementsServiceImpl extends ServiceImpl<StudentRequirementsMapper, StudentRequirements> implements StudentRequirementsService {
+public class StudentRequirementsServiceImpl extends ServiceImpl<StudentRequirementsMapper, StuNeeds> implements StudentRequirementsService {
 
     @Resource
     private RedisIdWorker redisIdWorker;
@@ -34,14 +35,50 @@ public class StudentRequirementsServiceImpl extends ServiceImpl<StudentRequireme
      * @return
      */
     @Override
-    public boolean publishRequirements(StudentRequirements requirements, HttpServletRequest request) {
+    public boolean publishRequirements(StuNeeds requirements, HttpServletRequest request) {
         String uid = JwtUtils.getUIdByJwtToken(request);
-        long userId = Long.parseLong(uid);
         long next = redisIdWorker.nextId("requirements");
+        String requireId = String.valueOf(next);
+        StuNeeds stuNeeds = requirements.setUid(uid).setRequireId(requireId);
 
-        StudentRequirements studentRequirements = requirements.setUid(userId).setRequireId(next);
-
-        boolean save = save(studentRequirements);
+        boolean save = save(stuNeeds);
         return save;
     }
+
+    /**
+     * 查询个人上架了需求数量
+     * @param request
+     */
+    @Override
+    public int getPublishCounts(HttpServletRequest request) {
+        String uid = JwtUtils.getUIdByJwtToken(request);
+        int count = count(new QueryWrapper<StuNeeds>().eq("uid", uid).eq("deal", "未成交").eq("display", "上架"));
+        return count;
+    }
+
+    /**
+     * 个人发布的需求
+     * @param request
+     * @return
+     */
+    @Override
+    public List<StuNeeds> getPersonCourse(HttpServletRequest request) {
+        String uid = JwtUtils.getUIdByJwtToken(request);
+        List<StuNeeds> list = baseMapper.selectList(new QueryWrapper<StuNeeds>().eq("uid", uid).eq("deleted", 0));
+        return list;
+    }
+
+    /**
+     * 更新个人需求上下架
+     * @param request
+     */
+    @Override
+    public boolean updatePersonDisplay(HttpServletRequest request) {
+        String display = request.getParameter("display");
+        String requireId = request.getParameter("requireId");
+        StuNeeds stuNeeds = baseMapper.selectOne(new QueryWrapper<StuNeeds>().eq("require_id", requireId));
+        stuNeeds.setDisplay(display);
+        boolean flag = saveOrUpdate(stuNeeds);
+        return flag;
+    }
 }

+ 15 - 3
education_uni/pages.json

@@ -127,6 +127,18 @@
                     "style" :                                                                                    
                 {
                     "navigationBarTitleText": "我发布的学员需求",
+                    "enablePullDownRefresh": false,
+					"app-plus": {
+						"bounce": "none"
+					}
+                }
+                
+                }
+                ,{
+                    "path" : "stu_require_detail/stu_require_detail",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "我的需求详情",
                     "enablePullDownRefresh": false
                 }
                 
@@ -135,10 +147,10 @@
 		}
 	],
 	"globalStyle": {
-		"navigationBarTextStyle": "white",
+		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "自选家教",
-		"navigationBarBackgroundColor": "#C00000",
-		"backgroundColor": "#FFFFFF"
+		"navigationBarBackgroundColor": "#E2F0D9",
+		"backgroundColor": "#E2F0D9"
 	},
 	"tabBar": {
 		"selectedColor": "#C00000",

BIN
education_uni/static/location.png


+ 11 - 0
education_uni/store/user.js

@@ -10,6 +10,8 @@ export default {
 		userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}'),
 		// 老师认证结果
 		authentication: uni.getStorageInfoSync('authentication') || '',
+		// 我的需求详情
+		requireDetail: JSON.parse(uni.getStorageSync('requireDeatail') || '{}'),
 	}),
 	
 	// 方法
@@ -42,6 +44,15 @@ export default {
 		// 将老师认证结果存储到本地
 		saveAuthentication(state) {
 			uni.setStorageSync('authentication', state.authentication)
+		},
+		// 更新我的需求详情
+		updateRequireDetail(state, requireDetail) {
+			state.requireDetail = requireDetail
+			this.commit('m_user/saveRequireDetail')
+		},
+		// 将我的需求存储到本地
+		saveRequireDetail(state) {
+			uni.setStorageSync('requireDetail', state.requireDetail)
 		}
 	},
 	

+ 11 - 1
education_uni/subpkg/add_stu_require/add_stu_require.vue

@@ -462,7 +462,17 @@
 							}
 						}
 					}
-					console.log(this.baseFormData)
+					
+					// 课程科目
+					for (let x = 0; x < this.courseTree.length; x++) {
+						for (let y = 0; y < this.courseTree[x].children.length; y++) {
+							if (this.courseTree[x].children[y].value === this.baseFormData.subjectSmall) {
+								this.baseFormData.subjectBig = this.courseTree[x].value
+							}
+						}
+					}
+					
+					// console.log(this.baseFormData)
 					
 					uni.request({
 						url: 'http://192.168.0.207:8222/education/student-requirements/publishRequirements',

+ 149 - 0
education_uni/subpkg/stu_require_detail/stu_require_detail.vue

@@ -0,0 +1,149 @@
+<template>
+	<view class="contain">
+		<uni-row>
+			<view style="height: 20rpx;"></view>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">需求号:</text>{{item.requireId}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">学员ID:</text>{{item.uid}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :span="12" :push="1">
+				<view class="contain-item"><text class="contain-text">学员:</text>{{item.name}}</view>
+			</uni-col>
+			<uni-col :span="12">
+				<view><text class="contain-text">学员性别:</text>{{item.sex}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">需求科目:</text>{{item.subjectBig}}/{{item.subjectSmall}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<view class="contain-item">
+				<map :longitude="location[1]" :latitude="location[0]" :markers="marker" class="map"></map>
+			</view>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">学员地址:</text>{{item.locationStr}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<text class="contain-text">课程时间:</text>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :span="12" :push="1">
+				<view class="contain-item"><text class="contain-text">教员类型:</text>{{item.teacherType}}</view>
+			</uni-col>
+			<uni-col :span="12">
+				<view><text class="contain-text">学员学历:</text>{{item.teacherEdu}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :span="12" :push="1">
+				<view class="contain-item"><text class="contain-text">教员性别:</text>{{item.teacherGender}}</view>
+			</uni-col>
+			<uni-col :span="12">
+				<view><text class="contain-text">上课方式:</text>{{item.mode}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :span="12" :push="1">
+				<view class="contain-item"><text class="contain-text">教员头像:</text>{{item.teacherProfilePhoto}}</view>
+			</uni-col>
+			<uni-col :span="12">
+				<view><text class="contain-text">需求金额:</text>{{item.salary}}元</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">期望目标:</text>{{item.goal}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">额外要求:</text>{{item.teacherDemanded}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">审核不通过原因:</text>{{item.verifyRefuseReason}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">本需求发布日期:</text>{{item.datetime}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">手机号:</text>{{item.phone}}</view>
+			</uni-col>
+		</uni-row>
+		<uni-row>
+			<uni-col :push="1">
+				<view class="contain-item"><text class="contain-text">微信号:</text>{{item.wxid}}</view>
+			</uni-col>
+		</uni-row>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				item: {},
+				location: [],
+				marker: [{
+					id: 1,
+					joinCluster:true,
+					latitude: 0,
+					longitude: 0,
+					width: 30,
+					height: 30,
+					iconPath: '/static/location.png',
+				}],
+			};
+		},
+		onLoad(option) {
+			let options = decodeURIComponent(option.item)
+			this.item = JSON.parse(options)
+			console.log(this.item)
+			this.location = this.item.locationAl.split(",")
+			this.marker.latitude = Number(this.location[0])
+			console.log(Number(this.location[0]))
+			this.marker.longitude = Number(this.location[1])
+			console.log(this.marker)
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.contain {
+	background-color: #FFF2CC;
+	border-radius: 10%;
+	
+	.contain-item {
+		margin-bottom: 20rpx;
+	}
+	
+	.contain-text {
+		font-weight: 700;
+		color: #bbb;
+	}
+	
+	.map {
+		width: 100%;
+	}
+}
+</style>

+ 82 - 24
education_uni/subpkg/student_require/student_require.vue

@@ -1,32 +1,38 @@
 <template>
 	<view>
 		<uni-swipe-action>
-			<!-- <template v-for="(item, index) in courses" > -->
-				<uni-swipe-action-item :threshold="0" :right-options="options" @click="bindClick()">
-					<view class="requires">
+			<template v-for="(item, index) in requirement">
+				<uni-swipe-action-item :threshold="0" :right-options="item.options" @click="bindClick(item)">
+					<view class="requires" @click="requireDetail(item)">
 						<uni-row class="demo-uni-row">
-							<view>需求号:1231411312123131334244</view>
-						</uni-row>
-						<uni-row class="demo-uni-row">
-							<view>需求科目:xxx</view>
+							<uni-col offset="1">
+								<view class="requires-col1">需求号:{{item.requireId}}</view>
+							</uni-col>
 						</uni-row>
 						<uni-row class="demo-uni-row">
-							<uni-col :span="12">
-								<view>需求金额:xxx</view>
-							</uni-col>
-							<uni-col :span="4" >
-								已通过
-							</uni-col>
-							<uni-col :span="4" >
-								未成交
-							</uni-col>
-							<uni-col :span="4" >
-								未锁
+							<uni-col offset="1">
+								<view class="requires-col2">需求科目:{{item.subjectSmall}}</view>
 							</uni-col>
 						</uni-row>
+						<view class="requires-col3">
+							<uni-row class="demo-uni-row">
+								<uni-col :span="11" offset="1">
+									<view>需求金额:{{item.salary}}</view>
+								</uni-col>
+								<uni-col :span="4" >
+									<view style="color: red;">{{item.verifyStatus}}</view>
+								</uni-col>
+								<uni-col :span="4" >
+									<view style="color: red;">{{item.deal}}</view>
+								</uni-col>
+								<uni-col :span="4" >
+									<view style="color: red;">{{item.locked}}</view>
+								</uni-col>
+							</uni-row>
+						</view>
 					</view>
 				</uni-swipe-action-item>
-			<!-- </template> -->
+			</template>
 		</uni-swipe-action>
 		
 		<uni-fab  :pattern="pattern" horizontal="left" vertical="bottom"
@@ -39,21 +45,60 @@
 	export default {
 		data() {
 			return {
-				options: '上架',
+				requirement: [],	// 需求列表
+				publishCount: 0,	// 上架数量
 				pattern: {
 					color: '#7A7E83',
-					backgroundColor: '#fff',
-					selectedColor: '#C00000',
-					buttonColor: '#C00000',
-					iconColor: '#fff'
+					backgroundColor: '#000000',
+					selectedColor: '#E2F0D9',
+					buttonColor: '#E2F0D9',
+					iconColor: '#000000'
 				}
 			};
 		},
+		created() {
+			this.getPublishCounts()
+		},
 		methods: {
 			fabClick() {
 				uni.navigateTo({
 					url: '/subpkg/add_stu_require/add_stu_require'
 				})
+			},
+			// 查询个人上架了多少课程
+			async getPublishCounts() {
+				const { data: result } = await uni.$http.get('/education/student-requirements/getPublishCounts')
+				this.publishCount = result.data.count
+				this.requirement = result.data.list
+				for (let i = 0; i < this.requirement.length; i++) {
+					if (this.requirement[i].display === '上架') {
+						this.requirement[i].dispaly = '下架'
+						this.requirement[i].options = [{text: '下架', style: {backgroundColor: '#E2F0D9', color: 'black'}}]
+					} else {
+						this.requirement[i].dispaly = '上架'
+						this.requirement[i].options = [{text: '上架', style: {backgroundColor: '#E2F0D9', color: 'black'}}]
+					}
+				}
+				console.log(this.requirement)
+			},
+			async bindClick(item) {
+				const queryObj = {
+					display: item.dispaly,
+					requireId: item.requireId
+				}
+				const { data: result } = await uni.$http.get('/education/student-requirements/updatePersonDisplay', queryObj)
+				if (result.code === 20000) {
+					uni.$showMsg(item.dispaly + '成功')
+					setTimeout(() => {
+						this.getPublishCounts()
+					}, 500)
+				}
+			},
+			requireDetail(item) {
+				let stu_require = JSON.stringify(item)
+				uni.navigateTo({
+					url: '/subpkg/stu_require_detail/stu_require_detail?item=' + encodeURIComponent(stu_require)
+				})
 			}
 		}
 	}
@@ -62,5 +107,18 @@
 <style lang="scss">
 .requires {
 	background-color: #FFF2CC;
+	border: 1px solid #41719C;
+	
+	.requires-col1 {
+		margin-top: 15rpx;
+	}
+	
+	.requires-col2 {
+		margin: 15rpx 0;
+	}
+	
+	.requires-col3 {
+		padding-bottom: 15rpx;
+	}
 }
 </style>