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.Region; import com.ruoyi.user.entity.UserRecipient; import com.ruoyi.user.service.RegionService; import com.ruoyi.user.service.UserRecipientService; 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.*; import javax.annotation.Resource; import java.util.List; /** *

* 用户收货地址 前端控制器 *

* * @author hjl * @since 2024-06-07 */ @RestController @RequestMapping("/recipient") @Api(tags = {"用户端-收货地址管理"}) public class UserRecipientController { @Resource private UserRecipientService recipientService; @Resource private TokenService tokenService; /** * 收货地址列表 */ @GetMapping(value = "/list") @ApiOperation(value = "收货地址列表", tags = {"用户端-收货地址管理"}) public R> list() { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } return R.ok(recipientService.lambdaQuery().eq(UserRecipient::getUserId, loginUser.getUserid()) .eq(UserRecipient::getIsDelete, Constants.ZERO) .orderByDesc(UserRecipient::getIsDefault) .orderByDesc(UserRecipient::getCreateTime).list()); } /** * 收货地址列表 */ @GetMapping(value = "/page") @ApiOperation(value = "收货地址分页列表", tags = {"用户端-收货地址管理"}) public R> page(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } return R.ok(recipientService.lambdaQuery().eq(UserRecipient::getUserId, loginUser.getUserid()) .eq(UserRecipient::getIsDelete, Constants.ZERO) .orderByDesc(UserRecipient::getIsDefault) .orderByDesc(UserRecipient::getCreateTime).page(Page.of(pageNum, pageSize))); } /** * 收货地址详情 * * @param id 收货地址id * @return 封装分页数据 */ @ApiOperation(value = "收货地址详情", tags = {"用户端-收货地址管理"}) @GetMapping(value = "/detail") @ApiImplicitParams({ @ApiImplicitParam(value = "收货地址id", name = "id", dataType = "Integer", required = true) }) public R detail(@RequestParam Integer id) { return R.ok(recipientService.getById(id)); } /** * 新增收货地址 * * @param userRecipient 收货地址信息 * @return 封装分页数据 */ @ApiOperation(value = "新增收货地址", tags = {"用户端-收货地址管理"}) @PostMapping(value = "/save") public R save(@RequestBody UserRecipient userRecipient) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } Region one = regionService.lambdaQuery().eq(Region::getCode, userRecipient.getCityCode()).one(); userRecipient.setCity(one.getName()); userRecipient.setUserId(loginUser.getUserid()); // 当前新增收货地址为默认地址时 boolean result = recipientService.updateBatchAddress(userRecipient, loginUser.getUserid()); return result && recipientService.save(userRecipient) ? R.ok() : R.fail(); } /** * 设置默认收货地址 * * @param id 收货地址id */ @ApiOperation(value = "设置默认收货地址", tags = {"用户端-收货地址管理"}) @PostMapping(value = "/defaultAddress") public R defaultAddress(@RequestParam Integer id) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } // 修改所有收货地址 boolean update = recipientService.lambdaUpdate() .set(UserRecipient::getIsDefault, Constants.ZERO) .eq(UserRecipient::getUserId, loginUser.getUserid()) .eq(UserRecipient::getIsDelete, Constants.ZERO).update(); update = update && recipientService.lambdaUpdate() .eq(UserRecipient::getId, id) .set(UserRecipient::getIsDefault, Constants.ONE).update(); return update ? R.ok() : R.fail(); } @Resource private RegionService regionService; /** * 修改收货地址 * * @param userRecipient 收货地址信息 * @return 封装分页数据 */ @ApiOperation(value = "修改收货地址", tags = {"用户端-收货地址管理"}) @PostMapping(value = "/update") public R update(@RequestBody UserRecipient userRecipient) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } Region one = regionService.lambdaQuery().eq(Region::getCode, userRecipient.getCityCode()).one(); userRecipient.setCity(one.getName()); // 当前修改收货地址为默认地址时 boolean result = recipientService.updateBatchAddress(userRecipient, loginUser.getUserid()); return result && recipientService.updateById(userRecipient) ? R.ok() : R.fail(); } /** * 根据id删除收货地址 * * @param id 收货地址id */ @ApiOperation(value = "删除收货地址", tags = {"用户端-收货地址管理"}) @GetMapping(value = "/batchDelete") @ApiImplicitParams({ @ApiImplicitParam(value = "收货地址id", name = "id", dataType = "String", required = true) }) public R batchDelete(@RequestParam Integer id) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } return recipientService.lambdaUpdate().set(UserRecipient::getIsDelete, Constants.ONE) .eq(UserRecipient::getId, id).update() ? R.ok() : R.fail(); } }