|
|
|
|
package com.youlai.boot.mini.controller;
|
|
|
|
|
|
|
|
|
|
import com.youlai.boot.common.annotation.Log;
|
|
|
|
|
import com.youlai.boot.common.annotation.RepeatSubmit;
|
|
|
|
|
import com.youlai.boot.common.enums.ActionTypeEnum;
|
|
|
|
|
import com.youlai.boot.common.enums.LogModuleEnum;
|
|
|
|
|
import com.youlai.boot.common.result.PageResult;
|
|
|
|
|
import com.youlai.boot.common.result.Result;
|
|
|
|
|
import com.youlai.boot.framework.security.util.SecurityUtils;
|
|
|
|
|
import com.youlai.boot.mini.model.query.MyPointRecordQuery;
|
|
|
|
|
import com.youlai.boot.mini.model.vo.MyPointRecordVO;
|
|
|
|
|
import com.youlai.boot.mini.model.vo.MyPointVO;
|
|
|
|
|
import com.youlai.boot.mini.model.vo.SignResultVO;
|
|
|
|
|
import com.youlai.boot.mini.model.vo.SignStatusVO;
|
|
|
|
|
import com.youlai.boot.mini.service.MiniPointAccountService;
|
|
|
|
|
import com.youlai.boot.mini.service.MiniPointRecordService;
|
|
|
|
|
import com.youlai.boot.mini.service.MiniSignService;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.springdoc.core.annotations.ParameterObject;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
@Tag(name = "用户端积分服务相关接口")
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/api/v1/mini/user/point")
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
public class PointController {
|
|
|
|
|
|
|
|
|
|
private final MiniPointAccountService pointAccountService;
|
|
|
|
|
private final MiniPointRecordService pointRecordService;
|
|
|
|
|
private final MiniSignService signService;
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "查询当前用户的积分账户信息")
|
|
|
|
|
@GetMapping("/my")
|
|
|
|
|
@Log(module = LogModuleEnum.POINT_ACCOUNT, value = ActionTypeEnum.LIST)
|
|
|
|
|
public Result<MyPointVO> getMyPoint() {
|
|
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
|
|
MyPointVO myPoint = pointAccountService.getUserPoint(userId);
|
|
|
|
|
return Result.success(myPoint);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "分页查询当前用户的积分流水列表")
|
|
|
|
|
@GetMapping("/records")
|
|
|
|
|
@Log(module = LogModuleEnum.POINT_RECORD, value = ActionTypeEnum.LIST)
|
|
|
|
|
public PageResult<MyPointRecordVO> getMyPointRecords(@ParameterObject MyPointRecordQuery query) {
|
|
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
|
|
return PageResult.success(pointRecordService.pageMyPointRecord(userId, query));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "用户签到")
|
|
|
|
|
@PostMapping("/sign")
|
|
|
|
|
@RepeatSubmit
|
|
|
|
|
@Log(module = LogModuleEnum.SIGN_RECORD, value = ActionTypeEnum.INSERT)
|
|
|
|
|
public Result<SignResultVO> sign() {
|
|
|
|
|
return Result.success(signService.sign());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "查询用户签到状态/当月签到日历")
|
|
|
|
|
@GetMapping("/sign/status")
|
|
|
|
|
@Log(module = LogModuleEnum.SIGN_RECORD, value = ActionTypeEnum.LIST)
|
|
|
|
|
public Result<SignStatusVO> getSignStatus() {
|
|
|
|
|
return Result.success(signService.getSignStatus());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "用户分享领取奖励")
|
|
|
|
|
@PostMapping("/share/reward")
|
|
|
|
|
@Log(module = LogModuleEnum.OTHER, value = ActionTypeEnum.OTHER)
|
|
|
|
|
public Result<Integer> shareReward() {
|
|
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
|
|
Integer point = pointRecordService.giveShareReward(userId);
|
|
|
|
|
return Result.success(point);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "登记流浪动物领取积分")
|
|
|
|
|
@PostMapping("/register-animal/reward")
|
|
|
|
|
@Log(module = LogModuleEnum.OTHER, value = ActionTypeEnum.OTHER)
|
|
|
|
|
public Result<Integer> registerAnimalReward(
|
|
|
|
|
@Parameter(description = "登记的流浪动物ID", required = true) @RequestParam Long animalId) {
|
|
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
|
|
Integer point = pointRecordService.giveRegisterAnimalReward(userId, animalId);
|
|
|
|
|
return Result.success(point);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "AI生成扣除积分")
|
|
|
|
|
@PostMapping("/ai-generate/deduct")
|
|
|
|
|
@Log(module = LogModuleEnum.OTHER, value = ActionTypeEnum.OTHER)
|
|
|
|
|
public Result<Integer> aiGenerateImageDeduct(
|
|
|
|
|
@Parameter(description = "AI生成任务唯一ID(用于幂等)", required = true) @RequestParam String taskId) {
|
|
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
|
|
Integer deductPoint = pointRecordService.deductAiGenerateImagePoint(userId, taskId);
|
|
|
|
|
return Result.success(deductPoint);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|