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