双唯一性验证

public void update(AvatarAccessoryInfoEntity userAvatarAccessoryEntity) {

        //如果name 和图层相同可以直接更新

        AvatarAccessoryInfoEntity original = userAvatarAccessoryDao.findById(userAvatarAccessoryEntity.getId());

        if(userAvatarAccessoryEntity.getName().equals(original.getName()) &&

          Objects.equals(userAvatarAccessoryEntity.getLayer(),original.getLayer())){

            int row = userAvatarAccessoryDao.update(userAvatarAccessoryEntity);

            if (row != 1) {

                throw new AppRuntimeException("更新失败!");

            }

            return;

        } else if(Objects.equals(userAvatarAccessoryEntity.getLayer(),original.getLayer()) ){

            int name = userAvatarAccessoryDao.getName(userAvatarAccessoryEntity.getName());

            if (name == 1) {

                    throw new AppRuntimeException("挂饰名称已经被创建");

                }

            int row = userAvatarAccessoryDao.update(userAvatarAccessoryEntity);

            if (row != 1) {

                throw new AppRuntimeException("更新失败!");

            }

            return;

        }else if (userAvatarAccessoryEntity.getName().equals(original.getName())) {

            int layer = userAvatarAccessoryDao.getLayer(userAvatarAccessoryEntity.getLayer());

            if (layer == 1) {

                throw new AppRuntimeException("挂件图片图层位置重复");

            }

            int row = userAvatarAccessoryDao.update(userAvatarAccessoryEntity);

            if (row != 1) {

                throw new AppRuntimeException("更新失败!");

            }

            return;

        }

        UNIQUENESS_CHECK.lock();

//            名称唯一查询

            try {

                int name = userAvatarAccessoryDao.getName(userAvatarAccessoryEntity.getName());

                int layer = userAvatarAccessoryDao.getLayer(userAvatarAccessoryEntity.getLayer());

                if (name == 1) {

                    throw new AppRuntimeException("挂饰名称已经被创建");

                }

                if (layer == 1) {

                    throw new AppRuntimeException("挂件图片图层位置重复");

                }

                int row = userAvatarAccessoryDao.update(userAvatarAccessoryEntity);

                if (row != 1) {

                    throw new AppRuntimeException("更新失败!");

                }

            } finally {

                UNIQUENESS_CHECK.unlock();

            }

        }

你可能感兴趣的:(双唯一性验证)