设置收货地址默认接口思路

控制层

 @ApiOperation(value = "买家收货地址设置默认接口", notes = "买家收货地址设置默认业务", produces = "application/json")
    @PostMapping("/setDefault")
    public BaseResponse<Map<String, Object>> setDefault(@RequestHeader(name = "Authorization", defaultValue = "token") String token,
                                                        @RequestBody MemberAddressSetDefaultRequest memberAddressSetDefaultRequest) {

        ServiceResult<Boolean> serviceResult = memberAddressService.defaultMemberAddress(
            memberAddressSetDefaultRequest.getId(), memberAddressSetDefaultRequest.getMemberId());

        if (!serviceResult.getSuccess()) {
            return new BaseResponse<>(false, null, serviceResult.getMessage());
        }
        return new BaseResponse<>(true, null, null);
    }

这个接口只用把服务层的事务处理好就行,确保这个状态改为默认后其他状态要改为非默认状态才能提交成功,所以其他逻辑就省略了

model层

 public boolean defaultMemberAddress(Integer id, Integer memberId) {
        // 事务管理
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
        TransactionStatus status = transactionManager.getTransaction(def);
        try {
            // 参数校验。。这个步骤如果切面处理了参数校验的话可以不写了
            if (id == null || id == 0) {
                throw new BusinessException("地址id不能为空,请重试!");
            }

            MemberAddress memberAddress = new MemberAddress();
            // 设为默认   状态1就是默认状态,更新的话要传入id不然不知道是谁的地址
            memberAddress.setState(MemberAddress.STATE_1);
            memberAddress.setId(id);
            int count = memberAddressWriteDao.update(memberAddress);
            if (count == 0) {
                throw new BusinessException("收货地址更新失败,请重试!");
            }

            // 更新该用户其他地址为非默认
            memberAddressWriteDao.updateNotDefByMId(id, memberId);
			//事务处理
            transactionManager.commit(status);
            return true;
        } catch (BusinessException be) {
            transactionManager.rollback(status);
            throw be;
        } catch (Exception e) {
            transactionManager.rollback(status);
            throw e;
        }
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值