浏览代码

用户收获地址

24282 1 年之前
父节点
当前提交
0dc9f3eeea

+ 71 - 0
sd-business/src/main/java/com/sd/business/controller/area/AreaUserController.java

@@ -0,0 +1,71 @@
+package com.sd.business.controller.area;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.area.dto.AreaUserDto;
+import com.sd.business.entity.area.dto.AreaUserSelectDto;
+import com.sd.business.entity.area.vo.AreaUserVo;
+import com.sd.business.service.area.AreaUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 用户收货地址 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-11-20
+ */
+@RestController
+@RequestMapping("/areaUser")
+public class AreaUserController {
+
+    @Autowired
+    private AreaUserService areaUserService;
+
+    /**
+     * 用户收货地址分页
+     */
+    @PostMapping("/page")
+    public Page<AreaUserVo> page(@RequestBody AreaUserSelectDto dto) {
+        return areaUserService.getPage(dto);
+    }
+
+    /**
+     * 用户收货地址明细
+     */
+    @PostMapping("/detail")
+    public AreaUserVo detail(@RequestBody BaseSelectDto dto) {
+        return areaUserService.detail(dto.getId());
+    }
+
+    /**
+     * 用户收货地址新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AreaUserDto dto) {
+        areaUserService.add(dto);
+    }
+
+    /**
+     * 用户收货地址编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AreaUserDto dto) {
+        areaUserService.edit(dto);
+    }
+
+    /**
+     * 用户收货地址删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        areaUserService.delete(dto.getId());
+    }
+
+}

+ 45 - 0
sd-business/src/main/java/com/sd/business/entity/area/bo/SetAreaName.java

@@ -0,0 +1,45 @@
+package com.sd.business.entity.area.bo;
+
+public interface SetAreaName {
+
+    /**
+     * 获取省code
+     */
+    Long getProvinceCode();
+
+    /**
+     * 获取市code
+     */
+    Long getCityCode();
+
+    /**
+     * 获取县code
+     */
+    Long getCountyCode();
+
+    /**
+     * 获取街道code
+     */
+    Long getStreetCode();
+
+    /**
+     * 获取省名称
+     */
+    void setProvinceName(String provinceName);
+
+    /**
+     * 获取市名称
+     */
+    void setCityName(String cityName);
+
+    /**
+     * 获取县名称
+     */
+    void setCountyName(String countyName);
+
+    /**
+     * 获取街道名称
+     */
+    void setStreetName(String streetName);
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/area/dto/AreaUserDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.area.dto;
+
+import com.sd.business.entity.area.po.AreaUser;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 用户收货地址新增编辑入参实体
+ *
+ * @author
+ * @since 2023-11-20
+ */
+@Getter
+@Setter
+public class AreaUserDto extends AreaUser {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/area/dto/AreaUserSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.area.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 用户收货地址列表查询入参实体
+ *
+ * @author
+ * @since 2023-11-20
+ */
+@Getter
+@Setter
+public class AreaUserSelectDto extends BaseSelectDto {
+
+}

+ 83 - 0
sd-business/src/main/java/com/sd/business/entity/area/po/AreaUser.java

@@ -0,0 +1,83 @@
+package com.sd.business.entity.area.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+
+/**
+ * <p>
+ * 用户收货地址
+ * </p>
+ *
+ * @author
+ * @since 2023-11-20
+ */
+@Getter
+@Setter
+@TableName("area_user")
+public class AreaUser extends BasePo {
+
+    /**
+     * 省
+     */
+    @NotNull
+    private Long provinceCode;
+
+    /**
+     * 市
+     */
+    @NotNull
+    private Long cityCode;
+
+    /**
+     * 县
+     */
+    @NotNull
+    private Long countyCode;
+
+    /**
+     * 街道
+     */
+    @NotNull
+    private Long streetCode;
+
+    /**
+     * 详细地址
+     */
+    @NotBlank
+    @Size(min = 5, max = 120)
+    private String detailedAddress;
+
+    /**
+     * 联系人
+     */
+    @NotBlank
+    @Size(min = 1, max = 25)
+    private String contactPerson;
+
+    /**
+     * 联系电话
+     */
+    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$")
+    @NotBlank
+    private String contactNumber;
+
+    /**
+     * 联系电话前缀
+     */
+    @NotBlank
+    private String contactNumberPrefix;
+
+    /**
+     * 默认地址 1是 0否
+     */
+    @NotNull
+    private Integer defaultAddress;
+
+}

+ 38 - 0
sd-business/src/main/java/com/sd/business/entity/area/vo/AreaUserVo.java

@@ -0,0 +1,38 @@
+package com.sd.business.entity.area.vo;
+
+import com.sd.business.entity.area.bo.SetAreaName;
+import com.sd.business.entity.area.po.AreaUser;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 用户收货地址列表查询返回值实体
+ *
+ * @author
+ * @since 2023-11-20
+ */
+@Getter
+@Setter
+public class AreaUserVo extends AreaUser implements SetAreaName {
+
+    /**
+     * 省
+     */
+    String provinceName;
+
+    /**
+     * 市
+     */
+    String cityName;
+
+    /**
+     * 县
+     */
+    String countyName;
+
+    /**
+     * 街道
+     */
+    String streetName;
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/area/AreaUserMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.area;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.area.po.AreaUser;
+
+/**
+ * <p>
+ * 用户收货地址 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-11-20
+ */
+public interface AreaUserMapper extends BaseMapper<AreaUser> {
+
+}

+ 14 - 0
sd-business/src/main/java/com/sd/business/service/area/AreaService.java

@@ -1,10 +1,12 @@
 package com.sd.business.service.area;
 
 import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.area.bo.SetAreaName;
 import com.sd.business.entity.area.dto.AreaSelectDto;
 import com.sd.business.entity.area.po.Area;
 import com.sd.business.entity.area.vo.AreaVo;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -22,4 +24,16 @@ public interface AreaService extends BaseService<Area> {
      */
     List<AreaVo> getList(AreaSelectDto dto);
 
+    /**
+     * 赋值地区名称
+     */
+    void setAreaName(List<? extends SetAreaName> list);
+
+    /**
+     * 赋值地区名称
+     */
+    default void setAreaName(SetAreaName areaName) {
+        setAreaName(Collections.singletonList(areaName));
+    }
+
 }

+ 46 - 0
sd-business/src/main/java/com/sd/business/service/area/AreaUserService.java

@@ -0,0 +1,46 @@
+package com.sd.business.service.area;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.area.dto.AreaUserDto;
+import com.sd.business.entity.area.dto.AreaUserSelectDto;
+import com.sd.business.entity.area.po.AreaUser;
+import com.sd.business.entity.area.vo.AreaUserVo;
+
+
+/**
+ * <p>
+ * 用户收货地址 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-11-20
+ */
+public interface AreaUserService extends BaseService<AreaUser> {
+
+    /**
+     * 用户收货地址分页
+     */
+    Page<AreaUserVo> getPage(AreaUserSelectDto dto);
+
+    /**
+     * 用户收货地址明细
+     */
+    AreaUserVo detail(Long id);
+
+    /**
+     * 用户收货地址新增
+     */
+    void add(AreaUserDto dto);
+
+    /**
+     * 用户收货地址编辑
+     */
+    void edit(AreaUserDto dto);
+
+    /**
+     * 用户收货地址删除
+     */
+    void delete(Long id);
+
+}

+ 32 - 0
sd-business/src/main/java/com/sd/business/service/area/impl/AreaServiceImpl.java

@@ -1,6 +1,7 @@
 package com.sd.business.service.area.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.area.bo.SetAreaName;
 import com.sd.business.entity.area.dto.AreaSelectDto;
 import com.sd.business.entity.area.po.Area;
 import com.sd.business.entity.area.vo.AreaVo;
@@ -9,7 +10,11 @@ import com.sd.business.service.area.AreaService;
 import com.sd.framework.util.sql.Sql;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -32,4 +37,31 @@ public class AreaServiceImpl extends ServiceImpl<AreaMapper, Area> implements Ar
                 .list();
     }
 
+    @Override
+    public void setAreaName(List<? extends SetAreaName> list) {
+
+        List<Long> codeList = list.stream().flatMap(item -> {
+            List<Long> itemList = new ArrayList<>();
+            itemList.add(item.getProvinceCode());
+            itemList.add(item.getCityCode());
+            itemList.add(item.getCountyCode());
+            itemList.add(item.getStreetCode());
+            return itemList.stream();
+        }).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+
+        if (codeList.isEmpty()) {
+            return;
+        }
+
+        Map<Long, String> map = mapKV(Area::getAreaCode, Area::getName, q -> q.in(Area::getAreaCode, codeList));
+
+        for (SetAreaName item : list) {
+            item.setProvinceName(map.get(item.getProvinceCode()));
+            item.setCityName(map.get(item.getCityCode()));
+            item.setCountyName(map.get(item.getCountyCode()));
+            item.setStreetName(map.get(item.getStreetCode()));
+        }
+
+    }
+
 }

+ 102 - 0
sd-business/src/main/java/com/sd/business/service/area/impl/AreaUserServiceImpl.java

@@ -0,0 +1,102 @@
+package com.sd.business.service.area.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.StatusConstant;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.sd.business.entity.area.dto.AreaUserDto;
+import com.sd.business.entity.area.dto.AreaUserSelectDto;
+import com.sd.business.entity.area.po.AreaUser;
+import com.sd.business.entity.area.vo.AreaUserVo;
+import com.sd.business.mapper.area.AreaUserMapper;
+import com.sd.business.service.area.AreaService;
+import com.sd.business.service.area.AreaUserService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 用户收货地址 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-11-20
+ */
+@Service
+public class AreaUserServiceImpl extends ServiceImpl<AreaUserMapper, AreaUser> implements AreaUserService {
+
+    @Autowired
+    private AreaService areaService;
+
+    @Override
+    public Page<AreaUserVo> getPage(AreaUserSelectDto dto) {
+
+        Page<AreaUserVo> page = Sql.create(AreaUserVo.class)
+                .selectAll(AreaUser.class)
+                .from(AreaUser.class)
+                .orderByDesc(AreaUser::getId)
+                .page(dto.getPage());
+
+        List<AreaUserVo> records = page.getRecords();
+        if (records.isEmpty()) {
+            return page;
+        }
+
+        // 赋值 省、市、县、街道 名称
+        areaService.setAreaName(records);
+
+        return page;
+    }
+
+    @Override
+    public AreaUserVo detail(Long id) {
+
+        AreaUserVo vo = Sql.create(AreaUserVo.class)
+                .selectAll(AreaUser.class)
+                .from(AreaUser.class)
+                .eq(AreaUser::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知数据");
+
+        // 赋值 省、市、县、街道 名称
+        areaService.setAreaName(vo);
+
+        return vo;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(AreaUserDto dto) {
+        save(dto);
+        if (StatusConstant.YES.equals(dto.getDefaultAddress())) {
+            update(q -> q
+                    .eq(BasePo::getCreateUser, SecurityUtils.getUserId())
+                    .set(AreaUser::getDefaultAddress, StatusConstant.NO));
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(AreaUserDto dto) {
+        updateById(dto);
+        if (StatusConstant.YES.equals(dto.getDefaultAddress())) {
+            update(q -> q
+                    .eq(BasePo::getCreateUser, SecurityUtils.getUserId())
+                    .set(AreaUser::getDefaultAddress, StatusConstant.NO));
+        }
+    }
+
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+    }
+
+}

+ 5 - 0
sd-business/src/main/resources/mapper/area/AreaUserMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.area.AreaUserMapper">
+
+</mapper>