瀏覽代碼

feat: 我的积分-积分记录列表

李学松 2 年之前
父節點
當前提交
734040c71a

+ 66 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/vo/PersonalScoreRecordVO.java

@@ -0,0 +1,66 @@
+package com.qunzhixinxi.hnqz.admin.api.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 个人累计积分记录
+ *
+ * @author snows
+ * @date 2023/3/27 10:37
+ */
+@Data
+public class PersonalScoreRecordVO implements Serializable {
+	private static final long serialVersionUID = -6628168954572943648L;
+
+	/**
+	 * 积分包id
+	 */
+	private String scorePackageId;
+
+	/**
+	 * 积分包名称
+	 */
+	private String scorePackageName;
+
+	/**
+	 * 任务类型id
+	 */
+	private String taskTypeId;
+
+	/**
+	 * 任务类型名称
+	 */
+	private String taskTypeName;
+
+	/**
+	 * 任务完成时间
+	 */
+	private LocalDateTime lookintoDate;
+
+	/**
+	 * 任务积分值
+	 */
+	private Integer score;
+
+	/**
+	 * 积分记录状态枚举
+	 */
+	@Getter
+	@AllArgsConstructor
+	public enum PersonalScoreRecordStatus {
+		PAID("PAID", "6", "已结算积分"),
+		UNPAID("UNPAID", "4", "已结算积分");
+
+		private final String status;
+
+		private final String scorePackageStatus;
+
+		private final String description;
+	}
+
+}

+ 73 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -31,6 +31,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysRole;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmAdRecord;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
+import com.qunzhixinxi.hnqz.admin.api.vo.PersonalScoreRecordVO;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
 import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.entity.MedicalEquipment;
@@ -64,9 +65,11 @@ import com.qunzhixinxi.hnqz.admin.entity.vo.SysUserSubVO;
 import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskTypeVO;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.enums.PackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
+import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.UserSignResultEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScoreTaskTypeMapper;
 import com.qunzhixinxi.hnqz.admin.service.MedicalEquipmentService;
@@ -4379,5 +4382,75 @@ public class ApiController {
 
 	}
 
+	/**
+	 * 我的积分-积分记录列表
+	 *
+	 * @param page 分页参数
+	 * @param status 状态
+	 * @return 分页结果
+	 */
+	@GetMapping("/page-accumulative-score")
+	public R<Page<PersonalScoreRecordVO>> pageAccumulativeScore(Page<PersonalScoreRecordVO> page,
+									  @RequestParam(value = "status", required = true) PersonalScoreRecordVO.PersonalScoreRecordStatus status) {
+		// 获取当前用户任务领包记录
+		List<WmScorePackageStatus> packageStatuses = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+				.eq(WmScorePackageStatus::getUserId, SecurityUtils.getUser().getId())
+				.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val()));
+		if (CollUtil.isEmpty(packageStatuses)) {
+			return R.ok(page);
+		}
+
+		// 查询积分包
+		List<String> ids = packageStatuses.stream().map(WmScorePackageStatus::getPackageId).collect(Collectors.toList());
+		List<WmScorePackage> packages = wmScorePackageService.listByIds(ids);
+		// 转为map key-积分包id,value-积分包名称
+		Map<String, String> packageMap = packages.stream()
+				.filter(pkg -> status.getScorePackageStatus().equals(pkg.getScorePackageStatus()))
+				.collect(Collectors.toMap(WmScorePackage::getId, WmScorePackage::getScorePackageName));
+
+		// 过滤得已结算、待结算积分包id
+		Set<String> packageIds = packages.stream()
+				.filter(pkg -> status.getScorePackageStatus().equals(pkg.getScorePackageStatus()))
+				.map(WmScorePackage::getId)
+				.collect(Collectors.toSet());
+
+		if (CollUtil.isEmpty(packageIds)) {
+			return R.ok(page);
+		}
+
+		// 查询taskType
+		List<WmTaskType> taskTypeList = wmTaskTypeService.list(Wrappers.<WmTaskType>lambdaQuery()
+				.eq(WmTaskType::getTaskTypeLevel, "1")
+				.eq(WmTaskType::getDelFlag, DelEnum.NOT_DEL.val())
+				.eq(WmTaskType::getEnableFlag, EnableEnum.ENABLE.val()));
+		// taskType通过id分组(key为parentId,value为taskTypeId的set)
+		Map<String, String> taskTypeIdMap = taskTypeList.stream()
+				.collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
+
+		// 查询任务
+		Page<WmTask> wmTaskPage = wmTaskService.page(new Page<>(page.getCurrent(), page.getSize()), Wrappers.<WmTask>lambdaQuery()
+				.in(WmTask::getScorePackageId, packageIds)
+				.eq(WmTask::getTaskStatus, TaskStatusEnum.APPROVED.val())
+				.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
+				.eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val()));
+		List<PersonalScoreRecordVO> recordVOS = new ArrayList<>();
+		wmTaskPage.getRecords().forEach(wmTask -> {
+			PersonalScoreRecordVO recordVO = new PersonalScoreRecordVO();
+			recordVO.setScore(wmTask.getScore());
+			recordVO.setTaskTypeId(wmTask.getTaskTypeId());
+			recordVO.setLookintoDate(wmTask.getLookintoDate());
+			recordVO.setScorePackageId(wmTask.getScorePackageId());
+			recordVO.setScorePackageName(packageMap.get(wmTask.getScorePackageId()));
+			recordVO.setTaskTypeName(taskTypeIdMap.get(wmTask.getTaskTypeId()));
+			recordVOS.add(recordVO);
+		});
+
+		page.setRecords(recordVOS);
+		page.setTotal(wmTaskPage.getTotal());
+		page.setPages(wmTaskPage.getPages());
+
+		return R.ok(page);
+	}
+
 
 }