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; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** *

* 回收服务列表 前端控制器 *

* * @author hjl * @since 2024-06-06 */ @RestController @RequestMapping("/serve") @Api(tags = {"用户端-服务"}) public class RecoveryServeController { @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> serveType(@RequestParam("type") Integer type) { String serveType; if (Constants.ZERO.equals(type)) { serveType = Constants.TRADE_IN; } else { serveType = Constants.RECOVERY; } List serveList = recoveryClassifyService.lambdaQuery() .eq(RecoveryClassify::getIsDelete, 0) .eq(RecoveryClassify::getSupClassify, serveType) .orderByDesc(RecoveryClassify::getSort) .orderByDesc(RecoveryClassify::getCreateTime).list(); List 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> servePage(@RequestParam("id") String id, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page 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); } /** * 获取服务列表 */ @GetMapping(value = "/serveList") @ApiOperation(value = "获取服务列表", tags = {"用户端-服务"}) public R> serveList() { return R.ok(recoveryServeService.serveList()); } /** * 获取服务详情 */ @GetMapping(value = "/serveDetail") @ApiOperation(value = "获取服务详情", tags = {"用户端-服务"}) @ApiImplicitParams({ @ApiImplicitParam(value = "服务id", name = "serveId", dataType = "String", required = true) }) public R 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).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 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(); } }