Procházet zdrojové kódy

用户常用地址设置

liude před 1 rokem
rodič
revize
28dfb1739f

+ 0 - 1
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/HotMerchantClient.java

@@ -23,7 +23,6 @@ public interface HotMerchantClient {
     /**
      * 新增热门搜索
      *
-     * @param param 新增参数
      * @return 热门搜索主键
      */
     @PostMapping("/hotMerchant/addHotMerchant")

+ 56 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/UserReceiveAddressClient.java

@@ -0,0 +1,56 @@
+package com.chelvc.cloud.vehicle.client;
+import com.chelvc.cloud.vehicle.client.dto.UserReceiveAddressDTO;
+import com.chelvc.cloud.vehicle.client.param.UserReceiveAddressModifyParam;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+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.RequestParam;
+
+import java.util.List;
+
+/**
+ * 用户常用地址业务接口
+ *
+ * @author liude
+ * @data 2024/04/29
+ */
+@FeignClient("vehicle")
+public interface UserReceiveAddressClient {
+
+    /**
+     * 新增用户常用地址
+     *
+     * @param param 新增参数
+     * @return 主键
+     */
+    @PostMapping("/userReceiveAddress/add")
+    Long add(@SpringQueryMap UserReceiveAddressModifyParam param);
+
+    /**
+     * 修改用户常用地址
+     *
+     * @param id    主键
+     * @param param 修改参数
+     */
+    @PutMapping("/userReceiveAddress/update")
+    Long update(@RequestParam("id") Long id, @SpringQueryMap UserReceiveAddressModifyParam param);
+
+    /**
+     * 查询用户常用地址列表
+     *
+     * @return 用户常用地址信息
+     */
+    @GetMapping("/userReceiveAddress/list")
+    List<UserReceiveAddressDTO> getList();
+
+
+    /**
+     * 删除用户常用地址
+     *
+     * @param id    主键
+     */
+    @PutMapping("/userReceiveAddress/delete")
+    void delete(@RequestParam("id") Long id);
+}

+ 80 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/dto/UserReceiveAddressDTO.java

@@ -0,0 +1,80 @@
+package com.chelvc.cloud.vehicle.client.dto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 收货数据模型
+ *
+ * @author liude
+ * @data 2024/4/29
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserReceiveAddressDTO implements Serializable {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+//    private Long userId;
+
+    /**
+     *收货人名称
+     */
+    private String receiveName;
+
+    /**
+     * 收件人联系电话
+     */
+    private String phone;
+
+    /**
+     * 是否为默认地址 0-否 1-是
+     */
+    private String defaultStatus;
+
+    /**
+     * 邮政编码
+     */
+    private String postCode;
+
+    /**
+     * 省份/直辖市
+     */
+    private String province;
+
+    /**
+     * 城市
+     */
+    private String city;
+
+    /**
+     * 区
+     */
+    private String region;
+
+    /**
+     * 详细地址(街道)
+     */
+    private String detailAddress;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}

+ 60 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/param/UserReceiveAddressModifyParam.java

@@ -0,0 +1,60 @@
+package com.chelvc.cloud.vehicle.client.param;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 收货数据模型
+ *
+ * @author liude
+ * @data 2024/4/29
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserReceiveAddressModifyParam implements Serializable {
+    /**
+     * 收货人名称
+     */
+    private String receiveName;
+
+    /**
+     * 收件人联系电话
+     */
+    private String phone;
+
+    /**
+     * 是否为默认地址 0-否 1-是
+     */
+    private String defaultStatus;
+
+    /**
+     * 邮政编码
+     */
+    private String postCode;
+
+    /**
+     * 省份/直辖市
+     */
+    private String province;
+
+    /**
+     * 城市
+     */
+    private String city;
+
+    /**
+     * 区
+     */
+    private String region;
+
+    /**
+     * 详细地址(街道)
+     */
+    private String detailAddress;
+}

+ 73 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/controller/UserReceiveAddressController.java

@@ -0,0 +1,73 @@
+package com.chelvc.cloud.vehicle.server.controller;
+import com.chelvc.cloud.vehicle.client.dto.UserReceiveAddressDTO;
+import com.chelvc.cloud.vehicle.client.param.UserReceiveAddressModifyParam;
+import com.chelvc.cloud.vehicle.server.service.UserReceiveAddressService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import java.util.List;
+
+/**
+ * 用户常用地址接口
+ *
+ * @author liude
+ * @date 2024/4/30
+ */
+@RestController
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class UserReceiveAddressController {
+    private final UserReceiveAddressService userReceiveAddressService;
+    /**
+     * 新增用户常用地址
+     *
+     * @param param 新增参数
+     * @return 用户常用地址主键
+     */
+    @PostMapping("/userReceiveAddress/add")
+    public Long add(@SpringQueryMap UserReceiveAddressModifyParam param) {
+        return this.userReceiveAddressService.add(param);
+    }
+
+    /**
+     * 修改用户常用地址
+     *
+     * @param id    用户常用地址主键
+     * @param param 修改参数
+     */
+    @PutMapping("/userReceiveAddress/update")
+    public Long update(@RequestParam("id") Long id,
+                       @SpringQueryMap UserReceiveAddressModifyParam param) {
+        return this.userReceiveAddressService.update(id,param);
+    }
+
+    /**
+     * 查询用户常用地址列表
+     *
+     * @return 用户常用地址信息
+     */
+    @GetMapping("/userReceiveAddress/list")
+    public List<UserReceiveAddressDTO> list() {
+        return this.userReceiveAddressService.getList();
+    }
+
+    /**
+     * 删除用户常用地址
+     *
+     * @param id    用户常用地址主键
+     */
+    @PutMapping("/userReceiveAddress/delete")
+    public void delete(@RequestParam("id") Long id) {
+        this.userReceiveAddressService.delete(id);
+    }
+
+}

+ 61 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/UserReceiveAddressCopier.java

@@ -0,0 +1,61 @@
+package com.chelvc.cloud.vehicle.server.copier;
+
+import com.chelvc.cloud.vehicle.client.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.client.dto.UserReceiveAddressDTO;
+import com.chelvc.cloud.vehicle.client.param.MerchantModifyParam;
+import com.chelvc.cloud.vehicle.client.param.UserReceiveAddressModifyParam;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
+import com.chelvc.cloud.vehicle.server.entity.UserReceiveAddress;
+import org.mapstruct.Builder;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户常用地址信息拷贝接口
+ *
+ * @author liude
+ * @date 2024/04/29
+ */
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface UserReceiveAddressCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    UserReceiveAddressCopier INSTANCE = Mappers.getMapper(UserReceiveAddressCopier.class);
+
+    /**
+     * 用户常用地址信息拷贝
+     *
+     * @param userReceiveAddress 用户常用地址信息
+     * @return 用户常用地址信息
+     */
+    UserReceiveAddressDTO copying(UserReceiveAddress userReceiveAddress);
+
+    /**
+     * 用户常用地址信息拷贝
+     *
+     * @param userReceiveAddresses 用户常用地址信息集合
+     * @return 用户常用地址信息列表
+     */
+    List<UserReceiveAddressDTO> copying(Collection<UserReceiveAddress> userReceiveAddresses);
+
+    /**
+     * 用户常用地址信息拷贝
+     *
+     * @param param 用户常用地址更新参数
+     * @return 用户常用地址信息
+     */
+    UserReceiveAddress copying(UserReceiveAddressModifyParam param);
+
+    /**
+     * 用户常用地址信息拷贝
+     *
+     * @param param    用户常用地址更新参数
+     * @param userReceiveAddress 用户常用地址信息
+     */
+    void copying(UserReceiveAddressModifyParam param, @MappingTarget UserReceiveAddress userReceiveAddress);
+}

+ 17 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/UserReceiveAddressMapper.java

@@ -0,0 +1,17 @@
+package com.chelvc.cloud.vehicle.server.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chelvc.cloud.vehicle.server.entity.UserReceiveAddress;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户的常用收件地址Mapper接口
+ * 
+ * @author liude
+ * @date 2024-04-28
+ */
+@Mapper
+public interface UserReceiveAddressMapper extends BaseMapper<UserReceiveAddress>
+{
+
+}

+ 84 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/UserReceiveAddress.java

@@ -0,0 +1,84 @@
+package com.chelvc.cloud.vehicle.server.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.chelvc.framework.database.entity.Entity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+
+/**
+ * 收货数据模型
+ *
+ * @author liude
+ * @data 2024/4/28
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserReceiveAddress implements Entity<Long> {
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 收货人名称
+     */
+    private String receiveName;
+
+    /**
+     * 收件人联系电话
+     */
+    private String phone;
+
+    /**
+     * 是否为默认地址
+     */
+    private String defaultStatus;
+
+    /**
+     * 邮政编码
+     */
+    private String postCode;
+
+    /**
+     * 省份/直辖市
+     */
+    private String province;
+
+    /**
+     * 城市
+     */
+    private String city;
+
+    /**
+     * 区
+     */
+    private String region;
+
+    /**
+     * 详细地址(街道)
+     */
+    private String detailAddress;
+
+    /**
+     * 更新时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建时间
+     */
+    private Date updateTime;
+}

+ 46 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/UserReceiveAddressService.java

@@ -0,0 +1,46 @@
+package com.chelvc.cloud.vehicle.server.service;
+
+import com.chelvc.cloud.vehicle.client.dto.UserReceiveAddressDTO;
+import com.chelvc.cloud.vehicle.client.param.UserReceiveAddressModifyParam;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * 用户常用地址Service接口
+ *
+ * @author liude
+ * @date 2024-04-29
+ */
+public interface UserReceiveAddressService
+{
+    /**
+     * 新增用户常用地址
+     *
+     * @param param 新增参数
+     * @return 主键
+     */
+    Long add(UserReceiveAddressModifyParam param);
+
+    /**
+     * 修改用户常用地址
+     *
+     * @param id    主键
+     * @param param 修改参数
+     */
+    Long update(Long id, UserReceiveAddressModifyParam param);
+
+    /**
+     * 查询用户常用地址列表
+     *
+     * @return 用户常用地址信息
+     */
+    List<UserReceiveAddressDTO> getList();
+
+    /**
+     * 删除用户常用地址列表
+     * @param id
+     */
+    void delete(Long id);
+}

+ 78 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserReceiveAddressServiceImpl.java

@@ -0,0 +1,78 @@
+package com.chelvc.cloud.vehicle.server.service.impl;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.vehicle.client.dto.UserReceiveAddressDTO;
+import com.chelvc.cloud.vehicle.client.param.UserReceiveAddressModifyParam;
+import com.chelvc.cloud.vehicle.server.copier.UserReceiveAddressCopier;
+import com.chelvc.cloud.vehicle.server.dao.UserReceiveAddressMapper;
+import com.chelvc.cloud.vehicle.server.entity.UserReceiveAddress;
+import com.chelvc.cloud.vehicle.server.service.UserReceiveAddressService;
+import com.chelvc.framework.base.context.SessionContextHolder;
+import com.chelvc.framework.common.util.AssertUtils;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 用户常用地址Service业务层处理
+ *
+ * @author liude
+ * @date 2024-04-29
+ */
+@Service
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class UserReceiveAddressServiceImpl extends ServiceImpl<UserReceiveAddressMapper, UserReceiveAddress> implements
+        UserReceiveAddressService {
+
+    @Override
+    public Long add (@NonNull UserReceiveAddressModifyParam param){
+        UserReceiveAddress receiveAddress = UserReceiveAddressCopier.INSTANCE.copying(param);
+        Long userId = SessionContextHolder.getId();
+        receiveAddress.setCreateTime(new Date());
+        receiveAddress.setUpdateTime(new Date());
+        receiveAddress.setUserId(userId);
+        this.save(receiveAddress);
+        return receiveAddress.getId();
+
+    }
+
+    @Override
+    public Long update ( @NonNull Long id, @NonNull UserReceiveAddressModifyParam param){
+        Long userId = SessionContextHolder.getId();
+        UserReceiveAddress userReceiveAddress = AssertUtils.available(this.getById(id), "该常用地址不存在");
+        UserReceiveAddressCopier.INSTANCE.copying(param,userReceiveAddress);
+        userReceiveAddress.setUpdateTime(new Date());
+        if ("1".equals(param.getDefaultStatus())){
+            UserReceiveAddress receiveAddress = this.lambdaQuery()
+                    .eq(UserReceiveAddress::getUserId,userId)
+                    .eq(UserReceiveAddress::getDefaultStatus,"1")
+                    .one();
+            if (null != receiveAddress){
+                receiveAddress.setDefaultStatus("0");
+                this.updateById(receiveAddress);
+            }
+        }
+        this.updateById(userReceiveAddress);
+        return userReceiveAddress.getId();
+    }
+    @Override
+    public List<UserReceiveAddressDTO> getList(){
+        Long userId = SessionContextHolder.getId();
+        List<UserReceiveAddress> list = this.lambdaQuery()
+                .eq(UserReceiveAddress::getUserId,userId)
+                .orderByDesc(UserReceiveAddress::getDefaultStatus)
+                .orderByDesc(UserReceiveAddress::getUpdateTime)
+                .orderByDesc(UserReceiveAddress::getCreateTime)
+                .list();
+        return UserReceiveAddressCopier.INSTANCE.copying(list);
+    }
+
+
+    @Override
+    public void delete(@NonNull Long id){
+        AssertUtils.available(this.getById(id), "该常用地址不存在");
+        this.baseMapper.deleteById(id);
+    }
+}