From ed561a2796dab30a7c0a0ddbed2d898c3c8ba793 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Wed, 02 Jul 2025 15:45:18 +0800
Subject: [PATCH] 用户地址信息
---
oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java | 5 +-
oying-system/src/main/resources/mapper/sh/UserAddressMapper.xml | 12 ++++-
oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java | 32 +++++++++++----
oying-system/src/main/java/com/oying/modules/system/service/impl/UserMerchantServiceImpl.java | 2
oying-system/src/main/java/com/oying/modules/sh/domain/dto/UserAddressQueryCriteria.java | 4 ++
oying-system/src/main/java/com/oying/modules/sh/service/impl/UserAddressServiceImpl.java | 36 +++++++++++++----
oying-system/src/main/java/com/oying/modules/system/domain/dto/UserMerchantQueryCriteria.java | 2
oying-system/src/main/java/com/oying/modules/sh/mapper/UserAddressMapper.java | 2 +
oying-system/src/main/java/com/oying/modules/system/domain/UserMerchant.java | 2
9 files changed, 70 insertions(+), 27 deletions(-)
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java b/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java
index 91286d0..3460682 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java
@@ -28,7 +28,6 @@
@ApiModelProperty(value = "主键")
private Long addressId;
- @NotNull
@ApiModelProperty(value = "用户id")
private Long userId;
@@ -63,8 +62,8 @@
private BigDecimal latitude;
@NotNull
- @ApiModelProperty(value = "是否默认")
- private Integer isDefault;
+ @ApiModelProperty(value = "是否默认: false")
+ private Boolean isDefault = false;
@NotBlank
@ApiModelProperty(value = "标签(家、公司等)")
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/UserAddressQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/UserAddressQueryCriteria.java
index 01af304..a65c37f 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/UserAddressQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/UserAddressQueryCriteria.java
@@ -18,10 +18,14 @@
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
+ @ApiModelProperty(value = "手机号")
+ private String phone;
+
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "标签(家、公司等)")
private String tag;
+
private List<Timestamp> createTime;
}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/UserAddressMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/UserAddressMapper.java
index 7ae40b1..e3e0e37 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/mapper/UserAddressMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/UserAddressMapper.java
@@ -19,4 +19,6 @@
IPage<UserAddress> findAll(@Param("criteria") UserAddressQueryCriteria criteria, Page<Object> page);
List<UserAddress> findAll(@Param("criteria") UserAddressQueryCriteria criteria);
+
+ void isDefault(Long userId);
}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java
index 58f309f..cc70dad 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java
@@ -1,10 +1,12 @@
package com.oying.modules.sh.rest;
import com.oying.annotation.Log;
+import com.oying.exception.BadRequestException;
import com.oying.modules.sh.domain.UserAddress;
import com.oying.modules.sh.service.UserAddressService;
import com.oying.modules.sh.domain.dto.UserAddressQueryCriteria;
import com.oying.utils.R;
+import com.oying.utils.SecurityUtils;
import lombok.RequiredArgsConstructor;
import java.util.List;
@@ -48,28 +50,40 @@
return new ResponseEntity<>(R.success(userAddressService.queryAll(criteria, page)), HttpStatus.OK);
}
+ @GetMapping("mini")
+ @ApiOperation("小程序:查询用户地址")
+ public ResponseEntity<Object> miniQueryUserAddress(UserAddressQueryCriteria criteria) {
+ Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+ criteria.setUserId(SecurityUtils.getCurrentUserId());
+ return new ResponseEntity<>(R.success(userAddressService.queryAll(criteria, page)), HttpStatus.OK);
+ }
+
@PostMapping
- @Log("新增用户地址")
- @ApiOperation("新增用户地址")
- @PreAuthorize("@el.check('userAddress:add')")
+ @Log("小程序:新增用户地址")
+ @ApiOperation("小程序:新增用户地址")
public ResponseEntity<Object> createUserAddress(@Validated @RequestBody UserAddress resources) {
+ if (resources.getAddressId() != null) {
+ throw new BadRequestException("新增用户地址主键必须为空");
+ }
+ resources.setUserId(SecurityUtils.getCurrentUserId());
userAddressService.create(resources);
return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
}
@PutMapping
- @Log("修改用户地址")
- @ApiOperation("修改用户地址")
- @PreAuthorize("@el.check('userAddress:edit')")
+ @Log("小程序:修改用户地址")
+ @ApiOperation("小程序:修改用户地址")
public ResponseEntity<Object> updateUserAddress(@Validated @RequestBody UserAddress resources) {
+ if (resources.getAddressId() == null) {
+ throw new BadRequestException("修改用户地址主键不能为空");
+ }
userAddressService.update(resources);
return new ResponseEntity<>(R.success(), HttpStatus.NO_CONTENT);
}
@DeleteMapping
- @Log("删除用户地址")
- @ApiOperation("删除用户地址")
- @PreAuthorize("@el.check('userAddress:del')")
+ @Log("小程序:删除用户地址")
+ @ApiOperation("小程序:删除用户地址")
public ResponseEntity<Object> deleteUserAddress(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
userAddressService.deleteAll(ids);
return new ResponseEntity<>(R.success(), HttpStatus.OK);
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/UserAddressServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/UserAddressServiceImpl.java
index 69c7a89..eda7218 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/UserAddressServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/UserAddressServiceImpl.java
@@ -1,7 +1,9 @@
package com.oying.modules.sh.service.impl;
+import com.oying.exception.BadRequestException;
import com.oying.modules.sh.domain.UserAddress;
import com.oying.utils.FileUtil;
+import com.oying.utils.SecurityUtils;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,19 +13,21 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.oying.utils.PageUtil;
+
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
+
import com.oying.utils.PageResult;
/**
-* @description 服务实现
-* @author lixin
-* @date 2025-06-11
-**/
+ * @author lixin
+ * @description 服务实现
+ * @date 2025-06-11
+ **/
@Service
@RequiredArgsConstructor
public class UserAddressServiceImpl extends ServiceImpl<UserAddressMapper, UserAddress> implements UserAddressService {
@@ -31,18 +35,21 @@
private final UserAddressMapper userAddressMapper;
@Override
- public PageResult<UserAddress> queryAll(UserAddressQueryCriteria criteria, Page<Object> page){
+ public PageResult<UserAddress> queryAll(UserAddressQueryCriteria criteria, Page<Object> page) {
return PageUtil.toPage(userAddressMapper.findAll(criteria, page));
}
@Override
- public List<UserAddress> queryAll(UserAddressQueryCriteria criteria){
+ public List<UserAddress> queryAll(UserAddressQueryCriteria criteria) {
return userAddressMapper.findAll(criteria);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(UserAddress resources) {
+ if (resources.getIsDefault()) {
+ userAddressMapper.isDefault(resources.getUserId());
+ }
userAddressMapper.insert(resources);
}
@@ -50,6 +57,12 @@
@Transactional(rollbackFor = Exception.class)
public void update(UserAddress resources) {
UserAddress userAddress = getById(resources.getAddressId());
+ if (!userAddress.getUserId().equals(SecurityUtils.getCurrentUserId())) {
+ throw new BadRequestException("不能修改他人资料");
+ }
+ if (resources.getIsDefault()) {
+ userAddressMapper.isDefault(resources.getUserId());
+ }
userAddress.copy(resources);
userAddressMapper.updateById(userAddress);
}
@@ -57,6 +70,12 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(List<Long> ids) {
+ for (Long id : ids) {
+ UserAddress userAddress = getById(id);
+ if (!userAddress.getUserId().equals(SecurityUtils.getCurrentUserId())) {
+ throw new BadRequestException("不能删除他人资料");
+ }
+ }
userAddressMapper.deleteBatchIds(ids);
}
@@ -65,7 +84,6 @@
List<Map<String, Object>> list = new ArrayList<>();
for (UserAddress userAddress : all) {
Map<String, Object> map = new LinkedHashMap<>();
- map.put("用户id", userAddress.getUserId());
map.put("收货人", userAddress.getReceiverName());
map.put("收货人电话", userAddress.getReceiverPhone());
map.put("省份", userAddress.getProvince());
@@ -75,8 +93,8 @@
map.put("详细地址", userAddress.getDetail());
map.put("经度", userAddress.getLongitude());
map.put("纬度", userAddress.getLatitude());
- map.put("是否默认", userAddress.getIsDefault());
- map.put("标签(家、公司等)", userAddress.getTag());
+ map.put("是否默认", userAddress.getIsDefault() ? "是" : "否");
+ map.put("标签", userAddress.getTag());
map.put("创建人", userAddress.getCreateBy());
map.put("创建时间", userAddress.getCreateTime());
map.put("修改者", userAddress.getUpdateBy());
diff --git a/oying-system/src/main/java/com/oying/modules/system/domain/UserMerchant.java b/oying-system/src/main/java/com/oying/modules/system/domain/UserMerchant.java
index 3bcd226..2baefe2 100644
--- a/oying-system/src/main/java/com/oying/modules/system/domain/UserMerchant.java
+++ b/oying-system/src/main/java/com/oying/modules/system/domain/UserMerchant.java
@@ -30,7 +30,7 @@
private Long userId;
@NotBlank
- @ApiModelProperty(value = "角色类型(OWNER、ADMIN、FINANCE、OPERATOR)")
+ @ApiModelProperty(value = "角色类型")
private String roleType;
@ApiModelProperty(value = "权限集(备用)")
diff --git a/oying-system/src/main/java/com/oying/modules/system/domain/dto/UserMerchantQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/system/domain/dto/UserMerchantQueryCriteria.java
index 615e94d..54b961c 100644
--- a/oying-system/src/main/java/com/oying/modules/system/domain/dto/UserMerchantQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/system/domain/dto/UserMerchantQueryCriteria.java
@@ -21,7 +21,7 @@
@ApiModelProperty(value = "用户id")
private Long userId;
- @ApiModelProperty(value = "角色类型(OWNER、ADMIN、FINANCE、OPERATOR)")
+ @ApiModelProperty(value = "角色类型")
private String roleType;
private List<Timestamp> createTime;
}
diff --git a/oying-system/src/main/java/com/oying/modules/system/service/impl/UserMerchantServiceImpl.java b/oying-system/src/main/java/com/oying/modules/system/service/impl/UserMerchantServiceImpl.java
index 8962e13..ac36637 100644
--- a/oying-system/src/main/java/com/oying/modules/system/service/impl/UserMerchantServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/system/service/impl/UserMerchantServiceImpl.java
@@ -65,7 +65,7 @@
List<Map<String, Object>> list = new ArrayList<>();
for (UserMerchant userMerchant : all) {
Map<String, Object> map = new LinkedHashMap<>();
- map.put("角色类型(OWNER、ADMIN、FINANCE、OPERATOR)", userMerchant.getRoleType());
+ map.put("角色类型", userMerchant.getRoleType());
map.put("权限集(备用)", userMerchant.getPermissions());
map.put("创建者", userMerchant.getCreateBy());
map.put("创建时间", userMerchant.getCreateTime());
diff --git a/oying-system/src/main/resources/mapper/sh/UserAddressMapper.xml b/oying-system/src/main/resources/mapper/sh/UserAddressMapper.xml
index 52be65d..2719b7d 100644
--- a/oying-system/src/main/resources/mapper/sh/UserAddressMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/UserAddressMapper.xml
@@ -24,17 +24,23 @@
<sql id="Base_Column_List">
address_id, user_id, receiver_name, receiver_phone, province, city, district, street, detail, longitude, latitude, is_default, tag, create_by, create_time, update_by, update_time
</sql>
+ <update id="isDefault">
+ update sh_user_address set is_default = false where user_id = #{userId}
+ </update>
<select id="findAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from sh_user_address
<where>
- <if test="criteria.userId != null">
+ <if test="criteria.userId != null and criteria.userId != ''">
and user_id = #{criteria.userId}
</if>
- <if test="criteria.tag != null">
+ <if test="criteria.tag != null and criteria.tag != ''">
and tag = #{criteria.tag}
+ </if>
+ <if test="criteria.phone != null and criteria.phone != ''">
+ and receiver_phone like concat('%',#{criteria.phone},'%')
</if>
<if test="criteria.createTime != null and criteria.createTime.size() > 0">
AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
@@ -42,4 +48,4 @@
</where>
order by address_id desc
</select>
-</mapper>
\ No newline at end of file
+</mapper>
--
Gitblit v1.9.3