huliguo
2025-04-21 17abf0608f62cdd318dba3e7b12a32ea486cb482
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -2,14 +2,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.mapper.UserPointMapper;
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.account.vo.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
@@ -29,7 +28,9 @@
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -47,6 +48,8 @@
    private UserPointService userPointService;
    @Resource
    private OrderClient orderClient;
    @Resource
    private UserPointMapper userPointMapper;
    /**
@@ -64,9 +67,7 @@
    @GetMapping("/getUserPointDetail")
    @ApiOperation("获取变更明细")
    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, Integer pageCurr, Integer pageSize) {
                                          @ApiParam("变动类型(4=兑换商品,12=他人赠送,13=赠与他人,16=取消订单,17=充值 )") Integer type, Integer pageCurr, Integer pageSize) {
        LocalDateTime startTime = null;
        LocalDateTime endTime = null;
        if (date != null) {
@@ -107,7 +108,17 @@
        return R.ok();
    }
    /**
     * 删除用户积分流水
     */
    @DeleteMapping("/deleteUserPoint")
    public R deleteUserPoint(@RequestParam("orderId") Long orderId) {
        userPointService.remove(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getObjectId, orderId));
        return R.ok();
    }
    /**
     * 积分统计
@@ -193,17 +204,79 @@
    }
    /**
     * 获取用户积分变更详情
     */
    @GetMapping("/getUserPontDetailPageList")
    @ApiOperation(value = "用户积分详情", tags = "管理后台-财务统计-用户积分统计")
    public R<PageInfo<UserPointDetailVO>> getUserPontDetailPageList(@RequestParam(value = "types",required = false) Collection<Integer> types,
                                                                               @RequestParam(value = "id") Long id,
                                                                               @ApiParam("当前页")@RequestParam("pageCurr") Integer pageCurr,
                                                                               @ApiParam("分页大小")@RequestParam("pageSize") Integer pageSize) {
        PageInfo<UserPointDetailVO> pageInfo=userPointService.getUserPontDetailPageList(types,id,pageCurr,pageSize);
        return R.ok(pageInfo);
    }
    /**
     * 判断当天是否分享获得过积分
     * @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);
    @GetMapping("/getUserPointStatisticsPageList")
    @ApiOperation(value = "用户积分统计", tags = "管理后台-财务统计-用户积分统计")
    public R<UserPointStatisticsOutVO> getUserPointStatisticsPageList(@RequestParam(value = "types",required = false) Collection<Integer> types,
                                                                    @RequestParam(value = "name",required = false) String name,
                                                                    @RequestParam(value = "phone",required = false) String phone,
                                                                    @RequestParam(value = "beginTime",required = false) LocalDateTime beginTime,
                                                                    @RequestParam(value = "endTime",required = false) LocalDateTime endTime,
                                                                    @ApiParam("当前页")@RequestParam("pageCurr") Integer pageCurr,
                                                                    @ApiParam("分页大小")@RequestParam("pageSize") Integer pageSize) {
        UserPointStatisticsOutVO userPointStatisticsOutVO = new UserPointStatisticsOutVO();
        //充值绿电分
        Integer chargePoint=userPointService.selectRechargeAndUse(name,phone,beginTime,endTime,17);
        // 消费绿电分
        Integer exchangePoint =userPointService.selectRechargeAndUse(name,phone,beginTime,endTime,4);
        Integer cancelPoint = userPointService.selectRechargeAndUse(name,phone,beginTime,endTime,16);
        Integer usePoint=(exchangePoint==null?0:exchangePoint )-( cancelPoint==null?0:cancelPoint);
        userPointStatisticsOutVO.setChargeTotalPoint(chargePoint==null?0:chargePoint);
        userPointStatisticsOutVO.setUseTotalPoint(usePoint);
        //查找记录
        PageInfo<UserPointStatisticsPageVO> pageInfo=userPointService.getUserPointStatisticsPageList(types,name,phone,beginTime,endTime,pageCurr,pageSize);
        userPointStatisticsOutVO.setPageInfo(pageInfo);
        return R.ok(userPointStatisticsOutVO);
    }
    /**
     * 导出店铺余额列表
     */
    @GetMapping("/userPointExcel")
    @ApiOperation(value = "导出", tags = {"管理后台-财务统计-用户积分统计"})
    void userPointExcel(HttpServletResponse response,
                        @RequestParam(value = "types",required = false) Collection<Integer> types,
                        @RequestParam(value = "name",required = false) String name,
                        @RequestParam(value = "phone",required = false) String phone,
                        @RequestParam(value = "beginTime",required = false) LocalDateTime beginTime,
                        @RequestParam(value = "endTime",required = false) LocalDateTime endTime){
        List<UserPointExcel> exportList =userPointMapper.userPointExcel(types,name,phone,beginTime,endTime);
        exportList.forEach(x->{
            if (x.getType()==12||x.getType()==17){
                x.setVariablePointStr("+"+x.getVariablePoint()+"绿电分");
            }else {
                x.setVariablePointStr("-"+x.getVariablePoint()+"绿电分");
            }
        });
        ExcelUtil<UserPointExcel> util = new ExcelUtil<UserPointExcel>(UserPointExcel.class);
        util.exportExcel(response, exportList, "店铺余额列表数据");
    }
    @PostMapping("/save")
    R save(@RequestBody UserPoint userPoint){
        userPointService.save(userPoint);
        return R.ok();
    }
}