First you should simplify your object to make it easier to work, select all and press <kbd>Ctrl</kbd><kbd>E</kbd> > *Un-Subdivide*:

[![enter image description here][1]][1]

Here is what you get (set the parameters in the *Operator* box), as long as it doesn't change your shape it's better to work low-poly imho:

[![enter image description here][2]][2]

Then boolean the 2 objects:

[![enter image description here][3]][3]

It gives bad topology:

[![enter image description here][4]][4]

But you're going to work on it with the knife tool, join, dissolve edges and vertices, etc:

[![enter image description here][5]][5]

Now you can give your object a *Subdivision Surface* etc:

[![enter image description here][6]][6]


  [1]: https://i.sstatic.net/n7tsq.jpg
  [2]: https://i.sstatic.net/KDsSg.jpg
  [3]: https://i.sstatic.net/yQ2Xd.jpg
  [4]: https://i.sstatic.net/A1lO2.jpg
  [5]: https://i.sstatic.net/zEfs8.jpg
  [6]: https://i.sstatic.net/92wwv.jpg