尚品甄选前台系统用户收货地址增删改查代码

文章详细描述了在SpringBoot项目中,如何通过UserAddressController控制层、UserAddressService和UserRegionService服务层以及对应的Mapper接口实现前端H5页面与数据库交互,包括获取用户地址列表、地区选择、地址修改、新增和删除操作。
摘要由CSDN通过智能技术生成
前台系统中H5页面已经写好了前端请求,后端的数据库表实体类也已经有了,我们只需要补充后端业务逻辑即可

目录

UserAddressController

UserAddressService

UserAddressServiceImpl

UserAddressMapper

UserAddressMapper.xml

UserRegionService

UserRegionServiceimpl

UserRegionMapper

UserRegionMapper.xm

UserAddressController

​
@Tag(name = "用户地址接口")
@RestController
@RequestMapping(value="/api/user")
@SuppressWarnings({"unchecked", "rawtypes"})
public class UserAddressController {
   
   @Autowired
   private UserAddressService userAddressService;

   @Autowired
   private UserRegionService userRegionService;

   @Operation(summary = "获取用户地址列表")
   @GetMapping("userAddress/auth/findUserAddressList")
   public Result<List<UserAddress>> findUserAddressList() {
      List<UserAddress> list = userAddressService.findUserAddressList();
      return Result.build(list , ResultCodeEnum.SUCCESS) ;
   }

   @Operation(summary = "收货地址省市区显示")
   @GetMapping ("region/findByParentCode/{code}")
   public Result register(@PathVariable("code") Integer code) {
      List<Region> regionList = userRegionService.selectByParentCode(code);
      return Result.build(regionList , ResultCodeEnum.SUCCESS) ;
   }
   @Operation(summary = "用户收货地址修改")
   @PutMapping("userAddress/auth/updateById")
   public Result updateById(@RequestBody UserAddress userAddress) {
      userAddressService.updateByid(userAddress);
      return Result.build(null , ResultCodeEnum.SUCCESS) ;
   }

   @Operation(summary = "用户收货地址新增")
   @PostMapping("userAddress/auth/save")
   public Result save(@RequestBody UserAddress userAddress) {
      userAddressService.save(userAddress);
      return Result.build(null , ResultCodeEnum.SUCCESS) ;
   }

   @Operation(summary = "用户删除收货地址")
   @DeleteMapping("userAddress/auth/removeById/{id}")
   public Result removeById(@PathVariable Long id) {
      userAddressService.removeById(id);
      return Result.build(null , ResultCodeEnum.SUCCESS) ;
   }
}

​

UserAddressService

public interface UserAddressService {

    //获取用户地址列表
    List<UserAddress> findUserAddressList();

    //用户收货地址修改
    void updateByid(UserAddress userAddress);

    //用户收货地址新增
    void save(UserAddress userAddress);

    //用户收货地址刪除
    void removeById(Long id);
}

UserAddressServiceImpl

@Service
public class UserAddressServiceImpl implements UserAddressService {

   @Autowired
   private UserAddressMapper userAddressMapper;

   @Autowired
   private UserRegionMapper userRegionMapper;

   //获取用户地址列表
   @Override
   public List<UserAddress> findUserAddressList() {
      Long userId = AuthContextUtil.getUserInfo().getId();
      return userAddressMapper.findByUserId(userId);
   }

   //用户收货地址修改
   @Override
   public void updateByid(UserAddress userAddress) {
      String provinceCode = userRegionMapper.selectByCode(userAddress.getProvinceCode());
      String cityCode = userRegionMapper.selectByCode(userAddress.getCityCode());
      String districtCode = userRegionMapper.selectByCode(userAddress.getDistrictCode());

      StringBuilder fullAddressBuilder = new StringBuilder();
      fullAddressBuilder.append(provinceCode)
              .append(cityCode)
              .append(districtCode);

      String fullAddress = fullAddressBuilder.toString();
      userAddress.setFullAddress(fullAddress);
      userAddressMapper.updateByid(userAddress);
   }

   //用户收货地址新增
   @Override
   public void save(UserAddress userAddress) {
      //获取用户userID
      Long userId = AuthContextUtil.getUserInfo().getId();
      userAddress.setUserId(userId);
      //拼接全部地址
      String provinceCode = userRegionMapper.selectByCode(userAddress.getProvinceCode());
      String cityCode = userRegionMapper.selectByCode(userAddress.getCityCode());
      String districtCode = userRegionMapper.selectByCode(userAddress.getDistrictCode());

      StringBuilder fullAddressBuilder = new StringBuilder();
      fullAddressBuilder.append(provinceCode)
              .append(cityCode)
              .append(districtCode);

      String fullAddress = fullAddressBuilder.toString();
      userAddress.setFullAddress(fullAddress);
      userAddressMapper.save(userAddress);
   }

   //用户收货地址刪除
   @Override
   public void removeById(Long id) {
      userAddressMapper.removeById(id);
   }
}

UserAddressMapper

@Mapper
public interface UserAddressMapper {

    List<UserAddress> findByUserId(Long userId);

    void updateByid(UserAddress userAddress);

    void save(UserAddress userAddress);

    void removeById(Long id);
}

UserAddressMapper.xml

<?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.atguigu.spzx.user.mapper.UserAddressMapper">

    <resultMap id="userAddressMap" type="com.atguigu.spzx.model.entity.user.UserAddress" autoMapping="true">
    </resultMap>

    <!-- 用于select查询公用抽取的列 -->
    <sql id="columns">
        id,user_id,name,phone,tag_name,province_code,city_code,district_code,address,full_address,is_default,create_time,update_time,is_deleted
    </sql>

    <update id="removeById" parameterType="Long">
        update user_address set update_time = now(),
                                is_deleted = 1
        where id = #{id}
    </update>

    <select id="findByUserId" resultMap="userAddressMap">
        select <include refid="columns" />
        from user_address
        where
        user_id = #{userId} and is_deleted = 0
    </select>

    <update id="updateByid" parameterType="com.atguigu.spzx.model.entity.user.UserAddress">
        UPDATE user_address
        <set>
            <!-- 使用动态SQL判断字段是否为空,如果不为空则进行更新 -->
            <if test="name != null">
                name = #{name},
            </if>
            <if test="phone != null">
                phone = #{phone},
            </if>
            <if test="tagName != null">
                tag_name = #{tagName},
            </if>
            <if test="provinceCode != null">
                province_code = #{provinceCode},
            </if>
            <if test="cityCode != null">
                city_code = #{cityCode},
            </if>
            <if test="districtCode != null">
                district_code = #{districtCode},
            </if>
            <if test="address != null">
                address = #{address},
            </if>
            <if test="fullAddress != null">
                full_address = #{fullAddress},
            </if>
            <if test="isDefault != null">
                is_default = #{isDefault},
            </if>
            update_time = now()
        </set>
        WHERE user_id = #{userId} and id = #{id}
    </update>


    <insert id="save" parameterType="com.atguigu.spzx.model.entity.user.UserAddress">
        insert into user_address
        (
            user_id,
            name,
            phone,
            tag_name,
            province_code,
            city_code,
            district_code,
            address,
            full_address,
            is_default,
            create_time,
            update_time,
            is_deleted
        )
        values
            (
                #{userId},
                #{name},
                #{phone},
                #{tagName},
                #{provinceCode},
                #{cityCode},
                #{districtCode},
                #{address},
                #{fullAddress},
                #{isDefault},
                now(),
                now(),
                0
            )
    </insert>


</mapper>

UserRegionService

public interface UserRegionService {

    /**
     * @Description: 收货地址省市区显示
     * @param code
     */
    List<Region> selectByParentCode(Integer code);
}

UserRegionServiceimpl

@Service
public class UserRegionServiceimpl implements UserRegionService {

    @Autowired
    private UserRegionMapper userRegionMapper;
    @Override
    public List<Region> selectByParentCode(Integer code) {
        List<Region> regions = userRegionMapper.selectByParentCode(code);
        return regions;
    }

}

UserRegionMapper

@Mapper
public interface UserRegionMapper {

    List<Region> selectByParentCode(Integer code);

    String selectByCode(String Code);
}

UserRegionMapper.xml

<?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接口的全类名保持一致-->
<mapper namespace="com.atguigu.spzx.user.mapper.UserRegionMapper">


    <!-- 用于select查询公用抽取的列 -->
    <sql id="columns">
        id,code,parent_code,name,level,create_time,update_time,is_deleted
    </sql>

    <select id="selectByParentCode" resultType="com.atguigu.spzx.model.entity.base.Region">
        select <include refid="columns" />
        from region where parent_code = #{code}
    </select>
    <select id="selectByCode" resultType="java.lang.String">
        select name
        from region where code = #{code}
    </select>

</mapper>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值