Pu Zhibing
2025-04-03 1f09f6daaf73bc83cceb4ae22b862b7b365635cf
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -1,25 +1,35 @@
package com.ruoyi.account.controller;
import com.ruoyi.account.api.model.AppUser;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.model.UserPoint;
import com.ruoyi.account.api.model.UserPointCopy;
import com.ruoyi.account.mapper.UserPointCopyMapper;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.UserPointService;
import com.ruoyi.account.vo.TransferPoint;
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointStatistics;
import com.ruoyi.account.vo.UserPointVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.order.feignClient.OrderClient;
import com.ruoyi.order.model.Order;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -42,7 +52,9 @@
    @Resource
    private UserPointService userPointService;
    @Resource
    private AppUserService appUserService;
    private UserPointCopyMapper userPointCopyMapper;
    @Resource
    private OrderClient orderClient;
    /**
@@ -59,10 +71,10 @@
     */
    @GetMapping("/getUserPointDetail")
    @ApiOperation("获取变更明细")
    public TableDataInfo<UserPointDetailVO> getUserPointDetail(@ApiParam("指定日期") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date,
                                                               @ApiParam("变动类型(1=消费积分,2=返佣积分,3=拉新人积分,4=兑换商品 " +
    public R<PageInfo<UserPointDetailVO>> getUserPointDetail(@ApiParam("指定日期") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date,
                                          @ApiParam("变动类型(1=消费积分,2=返佣积分,3=拉新人积分,4=兑换商品 " +
                                                                       "5 = 门店业绩积分 6 =门店返佣积分7=技师业绩积分8 =转赠积分 9 =做工积分 " +
                                                                       "10 =注册积分)") Integer type) {
                                                                       "10 =注册积分)") Integer type, Integer pageCurr, Integer pageSize) {
        LocalDateTime startTime = null;
        LocalDateTime endTime = null;
        if (date != null) {
@@ -77,9 +89,8 @@
            endTime = lastDayOfMonth.atTime(LocalTime.MAX);
        }
        startPage();
        List<UserPointDetailVO> list = userPointService.getUserPointDetail(SecurityUtils.getUserId(), startTime, endTime, type);
        return getDataTable(list);
        PageInfo<UserPointDetailVO> userPointDetail = userPointService.getUserPointDetail(SecurityUtils.getUserId(), startTime, endTime, type, pageCurr, pageSize);
        return R.ok(userPointDetail);
    }
    /**
@@ -87,9 +98,8 @@
     */
    @PostMapping("/transferPoint")
    @ApiOperation("转赠积分")
    public R<Void> transferPoint(@ApiParam("积分") @RequestParam BigDecimal point, @ApiParam("手机号") @RequestParam String phone) {
        userPointService.transferPoint(point, phone);
        return R.ok();
    public R<Void> transferPoint(@RequestBody TransferPoint transferPoint) {
        return userPointService.transferPoint(transferPoint.getPoint(), transferPoint.getPhone());
    }
@@ -105,22 +115,123 @@
        return R.ok();
    }
    @PostMapping("/saveUserPointCopy")
    public R saveUserPointCopy(@RequestBody UserPointCopy userPointCopy) {
        userPointCopyMapper.insert(userPointCopy);
        return R.ok();
    }
    @DeleteMapping("/deleteUserPointCopy")
    public R deleteUserPointCopy(@RequestParam("orderId") Long orderId, @RequestParam("type") List<Integer> type) {
        userPointCopyMapper.delete(new LambdaQueryWrapper<UserPointCopy>().in(UserPointCopy::getType, type)
                .eq(UserPointCopy::getObjectId, orderId));
        return R.ok();
    }
    @DeleteMapping("/deleteUserPointCopyByIds")
    public R deleteUserPointCopyByIds(@RequestParam("ids") List<Long> ids){
        userPointCopyMapper.deleteBatchIds(ids);
        return R.ok();
    }
    @PostMapping("/getUserPointCopy")
    public R<List<UserPointCopy>> getUserPointCopy(@RequestParam("orderId") Long orderId, @RequestParam("type") List<Integer> type) {
        List<UserPointCopy> list = userPointCopyMapper.selectList(new LambdaQueryWrapper<UserPointCopy>().in(UserPointCopy::getType, type)
                .eq(UserPointCopy::getObjectId, orderId));
        return R.ok(list);
    }
    /**
     * 积分统计
     */
    @GetMapping("/statistics")
    @ApiOperation(value = "积分统计", tags = "管理后台-财务统计-用户积分统计")
    public R<UserPointStatistics> statistics(UserPoint userPoint) {
        List<AppUser> appUserList = appUserService.list();
        Integer totalPoint = 0;
        Integer consumePoint = 0;
        Integer sharePoint = 0;
        List<UserPoint> userPointList = userPointService.list();
        UserPointStatistics userPointStatistics = new UserPointStatistics();
        userPointStatistics.setTotalPoint(totalPoint);
        userPointStatistics.setConsumePoint(consumePoint);
        userPointStatistics.setSharePoint(sharePoint);
        return null;
        return R.ok(userPointService.getStatistics(userPoint));
    }
    /**
     * 变更记录
     */
    @GetMapping("/list")
    @ApiOperation(value = "积分变更记录", tags = "管理后台-财务统计-用户积分统计")
    public R<IPage<UserPoint>> list(UserPoint userPoint) {
        IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(userPoint.getPageNum(), userPoint.getPageSize()), userPoint);
        return R.ok(userPointPage);
    }
    @GetMapping("/user/list")
    @ApiOperation(value = "积分管理-用户积分明细(必传用户id)", tags = "后台")
    public R<IPage<UserPoint>> userlist(UserPoint userPoint) {
        IPage<UserPoint> page = userPointService.getUserPointPage(Page.of(userPoint.getPageNum(), userPoint.getPageSize()), userPoint);
        for (UserPoint record : page.getRecords()) {
            if (record.getType()==1 || record.getType()==11){
                Order data = orderClient.getOrderById(record.getObjectId()).getData();
                if (data!=null){
                    record.setExtention(data.getOrderNumber());
                }
            }
            if (record.getChangeDirection() == -1){
                record.setVariableType(2);
            }else{
                record.setVariableType(1);
            }
        }
        return R.ok(page);
    }
    /**
     * 导出
     */
    @GetMapping("/export")
    @ApiOperation(value = "积分变更记录导出", tags = "管理后台-财务统计-用户积分统计")
    public void export(HttpServletResponse response, UserPoint userPoint) {
        IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(1, Integer.MAX_VALUE), userPoint);
        List<UserPoint> userPointList = userPointPage.getRecords();
        ExcelUtil<UserPoint> util = new ExcelUtil<>(UserPoint.class);
        util.exportExcel(response, userPointList, "用户积分统计");
    }
    /**
     * 获取积分变动记录
     * @param userPoint
     * @return
     */
    @PostMapping("/getUserPointList")
    public R<List<UserPoint>> getUserPointList(@RequestBody UserPoint userPoint){
        LambdaQueryWrapper<UserPoint> queryWrapper = new LambdaQueryWrapper<>();
        if(null != userPoint.getType()){
            queryWrapper.eq(UserPoint::getType, userPoint.getType());
        }
        if(null != userPoint.getObjectId()){
            queryWrapper.eq(UserPoint::getObjectId, userPoint.getObjectId());
        }
        if(null != userPoint.getAppUserId()){
            queryWrapper.eq(UserPoint::getAppUserId, userPoint.getAppUserId());
        }
        List<UserPoint> list = userPointService.list(queryWrapper);
        return R.ok(list);
    }
    /**
     * 判断当天是否分享获得过积分
     * @param appUserId
     * @return
     */
    @PostMapping("/judgmentDailyShare")
    public R<Boolean> judgmentDailyShare(@RequestParam("appUserId") Long appUserId){
        long count = userPointService.count(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUserId)
                .eq(UserPoint::getType, 4).last(" and DATE_FORMAT(NOW(), '%Y-%m-%d') = DATE_FORMAT(create_time, '%Y-%m-%d')"));
        return R.ok(count != 0);
    }
}