From 3152a6a93337ba25815f7372c60dece41c3957d3 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 19 Jul 2022 11:29:05 +0800
Subject: [PATCH] 根据实际任务时长进行积分分配

---
 src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.java            |    2 ++
 src/main/java/org/springblade/modules/taskfk/controller/TaskfkController.java    |   12 ++++++++++--
 src/main/java/org/springblade/modules/taskqd/entity/Taskqd.java                  |   16 ++++++++++++++++
 src/main/java/org/springblade/modules/taskqd/service/ITaskqdService.java         |    2 ++
 src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml             |   16 +++++++++++++---
 src/main/java/org/springblade/modules/taskqd/service/impl/TaskqdServiceImpl.java |    5 +++++
 6 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/springblade/modules/taskfk/controller/TaskfkController.java b/src/main/java/org/springblade/modules/taskfk/controller/TaskfkController.java
index 7d75e5f..11cf6ff 100644
--- a/src/main/java/org/springblade/modules/taskfk/controller/TaskfkController.java
+++ b/src/main/java/org/springblade/modules/taskfk/controller/TaskfkController.java
@@ -94,7 +94,8 @@
 	@ApiOperation(value = "新增", notes = "传入task")
 	public R save(@Valid @RequestBody TaskfkVO taskfk) {
 		taskqdService.updateRtype("1",taskfk.getHdid());
-
+		//计算实际任务时间
+		int subTime = taskqdService.getRealTime(taskfk.getHdid());
 		if (!taskfk.getSeridList().equals("")){
 			String[] list = taskfk.getSeridList().split(",");
 
@@ -102,7 +103,14 @@
 
 				Integral integral = new Integral();
 				//设置获取的积分
-				integral.setIntegral(taskfk.getIntegral());
+				//积分数额获取规则  一小时以内5分,一至三小时10分,三小时以上15分
+				if (subTime>0&&subTime<60*60){
+					integral.setIntegral(5);
+				}else if (subTime>60*60&&subTime<60*60*3){
+					integral.setIntegral(10);
+				}else {
+					integral.setIntegral(15);
+				}
 				integral.setAccess(taskfk.getAccess());
 				integral.setUid(Long.valueOf(list[i]));
 				integral.setTime(new Date());
diff --git a/src/main/java/org/springblade/modules/taskqd/entity/Taskqd.java b/src/main/java/org/springblade/modules/taskqd/entity/Taskqd.java
index 5e9bf19..6d25274 100644
--- a/src/main/java/org/springblade/modules/taskqd/entity/Taskqd.java
+++ b/src/main/java/org/springblade/modules/taskqd/entity/Taskqd.java
@@ -71,6 +71,22 @@
 	private String endtime;
 
 	/**
+	 * 实际开始时间
+	 */
+	@ApiModelProperty(value = "实际开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String stime;
+
+	/**
+	 * 实际结束时间
+	 */
+	@ApiModelProperty(value = "实际结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String sendtime;
+
+	/**
 	 * 省
 	 */
 	@ApiModelProperty(value = "省")
diff --git a/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.java b/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.java
index 898a41d..a97b4c7 100644
--- a/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.java
+++ b/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.java
@@ -50,4 +50,6 @@
 	String querySerid(String rid);
 
 	List<Taskqd> countTaskByJur(@Param("jurisdiction") String jurisdiction, @Param("startTime") String startTime,@Param("period") String period);
+
+	int getRealTime(String hdid);
 }
diff --git a/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml b/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml
index 5d55aff..0177ebd 100644
--- a/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml
+++ b/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml
@@ -44,9 +44,12 @@
         where id = #{id}
     </update>
     <update id="updateRtype">
-        update sys_taskqd
-        SET rtype=#{type}
-        where id = #{rid}
+        UPDATE sys_taskqd
+        <set>
+            <if test='type == "0" '>rtype=#{type},stime = now(),</if>
+            <if test='type == "1" '>rtype=#{type},sendtime = now(),</if>
+        </set>
+        WHERE id = #{rid}
     </update>
 
     <update id="updateSerid">
@@ -186,4 +189,11 @@
         </choose>
         LIMIT 0,15
     </select>
+
+    <select id="getRealTime" resultType="java.lang.Integer">
+        SELECT (UNIX_TIMESTAMP(sendtime)-UNIX_TIMESTAMP(stime))
+            subsecond
+        FROM sys_taskqd
+        WHERE id = #{hdid}
+    </select>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/taskqd/service/ITaskqdService.java b/src/main/java/org/springblade/modules/taskqd/service/ITaskqdService.java
index 287132f..000ab3e 100644
--- a/src/main/java/org/springblade/modules/taskqd/service/ITaskqdService.java
+++ b/src/main/java/org/springblade/modules/taskqd/service/ITaskqdService.java
@@ -44,4 +44,6 @@
 	String querySerid(String rid);
 
 	List<Taskqd> countTaskByJur(String jurisdiction, String startTime, String period);
+
+	int getRealTime(String hdid);
 }
diff --git a/src/main/java/org/springblade/modules/taskqd/service/impl/TaskqdServiceImpl.java b/src/main/java/org/springblade/modules/taskqd/service/impl/TaskqdServiceImpl.java
index c7dbec0..bfec1b3 100644
--- a/src/main/java/org/springblade/modules/taskqd/service/impl/TaskqdServiceImpl.java
+++ b/src/main/java/org/springblade/modules/taskqd/service/impl/TaskqdServiceImpl.java
@@ -94,4 +94,9 @@
 	public List<Taskqd> countTaskByJur(String jurisdiction, String startTime, String period) {
 		return baseMapper.countTaskByJur(jurisdiction,startTime,period);
 	}
+
+	@Override
+	public int getRealTime(String hdid) {
+		return baseMapper.getRealTime(hdid);
+	}
 }

--
Gitblit v1.9.3