package com.ruoyi.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.account.api.model.UserAddress;
import com.ruoyi.account.service.UserAddressService;
import com.ruoyi.common.core.domain.R;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.UserAddress;
import com.ruoyi.account.service.UserAddressService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
*
* 前端控制器
*
*
* @author luodangjia
* @since 2024-11-21
*/
@RestController
@RequestMapping("/user-address")
public class UserAddressController {
@Resource
private UserAddressService userAddressService;
@Resource
private TokenService tokenService;
/**
* 获取用户默认地址
* @param userId
* @return
*/
@ResponseBody
@PostMapping("/getDefaultUserAddress")
public R getDefaultUserAddress(@RequestParam("userId") Long userId){
List list = userAddressService.list(new LambdaQueryWrapper().eq(UserAddress::getAppUserId, userId).eq(UserAddress::getDelFlag, 0));
if(list.size() == 0){
return R.ok();
}
UserAddress userAddress = list.stream().filter(s -> s.getIsDefault() == 1).findFirst().get();
if(null == userAddress){
userAddress = list.get(0);
}
return R.ok(userAddress);
}
@ResponseBody
@PostMapping("/add")
@ApiOperation(value = "添加", tags = {"小程序-个人中心首页-我的地址"})
public R add(@RequestBody UserAddress userAddress){
Long userId = tokenService.getLoginUserApplet().getUserid();
if (userAddress.getIsDefault()==1){
List list = userAddressService.lambdaQuery().eq(UserAddress::getAppUserId, userId).list();
for (UserAddress userAddress1 : list) {
userAddress1.setIsDefault(0);
}
userAddressService.updateBatchById(list);
}
userAddress.setAppUserId(userId);
userAddressService.save(userAddress);
return R.ok();
}
@ResponseBody
@GetMapping("/list")
@ApiOperation(value = "列表", tags = {"小程序-个人中心首页-我的地址"})
public R list(){
Long userId = tokenService.getLoginUserApplet().getUserid();
List list = userAddressService.lambdaQuery().eq(UserAddress::getAppUserId, userId).orderByDesc(UserAddress::getIsDefault).list();
for (UserAddress userAddress : list) {
userAddress.setIdStr(userAddress.getId().toString());
userAddress.setUid(userAddress.getId().toString());
}
return R.ok(list);
}
@ResponseBody
@PostMapping("/edit")
@ApiOperation(value = "编辑", tags = {"小程序-个人中心首页-我的地址"})
public R edit(@RequestBody UserAddress userAddress){
Long userId = tokenService.getLoginUserApplet().getUserid();
if (userAddress.getIsDefault()==1){
List list = userAddressService.lambdaQuery().eq(UserAddress::getAppUserId, userId).list();
for (UserAddress userAddress1 : list) {
userAddress1.setIsDefault(0);
}
userAddressService.updateBatchById(list);
}
userAddressService.updateById(userAddress);
return R.ok();
}
@ResponseBody
@GetMapping("/delete")
@ApiOperation(value = "删除", tags = {"小程序-个人中心首页-我的地址"})
public R edit(@RequestParam String id){
userAddressService.removeById(id);
return R.ok();
}
@ResponseBody
@GetMapping("/set")
@ApiOperation(value = "设为默认", tags = {"小程序-个人中心首页-我的地址"})
public R set(@RequestParam String id){
Long userId = tokenService.getLoginUserApplet().getUserid();
List list = userAddressService.lambdaQuery().eq(UserAddress::getAppUserId, userId).list();
for (UserAddress userAddress : list) {
userAddress.setIsDefault(0);
}
userAddressService.updateBatchById(list);
UserAddress byId = userAddressService.getById(id);
byId.setIsDefault(1);
userAddressService.updateById(byId);
return R.ok();
}
/**
* 获取登录用户地址列表
* @return
*/
@ResponseBody
@GetMapping("/getUserAddressList")
@ApiOperation(value = "获取登录用户地址列表", tags = {"小程序-个人中心首页-我的地址"})
public R> getUserAddressList(){
Long userId = tokenService.getLoginUserApplet().getUserid();
List list = userAddressService.lambdaQuery().eq(UserAddress::getAppUserId, userId).list();
for (UserAddress userAddress : list) {
userAddress.setIdStr(userAddress.getId().toString());
}
return R.ok(list);
}
/**
* 根据id获取用户地址信息
* @param id
* @return
*/
@ResponseBody
@PostMapping("/getUserAddressById")
public R getUserAddressById(@RequestParam("id") Long id){
UserAddress userAddress = userAddressService.getById(id);
return R.ok(userAddress);
}
}