javacodeadmin/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserAddressController.java

143 lines
5.0 KiB
Java

package com.ruoyi.system.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.system.domain.Users;
import com.ruoyi.system.service.IUsersService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.UserAddress;
import com.ruoyi.system.service.IUserAddressService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 用户收货地址Controller
*
* @author ruoyi
* @date 2025-05-13
*/
@RestController
@RequestMapping("/system/UserAddress")
public class UserAddressController extends BaseController
{
@Autowired
private IUserAddressService userAddressService;
@Autowired
private IUsersService usersService;
/**
* 查询用户收货地址列表
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:list')")
@GetMapping("/list")
public TableDataInfo list(UserAddress userAddress)
{
startPage();
List<UserAddress> list = userAddressService.selectUserAddressList(userAddress);
for(UserAddress userAddress1:list){
Users users = usersService.selectUsersById(userAddress1.getUid());
if(users!=null){
userAddress1.setUname(users.getName());
}
}
return getDataTable(list);
}
/**
* 导出用户收货地址列表
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:export')")
@Log(title = "用户收货地址", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, UserAddress userAddress)
{
List<UserAddress> list = userAddressService.selectUserAddressList(userAddress);
ExcelUtil<UserAddress> util = new ExcelUtil<UserAddress>(UserAddress.class);
util.exportExcel(response, list, "用户收货地址数据");
}
/**
* 获取用户收货地址详细信息
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:query')")
@GetMapping(value = "/getuserAddressList")
public AjaxResult getuserAddressList()
{
return success(userAddressService.selectUserAddressList(new UserAddress()));
}
/**
* 获取用户收货地址详细信息
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(userAddressService.selectUserAddressById(id));
}
/**
* 新增用户收货地址
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:add')")
@Log(title = "用户收货地址", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody UserAddress userAddress)
{
return toAjax(userAddressService.insertUserAddress(userAddress));
}
/**
* 修改用户收货地址
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:edit')")
@Log(title = "用户收货地址", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody UserAddress userAddress)
{
if(userAddress.getIsDefault()==1){
//如果设为默认就将这个用户下所有数据设置为不默认,然后添加这条默认
userAddressService.updateUserAddressDefault(userAddress.getUid());
}else{
//如果用户没有默认地址,而且只添加了一条地址,那么就强制默认这个地址是默认地址
UserAddress userAddressData=new UserAddress();
userAddressData.setUid(userAddress.getUid());
userAddressData.setIsDefault(Long.valueOf(1));
List<UserAddress> list = userAddressService.selectUserAddressList(userAddressData);
//判断用户当前是否有默认地址
if(list.size()<1){
userAddress.setIsDefault(Long.valueOf(1));
}
}
return toAjax(userAddressService.updateUserAddress(userAddress));
}
/**
* 删除用户收货地址
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:remove')")
@Log(title = "用户收货地址", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(userAddressService.deleteUserAddressByIds(ids));
}
}