app地址管理
This commit is contained in:
parent
50065a8496
commit
45c8ddfcb6
@ -18,11 +18,21 @@ public interface IBaseCityService extends IService<BaseCity> {
|
||||
IPage<BaseCity> queryListPage(BaseCity pageReqVO, Page<BaseCity> page);
|
||||
|
||||
/**
|
||||
* 查询树列表
|
||||
* 递归查询树列表
|
||||
*
|
||||
* @return java.util.List<com.ruoyi.base.vo.BaseCityVO>
|
||||
* @author PQZ
|
||||
* @date 15:12 2025/4/2
|
||||
**/
|
||||
List<BaseCityVO> treeCity();
|
||||
|
||||
/**
|
||||
* 逆递归查询树结构
|
||||
*
|
||||
* @param cityId 最子集城市id
|
||||
* @return java.lang.String
|
||||
* @author PQZ
|
||||
* @date 10:25 2025/4/3
|
||||
**/
|
||||
String getCityName(Long cityId);
|
||||
}
|
||||
|
@ -42,9 +42,7 @@ public class BaseCityServiceImpl extends ServiceImpl<BaseCityMapper, BaseCity> i
|
||||
**/
|
||||
@Override
|
||||
public List<BaseCityVO> treeCity() {
|
||||
LambdaQueryWrapper<BaseCity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(BaseCity::getIsShow, 1);
|
||||
List<BaseCity> list = list(lambdaQueryWrapper);
|
||||
List<BaseCity> list = listCity();
|
||||
return buildCityTree(list);
|
||||
}
|
||||
|
||||
@ -79,4 +77,72 @@ public class BaseCityServiceImpl extends ServiceImpl<BaseCityMapper, BaseCity> i
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
/**
|
||||
* 逆递归查询树结构
|
||||
*
|
||||
* @param cityId 最子集城市id
|
||||
* @return java.lang.String
|
||||
* @author PQZ
|
||||
* @date 10:25 2025/4/3
|
||||
**/
|
||||
@Override
|
||||
public String getCityName(Long cityId) {
|
||||
List<BaseCity> list = listCity();
|
||||
StringBuilder nameBuilder = new StringBuilder();
|
||||
reverseRecursion(cityId, nameBuilder, list);
|
||||
return nameBuilder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 逆递归拼接字符串
|
||||
*
|
||||
* @param cityId 城市id
|
||||
* @param nameBuilder 字符串
|
||||
* @param list 城市集合
|
||||
* @author PQZ
|
||||
* @date 10:45 2025/4/3
|
||||
**/
|
||||
private void reverseRecursion(Long cityId, StringBuilder nameBuilder, List<BaseCity> list) {
|
||||
BaseCity city = findCityById(cityId, list);
|
||||
if (city != null) {
|
||||
// 添加当前城市名称
|
||||
nameBuilder.insert(0, city.getName());
|
||||
// 继续向上查找父级城市
|
||||
reverseRecursion(city.getParentId(),nameBuilder,list);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 取出城市名称
|
||||
*
|
||||
* @param cityId 城市id
|
||||
* @param list 城市集合
|
||||
* @return com.ruoyi.base.domain.BaseCity
|
||||
* @author PQZ
|
||||
* @date 10:43 2025/4/3
|
||||
**/
|
||||
private BaseCity findCityById(Long cityId, List<BaseCity> list) {
|
||||
for (BaseCity city : list) {
|
||||
if (city.getCityId().equals(cityId)) {
|
||||
return city;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询树列表
|
||||
*
|
||||
* @return java.util.List<com.ruoyi.base.domain.BaseCity>
|
||||
* @author PQZ
|
||||
* @date 10:39 2025/4/3
|
||||
**/
|
||||
private List<BaseCity> listCity() {
|
||||
LambdaQueryWrapper<BaseCity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(BaseCity::getIsShow, 1);
|
||||
return list(lambdaQueryWrapper);
|
||||
}
|
||||
}
|
||||
|
@ -51,13 +51,13 @@ public class MemberAddressController extends BaseController {
|
||||
* @author PQZ
|
||||
* @date 10:43 2025/3/29
|
||||
**/
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id) {
|
||||
@GetMapping(value = "/getById")
|
||||
public AjaxResult getInfo(@RequestParam("id") String id) {
|
||||
return success(memberAddressService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增博主收货地址
|
||||
* 保存博主收货地址
|
||||
*
|
||||
* @param memberAddress {@link MemberAddress}
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
@ -65,37 +65,39 @@ public class MemberAddressController extends BaseController {
|
||||
* @date 10:43 2025/3/29
|
||||
**/
|
||||
@Log(title = "博主收货地址", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody MemberAddress memberAddress) {
|
||||
return toAjax(memberAddressService.save(memberAddress));
|
||||
@PostMapping("/save")
|
||||
public AjaxResult save(@RequestBody MemberAddress memberAddress) {
|
||||
memberAddressService.saveMemberAddress(memberAddress);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改博主收货地址
|
||||
* 设置默认收货地址
|
||||
*
|
||||
* @param memberAddress {@link MemberAddress}
|
||||
* @param id 收货地址id
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author PQZ
|
||||
* @date 10:44 2025/3/29
|
||||
* @date 11:10 2025/4/3
|
||||
**/
|
||||
@Log(title = "博主收货地址", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody MemberAddress memberAddress) {
|
||||
return toAjax(memberAddressService.updateById(memberAddress));
|
||||
@GetMapping("/setDefault")
|
||||
public AjaxResult setDefault(@RequestParam("id") String id) {
|
||||
memberAddressService.setDefault(id);
|
||||
return success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除博主收货地址
|
||||
*
|
||||
* @param ids id
|
||||
* @param id id
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author PQZ
|
||||
* @date 10:45 2025/3/29
|
||||
**/
|
||||
@Log(title = "博主收货地址", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids) {
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(memberAddressService.removeByIds(list));
|
||||
@DeleteMapping("/remove")
|
||||
public AjaxResult remove(@RequestParam("id") String id) {
|
||||
memberAddressService.removeById(id);
|
||||
return success();
|
||||
}
|
||||
}
|
||||
|
@ -40,9 +40,13 @@ public class MemberAddress extends DlBaseEntity
|
||||
@Excel(name = "收件人名称")
|
||||
private String name;
|
||||
|
||||
/** 省 市 区 */
|
||||
/** 省 市 区 id*/
|
||||
@Excel(name = "省 市 区")
|
||||
private String city;
|
||||
private Long cityId;
|
||||
|
||||
/** 省 市 区 名字 */
|
||||
@Excel(name = "省 市 区")
|
||||
private String cityName;
|
||||
|
||||
/** 详细地址 */
|
||||
@Excel(name = "详细地址")
|
||||
|
@ -23,4 +23,22 @@ public interface IMemberAddressService extends IService<MemberAddress> {
|
||||
**/
|
||||
List<MemberAddress> listByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 保存博主地址信息
|
||||
*
|
||||
* @param address {@link MemberAddress}
|
||||
* @author PQZ
|
||||
* @date 10:12 2025/4/3
|
||||
**/
|
||||
void saveMemberAddress(MemberAddress address);
|
||||
|
||||
/**
|
||||
* 设置地址为默认地址
|
||||
*
|
||||
* @param id id
|
||||
* @author PQZ
|
||||
* @date 11:07 2025/4/3
|
||||
**/
|
||||
void setDefault(String id);
|
||||
|
||||
}
|
||||
|
@ -2,26 +2,31 @@ package com.ruoyi.member.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.base.service.IBaseCityService;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.member.domain.MemberAddress;
|
||||
import com.ruoyi.member.mapper.MemberAddressMapper;
|
||||
import com.ruoyi.member.service.IMemberAddressService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 博主收货地址Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-03-17
|
||||
*/
|
||||
@Service
|
||||
public class MemberAddressServiceImpl extends ServiceImpl<MemberAddressMapper,MemberAddress> implements IMemberAddressService
|
||||
{
|
||||
public class MemberAddressServiceImpl extends ServiceImpl<MemberAddressMapper, MemberAddress> implements IMemberAddressService {
|
||||
@Autowired
|
||||
private MemberAddressMapper memberAddressMapper;
|
||||
@Resource
|
||||
private IBaseCityService cityService;
|
||||
|
||||
|
||||
/**
|
||||
@ -35,7 +40,74 @@ public class MemberAddressServiceImpl extends ServiceImpl<MemberAddressMapper,Me
|
||||
@Override
|
||||
public List<MemberAddress> listByUserId(Long userId) {
|
||||
LambdaQueryWrapper<MemberAddress> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag,0).eq(MemberAddress::getUserId,userId);
|
||||
lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag, 0)
|
||||
.eq(MemberAddress::getUserId, userId)
|
||||
.orderByDesc(MemberAddress::getIsDefault)
|
||||
.orderByDesc(DlBaseEntity::getCreateTime);
|
||||
return list(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存博主地址信息
|
||||
*
|
||||
* @param address {@link MemberAddress}
|
||||
* @author PQZ
|
||||
* @date 10:12 2025/4/3
|
||||
**/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveMemberAddress(MemberAddress address) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
address.setUserId(userId);
|
||||
if (address.getCityId() != null) {
|
||||
String cityName = cityService.getCityName(address.getCityId());
|
||||
address.setCityName(cityName);
|
||||
}
|
||||
//默认地址情况,需要修改原来的默认地址为不默认
|
||||
if ("1".equals(address.getIsDefault())) {
|
||||
updateIsDefault(userId);
|
||||
}
|
||||
//保存
|
||||
saveOrUpdate(address);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置地址为默认地址
|
||||
*
|
||||
* @param id id
|
||||
* @author PQZ
|
||||
* @date 11:07 2025/4/3
|
||||
**/
|
||||
@Override
|
||||
public void setDefault(String id) {
|
||||
MemberAddress address = getById(id);
|
||||
//修改原有地址的默认状态
|
||||
updateIsDefault(address.getUserId());
|
||||
//设置现有地址默认状态
|
||||
address.setIsDefault("1");
|
||||
updateById(address);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改原有地址的默认状态
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @author PQZ
|
||||
* @date 10:15 2025/4/3
|
||||
**/
|
||||
private void updateIsDefault(Long userId) {
|
||||
LambdaQueryWrapper<MemberAddress> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper
|
||||
.eq(MemberAddress::getIsDefault, "1")
|
||||
.eq(DlBaseEntity::getDelFlag, 0)
|
||||
.eq(MemberAddress::getUserId, userId);
|
||||
List<MemberAddress> list = list(lambdaQueryWrapper);
|
||||
//存在默认地址情况,更新为非默认状态
|
||||
if (!list.isEmpty()) {
|
||||
list.forEach(item -> {
|
||||
item.setIsDefault("0");
|
||||
});
|
||||
updateBatchById(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user