无关风月
2025-04-09 cda724da35beb1ffd84955cc42bda5ab399ebbe1
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RecoveryServeController.java
@@ -1,10 +1,23 @@
package com.ruoyi.user.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.system.api.model.LoginUserInfo;
import com.ruoyi.user.entity.RecoveryClassify;
import com.ruoyi.user.entity.RecoveryServe;
import com.ruoyi.user.entity.UserCollect;
import com.ruoyi.user.entity.UserRecipient;
import com.ruoyi.user.service.RecoveryClassifyService;
import com.ruoyi.user.service.RecoveryServeService;
import com.ruoyi.user.service.UserCollectService;
import com.ruoyi.user.service.UserRecipientService;
import com.ruoyi.user.vo.ServeDetailVO;
import com.ruoyi.user.vo.ServeListVO;
import com.ruoyi.user.vo.UserServeTypeVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -15,6 +28,7 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
@@ -32,6 +46,58 @@
    @Resource
    private RecoveryServeService recoveryServeService;
    @Resource
    private RecoveryClassifyService recoveryClassifyService;
    @Resource
    private UserCollectService collectService;
    @Resource
    private TokenService tokenService;
    @Resource
    private UserRecipientService userRecipientService;
    /**
     * 获取服务列表
     */
    @GetMapping(value = "/serveType")
    @ApiOperation(value = "获取服务分类", tags = {"用户端-服务"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "服务类型(0:以旧换新;1:家电回收)", name = "type", dataType = "Integer", required = true)
    })
    public R<List<UserServeTypeVO>> serveType(@RequestParam("type") Integer type) {
        String serveType;
        if (Constants.ZERO.equals(type)) {
            serveType = Constants.TRADE_IN;
        } else {
            serveType = Constants.RECOVERY;
        }
        List<RecoveryClassify> serveList = recoveryClassifyService.lambdaQuery()
                .eq(RecoveryClassify::getIsDelete, 0)
                .eq(RecoveryClassify::getSupClassify, serveType)
                .orderByDesc(RecoveryClassify::getSort)
                .orderByDesc(RecoveryClassify::getCreateTime).list();
        List<UserServeTypeVO> list = new ArrayList<>();
        for (RecoveryClassify classify : serveList) {
            list.add(new UserServeTypeVO(classify.getId(), classify.getSubClassify(),
                    classify.getClassificationPicture(), classify.getTypeDescribe(), type));
        }
        return R.ok(list);
    }
    /**
     * 获取服务列表
     */
    @GetMapping(value = "/servePage")
    @ApiOperation(value = "根据所选分类获取服务列表", tags = {"用户端-服务"})
    public R<IPage<RecoveryServe>> servePage(@RequestParam("id") String id,
                                             @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<RecoveryServe> page = recoveryServeService.lambdaQuery()
                .eq(RecoveryServe::getClassifyId, id)
                .eq(RecoveryServe::getIsDelete, 0)
                .orderByDesc(RecoveryServe::getSort)
                .orderByDesc(RecoveryServe::getCreateTime).page(Page.of(pageNum, pageSize));
        return R.ok(page);
    }
    /**
     * 获取服务列表
@@ -48,13 +114,86 @@
    @GetMapping(value = "/serveDetail")
    @ApiOperation(value = "获取服务详情", tags = {"用户端-服务"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "服务id", name = "serveId", dataType = "Integer", required = true)
            @ApiImplicitParam(value = "服务id", name = "serveId", dataType = "String", required = true)
    })
    public R<RecoveryServe> serveDetail(@RequestParam Integer serveId) {
        return R.ok(recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
                .eq(RecoveryServe::getIsDelete, 0).orderByAsc(RecoveryServe::getSort).one());
    public R<ServeDetailVO> serveDetail(@RequestParam String serveId) {
        LoginUserInfo loginUser = tokenService.getLoginUserByUser();
        if (null == loginUser) {
            RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
                    .eq(RecoveryServe::getIsDelete, 0).one();
                recoveryServe.setIsCollect(Boolean.FALSE);
            // 获取服务分类
            Integer classifyId = recoveryServe.getClassifyId();
            RecoveryClassify classify = recoveryClassifyService.lambdaQuery()
                    .eq(RecoveryClassify::getId, classifyId).one();
            if (classify.getSupClassify().equals(Constants.TRADE_IN)) {
                recoveryServe.setType(Constants.ZERO);
            } else {
                recoveryServe.setType(Constants.ONE);
            }
            return R.ok(new ServeDetailVO(recoveryServe, null));
        }
        RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
                .eq(RecoveryServe::getIsDelete, 0).one();
        // 用户是否收藏
        UserCollect one = collectService.lambdaQuery()
                .eq(UserCollect::getServeId, serveId)
                .eq(UserCollect::getUserId, loginUser.getUserid())
                .eq(UserCollect::getIsDelete, 0).one();
        if (null != one) {
            recoveryServe.setIsCollect(Boolean.TRUE);
        } else {
            recoveryServe.setIsCollect(Boolean.FALSE);
        }
        // 获取服务分类
        Integer classifyId = recoveryServe.getClassifyId();
        RecoveryClassify classify = recoveryClassifyService.lambdaQuery()
                .eq(RecoveryClassify::getId, classifyId).one();
        if (classify.getSupClassify().equals(Constants.TRADE_IN)) {
            recoveryServe.setType(Constants.ZERO);
        } else {
            recoveryServe.setType(Constants.ONE);
        }
        // 获取用户默认收货地址
        UserRecipient userRecipient = userRecipientService.lambdaQuery()
                .eq(UserRecipient::getIsDefault, Constants.ONE)
                .eq(UserRecipient::getUserId, loginUser.getUserid())
                .eq(UserRecipient::getIsDelete, Constants.ZERO)
                .last("limit 1")
                .one();
        return R.ok(new ServeDetailVO(recoveryServe, userRecipient));
    }
    /**
     * 服务收藏
     */
    @GetMapping(value = "/serveCollect")
    @ApiOperation(value = "服务收藏", tags = {"用户端-服务"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "服务id", name = "serveId", dataType = "Integer", required = true)
    })
    public R<String> serveCollect(@RequestParam Integer serveId) {
        LoginUserInfo loginUser = tokenService.getLoginUserByUser();
        if (null == loginUser) {
            return R.loginExpire("登录失效!");
        }
        UserCollect collect = collectService.lambdaQuery()
                .eq(UserCollect::getUserId, loginUser.getUserid())
                .eq(UserCollect::getServeId, serveId)
                .eq(UserCollect::getIsDelete, 0).one();
        boolean result;
        if (null != collect) {
            collect.setIsDelete(Constants.ONE);
            result = collectService.updateById(collect);
        } else {
            collect = new UserCollect(loginUser.getUserid(), serveId);
            result = collectService.save(collect);
        }
        return result ? R.ok() : R.fail();
    }
}