| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package com.etotem.cfc.controller;
- import com.etotem.cfc.common.Result;
- import com.etotem.cfc.entity.FamilyChallenge;
- import com.etotem.cfc.service.FamilyChallengeService;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.util.List;
- import java.util.Map;
- import com.etotem.cfc.util.ParamUtils;
- @RestController
- @RequestMapping("/api/health/challenge")
- public class FamilyChallengeController {
- @Resource
- private FamilyChallengeService familyChallengeService;
- @PostMapping("/list")
- public Result<List<FamilyChallenge>> getList(@RequestAttribute(value = "familyId", required = false) Long familyId,
- @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
- if (familyId == null) {
- return Result.noFamily("请先创建或加入家庭");
- }
- return Result.success(familyChallengeService.getActiveChallenges(familyId, currentMemberId));
- }
- @PostMapping("/history")
- public Result<List<FamilyChallenge>> getHistory(@RequestAttribute(value = "familyId", required = false) Long familyId) {
- if (familyId == null) {
- return Result.noFamily("请先创建或加入家庭");
- }
- return Result.success(familyChallengeService.getChallengeHistory(familyId));
- }
- @PostMapping("/progress")
- public Result<Void> updateProgress(@RequestBody Map<String, Object> params,
- @RequestAttribute(value = "role", required = false) String role,
- @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
- if (!"child".equals(role)) {
- return Result.error("仅孩子可打卡");
- }
- if (currentMemberId == null) {
- return Result.error("未识别当前成员");
- }
- Long challengeId = ParamUtils.getLong(params.get("challengeId"));
- int delta = params.get("delta") != null
- ? Integer.parseInt(params.get("delta").toString()) : 0;
- return familyChallengeService.updateProgress(challengeId, currentMemberId, delta);
- }
- @PostMapping("/respond")
- public Result<Void> respondChallenge(@RequestBody Map<String, Object> params,
- @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
- if (currentMemberId == null) {
- return Result.error("未识别当前成员");
- }
- Long challengeId = ParamUtils.getLong(params.get("challengeId"));
- String action = params.get("action") != null ? params.get("action").toString() : null;
- return familyChallengeService.respondChallenge(challengeId, currentMemberId, action);
- }
- @PostMapping("/templates")
- public Result<List<Map<String, Object>>> getTemplates() {
- return Result.success(familyChallengeService.getTemplates());
- }
- @PostMapping("/create")
- public Result<Long> createChallenge(@RequestBody Map<String, Object> params,
- @RequestAttribute(value = "familyId", required = false) Long familyId,
- @RequestAttribute(value = "userId", required = false) Long userId,
- @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
- if (currentMemberId == null) {
- return Result.error("未识别当前成员");
- }
- return familyChallengeService.createChallenge(familyId, userId, currentMemberId, params);
- }
- @PostMapping("/update/{id}")
- public Result<Void> updateChallenge(@PathVariable("id") Long challengeId,
- @RequestBody Map<String, Object> params,
- @RequestAttribute(value = "role", required = false) String role,
- @RequestAttribute(value = "familyId", required = false) Long familyId,
- @RequestAttribute("userId") Long userId) {
- if (!"parent".equals(role)) {
- return Result.error("仅家长可修改挑战");
- }
- return familyChallengeService.updateChallenge(challengeId, userId, familyId, params);
- }
- @PostMapping("/delete/{id}")
- public Result<Void> deleteChallenge(@PathVariable("id") Long challengeId,
- @RequestAttribute(value = "role", required = false) String role,
- @RequestAttribute(value = "familyId", required = false) Long familyId,
- @RequestAttribute("userId") Long userId) {
- if (!"parent".equals(role)) {
- return Result.error("仅家长可删除挑战");
- }
- return familyChallengeService.deleteChallenge(challengeId, userId, familyId);
- }
- }
|