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

控制层

 @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;
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_42992035/article/details/83145654