PointsOperationController.java 4.03 KB
package com.topdraw.business.process.rest;

import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.points.available.service.PointsAvailableService;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryType;
import com.topdraw.business.basicdata.points.detail.service.PointsDetailService;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailQueryCriteria;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.business.process.service.PointsOperationService;
import com.topdraw.common.ResultInfo;
import com.topdraw.util.TimestampUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Objects;

/**
 * @author XiangHan
 * @date 2021-10-22
 */
@Api(tags = "PointsOperation管理")
@RestController
@RequestMapping("/api/PointsOperation")
public class PointsOperationController {

    private static final Logger LOG = LoggerFactory.getLogger(PointsOperationController.class);

    @Autowired
    PointsOperationService pointsOperationService;
    @Autowired
    PointsDetailService pointsDetailService;
    @Autowired
    PointsAvailableService pointsAvailableService;

    @GetMapping(value = "/pagePointsDetails")
    @ApiOperation("查询PointsDetail")
    public ResultInfo pagePointsDetails(PointsDetailQueryCriteria criteria, Pageable pageable) {
        return ResultInfo.successPage(pointsDetailService.queryAll(criteria,pageable));
    }

    @GetMapping(value = "/pageAvailablePoints")
    @ApiOperation("查询PointsAvailable")
    public ResultInfo pageAvailablePoints(PointsAvailableQueryCriteria criteria, Pageable pageable) {
        PointsAvailableQueryType queryType = criteria.getQueryType();
        // 可用
        if (queryType == PointsAvailableQueryType.AVAILABLE_ONLY) {
            criteria.setExpireTime(TimestampUtil.now());
        }
        return ResultInfo.successPage(pointsAvailableService.queryAll(criteria,pageable));
    }

    @Log
    @GetMapping(value = "/cleanInvalidPointsAndCalculateCurrentPoints/{id}")
    @ApiOperation("清除过期积分并计算总积分,供客户端会员查询积分时调用")
    public ResultInfo cleanInvalidPointsAndCalculateCurrentPoints(@PathVariable("id") Long id) {
        Long aLong = this.pointsOperationService.cleanInvalidPointsAndCalculateCurrentPoints(id);
        return ResultInfo.success(Objects.isNull(aLong) ? 0L : aLong);
    }

    /*@Log
    @PostMapping(value = "/cleanInvalidPointsAndCalculateCurrentPointsByMemberIds")
    @ApiOperation("清除过期积分并计算总积分,管理端使用")
    public ResultInfo cleanInvalidPointsAndCalculateCurrentPointsByMemberIds(List<Long> memberIds) {
        if (!CollectionUtils.isEmpty(memberIds)) {
            for (Long memberId : memberIds) {
                this.pointsOperationService.cleanInvalidPointsAndCalculateCurrentPoints(memberId);
            }
        }
        return ResultInfo.success();
    }*/

    @Log
    @PostMapping(value = "/grantPointsByManual")
    @ApiOperation("新增PointsDetail")
    public ResultInfo grantPointsByManual(@Validated @RequestBody TempPoints tempPoints) {
        Long memberId = tempPoints.getMemberId();
        this.pointsOperationService.grantPointsByManual(memberId,tempPoints);
        return ResultInfo.success();
    }

    @Log
    @PostMapping(value = "/customPoints")
    @ApiOperation("积分消耗")
    public ResultInfo customPoints(@Validated @RequestBody TempPoints tempPoints) {
        this.pointsOperationService.customPoints(tempPoints);
        return ResultInfo.success();
    }
}