To solve the optimization problem described, we need to define the decision variables, the objective function, and the constraints.

Let's denote:
- $E$ as the number of bottles of Eucalyptus lotion.
- $C$ as the number of bottles of Citrus lotion.

The profit from selling one bottle of Eucalyptus lotion is $1, and the cost is $6. Thus, the net profit per bottle of Eucalyptus is $1 (revenue) - $6 (cost) = -$5. However, since we are considering profit after purchasing, it seems there might be a misunderstanding in the problem statement regarding the calculation of profit. If the store pays $6 for a bottle and sells it at a price that yields a $1 profit, this implies the selling price is $7 ($6 cost + $1 profit). Similarly, for Citrus, if the store pays $8 and makes a $4 profit per bottle, the selling price must be $12 ($8 cost + $4 profit).

Given the corrected understanding:
- The revenue from selling one bottle of Eucalyptus lotion is $7.
- The cost of one bottle of Eucalyptus lotion is $6.
- The revenue from selling one bottle of Citrus lotion is $12.
- The cost of one bottle of Citrus lotion is $8.

Thus, the profit per bottle for Eucalyptus is $7 (selling price) - $6 (cost) = $1, and for Citrus, it's $12 (selling price) - $8 (cost) = $4.

The objective function to maximize the total profit is:
\[ \text{Maximize:} \quad 1E + 4C \]

Constraints:
1. The store owner does not expect to sell more than 1500 bottles in total.
\[ E + C \leq 1500 \]
2. The total investment should not exceed $10,000.
\[ 6E + 8C \leq 10000 \]
3. Non-negativity constraints: The number of bottles cannot be negative.
\[ E \geq 0, C \geq 0 \]

Now, let's translate this into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Lotion_Optimization")

# Define variables
E = m.addVar(vtype=GRB.CONTINUOUS, name="Eucalyptus", lb=0)
C = m.addVar(vtype=GRB.CONTINUOUS, name="Citrus", lb=0)

# Objective function: Maximize profit
m.setObjective(1*E + 4*C, GRB.MAXIMIZE)

# Constraints
m.addConstr(E + C <= 1500, "Total_Bottles")
m.addConstr(6*E + 8*C <= 10000, "Budget")

# Solve the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Eucalyptus bottles: {E.x}")
    print(f"Citrus bottles: {C.x}")
    print(f"Total Profit: {m.objVal}")
else:
    print("No optimal solution found")
```